|
75224
|
NULL
|
0
|
2026-04-23T10:47:14.383162+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776941234383_m1.jpg...
|
Firefox
|
Jy 20541 extract common traits by Vasil-Jiminny · Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/12008
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close 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 (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
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 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1324 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (40)
Commits
(
40
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Open
Jy 20541 extract common traits #12008 Vasil-Jiminny wants to merge 40 commits into master from JY-20541-extract-common-traits Copy head branch name to clipboard
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Conversation
Conversation
@Vasil-Jiminny
Show options
Vasil-Jiminny commented 1 hour ago
Vasil-Jiminny
Vasil-Jiminny
commented
1 hour ago
1 hour ago
JIRA: JY-20541
JIRA:
JY-20541
JY-20541
Deployment notes:
Deployment notes:
None
Description:
Description:
Extract common functionality (business logic) into traits and helper methods / classs.
Remove an N+1 problem related to converted leads. Queue the execution of ConvertedLead listener with 5 second delay.
Changes:
Changes:
Added CrmHelperRepository to wrap basic DB operations for CRM services.
Extract ActivityPlaybackTrait, shared for all CRMs.
Extract FollowupActivityTrait - slowly move business logic outside of the main Service classes.
Salesforce Service constructor receives an EventDispatcher as a parameter for internal use. Much better for testing instead of shorthand "event" function.
Add Activity accessor methods.
Fix a logical issue in PlaybookCategory model. Method
getPlaybook
may return null (for soft deleted playbooks). That change forced a few other changes in the code.
Fix N+1 issue in ConvertLeadActivities.
Various minor code style fixes.
Fixed tests.
Added
Add or remove reactions
Vasil-Jiminny
Vasil-Jiminny
added
28
commits
3 hours ago
3 hours ago
@Vasil-Jiminny
Remove obsolete whitespace.
Remove obsolete whitespace.
e2cc6cd
e2cc6cd
@Vasil-Jiminny
Add shorthand methods to Activity model.
Add shorthand methods to Activity model.
9288026
9288026
@Vasil-Jiminny
PlaybookCategory may return a null Playbook, when the playbook is sof…
PlaybookCategory may return a null Playbook, when the playbook is sof…
…
a0d9c65
a0d9c65
@Vasil-Jiminny
An activity may lack a PlaybookCategory.
An activity may lack a PlaybookCategory.
562aaf4
562aaf4
@Vasil-Jiminny
Fix the logical bug in GetDefaultActivityTypeService and test.
Fix the logical bug in GetDefaultActivityTypeService and test.
4856d05
4856d05
@Vasil-Jiminny
Introduce CrmHelperRepository
Introduce CrmHelperRepository
c50dcf3
c50dcf3
@Vasil-Jiminny
Introduce CrmHelperRepository to help with various small DB operation…
Introduce CrmHelperRepository to help with various small DB operation…
…
71f5d64
71f5d64
@Vasil-Jiminny
Introduced ActivityPlaybookTrait and fully covered with tests.
Introduced ActivityPlaybookTrait and fully covered with tests.
bda2b3d
bda2b3d
@Vasil-Jiminny
The test that was not commited.
The test that was not commited.
804049e
804049e
@Vasil-Jiminny
BaseService uses ActivityPlaybookTrait. Drop direct implementation of…
BaseService uses ActivityPlaybookTrait. Drop direct implementation of…
…
43151b7
43151b7
@Vasil-Jiminny
Added a very basic FieldHelper class for SF to wrap simple operations.
Added a very basic FieldHelper class for SF to wrap simple operations.
71c50ae
71c50ae
@Vasil-Jiminny
Add a FollowupActivityTrait to wrap the "follow-up" related business …
Add a FollowupActivityTrait to wrap the "follow-up" related business …
…
c6161b7
c6161b7
@Vasil-Jiminny
Drop the inline implementation of "isCustomField", use the helper ins…
Drop the inline implementation of "isCustomField", use the helper ins…
…
78fde79
78fde79
@Vasil-Jiminny
Delete SaveFollowupActivity for Task & Event. Inject the trait instead.
Delete SaveFollowupActivity for Task & Event. Inject the trait instead.
c5b1bb6
c5b1bb6
@Vasil-Jiminny
Added full unit test for FollowupActivityTraitTest.
Added full unit test for FollowupActivityTraitTest.
3ab80dc
3ab80dc
@Vasil-Jiminny
Very basic unit test added for FieldHelper.
Very basic unit test added for FieldHelper.
4bd837c
4bd837c
@Vasil-Jiminny
Use hte event dispathcer instead of calling the shorthand function.
Use hte event dispathcer instead of calling the shorthand function.
a42453a
a42453a
@Vasil-Jiminny
Add a few missing annotations.
Add a few missing annotations.
83de27f
83de27f
@Vasil-Jiminny
Fix a test that awaits an event, created inside another event. Instea…
Fix a test that awaits an event, created inside another event. Instea…
…
28cc4db
28cc4db
@Vasil-Jiminny
Drop the namespace for the removed event.
Drop the namespace for the removed event.
7f425c4
7f425c4
@Vasil-Jiminny
Fix the DeleteObjectsTrait test. The Salesforce tested instance requi…
Fix the DeleteObjectsTrait test. The Salesforce tested instance requi…
…
031166a
031166a
@Vasil-Jiminny
Fix all broken test. Inject the new EventDispatcher constructor param…
Fix all broken test. Inject the new EventDispatcher constructor param…
…
7 / 10 checks OK
bf43943
bf43943
@Vasil-Jiminny
ConvertedLeadActivities is updated to fetch lead data only once. It i…
ConvertedLeadActivities is updated to fetch lead data only once. It i…
…
08ca510
08ca510
@Vasil-Jiminny
ConvertedLeadActivities test updated.
ConvertedLeadActivities test updated.
7 / 10 checks OK
3c4390d
3c4390d
@Vasil-Jiminny
Move internal attribute definition higher. Minor code style change.
Move internal attribute definition higher. Minor code style change.
0f3f799
0f3f799
@Vasil-Jiminny
Fix a Service test that I somehow missed to update.
Fix a Service test that I somehow missed to update.
8 / 10 checks OK
8eb3dc8
8eb3dc8
@Vasil-Jiminny
Add missing trailing commas.
Add missing trailing commas.
7 / 10 checks OK
a5b94e9
a5b94e9
@Vasil-Jiminny
More trailing commas.
More trailing commas.
12 / 12 checks OK
6520970
6520970
@Vasil-Jiminny
Vasil-Jiminny
Vasil-Jiminny
requested review from
yalokin-jiminny
yalokin-jiminny
and removed request for
yalokin-jiminny
yalokin-jiminny
1 hour ago
1 hour ago
@Vasil-Jiminny
Vasil-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":"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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · 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 | Saved Reports","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Saved Reports","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 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · 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},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.017361112,"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":"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 (33)","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":"33","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 (32)","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":"32","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 20541 extract common traits #12008 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","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":"AXButton","text":"Checks pending","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","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":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 40 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-20541-extract-common-traits","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","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: 1324 additions & 442 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":true},{"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 (40)","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":"40","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 (2)","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":"2","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 (20)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"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":"20","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Jy 20541 extract common traits #12008 Vasil-Jiminny wants to merge 40 commits into master from JY-20541-extract-common-traits Copy head branch name to clipboard","depth":14,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Jy 20541 extract common traits","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Vasil-Jiminny","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 40 commits into","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":18,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20541-extract-common-traits","depth":19,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Conversation","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show options","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Vasil-Jiminny commented 1 hour ago","depth":14,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commented","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1 hour ago","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1 hour ago","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"JIRA: JY-20541","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JIRA:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20541","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Deployment notes:","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployment notes:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"None","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Description:","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Description:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Extract common functionality (business logic) into traits and helper methods / classs.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Remove an N+1 problem related to converted leads. Queue the execution of ConvertedLead listener with 5 second delay.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Changes:","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Changes:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Added CrmHelperRepository to wrap basic DB operations for CRM services.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Extract ActivityPlaybackTrait, shared for all CRMs.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Extract FollowupActivityTrait - slowly move business logic outside of the main Service classes.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Salesforce Service constructor receives an EventDispatcher as a parameter for internal use. Much better for testing instead of shorthand \"event\" function.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Add Activity accessor methods.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fix a logical issue in PlaybookCategory model. Method","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getPlaybook","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"may return null (for soft deleted playbooks). That change forced a few other changes in the code.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fix N+1 issue in ConvertLeadActivities.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Various minor code style fixes.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fixed tests.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Added","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add or remove reactions","depth":16,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Vasil-Jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"added","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"28","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commits","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"3 hours ago","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3 hours ago","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Remove obsolete whitespace.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Remove obsolete whitespace.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"e2cc6cd","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"e2cc6cd","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Add shorthand methods to Activity model.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add shorthand methods to Activity model.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"9288026","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9288026","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"PlaybookCategory may return a null Playbook, when the playbook is sof…","depth":14,"help_text":"PlaybookCategory may return a null Playbook, when the playbook is soft deleted.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PlaybookCategory may return a null Playbook, when the playbook is sof…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"a0d9c65","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"a0d9c65","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"An activity may lack a PlaybookCategory.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"An activity may lack a PlaybookCategory.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"562aaf4","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"562aaf4","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Fix the logical bug in GetDefaultActivityTypeService and test.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix the logical bug in GetDefaultActivityTypeService and test.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4856d05","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4856d05","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Introduce CrmHelperRepository","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Introduce CrmHelperRepository","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"c50dcf3","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"c50dcf3","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Introduce CrmHelperRepository to help with various small DB operation…","depth":14,"help_text":"Introduce CrmHelperRepository to help with various small DB operations inlined in the Services.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Introduce CrmHelperRepository to help with various small DB operation…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"71f5d64","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"71f5d64","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Introduced ActivityPlaybookTrait and fully covered with tests.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Introduced ActivityPlaybookTrait and fully covered with tests.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"bda2b3d","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"bda2b3d","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"The test that was not commited.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"The test that was not commited.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"804049e","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"804049e","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"BaseService uses ActivityPlaybookTrait. Drop direct implementation of…","depth":14,"help_text":"BaseService uses ActivityPlaybookTrait. Drop direct implementation of tests for the sake of using the trait wrapped methods.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BaseService uses ActivityPlaybookTrait. Drop direct implementation of…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"43151b7","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"43151b7","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Added a very basic FieldHelper class for SF to wrap simple operations.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Added a very basic FieldHelper class for SF to wrap simple operations.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"71c50ae","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"71c50ae","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Add a FollowupActivityTrait to wrap the \"follow-up\" related business …","depth":14,"help_text":"Add a FollowupActivityTrait to wrap the \"follow-up\" related business logic injected directly into the service.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add a FollowupActivityTrait to wrap the \"follow-up\" related business …","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"c6161b7","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"c6161b7","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Drop the inline implementation of \"isCustomField\", use the helper ins…","depth":14,"help_text":"Drop the inline implementation of \"isCustomField\", use the helper instead.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Drop the inline implementation of \"isCustomField\", use the helper ins…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"78fde79","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"78fde79","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Delete SaveFollowupActivity for Task & Event. Inject the trait instead.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Delete SaveFollowupActivity for Task & Event. Inject the trait instead.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"c5b1bb6","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"c5b1bb6","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Added full unit test for FollowupActivityTraitTest.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Added full unit test for FollowupActivityTraitTest.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"3ab80dc","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3ab80dc","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Very basic unit test added for FieldHelper.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Very basic unit test added for FieldHelper.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4bd837c","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4bd837c","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Use hte event dispathcer instead of calling the shorthand function.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use hte event dispathcer instead of calling the shorthand function.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"a42453a","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"a42453a","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Add a few missing annotations.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add a few missing annotations.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"83de27f","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"83de27f","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Fix a test that awaits an event, created inside another event. Instea…","depth":14,"help_text":"Fix a test that awaits an event, created inside another event. Instead, listner for the \"parent\" event.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix a test that awaits an event, created inside another event. Instea…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"28cc4db","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"28cc4db","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Drop the namespace for the removed event.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Drop the namespace for the removed event.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"7f425c4","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7f425c4","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Fix the DeleteObjectsTrait test. The Salesforce tested instance requi…","depth":14,"help_text":"Fix the DeleteObjectsTrait test. The Salesforce tested instance required a new constructor parameter.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix the DeleteObjectsTrait test. The Salesforce tested instance requi…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"031166a","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"031166a","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Fix all broken test. Inject the new EventDispatcher constructor param…","depth":14,"help_text":"Fix all broken test. Inject the new EventDispatcher constructor parameter.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix all broken test. Inject the new EventDispatcher constructor param…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"7 / 10 checks OK","depth":14,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"bf43943","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"bf43943","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"ConvertedLeadActivities is updated to fetch lead data only once. It i…","depth":14,"help_text":"ConvertedLeadActivities is updated to fetch lead data only once. It is also queued in `crm-update` and delayed for 5 seconds. An obsolete repository is removed.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ConvertedLeadActivities is updated to fetch lead data only once. It i…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"08ca510","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"08ca510","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"ConvertedLeadActivities test updated.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ConvertedLeadActivities test updated.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"7 / 10 checks OK","depth":14,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"3c4390d","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3c4390d","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Move internal attribute definition higher. Minor code style change.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Move internal attribute definition higher. Minor code style change.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0f3f799","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0f3f799","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Fix a Service test that I somehow missed to update.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix a Service test that I somehow missed to update.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"8 / 10 checks OK","depth":14,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"8eb3dc8","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8eb3dc8","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Add missing trailing commas.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add missing trailing commas.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"7 / 10 checks OK","depth":14,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"a5b94e9","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"a5b94e9","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"More trailing commas.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"More trailing commas.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"12 / 12 checks OK","depth":14,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"6520970","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6520970","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Vasil-Jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"requested review from","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and removed request for","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1 hour ago","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1 hour ago","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Vasil-Jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-9183478539279820644
|
-5550829594470355843
|
idle
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close 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 (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
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 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1324 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (40)
Commits
(
40
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Open
Jy 20541 extract common traits #12008 Vasil-Jiminny wants to merge 40 commits into master from JY-20541-extract-common-traits Copy head branch name to clipboard
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Conversation
Conversation
@Vasil-Jiminny
Show options
Vasil-Jiminny commented 1 hour ago
Vasil-Jiminny
Vasil-Jiminny
commented
1 hour ago
1 hour ago
JIRA: JY-20541
JIRA:
JY-20541
JY-20541
Deployment notes:
Deployment notes:
None
Description:
Description:
Extract common functionality (business logic) into traits and helper methods / classs.
Remove an N+1 problem related to converted leads. Queue the execution of ConvertedLead listener with 5 second delay.
Changes:
Changes:
Added CrmHelperRepository to wrap basic DB operations for CRM services.
Extract ActivityPlaybackTrait, shared for all CRMs.
Extract FollowupActivityTrait - slowly move business logic outside of the main Service classes.
Salesforce Service constructor receives an EventDispatcher as a parameter for internal use. Much better for testing instead of shorthand "event" function.
Add Activity accessor methods.
Fix a logical issue in PlaybookCategory model. Method
getPlaybook
may return null (for soft deleted playbooks). That change forced a few other changes in the code.
Fix N+1 issue in ConvertLeadActivities.
Various minor code style fixes.
Fixed tests.
Added
Add or remove reactions
Vasil-Jiminny
Vasil-Jiminny
added
28
commits
3 hours ago
3 hours ago
@Vasil-Jiminny
Remove obsolete whitespace.
Remove obsolete whitespace.
e2cc6cd
e2cc6cd
@Vasil-Jiminny
Add shorthand methods to Activity model.
Add shorthand methods to Activity model.
9288026
9288026
@Vasil-Jiminny
PlaybookCategory may return a null Playbook, when the playbook is sof…
PlaybookCategory may return a null Playbook, when the playbook is sof…
…
a0d9c65
a0d9c65
@Vasil-Jiminny
An activity may lack a PlaybookCategory.
An activity may lack a PlaybookCategory.
562aaf4
562aaf4
@Vasil-Jiminny
Fix the logical bug in GetDefaultActivityTypeService and test.
Fix the logical bug in GetDefaultActivityTypeService and test.
4856d05
4856d05
@Vasil-Jiminny
Introduce CrmHelperRepository
Introduce CrmHelperRepository
c50dcf3
c50dcf3
@Vasil-Jiminny
Introduce CrmHelperRepository to help with various small DB operation…
Introduce CrmHelperRepository to help with various small DB operation…
…
71f5d64
71f5d64
@Vasil-Jiminny
Introduced ActivityPlaybookTrait and fully covered with tests.
Introduced ActivityPlaybookTrait and fully covered with tests.
bda2b3d
bda2b3d
@Vasil-Jiminny
The test that was not commited.
The test that was not commited.
804049e
804049e
@Vasil-Jiminny
BaseService uses ActivityPlaybookTrait. Drop direct implementation of…
BaseService uses ActivityPlaybookTrait. Drop direct implementation of…
…
43151b7
43151b7
@Vasil-Jiminny
Added a very basic FieldHelper class for SF to wrap simple operations.
Added a very basic FieldHelper class for SF to wrap simple operations.
71c50ae
71c50ae
@Vasil-Jiminny
Add a FollowupActivityTrait to wrap the "follow-up" related business …
Add a FollowupActivityTrait to wrap the "follow-up" related business …
…
c6161b7
c6161b7
@Vasil-Jiminny
Drop the inline implementation of "isCustomField", use the helper ins…
Drop the inline implementation of "isCustomField", use the helper ins…
…
78fde79
78fde79
@Vasil-Jiminny
Delete SaveFollowupActivity for Task & Event. Inject the trait instead.
Delete SaveFollowupActivity for Task & Event. Inject the trait instead.
c5b1bb6
c5b1bb6
@Vasil-Jiminny
Added full unit test for FollowupActivityTraitTest.
Added full unit test for FollowupActivityTraitTest.
3ab80dc
3ab80dc
@Vasil-Jiminny
Very basic unit test added for FieldHelper.
Very basic unit test added for FieldHelper.
4bd837c
4bd837c
@Vasil-Jiminny
Use hte event dispathcer instead of calling the shorthand function.
Use hte event dispathcer instead of calling the shorthand function.
a42453a
a42453a
@Vasil-Jiminny
Add a few missing annotations.
Add a few missing annotations.
83de27f
83de27f
@Vasil-Jiminny
Fix a test that awaits an event, created inside another event. Instea…
Fix a test that awaits an event, created inside another event. Instea…
…
28cc4db
28cc4db
@Vasil-Jiminny
Drop the namespace for the removed event.
Drop the namespace for the removed event.
7f425c4
7f425c4
@Vasil-Jiminny
Fix the DeleteObjectsTrait test. The Salesforce tested instance requi…
Fix the DeleteObjectsTrait test. The Salesforce tested instance requi…
…
031166a
031166a
@Vasil-Jiminny
Fix all broken test. Inject the new EventDispatcher constructor param…
Fix all broken test. Inject the new EventDispatcher constructor param…
…
7 / 10 checks OK
bf43943
bf43943
@Vasil-Jiminny
ConvertedLeadActivities is updated to fetch lead data only once. It i…
ConvertedLeadActivities is updated to fetch lead data only once. It i…
…
08ca510
08ca510
@Vasil-Jiminny
ConvertedLeadActivities test updated.
ConvertedLeadActivities test updated.
7 / 10 checks OK
3c4390d
3c4390d
@Vasil-Jiminny
Move internal attribute definition higher. Minor code style change.
Move internal attribute definition higher. Minor code style change.
0f3f799
0f3f799
@Vasil-Jiminny
Fix a Service test that I somehow missed to update.
Fix a Service test that I somehow missed to update.
8 / 10 checks OK
8eb3dc8
8eb3dc8
@Vasil-Jiminny
Add missing trailing commas.
Add missing trailing commas.
7 / 10 checks OK
a5b94e9
a5b94e9
@Vasil-Jiminny
More trailing commas.
More trailing commas.
12 / 12 checks OK
6520970
6520970
@Vasil-Jiminny
Vasil-Jiminny
Vasil-Jiminny
requested review from
yalokin-jiminny
yalokin-jiminny
and removed request for
yalokin-jiminny
yalokin-jiminny
1 hour ago
1 hour ago
@Vasil-Jiminny
Vasil-Jiminny...
|
75222
|
|
75183
|
NULL
|
0
|
2026-04-23T10:42:05.912880+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776940925912_m2.jpg...
|
Slack
|
Galya Dimitrova (DM) - Jiminny Inc - 1 new item - Galya Dimitrova (DM) - 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
ai-team
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
Vasil Vasilev
Adelina Petrova
Stoyan Tomov
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Galya Dimitrova
Stefka Stoyanova
Stoyan Tanev
Toast
Jira Cloud
Google Calendar
Messages
Messages
Files
Files
Untitled
Untitled
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Apr 20th at 10:56:36 AM
10:56 AM
например при Activity Logged или Shared Activity и няколко други пращаме споделен payloаd [
‘provider’ => $activity->getProvider(),
‘channel’ => $activity->getType(),
‘duration’ => $activity->getDuration(),
‘status’ => $activity->getStatus(),
‘recordingStatus’ => $activity->getRecordingState(),
‘private’ => $activity->getIsPrivate(),
‘logged’ => $activity->hasCrmProviderId(),
];
Apr 20th at 10:57:21 AM
10:57
не ги виждам в UI
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:03:17 AM
11:03 AM
ще пиша на съпорта им да видя как се стига до това
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:07:43 AM
11:07
о боже, намерих го
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:30 AM
11:09
мога да ползвам метаданните обаче само като правя репорти/чартове
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:50 AM
11:09
но не мога да ги ползвам ако искам на база на тях да пускам определени банери
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:59 AM
11:09
та най добре в този случай да са два отделни евента
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Apr 20th at 11:10:56 AM
11:10 AM
ок, ‘report_type’ и ‘frequency’ ги оставям в payload и на двата
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:11:08 AM
11:11 AM
ок
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам ai-reports страница.
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам ai-reports страница.
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Shift + Return to add a new line
Shift + Return
to add a new line
Adelina Petrova, Direct Message, 1 of 7 suggestions
Channel...
|
[{"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,"role_description":"text"},{"role":"AXStaticText","text":"ai-team","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,"bounds":{"left":0.042220745,"top":0.09177973,"width":0.03856383,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.042220745,"top":0.10055866,"width":0.01662234,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.042220745,"top":0.12290503,"width":0.01761968,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.042220745,"top":0.1452514,"width":0.024268618,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.042220745,"top":0.16759777,"width":0.016954787,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.042220745,"top":0.18994413,"width":0.024268618,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.042220745,"top":0.2122905,"width":0.04488032,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.042220745,"top":0.26496407,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.07945479,"top":0.26496407,"width":0.0063164895,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.08211436,"top":0.26496407,"width":0.014295213,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.09607713,"top":0.28252193,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.09607713,"top":0.28252193,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.042220745,"top":0.28731045,"width":0.026263298,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"bounds":{"left":0.042220745,"top":0.30965683,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.042220745,"top":0.3320032,"width":0.030585106,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.042220745,"top":0.35434955,"width":0.032912236,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"bounds":{"left":0.042220745,"top":0.37669593,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.042220745,"top":0.3990423,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"bounds":{"left":0.042220745,"top":0.42138866,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":23,"bounds":{"left":0.042220745,"top":0.44373503,"width":0.033909574,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.042220745,"top":0.4660814,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":23,"bounds":{"left":0.042220745,"top":0.4884278,"width":0.03523936,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.042220745,"top":0.51077414,"width":0.034906916,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.042220745,"top":0.5331205,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.042220745,"top":0.5554669,"width":0.028922873,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.042220745,"top":0.60814047,"width":0.011968086,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.042220745,"top":0.63048685,"width":0.021609042,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Google Calendar","depth":23,"bounds":{"left":0.042220745,"top":0.6528332,"width":0.03025266,"height":0.014365523},"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"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":19,"bounds":{"left":0.111369684,"top":0.10055866,"width":0.01861702,"height":0.012769354},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"bounds":{"left":0.13397606,"top":0.09177973,"width":0.020944148,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"bounds":{"left":0.14328457,"top":0.10055866,"width":0.008976064,"height":0.012769354},"role_description":"text"},{"role":"AXRadioButton","text":"Untitled","depth":17,"bounds":{"left":0.15591756,"top":0.09177973,"width":0.02925532,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Untitled","depth":19,"bounds":{"left":0.16522606,"top":0.10055866,"width":0.015957447,"height":0.012769354},"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"bounds":{"left":0.18650267,"top":0.09177973,"width":0.010638298,"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":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.015625,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.0076462766,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.013962766,"height":0.0007980846},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":22,"bounds":{"left":0.13730054,"top":0.12689546,"width":0.05086436,"height":0.022346368},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 10:56:36 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:56 AM","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"например при Activity Logged или Shared Activity и няколко други пращаме споделен payloаd [","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘provider’ => $activity->getProvider(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘channel’ => $activity->getType(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘duration’ => $activity->getDuration(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘status’ => $activity->getStatus(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘recordingStatus’ => $activity->getRecordingState(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘private’ => $activity->getIsPrivate(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘logged’ => $activity->hasCrmProviderId(),","depth":24,"bounds":{"left":0.11801862,"top":0.11572227,"width":0.061170213,"height":0.0207502},"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"bounds":{"left":0.11801862,"top":0.13886672,"width":0.012965426,"height":0.015163607},"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 10:57:21 AM","depth":24,"bounds":{"left":0.105053194,"top":0.16520351,"width":0.010305851,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:57","depth":25,"bounds":{"left":0.105053194,"top":0.16520351,"width":0.010305851,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"не ги виждам в UI","depth":24,"bounds":{"left":0.11801862,"top":0.16280925,"width":0.041223403,"height":0.015163607},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.13806863,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.14793883,"top":0.13806863,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.15857713,"top":0.13806863,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.13806863,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.13806863,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.13806863,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.13806863,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.13806863,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.11801862,"top":0.18515563,"width":0.036236703,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.16090426,"top":0.1867518,"width":0.0026595744,"height":0.015163607},"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 11:03:17 AM","depth":23,"bounds":{"left":0.16323139,"top":0.18914606,"width":0.017952127,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:03 AM","depth":24,"bounds":{"left":0.16323139,"top":0.18914606,"width":0.017952127,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"ще пиша на съпорта им да видя как се стига до това","depth":24,"bounds":{"left":0.11801862,"top":0.20430966,"width":0.10239362,"height":0.032721467},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.17158818,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.14793883,"top":0.17158818,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.15857713,"top":0.17158818,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.17158818,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.17158818,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.17158818,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.17158818,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.17158818,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:07:43 AM","depth":24,"bounds":{"left":0.105053194,"top":0.2482043,"width":0.010305851,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:07","depth":25,"bounds":{"left":0.105053194,"top":0.2482043,"width":0.010305851,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"о боже, намерих го","depth":24,"bounds":{"left":0.11801862,"top":0.24581006,"width":0.044215426,"height":0.015163607},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.22106944,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.14793883,"top":0.22106944,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.15857713,"top":0.22106944,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.22106944,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.22106944,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.22106944,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.22106944,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.22106944,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:09:30 AM","depth":24,"bounds":{"left":0.105053194,"top":0.27214685,"width":0.010305851,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:09","depth":25,"bounds":{"left":0.105053194,"top":0.27214685,"width":0.010305851,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"мога да ползвам метаданните обаче само като правя репорти/чартове","depth":24,"bounds":{"left":0.11801862,"top":0.2697526,"width":0.09674202,"height":0.032721467},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.24501197,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.14793883,"top":0.24501197,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.15857713,"top":0.24501197,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.24501197,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.24501197,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.24501197,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.24501197,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.24501197,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:09:50 AM","depth":24,"bounds":{"left":0.105053194,"top":0.31364724,"width":0.010305851,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:09","depth":25,"bounds":{"left":0.105053194,"top":0.31364724,"width":0.010305851,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"но не мога да ги ползвам ако искам на база на тях да пускам определени банери","depth":24,"bounds":{"left":0.11801862,"top":0.31125298,"width":0.10006649,"height":0.032721467},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.28651237,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.14793883,"top":0.28651237,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.15857713,"top":0.28651237,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.28651237,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.28651237,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.28651237,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.28651237,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.28651237,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:09:59 AM","depth":24,"bounds":{"left":0.105053194,"top":0.35514766,"width":0.010305851,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:09","depth":25,"bounds":{"left":0.105053194,"top":0.35514766,"width":0.010305851,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"та най добре в този случай да са два отделни евента","depth":24,"bounds":{"left":0.11801862,"top":0.3527534,"width":0.08444149,"height":0.032721467},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.32801276,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.14793883,"top":0.32801276,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.15857713,"top":0.32801276,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.32801276,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.32801276,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.32801276,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.32801276,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.32801276,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.11801862,"top":0.3926576,"width":0.030917553,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.14860372,"top":0.3942538,"width":0.0029920214,"height":0.015163607},"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 11:10:56 AM","depth":23,"bounds":{"left":0.1512633,"top":0.39664805,"width":0.01761968,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:10 AM","depth":24,"bounds":{"left":0.1512633,"top":0.39664805,"width":0.01761968,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"ок, ‘report_type’ и ‘frequency’ ги оставям в payload и на двата","depth":24,"bounds":{"left":0.11801862,"top":0.41181165,"width":0.09474734,"height":0.032721467},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.3790902,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.14793883,"top":0.3790902,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.15857713,"top":0.3790902,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.3790902,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.3790902,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.3790902,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.3790902,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.3790902,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.11801862,"top":0.4517159,"width":0.036236703,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.16090426,"top":0.45331204,"width":0.0026595744,"height":0.015163607},"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 11:11:08 AM","depth":23,"bounds":{"left":0.16323139,"top":0.4557063,"width":0.017952127,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:11 AM","depth":24,"bounds":{"left":0.16323139,"top":0.4557063,"width":0.017952127,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"ок","depth":24,"bounds":{"left":0.11801862,"top":0.4708699,"width":0.005319149,"height":0.015163607},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.43814844,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.14793883,"top":0.43814844,"width":0.010638298,"height":0.026336791},"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":25,"bounds":{"left":0.15857713,"top":0.43814844,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.43814844,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.43814844,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.43814844,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.43814844,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.43814844,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Здрасти имам бърз въпрос.\nАко има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам ai-reports страница. \nИма ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.","depth":23,"bounds":{"left":0.10372341,"top":0.50438946,"width":0.118351065,"height":0.15323225},"value":"Здрасти имам бърз въпрос.\nАко има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам ai-reports страница. \nИма ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Здрасти имам бърз въпрос.","depth":25,"bounds":{"left":0.10771277,"top":0.5123703,"width":0.0631649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам ai-reports страница.","depth":25,"bounds":{"left":0.10771277,"top":0.52992815,"width":0.10771277,"height":0.049481247},"role_description":"text"},{"role":"AXStaticText","text":"Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.","depth":25,"bounds":{"left":0.10771277,"top":0.5826017,"width":0.106715426,"height":0.06703911},"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":20,"bounds":{"left":0.17121011,"top":0.6935355,"width":0.048537236,"height":0.012769354},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":21,"bounds":{"left":0.17121011,"top":0.6943336,"width":0.021609042,"height":0.0103751},"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":21,"bounds":{"left":0.1924867,"top":0.6943336,"width":0.027260639,"height":0.0103751},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova, Direct Message, 1 of 7 suggestions","depth":11,"bounds":{"left":0.0,"top":0.7126895,"width":0.024933511,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"bounds":{"left":0.0,"top":0.7126895,"width":0.017287234,"height":0.0007980846},"role_description":"text"}]...
|
-1326570335419757212
|
-1279703086840510121
|
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
ai-team
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
Vasil Vasilev
Adelina Petrova
Stoyan Tomov
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Galya Dimitrova
Stefka Stoyanova
Stoyan Tanev
Toast
Jira Cloud
Google Calendar
Messages
Messages
Files
Files
Untitled
Untitled
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Apr 20th at 10:56:36 AM
10:56 AM
например при Activity Logged или Shared Activity и няколко други пращаме споделен payloаd [
‘provider’ => $activity->getProvider(),
‘channel’ => $activity->getType(),
‘duration’ => $activity->getDuration(),
‘status’ => $activity->getStatus(),
‘recordingStatus’ => $activity->getRecordingState(),
‘private’ => $activity->getIsPrivate(),
‘logged’ => $activity->hasCrmProviderId(),
];
Apr 20th at 10:57:21 AM
10:57
не ги виждам в UI
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:03:17 AM
11:03 AM
ще пиша на съпорта им да видя как се стига до това
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:07:43 AM
11:07
о боже, намерих го
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:30 AM
11:09
мога да ползвам метаданните обаче само като правя репорти/чартове
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:50 AM
11:09
но не мога да ги ползвам ако искам на база на тях да пускам определени банери
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:59 AM
11:09
та най добре в този случай да са два отделни евента
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Apr 20th at 11:10:56 AM
11:10 AM
ок, ‘report_type’ и ‘frequency’ ги оставям в payload и на двата
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:11:08 AM
11:11 AM
ок
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам ai-reports страница.
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам ai-reports страница.
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Shift + Return to add a new line
Shift + Return
to add a new line
Adelina Petrova, Direct Message, 1 of 7 suggestions
Channel
ActivityMoreslackcalVIewmistonWindowhelp@ Describe what you are looking forJiminny ... ~# random# releases# sofia-office# support# thank-yous# the_people_of_jimi...• Direct messages3 Aneliya Angelova, ...€. Vasil VasilevR. Adelina Petrova M8. Stoyan Tomovf.. Nikolay Yankov. Petko KashinskiR. Aneliya Angelova. Nikolay Nikolov&. Mario Georgiev%. Todor StamatovC. Gabriela Dureva®. Galya Dimitrova88. Stefka Stoyanova2. Stoyan Tanev Eit: Apps• ToastJira Cloud@ Google Cale.... Galya Dimitrova• Messagesr FilesUntitledhasCrmp Monday, April 20th ~не ги виждам в UIGalya Dimitrova # 11:03 AMще пиша на сьпортаим да видя как се стиадо товао боже, намепих гоїмога да ползвам метаданните обаче самокато поавя репорти/чаотовено не мога да ги ползвам ако искам на базана тях ла пускам оппелелени банерита най лобое в този случай ла са лваотлелни евентаLukas Kovalik 11:10AMoK. revort twoe и trequency ги оставям вpavload и на лватаGalya Dimitrova# 11:11 AMЗдрасти имам бърз въпрос.Ако има генерирани киоск репорти, но не сапратени и нямам Ask Jiminny Report FF, трябвали да да виждам al-reрoпs страница.ЗИма ситуации, в които са генерирани и не саоще пратени. акива в момента не излизат напо-остри проолеми, при аз променям етопосланието.+ Aa €C< 40ll O I SupportDaily-in1h18m O G 100%Ca& Thu 23 Apr 13:42:05©github.com/jiminny/New TabAl reports promotion pages by nik• Jy-9712 | Nuges to expire after on8 Jiminnyu Userpilot | Saved Reports8 JiminnyJy 20541 extract common trait X+ New TabJy 20541 extract common traits #12008Vasil-Jiminny wants to merge 40 commits into master from JY-20541-extract-common-traitsapp() call inside ActivityPlaybookTrait: :getPlaybookapp/Services/Crm/Helpers/ActivityPlaybookTrait.php:35SplaybookResolver = app(Playbookresolver:: class);Using the service locator in the middle of a method makes this harder to test in isolation. CrmHelperRepository wasrightly injected — PlaybookResolver could follow the same pattern. Not a blocker, but worth noting as the trait ismeant to improve testability.getPlaybookCategory ordering is implicitapp/Services/Crm/Helpers/CrmHelperRepository.php:22→›orderBy("1d, "desc")Ordering by id desc and taking the first result is a tie-breaking heuristic (take the newest duplicate) but this intentionisn't documented. A comment explaining why duplicates may exist and the resolution strategy would prevent futuresurprises.contact id bypasses the accessor patternapp/Services/Crm/Listeners/ConvertLeadActivities.php:124'contact_id' => $convertedLead->getAttribute('converted_contact_id'),Other converted IDs in the same method use typed accessor methods (e.g. getopportunity() , getAccount () ), butconverted contact id goes directly through getAttribute. Minor inconsistency.Positives worth calling out• The N+1 fix in ConvertLeadActivities is well done - computing the update payload once and applying it to allactivities is clearly the right approach.• The withDelay docblock is excellent: it explains why the delay exists, not just what it does. That context would bevery hard to reconstruct later.Chaneieu tertcetwyrypse) te ant poyotegtreyayi: grepaybno th)/ ule tat oreuch cales (inctuing• The Dispatcher injection in SalesforcelService constructor is a good improvement for testability over theevent() helner...
|
75181
|
|
75182
|
NULL
|
0
|
2026-04-23T10:42:06.017402+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776940926017_m1.jpg...
|
Slack
|
Galya Dimitrova (DM) - Jiminny Inc - 1 new item - Galya Dimitrova (DM) - 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
ai-team
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
Vasil Vasilev
Adelina Petrova
Stoyan Tomov
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Galya Dimitrova
Stefka Stoyanova
Stoyan Tanev
Toast
Jira Cloud
Google Calendar
Messages
Messages
Files
Files
Untitled
Untitled
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Apr 20th at 10:56:36 AM
10:56 AM
например при Activity Logged или Shared Activity и няколко други пращаме споделен payloаd [
‘provider’ => $activity->getProvider(),
‘channel’ => $activity->getType(),
‘duration’ => $activity->getDuration(),
‘status’ => $activity->getStatus(),
‘recordingStatus’ => $activity->getRecordingState(),
‘private’ => $activity->getIsPrivate(),
‘logged’ => $activity->hasCrmProviderId(),
];
Apr 20th at 10:57:21 AM
10:57
не ги виждам в UI
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:03:17 AM
11:03 AM
ще пиша на съпорта им да видя как се стига до това
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:07:43 AM
11:07
о боже, намерих го
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:30 AM
11:09
мога да ползвам метаданните обаче само като правя репорти/чартове
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:50 AM
11:09
но не мога да ги ползвам ако искам на база на тях да пускам определени банери
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:59 AM
11:09
та най добре в този случай да са два отделни евента
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Apr 20th at 11:10:56 AM
11:10 AM
ок, ‘report_type’ и ‘frequency’ ги оставям в payload и на двата
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:11:08 AM
11:11 AM
ок
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам ai-reports страница.
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам ai-reports страница.
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Shift + Return to add a new line
Shift + Return
to add a new line
Adelina Petrova, Direct Message, 1 of 7 suggestions
Channel...
|
[{"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":"ai-team","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":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":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","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":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Google Calendar","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Untitled","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Untitled","depth":19,"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":22,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 10:56:36 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:56 AM","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"например при Activity Logged или Shared Activity и няколко други пращаме споделен payloаd [","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘provider’ => $activity->getProvider(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘channel’ => $activity->getType(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘duration’ => $activity->getDuration(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘status’ => $activity->getStatus(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘recordingStatus’ => $activity->getRecordingState(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘private’ => $activity->getIsPrivate(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘logged’ => $activity->hasCrmProviderId(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 10:57:21 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:57","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"не ги виждам в UI","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"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":25,"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":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Galya Dimitrova","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 11:03:17 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:03 AM","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ще пиша на съпорта им да видя как се стига до това","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"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":25,"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":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:07:43 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:07","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"о боже, намерих го","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"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":25,"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":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:09:30 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:09","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"мога да ползвам метаданните обаче само като правя репорти/чартове","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"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":25,"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":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:09:50 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:09","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"но не мога да ги ползвам ако искам на база на тях да пускам определени банери","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"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":25,"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":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:09:59 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:09","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"та най добре в този случай да са два отделни евента","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"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":25,"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":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 11:10:56 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:10 AM","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ок, ‘report_type’ и ‘frequency’ ги оставям в payload и на двата","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"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":25,"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":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Galya Dimitrova","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 11:11:08 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:11 AM","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ок","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"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":25,"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":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Здрасти имам бърз въпрос.\nАко има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам ai-reports страница. \nИма ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.","depth":23,"value":"Здрасти имам бърз въпрос.\nАко има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам ai-reports страница. \nИма ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Здрасти имам бърз въпрос.","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам ai-reports страница.","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.","depth":25,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":20,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova, Direct Message, 1 of 7 suggestions","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"role_description":"text"}]...
|
-1326570335419757212
|
-1279703086840510121
|
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
ai-team
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
Vasil Vasilev
Adelina Petrova
Stoyan Tomov
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Galya Dimitrova
Stefka Stoyanova
Stoyan Tanev
Toast
Jira Cloud
Google Calendar
Messages
Messages
Files
Files
Untitled
Untitled
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Apr 20th at 10:56:36 AM
10:56 AM
например при Activity Logged или Shared Activity и няколко други пращаме споделен payloаd [
‘provider’ => $activity->getProvider(),
‘channel’ => $activity->getType(),
‘duration’ => $activity->getDuration(),
‘status’ => $activity->getStatus(),
‘recordingStatus’ => $activity->getRecordingState(),
‘private’ => $activity->getIsPrivate(),
‘logged’ => $activity->hasCrmProviderId(),
];
Apr 20th at 10:57:21 AM
10:57
не ги виждам в UI
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:03:17 AM
11:03 AM
ще пиша на съпорта им да видя как се стига до това
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:07:43 AM
11:07
о боже, намерих го
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:30 AM
11:09
мога да ползвам метаданните обаче само като правя репорти/чартове
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:50 AM
11:09
но не мога да ги ползвам ако искам на база на тях да пускам определени банери
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:59 AM
11:09
та най добре в този случай да са два отделни евента
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Apr 20th at 11:10:56 AM
11:10 AM
ок, ‘report_type’ и ‘frequency’ ги оставям в payload и на двата
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:11:08 AM
11:11 AM
ок
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам ai-reports страница.
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам ai-reports страница.
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Shift + Return to add a new line
Shift + Return
to add a new line
Adelina Petrova, Direct Message, 1 of 7 suggestions
Channel
iTerm2ShellEditViewSessionScriptsProfilesWindowHelpla6lSupport Daily - in 1h 18 mБг)100% <78Thu 23 Apr 13:42:05DOCKER181DEV (-zsh)O $82PROD (ssh)APP (-zsh)181docker_lamp_12026-04-23 10:23:03 Running ['artisan' dialers:monitor-activities]docker_1amp_11 '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/docker_lamp_12026-04-23 10:23:04 Running ['artisan'jiminny:monitor-social-accountdocker_lamp_1proc/1/fd/1'docker_lamp_11 '/usr/local/bin/php' 'artisan'jiminny:monitor-social-accounts > '/2026-04-23 10:23:05 Running ['artisan'mailbox:skip-lists:refresh]docker_lamp_11 '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh › */proc/docker_1amp_12026-04-23 10:23:07 Running ['artisan'mailbox:batch:process --max-badocker_lamp_11 '/usr/local/bin/php' 'artisan'mailbox:batch:process --max-batches=15 > */proc/1/fd/1* 2>&1docker_lamp_12026-04-23 10:23:08 Running ['artisan'mailbox:batch:retry-failed --max-batches=15] in background 0.98ms DONEdocker_lamp_1 |• ('/usr/local/bin/php' 'artisan'mailbox:batch:retry-failedtches=15 › '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php'schedule: finishrk/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null'docker_lamp_12026-04-23 10:23:08 Running ['artisan'crm: integration-app-validate-team-connection] Parameter 'teamId' is not provided. Loading all teams using IntegrationAdocker_lamp_1docker_lamp_1docker_lamp_1nnection >'/proc/1/fd/1' 2>&1docker_lamp_1docker_Lamp_1docker_lamp_1TeamActiveConnectionJobdocker_lamp_1TeamActiveConnectionJobdocker_Lamp_1docker_lamp_11S DONEdocker_1amp_1fd/1' 2>&1docker_lamp_11s DONEdocker_lamp_11/fd/1'docker_1amp_111 team connections to be validated.1 '/usr/local/bin/php' 'artisan' crm: integration-app-validate-team-coI run_artisan_schedule: Done waiting for schedule:run2026-04-23 10:23:10 Jiminny\Services\Crm\IntegrationApp\Jobs\ValidateRUNNING2026-04-23 10:23:10 Jiminny\Services\Crm\IntegrationApp\Jobs\Validate320.81ms DONE2026-04-23 10:24:02 Running ['artisan'meeting-bot: schedule-bot] ….1 '/usr/local/bin/php' 'artisan"meeting-bot: schedule-bot > */proc/1/2026-04-23 10:24:04 Running ['artisan' dialers:monitor-activities] .1 '/usr/local/bin/php' 'artisan' dialers:monitor-activities › '/proc/2026-04-23 10:24:05 Running ['artisan'jiminny:monitor-social-account83screenpipe"12PROD (ssh)Run 'do-release-upgrade' to upgrade to it.O ₴4-zsh*** System restart required ***Last login: Wed Apr 22 12:09:092026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|X T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny$X 15 QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX 16 FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003*5PRODSTAGEPoetry could not find a pyproject.toml file in /Users/lukas or its parentsFRONTENDPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I17 EXt(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~...
|
75180
|
|
75118
|
NULL
|
0
|
2026-04-23T10:37:23.910108+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776940643910_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
HomeActivityMoreSlackcalVIewmistonWindowhelp@ Desc HomeActivityMoreSlackcalVIewmistonWindowhelp@ Describe what you are looking forJiminny... vi random# releases# sona-ofnce# support# thank-vous# the people of jimi..6- Direct messages3 Aneliya Angelova, ...• Vasil VasilevR. AdelinaPy.Stoyan TomovNikolav Yankov.3 Dotko Kachinckif Aneliva Angelova. Nikolay NikolovMario Georgievey lodor StamatovGabriela Dureva© Galva Dimitrova* Stefka StoyanovaStovan Taney::: Apps8 Toast-T lira Cloud(m) Google Cale.* Aneliya Angelova, ...MessagesAdd canvaUr FilesTukas Kovallk 10-12 AMда, ами добреToday ~ на на старитеAneliya Angelova 10:14 AMокитаитьла на репорта и Data source секцияташе показват поавилния периол нали -понеже това се разминаваше лпо сега.Lukas Kovalik 10:47 AMсега забелязах че стария count които сеползва в пои контрол на лостьпіcanAccessAiRenort боои само ресултатикойто са поатени. не тези които сагeнериоаниNikolav Yankov 1:31 PMкакво значи които са пратени?по приниип условието беше - ако за user-aима генерирано и може ла го глела на атrevorts стоаниuaтаLukas Kovalik 1:35 PMла, говоря за нешо още от прели, count.който се глела дали има user прaво ла глелаal-revorts стоаница . орои пратени не тезикойто са генериоани само. Реално ако сепраща всичко на ред почти няма да севижла пазлика editedMessage Aneliva Angelova, Nikolay Yankov. Steli…+ Aa €••• ШNew TalAl reports promotion pages by nik• Jy-9712 | Nuges to expire after on8 Jiminnyu Userpilot | Saved Reports8 JiminnyJy 20541 extract common trait X17 OpenClv 20541 eytract common traits #12009Vasil-Jiminny wants to merge 40 commits into master from JY-20541-extract-common-traits L@ Filter files...• • appv Component/Activity/ServicesE GetDefaultActivitvTvpeServic……• = Listeners/Crm*) RemoteCrmRecordDeletedList..• F ModelsE) Activity.phpE PlaybookCategorv.phpv E Services/Crmv E CloseE Service.ohrv F Heloersi• ActivityPlaybookTrait.php+ CrmHelperRepositorv.ohpv — Listeners=) ConvertLeadActivities.php& Salesforcev& Fields+ FieldHelper.php• E ServiceTraits+ FollowupActivityTrait.phpE Service.php# BaseService.ohp• — tectc/l Init|• = Component/Activitv/ServicesÆ GetDefaultActivitvTvpeService~ E Services/CrmE Helpers# ActivitvPlavbookTraitTest.nhnv # IntegrationApp@ ServiceTest.ohov A listeners*) ConvertLeadActivitiesTest.phpapp/Services/Crm/Listeners/ConvertLeadActivities.php L85 -CactivitvData ="'lead id' => null.87'account_id' => $convertedLead->getAttribute('converted_account_id') ?? null,'contact_id' => $convertedLead->getAttribute('converted_contact_id') ?? null,'opportunity 1d' => Sconverted0pportun1ty?->qetid,'stage_id' => $convertedOpportunity?->getAttribute('stage_id'),'value' => SconvertedOpportun1ty?->qetAttribute 'value'),Sactivitv-sundate(SactivitvData):> aoo/Services/Crm/Salesforce/Fields/FieldHeloer.oho (> app/Services/Crm/Salesforce/ServiceTraits/FollowupActivityTrait.php> app/Services/Crm/Salesforce/Service.php> aoo/Services/Crm/BaseService.oho ( t.> tests/Unit/Component/Activitv/Services/GetDefaul+ActivitvTvneServiceTest.oho r .> tests/Unit/Services/Crm/Helpers/ActivityPlaybookTraitTest.php> tests/Unit/Services/Crm/IntegrationApp/ServiceTest.php (@ + +0 • f Support Daily - in 1h 23 mБГ100% S2Retresh O 19/ 20 viewed• Checks pendina+64 -30 0002} else {* Hydrating the account guarantees it is reachable and usable$convertedAccountId = $converted0pportunity->getAccount()?->getId();InU 23 Aor 13.3/-23Viewed* It there 1s a converted Opportunity, take the account trom 1t.* The opportunity has higher priority than the account.* If there is a converted Account, take the account from it directlySconvertedAccountld 7?= SconvertedLead->qetAccount(7->qetid)=return'lead_id' => null,'account 1d' => SconvertedAccountid.'contact_id' => $convertedLead->getAttribute('converted_contact_id'),'opportunity 1d' => Sconverted0pportun1ty?->qetid.'stage_id' => $convertedOpportunity?->getAttribute('stage_id'),'value' => SconvertedOpportun1ty?->qetAttribute 'value'),+18 00000• Viewed+138 08008 | v Viewed+5 -80 2000+1 -2 077•ViewedViewed+2-2 0020Viewed...
|
NULL
|
-6533582654876412376
|
NULL
|
click
|
ocr
|
NULL
|
HomeActivityMoreSlackcalVIewmistonWindowhelp@ Desc HomeActivityMoreSlackcalVIewmistonWindowhelp@ Describe what you are looking forJiminny... vi random# releases# sona-ofnce# support# thank-vous# the people of jimi..6- Direct messages3 Aneliya Angelova, ...• Vasil VasilevR. AdelinaPy.Stoyan TomovNikolav Yankov.3 Dotko Kachinckif Aneliva Angelova. Nikolay NikolovMario Georgievey lodor StamatovGabriela Dureva© Galva Dimitrova* Stefka StoyanovaStovan Taney::: Apps8 Toast-T lira Cloud(m) Google Cale.* Aneliya Angelova, ...MessagesAdd canvaUr FilesTukas Kovallk 10-12 AMда, ами добреToday ~ на на старитеAneliya Angelova 10:14 AMокитаитьла на репорта и Data source секцияташе показват поавилния периол нали -понеже това се разминаваше лпо сега.Lukas Kovalik 10:47 AMсега забелязах че стария count които сеползва в пои контрол на лостьпіcanAccessAiRenort боои само ресултатикойто са поатени. не тези които сагeнериоаниNikolav Yankov 1:31 PMкакво значи които са пратени?по приниип условието беше - ако за user-aима генерирано и може ла го глела на атrevorts стоаниuaтаLukas Kovalik 1:35 PMла, говоря за нешо още от прели, count.който се глела дали има user прaво ла глелаal-revorts стоаница . орои пратени не тезикойто са генериоани само. Реално ако сепраща всичко на ред почти няма да севижла пазлика editedMessage Aneliva Angelova, Nikolay Yankov. Steli…+ Aa €••• ШNew TalAl reports promotion pages by nik• Jy-9712 | Nuges to expire after on8 Jiminnyu Userpilot | Saved Reports8 JiminnyJy 20541 extract common trait X17 OpenClv 20541 eytract common traits #12009Vasil-Jiminny wants to merge 40 commits into master from JY-20541-extract-common-traits L@ Filter files...• • appv Component/Activity/ServicesE GetDefaultActivitvTvpeServic……• = Listeners/Crm*) RemoteCrmRecordDeletedList..• F ModelsE) Activity.phpE PlaybookCategorv.phpv E Services/Crmv E CloseE Service.ohrv F Heloersi• ActivityPlaybookTrait.php+ CrmHelperRepositorv.ohpv — Listeners=) ConvertLeadActivities.php& Salesforcev& Fields+ FieldHelper.php• E ServiceTraits+ FollowupActivityTrait.phpE Service.php# BaseService.ohp• — tectc/l Init|• = Component/Activitv/ServicesÆ GetDefaultActivitvTvpeService~ E Services/CrmE Helpers# ActivitvPlavbookTraitTest.nhnv # IntegrationApp@ ServiceTest.ohov A listeners*) ConvertLeadActivitiesTest.phpapp/Services/Crm/Listeners/ConvertLeadActivities.php L85 -CactivitvData ="'lead id' => null.87'account_id' => $convertedLead->getAttribute('converted_account_id') ?? null,'contact_id' => $convertedLead->getAttribute('converted_contact_id') ?? null,'opportunity 1d' => Sconverted0pportun1ty?->qetid,'stage_id' => $convertedOpportunity?->getAttribute('stage_id'),'value' => SconvertedOpportun1ty?->qetAttribute 'value'),Sactivitv-sundate(SactivitvData):> aoo/Services/Crm/Salesforce/Fields/FieldHeloer.oho (> app/Services/Crm/Salesforce/ServiceTraits/FollowupActivityTrait.php> app/Services/Crm/Salesforce/Service.php> aoo/Services/Crm/BaseService.oho ( t.> tests/Unit/Component/Activitv/Services/GetDefaul+ActivitvTvneServiceTest.oho r .> tests/Unit/Services/Crm/Helpers/ActivityPlaybookTraitTest.php> tests/Unit/Services/Crm/IntegrationApp/ServiceTest.php (@ + +0 • f Support Daily - in 1h 23 mБГ100% S2Retresh O 19/ 20 viewed• Checks pendina+64 -30 0002} else {* Hydrating the account guarantees it is reachable and usable$convertedAccountId = $converted0pportunity->getAccount()?->getId();InU 23 Aor 13.3/-23Viewed* It there 1s a converted Opportunity, take the account trom 1t.* The opportunity has higher priority than the account.* If there is a converted Account, take the account from it directlySconvertedAccountld 7?= SconvertedLead->qetAccount(7->qetid)=return'lead_id' => null,'account 1d' => SconvertedAccountid.'contact_id' => $convertedLead->getAttribute('converted_contact_id'),'opportunity 1d' => Sconverted0pportun1ty?->qetid.'stage_id' => $convertedOpportunity?->getAttribute('stage_id'),'value' => SconvertedOpportun1ty?->qetAttribute 'value'),+18 00000• Viewed+138 08008 | v Viewed+5 -80 2000+1 -2 077•ViewedViewed+2-2 0020Viewed...
|
NULL
|
|
75117
|
NULL
|
0
|
2026-04-23T10:37:23.910146+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776940643910_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0# Support Daily - in 1h 23 mБг)100% <78Thu 23 Apr 13:37:23PROD (ssh)T81DOCKER181DEV (-zsh)O $82APP (-zsh)DOCKER (docker-compose)proc/1/fd/1'2>&1docker_lamp_112026-04-23 10:19:05 Running ['artisan'mailbox:skip-lists:refresh]1S DONEdocker_1amp_11 '/usr/local/bin/php' 'artisan'mailbox:skip-lists:refresh >1/fd/1'*/proc/2>&1docker_lamp_11tches=15]1sDONE2026-04-23 10:19:07 Running ['artisan'mailbox:batch:process--max-badocker_1amp_11 '/usr/local/bin/php' 'artisan"mailbox:batch:process --max-batches=15 >*/proc/1/fd/1' 2>&1docker_lamp_1docker_lamp_1docker_lamp_1run_artisan_schedule: Done waiting for schedule:rundocker_1amp_12026-04-23 10:20:02 Running ['artisan'meeting-bot: schedule-bot]1sDONEdocker_lamp_1fd/1'1 '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot › */proc/1/2>&1docker_lamp_12026-04-23 10:20:04 Running ['artisan' dialers:monitor-activities] .1s DONEdocker_lamp_1 | '/usr/local/bin/php' 'artisan' dialers:monitor-activities › '/proc/1/fd/1'2>&1docker_lamp_12026-04-23 10:20:05 Running ['artisan'jiminny:monitor-social-accountS]1s DONEdocker_1amp_11 '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > */proc/1/fd/1'2>&1docker_lamp_1 |2026-04-23 10:20:06 Running ['artisan' mailbox:skip-lists:refresh].1s DONEdocker_lamp_1 | , '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh › '/proc/1/fd/1'2>&1docker_lamp_112026-04-23 10:20:07 Running ['artisan' mailbox:batch:process --max-batches=15J1s DONEdocker_lamp_11 '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1docker_lamp_12026-04-23 10:20:09 Running ['artisan'conference:monitor: count]1S DONEdocker_lamp_1fd/1'1 '/usr/local/bin/php' 'artisan'conference:monitor:count > '/proc/1/2>81docker_lamp_12026-04-23 10:20:10 Running ['artisan'activity:purge-stale]3s DONEdocker_lamp_111 '/usr/local/bin/php' 'artisan' activity:purge-stale › */proc/1/fd/12>&1docker_lamp_1docker_lamp_1docker_1amp_12026-04-23 10:20:14 Running ['artisan' mailbox:text-relay:sync] {"error":"invalid_request""error_description" :"Invalid impersonation \u0026quot; sub\u0026quot;field: @"83screenpipe"PROD (ssh)Run 'do-release-upgrade' to upgrade to it.O $4-zsh*** System restart required ***Last login: Wed Apr 22 12:09:092026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|X T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetrycould not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny$XIT5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX 16FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003*5PRODSTAGEPoetry could not find a pyproject.toml file in /Users/lukas or its parentsFRONTENDPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I17 EXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|...
|
NULL
|
5312233686407958905
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0# Support Daily - in 1h 23 mБг)100% <78Thu 23 Apr 13:37:23PROD (ssh)T81DOCKER181DEV (-zsh)O $82APP (-zsh)DOCKER (docker-compose)proc/1/fd/1'2>&1docker_lamp_112026-04-23 10:19:05 Running ['artisan'mailbox:skip-lists:refresh]1S DONEdocker_1amp_11 '/usr/local/bin/php' 'artisan'mailbox:skip-lists:refresh >1/fd/1'*/proc/2>&1docker_lamp_11tches=15]1sDONE2026-04-23 10:19:07 Running ['artisan'mailbox:batch:process--max-badocker_1amp_11 '/usr/local/bin/php' 'artisan"mailbox:batch:process --max-batches=15 >*/proc/1/fd/1' 2>&1docker_lamp_1docker_lamp_1docker_lamp_1run_artisan_schedule: Done waiting for schedule:rundocker_1amp_12026-04-23 10:20:02 Running ['artisan'meeting-bot: schedule-bot]1sDONEdocker_lamp_1fd/1'1 '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot › */proc/1/2>&1docker_lamp_12026-04-23 10:20:04 Running ['artisan' dialers:monitor-activities] .1s DONEdocker_lamp_1 | '/usr/local/bin/php' 'artisan' dialers:monitor-activities › '/proc/1/fd/1'2>&1docker_lamp_12026-04-23 10:20:05 Running ['artisan'jiminny:monitor-social-accountS]1s DONEdocker_1amp_11 '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > */proc/1/fd/1'2>&1docker_lamp_1 |2026-04-23 10:20:06 Running ['artisan' mailbox:skip-lists:refresh].1s DONEdocker_lamp_1 | , '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh › '/proc/1/fd/1'2>&1docker_lamp_112026-04-23 10:20:07 Running ['artisan' mailbox:batch:process --max-batches=15J1s DONEdocker_lamp_11 '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1docker_lamp_12026-04-23 10:20:09 Running ['artisan'conference:monitor: count]1S DONEdocker_lamp_1fd/1'1 '/usr/local/bin/php' 'artisan'conference:monitor:count > '/proc/1/2>81docker_lamp_12026-04-23 10:20:10 Running ['artisan'activity:purge-stale]3s DONEdocker_lamp_111 '/usr/local/bin/php' 'artisan' activity:purge-stale › */proc/1/fd/12>&1docker_lamp_1docker_lamp_1docker_1amp_12026-04-23 10:20:14 Running ['artisan' mailbox:text-relay:sync] {"error":"invalid_request""error_description" :"Invalid impersonation \u0026quot; sub\u0026quot;field: @"83screenpipe"PROD (ssh)Run 'do-release-upgrade' to upgrade to it.O $4-zsh*** System restart required ***Last login: Wed Apr 22 12:09:092026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|X T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetrycould not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny$XIT5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX 16FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003*5PRODSTAGEPoetry could not find a pyproject.toml file in /Users/lukas or its parentsFRONTENDPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I17 EXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|...
|
75110
|
|
75056
|
NULL
|
0
|
2026-04-23T10:32:05.500358+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776940325500_m1.jpg...
|
Firefox
|
Jy 20541 extract common traits by Vasil-Jiminny · Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/12008/changes#diff-79d github.com/jiminny/app/pull/12008/changes#diff-79dc084299d57efa2491d7f2eae6b88fe02c19af3ff28601d13918799c987bef...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close 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 (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
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 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1321 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (40)
Commits
(
40
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
All commits
All commits
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Refresh
Refresh
19
/
20
viewed
Checks pending
Checks pending
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component/Activity/Services
GetDefaultActivityTypeService.php
GetDefaultActivityTypeService.php
Listeners/Crm
RemoteCrmRecordDeletedListener.php
RemoteCrmRecordDeletedListener.php
Models
Activity.php
Activity.php
PlaybookCategory.php
PlaybookCategory.php
Services/Crm
Close
Service.php
Service.php
Helpers
ActivityPlaybookTrait.php
ActivityPlaybookTrait.php
CrmHelperRepository.php
CrmHelperRepository.php
Listeners
ConvertLeadActivities.php
ConvertLeadActivities.php
Salesforce
Fields
FieldHelper.php
FieldHelper.php
ServiceTraits
FollowupActivityTrait.php
FollowupActivityTrait.php
Service.php
Service.php
BaseService.php
BaseService.php
tests/Unit
Component/Activity/Services
GetDefaultActivityTypeServiceTest.php
GetDefaultActivityTypeServiceTest.php
Services/Crm
Helpers
ActivityPlaybookTraitTest.php
ActivityPlaybookTraitTest.php
IntegrationApp
ServiceTest.php
ServiceTest.php
Listeners
ConvertLeadActivitiesTest.php
ConvertLeadActivitiesTest.php
Salesforce
Fields
ServiceTraits
Expand file
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
Copy file name to clipboard
Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php
Lines changed: 7 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Copy file name to clipboard
Expand all lines: app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Lines changed: 0 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Models/Activity.php
app/Models/Activity.php
app/Models/Activity.php
Copy file name to clipboard
Expand all lines: app/Models/Activity.php
Lines changed: 21 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
Copy file name to clipboard
Expand all lines: app/Models/PlaybookCategory.php
Lines changed: 1 addition & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Services/Crm/Close/Service.php
app/Services/Crm/Close/Service.php
app/Services/Crm/Close/Service.php
Copy file name to clipboard
Expand all lines: app/Services/Crm/Close/Service.php
Lines changed: 3 additions & 2 deletions
Viewed
Viewed
Comment on this file
More options
Expand file
app/Services/Crm/Helpers/ActivityPlaybookTrait.php
app/Services/Crm/Helpers/ActivityPlaybookTrait.php
app/Services/Crm/Helpers/ActivityPlaybookTrait.php
Copy file name to clipboard
Lines changed: 79 additions & 0 deletions
Viewed
Viewed
Comment on this file
More options
Expand file
app/Services/Crm/Helpers/CrmHelperRepository.php
app/Services/Crm/Helpers/CrmHelperRepository.php
app/Services/Crm/Helpers/CrmHelperRepository.php
Copy file name to clipboard
Lines changed: 40 additions & 0 deletions
Viewed
Viewed
Comment on this file
More options
Collapse file
app/Services/Crm/Listeners/ConvertLeadActivities.php
app/Services/Crm/Listeners/ConvertLeadActivities.php
app/Services/Crm/Listeners/ConvertLeadActivities.php
Copy file name to clipboard
Expand all lines: app/Services/Crm/Listeners/ConvertLeadActivities.php
Lines changed: 64 additions & 30 deletions
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -5,29 +5,54 @@
5
namespace
Jiminny
\
Services
\
Crm
\
Listeners
;
5
namespace
Jiminny
\
Services
\
Crm
\
Listeners
;
6
6
7
use
Illuminate
\
Contracts
\
Queue
\
ShouldQueue
;
7
use
Illuminate
\
Contracts
\
Queue
\
ShouldQueue
;
8
+
use
Illuminate
\
Queue
\
InteractsWithQueue
;
9
+
use
Illuminate
\
Support
\
Collection
;
10
+
use
Jiminny
\
Component
\
Queue
\
Constants
;
8
use
Jiminny
\
Events
\
Activities
\
Crm
\
LeadConverted
;
11
use
Jiminny
\
Events
\
Activities
\
Crm
\
LeadConverted
;
9
use
Jiminny
\
Models
\
Activity
;
12
use
Jiminny
\
Models
\
Activity
;
10
use
Jiminny
\
Models
\
Crm
\
Configuration
;
13
use
Jiminny
\
Models
\
Crm
\
Configuration
;
11
use
Jiminny
\
Models
\
Lead
;
14
use
Jiminny
\
Models
\
Lead
;
12
-
use
Jiminny
\
Models
\
Team
;
13
use...
|
[{"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":"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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · 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 | Saved Reports","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Saved Reports","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 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · 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},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.017361112,"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":"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 (33)","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":"33","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 (32)","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":"32","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 20541 extract common traits #12008 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","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":"Checks pending","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","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":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 40 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-20541-extract-common-traits","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","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: 1321 additions & 442 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 (40)","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":"40","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 (2)","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":"2","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 (20)","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":"20","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 20541 extract common traits","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","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"},{"role":"AXLink","text":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 40 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-20541-extract-common-traits","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","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":"AXLink","text":"Refresh","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Refresh","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"viewed","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Checks pending","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Submit review","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Submit","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"review","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Open diff view settings","depth":14,"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,"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,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"(","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Filter files…","depth":16,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Filter options","depth":16,"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,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File tree","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Component/Activity/Services","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GetDefaultActivityTypeService.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GetDefaultActivityTypeService.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners/Crm","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RemoteCrmRecordDeletedListener.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"RemoteCrmRecordDeletedListener.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Models","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Activity.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Activity.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"PlaybookCategory.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PlaybookCategory.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Services/Crm","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Close","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Helpers","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ActivityPlaybookTrait.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ActivityPlaybookTrait.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CrmHelperRepository.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CrmHelperRepository.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ConvertLeadActivities.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ConvertLeadActivities.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Salesforce","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fields","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"FieldHelper.php","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"FieldHelper.php","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ServiceTraits","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"FollowupActivityTrait.php","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"FollowupActivityTrait.php","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"BaseService.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BaseService.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tests/Unit","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Component/Activity/Services","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GetDefaultActivityTypeServiceTest.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GetDefaultActivityTypeServiceTest.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Services/Crm","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Helpers","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ActivityPlaybookTraitTest.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ActivityPlaybookTraitTest.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"IntegrationApp","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ServiceTest.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ServiceTest.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners","depth":23,"bounds":{"left":0.15243055,"top":0.0,"width":0.04097222,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ConvertLeadActivitiesTest.php","depth":25,"bounds":{"left":0.1579861,"top":0.0,"width":0.13645834,"height":0.018888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ConvertLeadActivitiesTest.php","depth":26,"bounds":{"left":0.1579861,"top":0.0,"width":0.13645834,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Salesforce","depth":23,"bounds":{"left":0.15243055,"top":0.0033333334,"width":0.047222223,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fields","depth":25,"bounds":{"left":0.1579861,"top":0.039444443,"width":0.02638889,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ServiceTraits","depth":25,"bounds":{"left":0.1579861,"top":0.11055555,"width":0.057291668,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Component/Activity/Services/GetDefaultActivityTypeService.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":"AXButton","text":"Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 7 additions & 1 deletion","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Listeners/Crm/RemoteCrmRecordDeletedListener.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Listeners/Crm/RemoteCrmRecordDeletedListener.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Listeners/Crm/RemoteCrmRecordDeletedListener.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":"AXButton","text":"Expand all lines: app/Listeners/Crm/RemoteCrmRecordDeletedListener.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 0 additions & 1 deletion","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Models/Activity.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Models/Activity.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Models/Activity.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":"AXButton","text":"Expand all lines: app/Models/Activity.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 21 additions & 1 deletion","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Models/PlaybookCategory.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Models/PlaybookCategory.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Models/PlaybookCategory.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":"AXButton","text":"Expand all lines: app/Models/PlaybookCategory.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 1 addition & 1 deletion","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Services/Crm/Close/Service.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Services/Crm/Close/Service.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Services/Crm/Close/Service.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":"AXButton","text":"Expand all lines: app/Services/Crm/Close/Service.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 3 additions & 2 deletions","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Services/Crm/Helpers/ActivityPlaybookTrait.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Services/Crm/Helpers/ActivityPlaybookTrait.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Services/Crm/Helpers/ActivityPlaybookTrait.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: 79 additions & 0 deletions","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Services/Crm/Helpers/CrmHelperRepository.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Services/Crm/Helpers/CrmHelperRepository.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Services/Crm/Helpers/CrmHelperRepository.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: 40 additions & 0 deletions","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"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/Services/Crm/Listeners/ConvertLeadActivities.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Services/Crm/Listeners/ConvertLeadActivities.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Services/Crm/Listeners/ConvertLeadActivities.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":"AXButton","text":"Expand all lines: app/Services/Crm/Listeners/ConvertLeadActivities.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 64 additions & 30 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":"@@ -5,29 +5,54 @@","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":"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":"Services","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":"Listeners","depth":18,"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":"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":"Services","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":"Listeners","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":"6","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Illuminate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Contracts","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Queue","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ShouldQueue","depth":18,"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":"use","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Illuminate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Contracts","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Queue","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ShouldQueue","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":"Illuminate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Queue","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"InteractsWithQueue","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":"use","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Illuminate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Support","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Collection","depth":18,"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":"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":"Component","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Queue","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Constants","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":"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":"Events","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activities","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":"LeadConverted","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","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":"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":"Events","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activities","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":"LeadConverted","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":"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":"Activity","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":"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":"Activity","depth":18,"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":"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":"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":"Configuration","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":"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":"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":"Configuration","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","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":"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":"Lead","depth":18,"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":"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":"Lead","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":"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":"13","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-4209228066857584927
|
-5427550083703873211
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close 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 (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
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 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1321 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (40)
Commits
(
40
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
All commits
All commits
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Refresh
Refresh
19
/
20
viewed
Checks pending
Checks pending
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component/Activity/Services
GetDefaultActivityTypeService.php
GetDefaultActivityTypeService.php
Listeners/Crm
RemoteCrmRecordDeletedListener.php
RemoteCrmRecordDeletedListener.php
Models
Activity.php
Activity.php
PlaybookCategory.php
PlaybookCategory.php
Services/Crm
Close
Service.php
Service.php
Helpers
ActivityPlaybookTrait.php
ActivityPlaybookTrait.php
CrmHelperRepository.php
CrmHelperRepository.php
Listeners
ConvertLeadActivities.php
ConvertLeadActivities.php
Salesforce
Fields
FieldHelper.php
FieldHelper.php
ServiceTraits
FollowupActivityTrait.php
FollowupActivityTrait.php
Service.php
Service.php
BaseService.php
BaseService.php
tests/Unit
Component/Activity/Services
GetDefaultActivityTypeServiceTest.php
GetDefaultActivityTypeServiceTest.php
Services/Crm
Helpers
ActivityPlaybookTraitTest.php
ActivityPlaybookTraitTest.php
IntegrationApp
ServiceTest.php
ServiceTest.php
Listeners
ConvertLeadActivitiesTest.php
ConvertLeadActivitiesTest.php
Salesforce
Fields
ServiceTraits
Expand file
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
Copy file name to clipboard
Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php
Lines changed: 7 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Copy file name to clipboard
Expand all lines: app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Lines changed: 0 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Models/Activity.php
app/Models/Activity.php
app/Models/Activity.php
Copy file name to clipboard
Expand all lines: app/Models/Activity.php
Lines changed: 21 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
Copy file name to clipboard
Expand all lines: app/Models/PlaybookCategory.php
Lines changed: 1 addition & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Services/Crm/Close/Service.php
app/Services/Crm/Close/Service.php
app/Services/Crm/Close/Service.php
Copy file name to clipboard
Expand all lines: app/Services/Crm/Close/Service.php
Lines changed: 3 additions & 2 deletions
Viewed
Viewed
Comment on this file
More options
Expand file
app/Services/Crm/Helpers/ActivityPlaybookTrait.php
app/Services/Crm/Helpers/ActivityPlaybookTrait.php
app/Services/Crm/Helpers/ActivityPlaybookTrait.php
Copy file name to clipboard
Lines changed: 79 additions & 0 deletions
Viewed
Viewed
Comment on this file
More options
Expand file
app/Services/Crm/Helpers/CrmHelperRepository.php
app/Services/Crm/Helpers/CrmHelperRepository.php
app/Services/Crm/Helpers/CrmHelperRepository.php
Copy file name to clipboard
Lines changed: 40 additions & 0 deletions
Viewed
Viewed
Comment on this file
More options
Collapse file
app/Services/Crm/Listeners/ConvertLeadActivities.php
app/Services/Crm/Listeners/ConvertLeadActivities.php
app/Services/Crm/Listeners/ConvertLeadActivities.php
Copy file name to clipboard
Expand all lines: app/Services/Crm/Listeners/ConvertLeadActivities.php
Lines changed: 64 additions & 30 deletions
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -5,29 +5,54 @@
5
namespace
Jiminny
\
Services
\
Crm
\
Listeners
;
5
namespace
Jiminny
\
Services
\
Crm
\
Listeners
;
6
6
7
use
Illuminate
\
Contracts
\
Queue
\
ShouldQueue
;
7
use
Illuminate
\
Contracts
\
Queue
\
ShouldQueue
;
8
+
use
Illuminate
\
Queue
\
InteractsWithQueue
;
9
+
use
Illuminate
\
Support
\
Collection
;
10
+
use
Jiminny
\
Component
\
Queue
\
Constants
;
8
use
Jiminny
\
Events
\
Activities
\
Crm
\
LeadConverted
;
11
use
Jiminny
\
Events
\
Activities
\
Crm
\
LeadConverted
;
9
use
Jiminny
\
Models
\
Activity
;
12
use
Jiminny
\
Models
\
Activity
;
10
use
Jiminny
\
Models
\
Crm
\
Configuration
;
13
use
Jiminny
\
Models
\
Crm
\
Configuration
;
11
use
Jiminny
\
Models
\
Lead
;
14
use
Jiminny
\
Models
\
Lead
;
12
-
use
Jiminny
\
Models
\
Team
;
13
use...
|
75053
|
|
75055
|
NULL
|
0
|
2026-04-23T10:32:03.635840+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776940323635_m2.jpg...
|
Firefox
|
Jy 20541 extract common traits by Vasil-Jiminny · Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/12008/changes#diff-79d github.com/jiminny/app/pull/12008/changes#diff-79dc084299d57efa2491d7f2eae6b88fe02c19af3ff28601d13918799c987bef...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close 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 (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
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 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1321 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (40)
Commits
(
40
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
All commits
All commits
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Refresh
Refresh
19
/
20
viewed
Checks pending
Checks pending
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component/Activity/Services
GetDefaultActivityTypeService.php
GetDefaultActivityTypeService.php
Listeners/Crm
RemoteCrmRecordDeletedListener.php
RemoteCrmRecordDeletedListener.php
Models
Activity.php
Activity.php
PlaybookCategory.php
PlaybookCategory.php
Services/Crm
Close
Service.php
Service.php
Helpers
ActivityPlaybookTrait.php
ActivityPlaybookTrait.php
CrmHelperRepository.php
CrmHelperRepository.php
Listeners
ConvertLeadActivities.php
ConvertLeadActivities.php
Salesforce
Fields
FieldHelper.php
FieldHelper.php
ServiceTraits
FollowupActivityTrait.php
FollowupActivityTrait.php
Service.php
Service.php
BaseService.php
BaseService.php
tests/Unit
Component/Activity/Services
GetDefaultActivityTypeServiceTest.php
GetDefaultActivityTypeServiceTest.php
Services/Crm
Helpers
ActivityPlaybookTraitTest.php
ActivityPlaybookTraitTest.php
IntegrationApp
ServiceTest.php
ServiceTest.php
Listeners
ConvertLeadActivitiesTest.php
ConvertLeadActivitiesTest.php
Salesforce
Fields
ServiceTraits
Expand file
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
Copy file name to clipboard
Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php
Lines changed: 7 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Copy file name to clipboard
Expand all lines: app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Lines changed: 0 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Models/Activity.php
app/Models/Activity.php
app/Models/Activity.php
Copy file name to clipboard
Expand all lines: app/Models/Activity.php
Lines changed: 21 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
Copy file name to clipboard
Expand all lines: app/Models/PlaybookCategory.php
Lines changed: 1 addition & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Services/Crm/Close/Service.php
app/Services/Crm/Close/Service.php
app/Services/Crm/Close/Service.php
Copy file name to clipboard
Expand all lines: app/Services/Crm/Close/Service.php
Lines changed: 3 additions & 2 deletions
Viewed
Viewed
Comment on this file
More options
Expand file
app/Services/Crm/Helpers/ActivityPlaybookTrait.php
app/Services/Crm/Helpers/ActivityPlaybookTrait.php
app/Services/Crm/Helpers/ActivityPlaybookTrait.php
Copy file name to clipboard
Lines changed: 79 additions & 0 deletions
Viewed
Viewed
Comment on this file
More options
Expand file
app/Services/Crm/Helpers/CrmHelperRepository.php
app/Services/Crm/Helpers/CrmHelperRepository.php
app/Services/Crm/Helpers/CrmHelperRepository.php
Copy file name to clipboard
Lines changed: 40 additions & 0 deletions
Viewed
Viewed
Comment on this file
More options
Collapse file
app/Services/Crm/Listeners/ConvertLeadActivities.php
app/Services/Crm/Listeners/ConvertLeadActivities.php
app/Services/Crm/Listeners/ConvertLeadActivities.php
Copy file name to clipboard
Expand all lines: app/Services/Crm/Listeners/ConvertLeadActivities.php
Lines changed: 64 additions & 30 deletions
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -5,29 +5,54 @@
5
namespace
Jiminny
\
Services
\
Crm
\
Listeners
;
5
namespace
Jiminny
\
Services
\
Crm
\
Listeners
;
6
6
7
use
Illuminate
\
Contracts
\
Queue
\
ShouldQueue
;
7
use
Illuminate
\
Contracts
\
Queue
\
ShouldQueue
;
8
+
use
Illuminate
\
Queue
\
InteractsWithQueue
;
9
+...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.23321144,"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":"New Tab","depth":4,"bounds":{"left":0.23138298,"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":"New Tab","depth":5,"bounds":{"left":0.24468085,"top":0.10614525,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"bounds":{"left":0.23138298,"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":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"bounds":{"left":0.24468085,"top":0.13886672,"width":0.14128989,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"bounds":{"left":0.23138298,"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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"bounds":{"left":0.24468085,"top":0.17158818,"width":0.16555852,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23138298,"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":"Jiminny","depth":5,"bounds":{"left":0.24468085,"top":0.20430966,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Saved Reports","depth":4,"bounds":{"left":0.23138298,"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":"Userpilot | Saved Reports","depth":5,"bounds":{"left":0.24468085,"top":0.23703113,"width":0.044049203,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23138298,"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","depth":5,"bounds":{"left":0.24468085,"top":0.2697526,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app","depth":4,"bounds":{"left":0.23138298,"top":0.29130086,"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 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app","depth":5,"bounds":{"left":0.24468085,"top":0.30247405,"width":0.14660904,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.29870346,"top":0.29848364,"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.23420878,"top":0.3256185,"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.23420878,"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.24517952,"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.25631648,"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.26745346,"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.2785904,"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 (33)","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":"33","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 (32)","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":"32","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 20541 extract common traits #12008 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","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":"Checks pending","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","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":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 40 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-20541-extract-common-traits","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","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: 1321 additions & 442 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 (40)","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":"40","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 (2)","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":"2","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 (20)","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":"20","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.32164228,"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.32164228,"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.32164228,"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.34424868,"top":0.06943336,"width":0.011968086,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jy 20541 extract common traits","depth":14,"bounds":{"left":0.3628657,"top":0.058260176,"width":0.07164229,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":16,"bounds":{"left":0.3628657,"top":0.059856344,"width":0.07164229,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"bounds":{"left":0.43716756,"top":0.059856344,"width":0.0028257978,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","depth":15,"bounds":{"left":0.43999335,"top":0.059856344,"width":0.013630319,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All commits","depth":14,"bounds":{"left":0.36020613,"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.36319813,"top":0.07701516,"width":0.02244016,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Vasil-Jiminny","depth":15,"bounds":{"left":0.39827126,"top":0.07581804,"width":0.02642952,"height":0.014365523},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"bounds":{"left":0.39827126,"top":0.07701516,"width":0.02642952,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 40 commits into","depth":15,"bounds":{"left":0.42603058,"top":0.07701516,"width":0.06050532,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"bounds":{"left":0.4878657,"top":0.074221864,"width":0.018450798,"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.4898604,"top":0.07741421,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"bounds":{"left":0.50764626,"top":0.07701516,"width":0.00880984,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20541-extract-common-traits","depth":16,"bounds":{"left":0.5177859,"top":0.074221864,"width":0.07596409,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","depth":17,"bounds":{"left":0.5197806,"top":0.07741421,"width":0.07197473,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"bounds":{"left":0.5950798,"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":"AXLink","text":"Refresh","depth":15,"bounds":{"left":0.7837433,"top":0.0650439,"width":0.027759308,"height":0.022346368},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Refresh","depth":17,"bounds":{"left":0.7933843,"top":0.070231445,"width":0.01512633,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19","depth":15,"bounds":{"left":0.82081115,"top":0.070231445,"width":0.004488032,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"bounds":{"left":0.8252992,"top":0.070231445,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20","depth":15,"bounds":{"left":0.8287899,"top":0.070231445,"width":0.0051529254,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"viewed","depth":15,"bounds":{"left":0.83494014,"top":0.070231445,"width":0.013297873,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Checks pending","depth":14,"bounds":{"left":0.8565492,"top":0.0650439,"width":0.04338431,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","depth":16,"bounds":{"left":0.86619014,"top":0.070231445,"width":0.030751329,"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.33294547,"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.4040891,"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.32197472,"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.32197472,"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.33793217,"top":0.15682362,"width":0.008144947,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Component/Activity/Services","depth":21,"bounds":{"left":0.34059176,"top":0.18276137,"width":0.061835106,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GetDefaultActivityTypeService.php","depth":23,"bounds":{"left":0.34325132,"top":0.20830008,"width":0.07496676,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GetDefaultActivityTypeService.php","depth":24,"bounds":{"left":0.34325132,"top":0.20830008,"width":0.07496676,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners/Crm","depth":21,"bounds":{"left":0.34059176,"top":0.23383878,"width":0.030086435,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RemoteCrmRecordDeletedListener.php","depth":23,"bounds":{"left":0.34325132,"top":0.25937748,"width":0.084109046,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"RemoteCrmRecordDeletedListener.php","depth":24,"bounds":{"left":0.34325132,"top":0.25937748,"width":0.084109046,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Models","depth":21,"bounds":{"left":0.34059176,"top":0.2849162,"width":0.015625,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Activity.php","depth":23,"bounds":{"left":0.34325132,"top":0.31085396,"width":0.025265958,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Activity.php","depth":24,"bounds":{"left":0.34325132,"top":0.31085396,"width":0.025265958,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"PlaybookCategory.php","depth":23,"bounds":{"left":0.34325132,"top":0.33639267,"width":0.048537236,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PlaybookCategory.php","depth":24,"bounds":{"left":0.34325132,"top":0.33639267,"width":0.048537236,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Services/Crm","depth":21,"bounds":{"left":0.34059176,"top":0.36193135,"width":0.028756648,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Close","depth":23,"bounds":{"left":0.34325132,"top":0.38747007,"width":0.012134309,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service.php","depth":25,"bounds":{"left":0.3459109,"top":0.41340783,"width":0.025598405,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service.php","depth":26,"bounds":{"left":0.3459109,"top":0.41340783,"width":0.025598405,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Helpers","depth":23,"bounds":{"left":0.34325132,"top":0.43894652,"width":0.01662234,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ActivityPlaybookTrait.php","depth":25,"bounds":{"left":0.3459109,"top":0.46448523,"width":0.054521278,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ActivityPlaybookTrait.php","depth":26,"bounds":{"left":0.3459109,"top":0.46448523,"width":0.054521278,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CrmHelperRepository.php","depth":25,"bounds":{"left":0.3459109,"top":0.49002394,"width":0.055684842,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CrmHelperRepository.php","depth":26,"bounds":{"left":0.3459109,"top":0.49002394,"width":0.055684842,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners","depth":23,"bounds":{"left":0.34325132,"top":0.51556265,"width":0.019614361,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ConvertLeadActivities.php","depth":25,"bounds":{"left":0.3459109,"top":0.54110134,"width":0.05651596,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ConvertLeadActivities.php","depth":26,"bounds":{"left":0.3459109,"top":0.54110134,"width":0.05651596,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Salesforce","depth":23,"bounds":{"left":0.34325132,"top":0.5666401,"width":0.022606382,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fields","depth":25,"bounds":{"left":0.3459109,"top":0.5925778,"width":0.012632979,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"FieldHelper.php","depth":27,"bounds":{"left":0.34857047,"top":0.6181165,"width":0.033909574,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"FieldHelper.php","depth":28,"bounds":{"left":0.34857047,"top":0.6181165,"width":0.033909574,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ServiceTraits","depth":25,"bounds":{"left":0.3459109,"top":0.64365524,"width":0.027426861,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"FollowupActivityTrait.php","depth":27,"bounds":{"left":0.34857047,"top":0.669593,"width":0.053856384,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"FollowupActivityTrait.php","depth":28,"bounds":{"left":0.34857047,"top":0.669593,"width":0.053856384,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service.php","depth":25,"bounds":{"left":0.3459109,"top":0.69513166,"width":0.025598405,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service.php","depth":26,"bounds":{"left":0.3459109,"top":0.69513166,"width":0.025598405,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"BaseService.php","depth":23,"bounds":{"left":0.34325132,"top":0.7206704,"width":0.036070477,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BaseService.php","depth":24,"bounds":{"left":0.34325132,"top":0.7206704,"width":0.036070477,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tests/Unit","depth":19,"bounds":{"left":0.33793217,"top":0.7462091,"width":0.020777926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Component/Activity/Services","depth":21,"bounds":{"left":0.34059176,"top":0.7717478,"width":0.061835106,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GetDefaultActivityTypeServiceTest.php","depth":23,"bounds":{"left":0.34325132,"top":0.79768556,"width":0.08344415,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GetDefaultActivityTypeServiceTest.php","depth":24,"bounds":{"left":0.34325132,"top":0.79768556,"width":0.08344415,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Services/Crm","depth":21,"bounds":{"left":0.34059176,"top":0.82322425,"width":0.028756648,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Helpers","depth":23,"bounds":{"left":0.34325132,"top":0.848763,"width":0.01662234,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ActivityPlaybookTraitTest.php","depth":25,"bounds":{"left":0.3459109,"top":0.8747007,"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":"ActivityPlaybookTraitTest.php","depth":26,"bounds":{"left":0.3459109,"top":0.8747007,"width":0.06333112,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"IntegrationApp","depth":23,"bounds":{"left":0.34325132,"top":0.9002394,"width":0.031914894,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ServiceTest.php","depth":25,"bounds":{"left":0.3459109,"top":0.92577815,"width":0.034242023,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ServiceTest.php","depth":26,"bounds":{"left":0.3459109,"top":0.92577815,"width":0.034242023,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners","depth":23,"bounds":{"left":0.34325132,"top":0.95131683,"width":0.019614361,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ConvertLeadActivitiesTest.php","depth":25,"bounds":{"left":0.3459109,"top":0.9768556,"width":0.0653258,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ConvertLeadActivitiesTest.php","depth":26,"bounds":{"left":0.3459109,"top":0.9768556,"width":0.0653258,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Salesforce","depth":23,"bounds":{"left":0.34325132,"top":1.0,"width":0.022606382,"height":-0.0023941994},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fields","depth":25,"bounds":{"left":0.3459109,"top":1.0,"width":0.012632979,"height":-0.028331995},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ServiceTraits","depth":25,"bounds":{"left":0.3459109,"top":1.0,"width":0.027426861,"height":-0.07940936},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Component/Activity/Services/GetDefaultActivityTypeService.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":"AXButton","text":"Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 7 additions & 1 deletion","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Listeners/Crm/RemoteCrmRecordDeletedListener.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Listeners/Crm/RemoteCrmRecordDeletedListener.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Listeners/Crm/RemoteCrmRecordDeletedListener.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":"AXButton","text":"Expand all lines: app/Listeners/Crm/RemoteCrmRecordDeletedListener.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 0 additions & 1 deletion","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Models/Activity.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Models/Activity.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Models/Activity.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":"AXButton","text":"Expand all lines: app/Models/Activity.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 21 additions & 1 deletion","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Models/PlaybookCategory.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Models/PlaybookCategory.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Models/PlaybookCategory.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":"AXButton","text":"Expand all lines: app/Models/PlaybookCategory.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 1 addition & 1 deletion","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Services/Crm/Close/Service.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Services/Crm/Close/Service.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Services/Crm/Close/Service.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":"AXButton","text":"Expand all lines: app/Services/Crm/Close/Service.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 3 additions & 2 deletions","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Services/Crm/Helpers/ActivityPlaybookTrait.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Services/Crm/Helpers/ActivityPlaybookTrait.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Services/Crm/Helpers/ActivityPlaybookTrait.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: 79 additions & 0 deletions","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Services/Crm/Helpers/CrmHelperRepository.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Services/Crm/Helpers/CrmHelperRepository.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Services/Crm/Helpers/CrmHelperRepository.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: 40 additions & 0 deletions","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Collapse file","depth":14,"bounds":{"left":0.42869017,"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/Services/Crm/Listeners/ConvertLeadActivities.php","depth":15,"bounds":{"left":0.43932846,"top":0.10654429,"width":0.12483378,"height":0.016759777},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Services/Crm/Listeners/ConvertLeadActivities.php","depth":16,"bounds":{"left":0.43932846,"top":0.10814046,"width":0.12483378,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Services/Crm/Listeners/ConvertLeadActivities.php","depth":18,"bounds":{"left":0.43932846,"top":0.110135674,"width":0.12483378,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy file name to clipboard","depth":15,"bounds":{"left":0.5668218,"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":"AXButton","text":"Expand all lines: app/Services/Crm/Listeners/ConvertLeadActivities.php","depth":15,"bounds":{"left":0.57613033,"top":0.103751,"width":0.00930851,"height":0.022346368},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 64 additions & 30 deletions","depth":15,"bounds":{"left":0.90043217,"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,"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":"@@ -5,29 +5,54 @@","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":"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":"Services","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":"Listeners","depth":18,"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":"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":"Services","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":"Listeners","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":"6","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Illuminate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Contracts","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Queue","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ShouldQueue","depth":18,"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":"use","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Illuminate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Contracts","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Queue","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ShouldQueue","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":"Illuminate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Queue","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"InteractsWithQueue","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"}]...
|
-6737004336646294220
|
-5715835451545214868
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close 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 (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
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 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1321 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (40)
Commits
(
40
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
All commits
All commits
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Refresh
Refresh
19
/
20
viewed
Checks pending
Checks pending
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component/Activity/Services
GetDefaultActivityTypeService.php
GetDefaultActivityTypeService.php
Listeners/Crm
RemoteCrmRecordDeletedListener.php
RemoteCrmRecordDeletedListener.php
Models
Activity.php
Activity.php
PlaybookCategory.php
PlaybookCategory.php
Services/Crm
Close
Service.php
Service.php
Helpers
ActivityPlaybookTrait.php
ActivityPlaybookTrait.php
CrmHelperRepository.php
CrmHelperRepository.php
Listeners
ConvertLeadActivities.php
ConvertLeadActivities.php
Salesforce
Fields
FieldHelper.php
FieldHelper.php
ServiceTraits
FollowupActivityTrait.php
FollowupActivityTrait.php
Service.php
Service.php
BaseService.php
BaseService.php
tests/Unit
Component/Activity/Services
GetDefaultActivityTypeServiceTest.php
GetDefaultActivityTypeServiceTest.php
Services/Crm
Helpers
ActivityPlaybookTraitTest.php
ActivityPlaybookTraitTest.php
IntegrationApp
ServiceTest.php
ServiceTest.php
Listeners
ConvertLeadActivitiesTest.php
ConvertLeadActivitiesTest.php
Salesforce
Fields
ServiceTraits
Expand file
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
Copy file name to clipboard
Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php
Lines changed: 7 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Copy file name to clipboard
Expand all lines: app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Lines changed: 0 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Models/Activity.php
app/Models/Activity.php
app/Models/Activity.php
Copy file name to clipboard
Expand all lines: app/Models/Activity.php
Lines changed: 21 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
Copy file name to clipboard
Expand all lines: app/Models/PlaybookCategory.php
Lines changed: 1 addition & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Services/Crm/Close/Service.php
app/Services/Crm/Close/Service.php
app/Services/Crm/Close/Service.php
Copy file name to clipboard
Expand all lines: app/Services/Crm/Close/Service.php
Lines changed: 3 additions & 2 deletions
Viewed
Viewed
Comment on this file
More options
Expand file
app/Services/Crm/Helpers/ActivityPlaybookTrait.php
app/Services/Crm/Helpers/ActivityPlaybookTrait.php
app/Services/Crm/Helpers/ActivityPlaybookTrait.php
Copy file name to clipboard
Lines changed: 79 additions & 0 deletions
Viewed
Viewed
Comment on this file
More options
Expand file
app/Services/Crm/Helpers/CrmHelperRepository.php
app/Services/Crm/Helpers/CrmHelperRepository.php
app/Services/Crm/Helpers/CrmHelperRepository.php
Copy file name to clipboard
Lines changed: 40 additions & 0 deletions
Viewed
Viewed
Comment on this file
More options
Collapse file
app/Services/Crm/Listeners/ConvertLeadActivities.php
app/Services/Crm/Listeners/ConvertLeadActivities.php
app/Services/Crm/Listeners/ConvertLeadActivities.php
Copy file name to clipboard
Expand all lines: app/Services/Crm/Listeners/ConvertLeadActivities.php
Lines changed: 64 additions & 30 deletions
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -5,29 +5,54 @@
5
namespace
Jiminny
\
Services
\
Crm
\
Listeners
;
5
namespace
Jiminny
\
Services
\
Crm
\
Listeners
;
6
6
7
use
Illuminate
\
Contracts
\
Queue
\
ShouldQueue
;
7
use
Illuminate
\
Contracts
\
Queue
\
ShouldQueue
;
8
+
use
Illuminate
\
Queue
\
InteractsWithQueue
;
9
+...
|
NULL
|
|
74969
|
NULL
|
0
|
2026-04-23T10:27:03.425377+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776940023425_m1.jpg...
|
Firefox
|
Jy 20541 extract common traits by Vasil-Jiminny · Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/12008/changes#diff-333 github.com/jiminny/app/pull/12008/changes#diff-333a719252c2de35d2827d0a14359baecc11610486a51f982e377b867c69b600...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close 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 (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
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 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1321 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (37)
Commits
(
37
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
All commits
All commits
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
15
/
20
viewed
Checks pending
Checks pending
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component/Activity/Services
GetDefaultActivityTypeService.php
GetDefaultActivityTypeService.php
Listeners/Crm
RemoteCrmRecordDeletedListener.php
RemoteCrmRecordDeletedListener.php
Models
Activity.php
Activity.php
PlaybookCategory.php
PlaybookCategory.php
Services/Crm
Close
Service.php
Service.php
Helpers
ActivityPlaybookTrait.php
ActivityPlaybookTrait.php
CrmHelperRepository.php
CrmHelperRepository.php
Listeners
ConvertLeadActivities.php
ConvertLeadActivities.php
Salesforce
Fields
FieldHelper.php
FieldHelper.php
ServiceTraits
FollowupActivityTrait.php
FollowupActivityTrait.php
Service.php
Service.php
BaseService.php
BaseService.php
tests/Unit
Component/Activity/Services
GetDefaultActivityTypeServiceTest.php
GetDefaultActivityTypeServiceTest.php
Services/Crm
Helpers
ActivityPlaybookTraitTest.php
ActivityPlaybookTraitTest.php
IntegrationApp
ServiceTest.php
ServiceTest.php
Listeners
ConvertLeadActivitiesTest.php
ConvertLeadActivitiesTest.php
Salesforce
Fields
ServiceTraits
Collapse file
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
Copy file name to clipboard
Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php
Lines changed: 7 additions & 1 deletion
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
73
{
73
{
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
75
+
// Sidekick playbook may be null, and the activity playbook may be null as well.
76
+
// Both can be soft-deleted.
77
+
// For that reason, at least one of the two playbooks must be guaranteed not to be null.
78
+
if
(
$
sidekickPlaybook
===
null
) {
79
+
return
false
;
80
+
}
75
81
76
-
return
$
activity
->
getActivityType
()->
getPlaybook
()->
getId
() ===
$
sidekickPlaybook
?->getId();
82
+
return
$
activity
->
getActivityType
()
?
->getPlaybook()
?
->getId() ===
$
sidekickPlaybook
?->getId();
77
}
83
}
78
}
84
}
Original file line number
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
73
74
75
76
77
78
Original file line
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
{
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
-
return
$
activity
->
getActivityType
()->
getPlaybook
()->
getId
() ===
$
sidekickPlaybook
?->getId();
}
}
Diff line number
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
73
74
75
76
77
78
79
80
81
82
83
84
Diff line change
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
{
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
+
// Sidekick playbook may be null, and the activity playbook may be null as well.
+
// Both can be soft-deleted.
+
// For that reason, at least one of the two playbooks must be guaranteed not to be null....
|
[{"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":"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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · 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 | Saved Reports","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Saved Reports","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 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · 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},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.017361112,"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":"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 (33)","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":"33","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 (32)","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":"32","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 20541 extract common traits #12008 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","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":"Checks pending","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","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":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 37 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-20541-extract-common-traits","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","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: 1321 additions & 442 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 (37)","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":"37","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 (2)","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":"2","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 (20)","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":"20","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 20541 extract common traits","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","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"},{"role":"AXLink","text":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 37 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-20541-extract-common-traits","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","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":"15","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"viewed","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Checks pending","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Submit review","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Submit","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"review","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Open diff view settings","depth":14,"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,"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,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"(","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Filter files…","depth":16,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Filter options","depth":16,"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,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File tree","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Component/Activity/Services","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GetDefaultActivityTypeService.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GetDefaultActivityTypeService.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners/Crm","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RemoteCrmRecordDeletedListener.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"RemoteCrmRecordDeletedListener.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Models","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Activity.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Activity.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"PlaybookCategory.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PlaybookCategory.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Services/Crm","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Close","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Helpers","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ActivityPlaybookTrait.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ActivityPlaybookTrait.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CrmHelperRepository.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CrmHelperRepository.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ConvertLeadActivities.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ConvertLeadActivities.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Salesforce","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fields","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"FieldHelper.php","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"FieldHelper.php","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ServiceTraits","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"FollowupActivityTrait.php","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"FollowupActivityTrait.php","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"BaseService.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BaseService.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tests/Unit","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Component/Activity/Services","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GetDefaultActivityTypeServiceTest.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GetDefaultActivityTypeServiceTest.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Services/Crm","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Helpers","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ActivityPlaybookTraitTest.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ActivityPlaybookTraitTest.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"IntegrationApp","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ServiceTest.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ServiceTest.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners","depth":23,"bounds":{"left":0.15243055,"top":0.0,"width":0.04097222,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ConvertLeadActivitiesTest.php","depth":25,"bounds":{"left":0.1579861,"top":0.0,"width":0.13645834,"height":0.018888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ConvertLeadActivitiesTest.php","depth":26,"bounds":{"left":0.1579861,"top":0.0,"width":0.13645834,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Salesforce","depth":23,"bounds":{"left":0.15243055,"top":0.0033333334,"width":0.047222223,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fields","depth":25,"bounds":{"left":0.1579861,"top":0.039444443,"width":0.02638889,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ServiceTraits","depth":25,"bounds":{"left":0.1579861,"top":0.11055555,"width":0.057291668,"height":0.018888889},"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/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Component/Activity/Services/GetDefaultActivityTypeService.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":"AXButton","text":"Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 7 additions & 1 deletion","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":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","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":"playbookMatchesActivityPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bool","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","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":"playbookMatchesActivityPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bool","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"73","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"73","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"74","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","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":"sidekickService","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getSidekickPlaybook","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":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUser","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"());","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"74","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","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":"sidekickService","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getSidekickPlaybook","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":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUser","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"());","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"75","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// Sidekick playbook may be null, and the activity playbook may be null as well.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"76","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// Both can be soft-deleted.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"77","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// For that reason, at least one of the two playbooks must be guaranteed not to be null.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"78","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":"sidekickPlaybook","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":"79","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":"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":"80","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":"75","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"81","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"76","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":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivityType","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getId","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":"sidekickPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?->getId();","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"82","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":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivityType","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":"->getPlaybook()","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->getId() ===","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?->getId();","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"77","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"83","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"78","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"84","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Original file line number","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"73","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"74","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"75","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"76","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"77","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"78","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Original file line","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","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":"playbookMatchesActivityPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bool","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":"sidekickPlaybook","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":"sidekickService","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getSidekickPlaybook","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":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUser","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":"return","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivityType","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getId","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":"sidekickPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?->getId();","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":"Diff line number","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"73","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"74","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"75","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"76","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"77","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"78","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"79","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"80","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"81","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"82","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"83","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"84","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line change","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","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":"playbookMatchesActivityPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bool","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":"sidekickPlaybook","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":"sidekickService","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getSidekickPlaybook","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":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUser","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":"// Sidekick playbook may be null, and the activity playbook may be null as well.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// Both can be soft-deleted.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// For that reason, at least one of the two playbooks must be guaranteed not to be null.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
2670959327188903577
|
-1948803060556865224
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close 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 (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
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 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1321 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (37)
Commits
(
37
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
All commits
All commits
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
15
/
20
viewed
Checks pending
Checks pending
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component/Activity/Services
GetDefaultActivityTypeService.php
GetDefaultActivityTypeService.php
Listeners/Crm
RemoteCrmRecordDeletedListener.php
RemoteCrmRecordDeletedListener.php
Models
Activity.php
Activity.php
PlaybookCategory.php
PlaybookCategory.php
Services/Crm
Close
Service.php
Service.php
Helpers
ActivityPlaybookTrait.php
ActivityPlaybookTrait.php
CrmHelperRepository.php
CrmHelperRepository.php
Listeners
ConvertLeadActivities.php
ConvertLeadActivities.php
Salesforce
Fields
FieldHelper.php
FieldHelper.php
ServiceTraits
FollowupActivityTrait.php
FollowupActivityTrait.php
Service.php
Service.php
BaseService.php
BaseService.php
tests/Unit
Component/Activity/Services
GetDefaultActivityTypeServiceTest.php
GetDefaultActivityTypeServiceTest.php
Services/Crm
Helpers
ActivityPlaybookTraitTest.php
ActivityPlaybookTraitTest.php
IntegrationApp
ServiceTest.php
ServiceTest.php
Listeners
ConvertLeadActivitiesTest.php
ConvertLeadActivitiesTest.php
Salesforce
Fields
ServiceTraits
Collapse file
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
Copy file name to clipboard
Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php
Lines changed: 7 additions & 1 deletion
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
73
{
73
{
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
75
+
// Sidekick playbook may be null, and the activity playbook may be null as well.
76
+
// Both can be soft-deleted.
77
+
// For that reason, at least one of the two playbooks must be guaranteed not to be null.
78
+
if
(
$
sidekickPlaybook
===
null
) {
79
+
return
false
;
80
+
}
75
81
76
-
return
$
activity
->
getActivityType
()->
getPlaybook
()->
getId
() ===
$
sidekickPlaybook
?->getId();
82
+
return
$
activity
->
getActivityType
()
?
->getPlaybook()
?
->getId() ===
$
sidekickPlaybook
?->getId();
77
}
83
}
78
}
84
}
Original file line number
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
73
74
75
76
77
78
Original file line
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
{
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
-
return
$
activity
->
getActivityType
()->
getPlaybook
()->
getId
() ===
$
sidekickPlaybook
?->getId();
}
}
Diff line number
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
73
74
75
76
77
78
79
80
81
82
83
84
Diff line change
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
{
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
+
// Sidekick playbook may be null, and the activity playbook may be null as well.
+
// Both can be soft-deleted.
+
// For that reason, at least one of the two playbooks must be guaranteed not to be null....
|
NULL
|
|
74968
|
NULL
|
0
|
2026-04-23T10:26:59.046516+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776940019046_m2.jpg...
|
Firefox
|
Jy 20541 extract common traits by Vasil-Jiminny · Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/12008/changes#diff-333 github.com/jiminny/app/pull/12008/changes#diff-333a719252c2de35d2827d0a14359baecc11610486a51f982e377b867c69b600...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close 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 (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
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 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1321 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (37)
Commits
(
37
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
All commits
All commits
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
15
/
20
viewed
Checks pending
Checks pending
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component/Activity/Services
GetDefaultActivityTypeService.php
GetDefaultActivityTypeService.php
Listeners/Crm
RemoteCrmRecordDeletedListener.php
RemoteCrmRecordDeletedListener.php
Models
Activity.php
Activity.php
PlaybookCategory.php
PlaybookCategory.php
Services/Crm
Close
Service.php
Service.php
Helpers
ActivityPlaybookTrait.php
ActivityPlaybookTrait.php
CrmHelperRepository.php
CrmHelperRepository.php
Listeners
ConvertLeadActivities.php
ConvertLeadActivities.php
Salesforce
Fields
FieldHelper.php
FieldHelper.php
ServiceTraits
FollowupActivityTrait.php
FollowupActivityTrait.php
Service.php
Service.php
BaseService.php
BaseService.php
tests/Unit
Component/Activity/Services
GetDefaultActivityTypeServiceTest.php
GetDefaultActivityTypeServiceTest.php
Services/Crm
Helpers
ActivityPlaybookTraitTest.php
ActivityPlaybookTraitTest.php
IntegrationApp
ServiceTest.php
ServiceTest.php
Listeners
ConvertLeadActivitiesTest.php
ConvertLeadActivitiesTest.php
Salesforce
Fields
ServiceTraits
Collapse file
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
Copy file name to clipboard
Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php
Lines changed: 7 additions & 1 deletion
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
73
{
73
{
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
75
+
// Sidekick playbook may be null, and the activity playbook may be null as well.
76
+
// Both can be soft-deleted.
77
+
// For that reason, at least one of the two playbooks must be guaranteed not to be null.
78
+
if
(
$
sidekickPlaybook
===
null
) {
79
+
return
false
;
80
+
}
75
81
76
-
return
$
activity
->
getActivityType
()->
getPlaybook
()->
getId
() ===
$
sidekickPlaybook
?->getId();
82
+
return
$
activity
->
getActivityType
()
?
->getPlaybook()
?
->getId() ===
$
sidekickPlaybook
?->getId();
77
}
83
}
78
}
84
}
Original file line number
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
73
74
75
76
77
78
Original file line
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
{
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
-
return
$
activity
->
getActivityType
()->
getPlaybook
()->
getId
() ===
$
sidekickPlaybook
?->getId();
}
}
Diff line number
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
73
74
75
76
77
78
79
80
81
82
83
84
Diff line change
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
{
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
+
// Sidekick playbook may be null, and the activity playbook may be null as well.
+
// Both can be soft-deleted.
+
// For that reason, at least one of the two playbooks must be guaranteed not to be null.
+
if
(
$
sidekickPlaybook
===
null
) {
+
return
false
;
+
}
+
return
$
activity
->
getActivityType
()
?
->getPlaybook()
?
->getId() ===
$
sidekickPlaybook
?->getId();
}
}
Expand file
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Copy file name to clipboard
Expand all lines: app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Lines changed: 0 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Models/Activity.php
app/Models/Activity.php
app/Models/Activity.php
Copy file name to clipboard
Expand all lines: app/Models/Activity.php
Lines changed: 21 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
Copy file name to clipboard
Expand all lines: app/Models/PlaybookCategory.php
Lines changed: 1 addition & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Services/Crm/Close/Service.php
app/Services/Crm/Close/Service.php
app/Services/Crm/Close/Service.php
Copy file name to clipboard
Expand all lines: app/Services/Crm/Close/Service.php...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.23321144,"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":"New Tab","depth":4,"bounds":{"left":0.23138298,"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":"New Tab","depth":5,"bounds":{"left":0.24468085,"top":0.10614525,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"bounds":{"left":0.23138298,"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":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"bounds":{"left":0.24468085,"top":0.13886672,"width":0.14128989,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"bounds":{"left":0.23138298,"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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"bounds":{"left":0.24468085,"top":0.17158818,"width":0.16555852,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23138298,"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":"Jiminny","depth":5,"bounds":{"left":0.24468085,"top":0.20430966,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Saved Reports","depth":4,"bounds":{"left":0.23138298,"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":"Userpilot | Saved Reports","depth":5,"bounds":{"left":0.24468085,"top":0.23703113,"width":0.044049203,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23138298,"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","depth":5,"bounds":{"left":0.24468085,"top":0.2697526,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app","depth":4,"bounds":{"left":0.23138298,"top":0.29130086,"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 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app","depth":5,"bounds":{"left":0.24468085,"top":0.30247405,"width":0.14660904,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.29870346,"top":0.29848364,"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.23420878,"top":0.3256185,"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.23420878,"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.24517952,"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.25631648,"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.26745346,"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.2785904,"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 (33)","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":"33","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 (32)","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":"32","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 20541 extract common traits #12008 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","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":"Checks pending","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","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":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 37 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-20541-extract-common-traits","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","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: 1321 additions & 442 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 (37)","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":"37","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 (2)","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":"2","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 (20)","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":"20","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.32164228,"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.32164228,"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.32164228,"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.34424868,"top":0.06943336,"width":0.011968086,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jy 20541 extract common traits","depth":14,"bounds":{"left":0.3628657,"top":0.058260176,"width":0.07164229,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":16,"bounds":{"left":0.3628657,"top":0.059856344,"width":0.07164229,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"bounds":{"left":0.43716756,"top":0.059856344,"width":0.0028257978,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","depth":15,"bounds":{"left":0.43999335,"top":0.059856344,"width":0.013630319,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All commits","depth":14,"bounds":{"left":0.36020613,"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.36319813,"top":0.07701516,"width":0.02244016,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Vasil-Jiminny","depth":15,"bounds":{"left":0.39827126,"top":0.07581804,"width":0.02642952,"height":0.014365523},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"bounds":{"left":0.39827126,"top":0.07701516,"width":0.02642952,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 37 commits into","depth":15,"bounds":{"left":0.42603058,"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.48769948,"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.48969415,"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.50731385,"top":0.07701516,"width":0.00880984,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20541-extract-common-traits","depth":16,"bounds":{"left":0.51745343,"top":0.074221864,"width":0.07596409,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","depth":17,"bounds":{"left":0.51944816,"top":0.07741421,"width":0.07197473,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"bounds":{"left":0.59474736,"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":"15","depth":15,"bounds":{"left":0.8209774,"top":0.070231445,"width":0.0043218085,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"bounds":{"left":0.8252992,"top":0.070231445,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20","depth":15,"bounds":{"left":0.8287899,"top":0.070231445,"width":0.0051529254,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"viewed","depth":15,"bounds":{"left":0.83494014,"top":0.070231445,"width":0.013297873,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Checks pending","depth":14,"bounds":{"left":0.8565492,"top":0.0650439,"width":0.04338431,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","depth":16,"bounds":{"left":0.86619014,"top":0.070231445,"width":0.030751329,"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.33294547,"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.4040891,"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.32197472,"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.32197472,"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.33793217,"top":0.15682362,"width":0.008144947,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Component/Activity/Services","depth":21,"bounds":{"left":0.34059176,"top":0.18276137,"width":0.061835106,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GetDefaultActivityTypeService.php","depth":23,"bounds":{"left":0.34325132,"top":0.20830008,"width":0.07496676,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GetDefaultActivityTypeService.php","depth":24,"bounds":{"left":0.34325132,"top":0.20830008,"width":0.07496676,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners/Crm","depth":21,"bounds":{"left":0.34059176,"top":0.23383878,"width":0.030086435,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RemoteCrmRecordDeletedListener.php","depth":23,"bounds":{"left":0.34325132,"top":0.25937748,"width":0.084109046,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"RemoteCrmRecordDeletedListener.php","depth":24,"bounds":{"left":0.34325132,"top":0.25937748,"width":0.084109046,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Models","depth":21,"bounds":{"left":0.34059176,"top":0.2849162,"width":0.015625,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Activity.php","depth":23,"bounds":{"left":0.34325132,"top":0.31085396,"width":0.025265958,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Activity.php","depth":24,"bounds":{"left":0.34325132,"top":0.31085396,"width":0.025265958,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"PlaybookCategory.php","depth":23,"bounds":{"left":0.34325132,"top":0.33639267,"width":0.048537236,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PlaybookCategory.php","depth":24,"bounds":{"left":0.34325132,"top":0.33639267,"width":0.048537236,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Services/Crm","depth":21,"bounds":{"left":0.34059176,"top":0.36193135,"width":0.028756648,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Close","depth":23,"bounds":{"left":0.34325132,"top":0.38747007,"width":0.012134309,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service.php","depth":25,"bounds":{"left":0.3459109,"top":0.41340783,"width":0.025598405,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service.php","depth":26,"bounds":{"left":0.3459109,"top":0.41340783,"width":0.025598405,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Helpers","depth":23,"bounds":{"left":0.34325132,"top":0.43894652,"width":0.01662234,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ActivityPlaybookTrait.php","depth":25,"bounds":{"left":0.3459109,"top":0.46448523,"width":0.054521278,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ActivityPlaybookTrait.php","depth":26,"bounds":{"left":0.3459109,"top":0.46448523,"width":0.054521278,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CrmHelperRepository.php","depth":25,"bounds":{"left":0.3459109,"top":0.49002394,"width":0.055684842,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CrmHelperRepository.php","depth":26,"bounds":{"left":0.3459109,"top":0.49002394,"width":0.055684842,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners","depth":23,"bounds":{"left":0.34325132,"top":0.51556265,"width":0.019614361,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ConvertLeadActivities.php","depth":25,"bounds":{"left":0.3459109,"top":0.5415004,"width":0.05651596,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ConvertLeadActivities.php","depth":26,"bounds":{"left":0.3459109,"top":0.5415004,"width":0.05651596,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Salesforce","depth":23,"bounds":{"left":0.34325132,"top":0.56703913,"width":0.022606382,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fields","depth":25,"bounds":{"left":0.3459109,"top":0.5925778,"width":0.012632979,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"FieldHelper.php","depth":27,"bounds":{"left":0.34857047,"top":0.61851555,"width":0.033909574,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"FieldHelper.php","depth":28,"bounds":{"left":0.34857047,"top":0.61851555,"width":0.033909574,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ServiceTraits","depth":25,"bounds":{"left":0.3459109,"top":0.6440543,"width":0.027426861,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"FollowupActivityTrait.php","depth":27,"bounds":{"left":0.34857047,"top":0.669593,"width":0.053856384,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"FollowupActivityTrait.php","depth":28,"bounds":{"left":0.34857047,"top":0.669593,"width":0.053856384,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service.php","depth":25,"bounds":{"left":0.3459109,"top":0.69513166,"width":0.025598405,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service.php","depth":26,"bounds":{"left":0.3459109,"top":0.69513166,"width":0.025598405,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"BaseService.php","depth":23,"bounds":{"left":0.34325132,"top":0.7206704,"width":0.036070477,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BaseService.php","depth":24,"bounds":{"left":0.34325132,"top":0.7206704,"width":0.036070477,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tests/Unit","depth":19,"bounds":{"left":0.33793217,"top":0.7462091,"width":0.020777926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Component/Activity/Services","depth":21,"bounds":{"left":0.34059176,"top":0.7717478,"width":0.061835106,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GetDefaultActivityTypeServiceTest.php","depth":23,"bounds":{"left":0.34325132,"top":0.79768556,"width":0.08344415,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GetDefaultActivityTypeServiceTest.php","depth":24,"bounds":{"left":0.34325132,"top":0.79768556,"width":0.08344415,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Services/Crm","depth":21,"bounds":{"left":0.34059176,"top":0.82322425,"width":0.028756648,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Helpers","depth":23,"bounds":{"left":0.34325132,"top":0.848763,"width":0.01662234,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ActivityPlaybookTraitTest.php","depth":25,"bounds":{"left":0.3459109,"top":0.8747007,"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":"ActivityPlaybookTraitTest.php","depth":26,"bounds":{"left":0.3459109,"top":0.8747007,"width":0.06333112,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"IntegrationApp","depth":23,"bounds":{"left":0.34325132,"top":0.9002394,"width":0.031914894,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ServiceTest.php","depth":25,"bounds":{"left":0.3459109,"top":0.92577815,"width":0.034242023,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ServiceTest.php","depth":26,"bounds":{"left":0.3459109,"top":0.92577815,"width":0.034242023,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners","depth":23,"bounds":{"left":0.34325132,"top":0.95131683,"width":0.019614361,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ConvertLeadActivitiesTest.php","depth":25,"bounds":{"left":0.3459109,"top":0.9768556,"width":0.0653258,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ConvertLeadActivitiesTest.php","depth":26,"bounds":{"left":0.3459109,"top":0.9768556,"width":0.0653258,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Salesforce","depth":23,"bounds":{"left":0.34325132,"top":1.0,"width":0.022606382,"height":-0.0023941994},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fields","depth":25,"bounds":{"left":0.3459109,"top":1.0,"width":0.012632979,"height":-0.028331995},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ServiceTraits","depth":25,"bounds":{"left":0.3459109,"top":1.0,"width":0.027426861,"height":-0.07940936},"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/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Component/Activity/Services/GetDefaultActivityTypeService.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":"AXButton","text":"Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 7 additions & 1 deletion","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":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","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":"playbookMatchesActivityPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bool","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","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":"playbookMatchesActivityPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bool","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"73","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"73","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"74","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","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":"sidekickService","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getSidekickPlaybook","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":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUser","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"());","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"74","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","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":"sidekickService","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getSidekickPlaybook","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":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUser","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"());","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"75","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// Sidekick playbook may be null, and the activity playbook may be null as well.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"76","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// Both can be soft-deleted.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"77","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// For that reason, at least one of the two playbooks must be guaranteed not to be null.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"78","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":"sidekickPlaybook","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":"79","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":"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":"80","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":"75","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"81","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"76","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":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivityType","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getId","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":"sidekickPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?->getId();","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"82","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":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivityType","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":"->getPlaybook()","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->getId() ===","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?->getId();","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"77","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"83","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"78","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"84","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Original file line number","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"73","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"74","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"75","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"76","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"77","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"78","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Original file line","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","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":"playbookMatchesActivityPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bool","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":"sidekickPlaybook","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":"sidekickService","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getSidekickPlaybook","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":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUser","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":"return","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivityType","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getId","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":"sidekickPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?->getId();","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":"Diff line number","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"73","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"74","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"75","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"76","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"77","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"78","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"79","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"80","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"81","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"82","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"83","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"84","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line change","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","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":"playbookMatchesActivityPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bool","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":"sidekickPlaybook","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":"sidekickService","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getSidekickPlaybook","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":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUser","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":"// Sidekick playbook may be null, and the activity playbook may be null as well.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// Both can be soft-deleted.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// For that reason, at least one of the two playbooks must be guaranteed not to be 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":"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":"sidekickPlaybook","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":"+","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":"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":"+","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":"return","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivityType","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":"->getPlaybook()","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->getId() ===","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?->getId();","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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Listeners/Crm/RemoteCrmRecordDeletedListener.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Listeners/Crm/RemoteCrmRecordDeletedListener.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Listeners/Crm/RemoteCrmRecordDeletedListener.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":"AXButton","text":"Expand all lines: app/Listeners/Crm/RemoteCrmRecordDeletedListener.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 0 additions & 1 deletion","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Models/Activity.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Models/Activity.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Models/Activity.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":"AXButton","text":"Expand all lines: app/Models/Activity.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 21 additions & 1 deletion","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Models/PlaybookCategory.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Models/PlaybookCategory.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Models/PlaybookCategory.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":"AXButton","text":"Expand all lines: app/Models/PlaybookCategory.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 1 addition & 1 deletion","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"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":"AXButton","text":"Expand file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Services/Crm/Close/Service.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Services/Crm/Close/Service.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Services/Crm/Close/Service.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":"AXButton","text":"Expand all lines: app/Services/Crm/Close/Service.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
110863386780792404
|
-5405306982803349448
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close 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 (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
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 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1321 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (37)
Commits
(
37
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
All commits
All commits
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
15
/
20
viewed
Checks pending
Checks pending
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component/Activity/Services
GetDefaultActivityTypeService.php
GetDefaultActivityTypeService.php
Listeners/Crm
RemoteCrmRecordDeletedListener.php
RemoteCrmRecordDeletedListener.php
Models
Activity.php
Activity.php
PlaybookCategory.php
PlaybookCategory.php
Services/Crm
Close
Service.php
Service.php
Helpers
ActivityPlaybookTrait.php
ActivityPlaybookTrait.php
CrmHelperRepository.php
CrmHelperRepository.php
Listeners
ConvertLeadActivities.php
ConvertLeadActivities.php
Salesforce
Fields
FieldHelper.php
FieldHelper.php
ServiceTraits
FollowupActivityTrait.php
FollowupActivityTrait.php
Service.php
Service.php
BaseService.php
BaseService.php
tests/Unit
Component/Activity/Services
GetDefaultActivityTypeServiceTest.php
GetDefaultActivityTypeServiceTest.php
Services/Crm
Helpers
ActivityPlaybookTraitTest.php
ActivityPlaybookTraitTest.php
IntegrationApp
ServiceTest.php
ServiceTest.php
Listeners
ConvertLeadActivitiesTest.php
ConvertLeadActivitiesTest.php
Salesforce
Fields
ServiceTraits
Collapse file
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
Copy file name to clipboard
Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php
Lines changed: 7 additions & 1 deletion
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
73
{
73
{
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
75
+
// Sidekick playbook may be null, and the activity playbook may be null as well.
76
+
// Both can be soft-deleted.
77
+
// For that reason, at least one of the two playbooks must be guaranteed not to be null.
78
+
if
(
$
sidekickPlaybook
===
null
) {
79
+
return
false
;
80
+
}
75
81
76
-
return
$
activity
->
getActivityType
()->
getPlaybook
()->
getId
() ===
$
sidekickPlaybook
?->getId();
82
+
return
$
activity
->
getActivityType
()
?
->getPlaybook()
?
->getId() ===
$
sidekickPlaybook
?->getId();
77
}
83
}
78
}
84
}
Original file line number
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
73
74
75
76
77
78
Original file line
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
{
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
-
return
$
activity
->
getActivityType
()->
getPlaybook
()->
getId
() ===
$
sidekickPlaybook
?->getId();
}
}
Diff line number
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
73
74
75
76
77
78
79
80
81
82
83
84
Diff line change
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
{
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
+
// Sidekick playbook may be null, and the activity playbook may be null as well.
+
// Both can be soft-deleted.
+
// For that reason, at least one of the two playbooks must be guaranteed not to be null.
+
if
(
$
sidekickPlaybook
===
null
) {
+
return
false
;
+
}
+
return
$
activity
->
getActivityType
()
?
->getPlaybook()
?
->getId() ===
$
sidekickPlaybook
?->getId();
}
}
Expand file
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Copy file name to clipboard
Expand all lines: app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Lines changed: 0 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Models/Activity.php
app/Models/Activity.php
app/Models/Activity.php
Copy file name to clipboard
Expand all lines: app/Models/Activity.php
Lines changed: 21 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
Copy file name to clipboard
Expand all lines: app/Models/PlaybookCategory.php
Lines changed: 1 addition & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Services/Crm/Close/Service.php
app/Services/Crm/Close/Service.php
app/Services/Crm/Close/Service.php
Copy file name to clipboard
Expand all lines: app/Services/Crm/Close/Service.php...
|
NULL
|
|
74872
|
NULL
|
0
|
2026-04-23T10:21:56.265217+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776939716265_m2.jpg...
|
Firefox
|
Jy 20541 extract common traits by Vasil-Jiminny · Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/12008/changes
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close 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 (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
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 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1321 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (37)
Commits
(
37
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
All commits
All commits
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
2
/
20
viewed
Checks pending
Checks pending
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component/Activity/Services
GetDefaultActivityTypeService.php
GetDefaultActivityTypeService.php
Listeners/Crm
RemoteCrmRecordDeletedListener.php
RemoteCrmRecordDeletedListener.php
Models
Activity.php
Activity.php
PlaybookCategory.php
PlaybookCategory.php
Services/Crm
Close
Service.php
Service.php
Helpers
ActivityPlaybookTrait.php
ActivityPlaybookTrait.php
CrmHelperRepository.php
CrmHelperRepository.php
Listeners
ConvertLeadActivities.php
ConvertLeadActivities.php
Salesforce
Fields
FieldHelper.php
FieldHelper.php
ServiceTraits
FollowupActivityTrait.php
FollowupActivityTrait.php
Service.php
Service.php
BaseService.php
BaseService.php
tests/Unit
Collapse file
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
Copy file name to clipboard
Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php
Lines changed: 7 additions & 1 deletion
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
73
{
73
{
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
75
+
// Sidekick playbook may be null, and the activity playbook may be null as well.
76
+
// Both can be soft-deleted.
77
+
// For that reason, at least one of the two playbooks must be guaranteed not to be null.
78
+
if
(
$
sidekickPlaybook
===
null
) {
79
+
return
false
;
80
+
}
75
81
76
-
return
$
activity
->
getActivityType
()->
getPlaybook
()->
getId
() ===
$
sidekickPlaybook
?->getId();
82
+
return
$
activity
->
getActivityType
()
?
->getPlaybook()
?
->getId() ===
$
sidekickPlaybook
?->getId();
77
}
83
}
78
}
84
}
Original file line number
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
73
74
75
76
77
78
Original file line
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
{
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
-
return
$
activity
->
getActivityType
()->
getPlaybook
()->
getId
() ===
$
sidekickPlaybook
?->getId();
}
}
Diff line number
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
73
74
75
76
77
78
79
80
81
82
83
84
Diff line change
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
{
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
+
// Sidekick playbook may be null, and the activity playbook may be null as well.
+
// Both can be soft-deleted.
+
// For that reason, at least one of the two playbooks must be guaranteed not to be null.
+
if
(
$
sidekickPlaybook
===
null
) {
+
return
false
;
+
}
+
return
$
activity
->
getActivityType
()
?
->getPlaybook()
?
->getId() ===
$
sidekickPlaybook
?->getId();
}
}
Expand file
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Copy file name to clipboard
Expand all lines: app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Lines changed: 0 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Models/Activity.php
app/Models/Activity.php
app/Models/Activity.php
Copy file name to clipboard
Expand all lines: app/Models/Activity.php
Lines changed: 21 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Collapse file
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
Copy file name to clipboard
Expand all lines: app/Models/PlaybookCategory.php
Lines changed: 1 addition & 1 deletion
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -223,7 +223,7 @@ public function hasPlaybook(): bool
223
return
$
this
->
getAttribute
(
'
playbook
'
) !==...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.23321144,"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":"New Tab","depth":4,"bounds":{"left":0.23138298,"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":"New Tab","depth":5,"bounds":{"left":0.24468085,"top":0.10614525,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"bounds":{"left":0.23138298,"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":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"bounds":{"left":0.24468085,"top":0.13886672,"width":0.14128989,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"bounds":{"left":0.23138298,"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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"bounds":{"left":0.24468085,"top":0.17158818,"width":0.16555852,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23138298,"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":"Jiminny","depth":5,"bounds":{"left":0.24468085,"top":0.20430966,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Saved Reports","depth":4,"bounds":{"left":0.23138298,"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":"Userpilot | Saved Reports","depth":5,"bounds":{"left":0.24468085,"top":0.23703113,"width":0.044049203,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23138298,"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","depth":5,"bounds":{"left":0.24468085,"top":0.2697526,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app","depth":4,"bounds":{"left":0.23138298,"top":0.29130086,"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 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app","depth":5,"bounds":{"left":0.24468085,"top":0.30247405,"width":0.14660904,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.29870346,"top":0.29848364,"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.23420878,"top":0.3256185,"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.23420878,"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.24517952,"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.25631648,"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.26745346,"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.2785904,"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 (33)","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":"33","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 (32)","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":"32","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 20541 extract common traits #12008 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","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":"Checks pending","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","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":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 37 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-20541-extract-common-traits","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","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: 1321 additions & 442 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 (37)","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":"37","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 (2)","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":"2","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 (20)","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":"20","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.32164228,"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.32164228,"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.32164228,"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.34424868,"top":0.06943336,"width":0.011968086,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jy 20541 extract common traits","depth":14,"bounds":{"left":0.3628657,"top":0.058260176,"width":0.07164229,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":16,"bounds":{"left":0.3628657,"top":0.059856344,"width":0.07164229,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"bounds":{"left":0.43716756,"top":0.059856344,"width":0.0028257978,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","depth":15,"bounds":{"left":0.43999335,"top":0.059856344,"width":0.013630319,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All commits","depth":14,"bounds":{"left":0.36020613,"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.36319813,"top":0.07701516,"width":0.02244016,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Vasil-Jiminny","depth":15,"bounds":{"left":0.39827126,"top":0.07581804,"width":0.02642952,"height":0.014365523},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"bounds":{"left":0.39827126,"top":0.07701516,"width":0.02642952,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 37 commits into","depth":15,"bounds":{"left":0.42603058,"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.48769948,"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.48969415,"top":0.07701516,"width":0.014295213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"bounds":{"left":0.50731385,"top":0.07701516,"width":0.00880984,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20541-extract-common-traits","depth":16,"bounds":{"left":0.51745343,"top":0.074221864,"width":0.07596409,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","depth":17,"bounds":{"left":0.51944816,"top":0.07701516,"width":0.07197473,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"bounds":{"left":0.59474736,"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":"2","depth":15,"bounds":{"left":0.82297206,"top":0.070231445,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"bounds":{"left":0.8252992,"top":0.070231445,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20","depth":15,"bounds":{"left":0.8287899,"top":0.070231445,"width":0.0051529254,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"viewed","depth":15,"bounds":{"left":0.83494014,"top":0.070231445,"width":0.013297873,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Checks pending","depth":14,"bounds":{"left":0.8565492,"top":0.0650439,"width":0.04338431,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","depth":16,"bounds":{"left":0.86619014,"top":0.070231445,"width":0.030751329,"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.33294547,"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.4040891,"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.32197472,"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.32197472,"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.33793217,"top":0.15682362,"width":0.008144947,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Component/Activity/Services","depth":21,"bounds":{"left":0.34059176,"top":0.18236233,"width":0.061835106,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GetDefaultActivityTypeService.php","depth":23,"bounds":{"left":0.34325132,"top":0.20830008,"width":0.07496676,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GetDefaultActivityTypeService.php","depth":24,"bounds":{"left":0.34325132,"top":0.20830008,"width":0.07496676,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners/Crm","depth":21,"bounds":{"left":0.34059176,"top":0.23383878,"width":0.030086435,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RemoteCrmRecordDeletedListener.php","depth":23,"bounds":{"left":0.34325132,"top":0.25937748,"width":0.084109046,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"RemoteCrmRecordDeletedListener.php","depth":24,"bounds":{"left":0.34325132,"top":0.25937748,"width":0.084109046,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Models","depth":21,"bounds":{"left":0.34059176,"top":0.2849162,"width":0.015625,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Activity.php","depth":23,"bounds":{"left":0.34325132,"top":0.3104549,"width":0.025265958,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Activity.php","depth":24,"bounds":{"left":0.34325132,"top":0.3104549,"width":0.025265958,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"PlaybookCategory.php","depth":23,"bounds":{"left":0.34325132,"top":0.33599362,"width":0.048537236,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PlaybookCategory.php","depth":24,"bounds":{"left":0.34325132,"top":0.33599362,"width":0.048537236,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Services/Crm","depth":21,"bounds":{"left":0.34059176,"top":0.36153233,"width":0.028756648,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Close","depth":23,"bounds":{"left":0.34325132,"top":0.38747007,"width":0.012134309,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service.php","depth":25,"bounds":{"left":0.3459109,"top":0.41300878,"width":0.025598405,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service.php","depth":26,"bounds":{"left":0.3459109,"top":0.41300878,"width":0.025598405,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Helpers","depth":23,"bounds":{"left":0.34325132,"top":0.4385475,"width":0.01662234,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ActivityPlaybookTrait.php","depth":25,"bounds":{"left":0.3459109,"top":0.46448523,"width":0.054521278,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ActivityPlaybookTrait.php","depth":26,"bounds":{"left":0.3459109,"top":0.46448523,"width":0.054521278,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CrmHelperRepository.php","depth":25,"bounds":{"left":0.3459109,"top":0.49002394,"width":0.055684842,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CrmHelperRepository.php","depth":26,"bounds":{"left":0.3459109,"top":0.49002394,"width":0.055684842,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners","depth":23,"bounds":{"left":0.34325132,"top":0.51556265,"width":0.019614361,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ConvertLeadActivities.php","depth":25,"bounds":{"left":0.3459109,"top":0.54110134,"width":0.05651596,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ConvertLeadActivities.php","depth":26,"bounds":{"left":0.3459109,"top":0.54110134,"width":0.05651596,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Salesforce","depth":23,"bounds":{"left":0.34325132,"top":0.5666401,"width":0.022606382,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fields","depth":25,"bounds":{"left":0.3459109,"top":0.59217876,"width":0.012632979,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"FieldHelper.php","depth":27,"bounds":{"left":0.34857047,"top":0.6181165,"width":0.033909574,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"FieldHelper.php","depth":28,"bounds":{"left":0.34857047,"top":0.6181165,"width":0.033909574,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ServiceTraits","depth":25,"bounds":{"left":0.3459109,"top":0.64365524,"width":0.027426861,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"FollowupActivityTrait.php","depth":27,"bounds":{"left":0.34857047,"top":0.6691939,"width":0.053856384,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"FollowupActivityTrait.php","depth":28,"bounds":{"left":0.34857047,"top":0.6691939,"width":0.053856384,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service.php","depth":25,"bounds":{"left":0.3459109,"top":0.69473267,"width":0.025598405,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service.php","depth":26,"bounds":{"left":0.3459109,"top":0.69473267,"width":0.025598405,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"BaseService.php","depth":23,"bounds":{"left":0.34325132,"top":0.72027135,"width":0.036070477,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BaseService.php","depth":24,"bounds":{"left":0.34325132,"top":0.72027135,"width":0.036070477,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tests/Unit","depth":19,"bounds":{"left":0.33793217,"top":0.74581003,"width":0.020777926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse file","depth":14,"bounds":{"left":0.42869017,"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/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":15,"bounds":{"left":0.43932846,"top":0.10654429,"width":0.15591756,"height":0.016759777},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":16,"bounds":{"left":0.43932846,"top":0.10814046,"width":0.15591756,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":18,"bounds":{"left":0.43932846,"top":0.110135674,"width":0.15591756,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy file name to clipboard","depth":15,"bounds":{"left":0.5979056,"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":"AXButton","text":"Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":15,"bounds":{"left":0.6072141,"top":0.103751,"width":0.00930851,"height":0.022346368},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 7 additions & 1 deletion","depth":15,"bounds":{"left":0.9065825,"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.42603058,"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.44398272,"top":0.0,"width":0.018118352,"height":0.030327214},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line number","depth":17,"bounds":{"left":0.46210107,"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.47972074,"top":0.0,"width":0.016954787,"height":0.04708699},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"bounds":{"left":0.44730717,"top":0.0,"width":0.23753324,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72","depth":16,"bounds":{"left":0.4303524,"top":0.0,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","depth":18,"bounds":{"left":0.45694813,"top":0.0,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"bounds":{"left":0.47606382,"top":0.0,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"playbookMatchesActivityPlaybook","depth":18,"bounds":{"left":0.4976729,"top":0.0,"width":0.07446808,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.57214093,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":18,"bounds":{"left":0.5744681,"top":0.0,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.59607714,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.5984042,"top":0.0,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"bounds":{"left":0.61768615,"top":0.0,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bool","depth":18,"bounds":{"left":0.62483376,"top":0.0,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72","depth":16,"bounds":{"left":0.7117686,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","depth":18,"bounds":{"left":0.73836434,"top":0.0,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"bounds":{"left":0.75764626,"top":0.0,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"playbookMatchesActivityPlaybook","depth":18,"bounds":{"left":0.77925533,"top":0.0,"width":0.07430186,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.85355717,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":18,"bounds":{"left":0.8558843,"top":0.0,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.8774933,"top":0.0,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.8799867,"top":0.0,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"bounds":{"left":0.8991024,"top":0.0,"width":0.00731383,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bool","depth":18,"bounds":{"left":0.90641624,"top":0.0,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"73","depth":16,"bounds":{"left":0.4303524,"top":0.0,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"bounds":{"left":0.44730717,"top":0.0,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"73","depth":16,"bounds":{"left":0.7117686,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"bounds":{"left":0.72888964,"top":0.0,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"74","depth":16,"bounds":{"left":0.4303524,"top":0.0,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.4664229,"top":0.0,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","depth":18,"bounds":{"left":0.46891624,"top":0.0,"width":0.038397606,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":18,"bounds":{"left":0.50731385,"top":0.0,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.51446146,"top":0.0,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"bounds":{"left":0.5169548,"top":0.0,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.52642953,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickService","depth":18,"bounds":{"left":0.53125,"top":0.0,"width":0.036070477,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.56732047,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getSidekickPlaybook","depth":18,"bounds":{"left":0.57214093,"top":0.0,"width":0.045545213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.61768615,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.6200133,"top":0.0,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.6225067,"top":0.0,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.64162236,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUser","depth":18,"bounds":{"left":0.64644283,"top":0.0,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"());","depth":18,"bounds":{"left":0.6632314,"top":0.0,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"74","depth":16,"bounds":{"left":0.7117686,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.74800533,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","depth":18,"bounds":{"left":0.7503325,"top":0.0,"width":0.038397606,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":18,"bounds":{"left":0.78873,"top":0.0,"width":0.00731383,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.7960439,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"bounds":{"left":0.798371,"top":0.0,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.80801195,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickService","depth":18,"bounds":{"left":0.8128325,"top":0.0,"width":0.035904255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.8487367,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getSidekickPlaybook","depth":18,"bounds":{"left":0.85355717,"top":0.0,"width":0.045545213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.8991024,"top":0.0,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.9015958,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.90392286,"top":0.0,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.9232048,"top":0.0,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUser","depth":18,"bounds":{"left":0.92785907,"top":0.0,"width":0.016954787,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"());","depth":18,"bounds":{"left":0.94481385,"top":0.0,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"75","depth":16,"bounds":{"left":0.7117686,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.72357047,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// Sidekick playbook may be null, and the activity playbook may be null as well.","depth":18,"bounds":{"left":0.74800533,"top":0.0,"width":0.19198804,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"76","depth":16,"bounds":{"left":0.7117686,"top":0.0023942539,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.72357047,"top":0.0023942539,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// Both can be soft-deleted.","depth":18,"bounds":{"left":0.74800533,"top":0.0023942539,"width":0.06715426,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"77","depth":16,"bounds":{"left":0.7117686,"top":0.021548284,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.72357047,"top":0.021548284,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// For that reason, at least one of the two playbooks must be guaranteed not to be null.","depth":18,"bounds":{"left":0.74800533,"top":0.021548284,"width":0.21110372,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"78","depth":16,"bounds":{"left":0.7117686,"top":0.040702313,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.72357047,"top":0.040702313,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if","depth":18,"bounds":{"left":0.74800533,"top":0.040702313,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.7528258,"top":0.040702313,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.75764626,"top":0.040702313,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","depth":18,"bounds":{"left":0.7599734,"top":0.040702313,"width":0.038397606,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"===","depth":18,"bounds":{"left":0.798371,"top":0.040702313,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"null","depth":18,"bounds":{"left":0.8103391,"top":0.040702313,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":18,"bounds":{"left":0.81998,"top":0.040702313,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"79","depth":16,"bounds":{"left":0.7117686,"top":0.059856344,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.72357047,"top":0.059856344,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return","depth":18,"bounds":{"left":0.75764626,"top":0.059856344,"width":0.014295213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"false","depth":18,"bounds":{"left":0.77443486,"top":0.059856344,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"bounds":{"left":0.78640294,"top":0.059856344,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"80","depth":16,"bounds":{"left":0.7117686,"top":0.079010375,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.72357047,"top":0.079010375,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"bounds":{"left":0.72888964,"top":0.079010375,"width":0.02144282,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"75","depth":16,"bounds":{"left":0.4303524,"top":0.0981644,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"81","depth":16,"bounds":{"left":0.7117686,"top":0.0981644,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"76","depth":16,"bounds":{"left":0.4303524,"top":0.11731844,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":18,"bounds":{"left":0.44198802,"top":0.11731844,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return","depth":18,"bounds":{"left":0.4664229,"top":0.11731844,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.48337767,"top":0.11731844,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.48570478,"top":0.11731844,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.50482047,"top":0.11731844,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivityType","depth":18,"bounds":{"left":0.50964093,"top":0.11731844,"width":0.036070477,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()->","depth":18,"bounds":{"left":0.54571146,"top":0.11731844,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getPlaybook","depth":18,"bounds":{"left":0.5553524,"top":0.11731844,"width":0.026263298,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()->","depth":18,"bounds":{"left":0.5816157,"top":0.11731844,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getId","depth":18,"bounds":{"left":0.5912567,"top":0.11731844,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"() ===","depth":18,"bounds":{"left":0.60322475,"top":0.11731844,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.6200133,"top":0.11731844,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","depth":18,"bounds":{"left":0.6225067,"top":0.11731844,"width":0.038397606,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?->getId();","depth":18,"bounds":{"left":0.6609042,"top":0.11731844,"width":0.026263298,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"82","depth":16,"bounds":{"left":0.7117686,"top":0.11731844,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.72357047,"top":0.11731844,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return","depth":18,"bounds":{"left":0.74800533,"top":0.11731844,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.7647939,"top":0.11731844,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.767121,"top":0.11731844,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.78640294,"top":0.11731844,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivityType","depth":18,"bounds":{"left":0.7912234,"top":0.11731844,"width":0.035904255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()","depth":18,"bounds":{"left":0.82712764,"top":0.11731844,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?","depth":18,"bounds":{"left":0.83194816,"top":0.11731844,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->getPlaybook()","depth":18,"bounds":{"left":0.8344415,"top":0.11731844,"width":0.035904255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?","depth":18,"bounds":{"left":0.8703458,"top":0.11731844,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->getId() ===","depth":18,"bounds":{"left":0.8728391,"top":0.11731844,"width":0.03357713,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.90641624,"top":0.11731844,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","depth":18,"bounds":{"left":0.9087433,"top":0.11731844,"width":0.038397606,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?->getId();","depth":18,"bounds":{"left":0.94714093,"top":0.11731844,"width":0.02642952,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"77","depth":16,"bounds":{"left":0.4303524,"top":0.13647246,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"bounds":{"left":0.44730717,"top":0.13647246,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"83","depth":16,"bounds":{"left":0.7117686,"top":0.13647246,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"bounds":{"left":0.72888964,"top":0.13647246,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"78","depth":16,"bounds":{"left":0.4303524,"top":0.15562649,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"bounds":{"left":0.44730717,"top":0.15562649,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"84","depth":16,"bounds":{"left":0.7117686,"top":0.15562649,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"bounds":{"left":0.72888964,"top":0.15562649,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Original file line number","depth":16,"bounds":{"left":0.42603058,"top":0.0,"width":0.017952127,"height":0.04708699},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"bounds":{"left":0.44730717,"top":0.0,"width":0.23753324,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72","depth":16,"bounds":{"left":0.4303524,"top":0.0,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"73","depth":16,"bounds":{"left":0.4303524,"top":0.0,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"74","depth":16,"bounds":{"left":0.4303524,"top":0.0,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"75","depth":16,"bounds":{"left":0.4303524,"top":0.0981644,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"76","depth":16,"bounds":{"left":0.4303524,"top":0.11731844,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"77","depth":16,"bounds":{"left":0.4303524,"top":0.13647246,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"78","depth":16,"bounds":{"left":0.4303524,"top":0.15562649,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Original file line","depth":16,"bounds":{"left":0.44398272,"top":0.0,"width":0.018118352,"height":0.030327214},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"bounds":{"left":0.44730717,"top":0.0,"width":0.23753324,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","depth":18,"bounds":{"left":0.45694813,"top":0.0,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"bounds":{"left":0.47606382,"top":0.0,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"playbookMatchesActivityPlaybook","depth":18,"bounds":{"left":0.4976729,"top":0.0,"width":0.07446808,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.57214093,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":18,"bounds":{"left":0.5744681,"top":0.0,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.59607714,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.5984042,"top":0.0,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"bounds":{"left":0.61768615,"top":0.0,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bool","depth":18,"bounds":{"left":0.62483376,"top":0.0,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"bounds":{"left":0.44730717,"top":0.0,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.4664229,"top":0.0,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","depth":18,"bounds":{"left":0.46891624,"top":0.0,"width":0.038397606,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":18,"bounds":{"left":0.50731385,"top":0.0,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.51446146,"top":0.0,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"bounds":{"left":0.5169548,"top":0.0,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.52642953,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickService","depth":18,"bounds":{"left":0.53125,"top":0.0,"width":0.036070477,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.56732047,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getSidekickPlaybook","depth":18,"bounds":{"left":0.57214093,"top":0.0,"width":0.045545213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.61768615,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.6200133,"top":0.0,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.6225067,"top":0.0,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.64162236,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUser","depth":18,"bounds":{"left":0.64644283,"top":0.0,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"());","depth":18,"bounds":{"left":0.6632314,"top":0.0,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":18,"bounds":{"left":0.44198802,"top":0.11731844,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return","depth":18,"bounds":{"left":0.4664229,"top":0.11731844,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.48337767,"top":0.11731844,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.48570478,"top":0.11731844,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.50482047,"top":0.11731844,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivityType","depth":18,"bounds":{"left":0.50964093,"top":0.11731844,"width":0.036070477,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()->","depth":18,"bounds":{"left":0.54571146,"top":0.11731844,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getPlaybook","depth":18,"bounds":{"left":0.5553524,"top":0.11731844,"width":0.026263298,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()->","depth":18,"bounds":{"left":0.5816157,"top":0.11731844,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getId","depth":18,"bounds":{"left":0.5912567,"top":0.11731844,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"() ===","depth":18,"bounds":{"left":0.60322475,"top":0.11731844,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.6200133,"top":0.11731844,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","depth":18,"bounds":{"left":0.6225067,"top":0.11731844,"width":0.038397606,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?->getId();","depth":18,"bounds":{"left":0.6609042,"top":0.11731844,"width":0.026263298,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"bounds":{"left":0.44730717,"top":0.13647246,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"bounds":{"left":0.44730717,"top":0.15562649,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line number","depth":16,"bounds":{"left":0.46210107,"top":0.0,"width":0.01761968,"height":0.04708699},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"bounds":{"left":0.44730717,"top":0.0,"width":0.23753324,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72","depth":16,"bounds":{"left":0.7117686,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"73","depth":16,"bounds":{"left":0.7117686,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"74","depth":16,"bounds":{"left":0.7117686,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"75","depth":16,"bounds":{"left":0.7117686,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"76","depth":16,"bounds":{"left":0.7117686,"top":0.0023942539,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"77","depth":16,"bounds":{"left":0.7117686,"top":0.021548284,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"78","depth":16,"bounds":{"left":0.7117686,"top":0.040702313,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"79","depth":16,"bounds":{"left":0.7117686,"top":0.059856344,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"80","depth":16,"bounds":{"left":0.7117686,"top":0.079010375,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"81","depth":16,"bounds":{"left":0.7117686,"top":0.0981644,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"82","depth":16,"bounds":{"left":0.7117686,"top":0.11731844,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"83","depth":16,"bounds":{"left":0.7117686,"top":0.13647246,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"84","depth":16,"bounds":{"left":0.7117686,"top":0.15562649,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line change","depth":16,"bounds":{"left":0.47972074,"top":0.0,"width":0.016954787,"height":0.04708699},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"bounds":{"left":0.44730717,"top":0.0,"width":0.23753324,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","depth":18,"bounds":{"left":0.73836434,"top":0.0,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"bounds":{"left":0.75764626,"top":0.0,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"playbookMatchesActivityPlaybook","depth":18,"bounds":{"left":0.77925533,"top":0.0,"width":0.07430186,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.85355717,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":18,"bounds":{"left":0.8558843,"top":0.0,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.8774933,"top":0.0,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.8799867,"top":0.0,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"bounds":{"left":0.8991024,"top":0.0,"width":0.00731383,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bool","depth":18,"bounds":{"left":0.90641624,"top":0.0,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"bounds":{"left":0.72888964,"top":0.0,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.74800533,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","depth":18,"bounds":{"left":0.7503325,"top":0.0,"width":0.038397606,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":18,"bounds":{"left":0.78873,"top":0.0,"width":0.00731383,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.7960439,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"bounds":{"left":0.798371,"top":0.0,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.80801195,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickService","depth":18,"bounds":{"left":0.8128325,"top":0.0,"width":0.035904255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.8487367,"top":0.0,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getSidekickPlaybook","depth":18,"bounds":{"left":0.85355717,"top":0.0,"width":0.045545213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.8991024,"top":0.0,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.9015958,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.90392286,"top":0.0,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.9232048,"top":0.0,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUser","depth":18,"bounds":{"left":0.92785907,"top":0.0,"width":0.016954787,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"());","depth":18,"bounds":{"left":0.94481385,"top":0.0,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.72357047,"top":0.0,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// Sidekick playbook may be null, and the activity playbook may be null as well.","depth":18,"bounds":{"left":0.74800533,"top":0.0,"width":0.19198804,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.72357047,"top":0.0023942539,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// Both can be soft-deleted.","depth":18,"bounds":{"left":0.74800533,"top":0.0023942539,"width":0.06715426,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.72357047,"top":0.021548284,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// For that reason, at least one of the two playbooks must be guaranteed not to be null.","depth":18,"bounds":{"left":0.74800533,"top":0.021548284,"width":0.21110372,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.72357047,"top":0.040702313,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if","depth":18,"bounds":{"left":0.74800533,"top":0.040702313,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.7528258,"top":0.040702313,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.75764626,"top":0.040702313,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","depth":18,"bounds":{"left":0.7599734,"top":0.040702313,"width":0.038397606,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"===","depth":18,"bounds":{"left":0.798371,"top":0.040702313,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"null","depth":18,"bounds":{"left":0.8103391,"top":0.040702313,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":18,"bounds":{"left":0.81998,"top":0.040702313,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.72357047,"top":0.059856344,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return","depth":18,"bounds":{"left":0.75764626,"top":0.059856344,"width":0.014295213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"false","depth":18,"bounds":{"left":0.77443486,"top":0.059856344,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"bounds":{"left":0.78640294,"top":0.059856344,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.72357047,"top":0.079010375,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"bounds":{"left":0.72888964,"top":0.079010375,"width":0.02144282,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.72357047,"top":0.11731844,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return","depth":18,"bounds":{"left":0.74800533,"top":0.11731844,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.7647939,"top":0.11731844,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.767121,"top":0.11731844,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.78640294,"top":0.11731844,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivityType","depth":18,"bounds":{"left":0.7912234,"top":0.11731844,"width":0.035904255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()","depth":18,"bounds":{"left":0.82712764,"top":0.11731844,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?","depth":18,"bounds":{"left":0.83194816,"top":0.11731844,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->getPlaybook()","depth":18,"bounds":{"left":0.8344415,"top":0.11731844,"width":0.035904255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?","depth":18,"bounds":{"left":0.8703458,"top":0.11731844,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->getId() ===","depth":18,"bounds":{"left":0.8728391,"top":0.11731844,"width":0.03357713,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.90641624,"top":0.11731844,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","depth":18,"bounds":{"left":0.9087433,"top":0.11731844,"width":0.038397606,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?->getId();","depth":18,"bounds":{"left":0.94714093,"top":0.11731844,"width":0.02642952,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"bounds":{"left":0.72888964,"top":0.13647246,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"bounds":{"left":0.72888964,"top":0.15562649,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand file","depth":14,"bounds":{"left":0.42869017,"top":0.19034317,"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/Listeners/Crm/RemoteCrmRecordDeletedListener.php","depth":15,"bounds":{"left":0.43932846,"top":0.19313647,"width":0.12483378,"height":0.016759777},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Listeners/Crm/RemoteCrmRecordDeletedListener.php","depth":16,"bounds":{"left":0.43932846,"top":0.19473264,"width":0.12483378,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Listeners/Crm/RemoteCrmRecordDeletedListener.php","depth":18,"bounds":{"left":0.43932846,"top":0.19672786,"width":0.12483378,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy file name to clipboard","depth":15,"bounds":{"left":0.5668218,"top":0.19034317,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Expand all lines: app/Listeners/Crm/RemoteCrmRecordDeletedListener.php","depth":15,"bounds":{"left":0.57613033,"top":0.19034317,"width":0.00930851,"height":0.022346368},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 0 additions & 1 deletion","depth":15,"bounds":{"left":0.91289896,"top":0.20271349,"width":0.019946808,"height":0.11412609},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Viewed","depth":14,"bounds":{"left":0.93583775,"top":0.19034317,"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.19553073,"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.19034317,"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.19034317,"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":"Expand file","depth":14,"bounds":{"left":0.42869017,"top":0.23663208,"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/Models/Activity.php","depth":15,"bounds":{"left":0.43932846,"top":0.23942538,"width":0.05518617,"height":0.016759777},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Models/Activity.php","depth":16,"bounds":{"left":0.43932846,"top":0.24102154,"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":"app/Models/Activity.php","depth":18,"bounds":{"left":0.43932846,"top":0.24301676,"width":0.05518617,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy file name to clipboard","depth":15,"bounds":{"left":0.4971742,"top":0.23663208,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Expand all lines: app/Models/Activity.php","depth":15,"bounds":{"left":0.5064827,"top":0.23663208,"width":0.00930851,"height":0.022346368},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 21 additions & 1 deletion","depth":15,"bounds":{"left":0.90442157,"top":0.2490024,"width":0.020113032,"height":0.11412609},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Viewed","depth":14,"bounds":{"left":0.93583775,"top":0.23663208,"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.24181964,"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.23663208,"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.23663208,"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":"Collapse file","depth":14,"bounds":{"left":0.42869017,"top":0.282921,"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/Models/PlaybookCategory.php","depth":15,"bounds":{"left":0.43932846,"top":0.2857143,"width":0.07430186,"height":0.016759777},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Models/PlaybookCategory.php","depth":16,"bounds":{"left":0.43932846,"top":0.28731045,"width":0.07430186,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Models/PlaybookCategory.php","depth":18,"bounds":{"left":0.43932846,"top":0.28930566,"width":0.07430186,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy file name to clipboard","depth":15,"bounds":{"left":0.5162899,"top":0.282921,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Expand all lines: app/Models/PlaybookCategory.php","depth":15,"bounds":{"left":0.5255984,"top":0.282921,"width":0.00930851,"height":0.022346368},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 1 addition & 1 deletion","depth":15,"bounds":{"left":0.9070811,"top":0.2952913,"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.282921,"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.28810853,"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.282921,"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.282921,"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.42603058,"top":0.3124501,"width":0.017952127,"height":0.04708699},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Original file line","depth":17,"bounds":{"left":0.44398272,"top":0.32083002,"width":0.018118352,"height":0.030327214},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line number","depth":17,"bounds":{"left":0.46210107,"top":0.3124501,"width":0.01761968,"height":0.04708699},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line change","depth":17,"bounds":{"left":0.47972074,"top":0.3124501,"width":0.016954787,"height":0.04708699},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -223,7 +223,7 @@ public function hasPlaybook(): bool","depth":18,"bounds":{"left":0.44863698,"top":0.31444532,"width":0.13198139,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"223","depth":16,"bounds":{"left":0.4296875,"top":0.33359936,"width":0.00731383,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return","depth":18,"bounds":{"left":0.46775267,"top":0.33359936,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.48470744,"top":0.33359936,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"bounds":{"left":0.4870346,"top":0.33359936,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.49667552,"top":0.33359936,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getAttribute","depth":18,"bounds":{"left":0.501496,"top":0.33359936,"width":0.028756648,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.53025264,"top":0.33359936,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.5325798,"top":0.33359936,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"playbook","depth":18,"bounds":{"left":0.53507316,"top":0.33359936,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.55418885,"top":0.33359936,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") !==","depth":18,"bounds":{"left":0.55668217,"top":0.33359936,"width":0.014295213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-4305491008524569997
|
-5335501183982145488
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close 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 (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
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 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1321 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (37)
Commits
(
37
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
All commits
All commits
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
2
/
20
viewed
Checks pending
Checks pending
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component/Activity/Services
GetDefaultActivityTypeService.php
GetDefaultActivityTypeService.php
Listeners/Crm
RemoteCrmRecordDeletedListener.php
RemoteCrmRecordDeletedListener.php
Models
Activity.php
Activity.php
PlaybookCategory.php
PlaybookCategory.php
Services/Crm
Close
Service.php
Service.php
Helpers
ActivityPlaybookTrait.php
ActivityPlaybookTrait.php
CrmHelperRepository.php
CrmHelperRepository.php
Listeners
ConvertLeadActivities.php
ConvertLeadActivities.php
Salesforce
Fields
FieldHelper.php
FieldHelper.php
ServiceTraits
FollowupActivityTrait.php
FollowupActivityTrait.php
Service.php
Service.php
BaseService.php
BaseService.php
tests/Unit
Collapse file
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
Copy file name to clipboard
Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php
Lines changed: 7 additions & 1 deletion
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
73
{
73
{
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
75
+
// Sidekick playbook may be null, and the activity playbook may be null as well.
76
+
// Both can be soft-deleted.
77
+
// For that reason, at least one of the two playbooks must be guaranteed not to be null.
78
+
if
(
$
sidekickPlaybook
===
null
) {
79
+
return
false
;
80
+
}
75
81
76
-
return
$
activity
->
getActivityType
()->
getPlaybook
()->
getId
() ===
$
sidekickPlaybook
?->getId();
82
+
return
$
activity
->
getActivityType
()
?
->getPlaybook()
?
->getId() ===
$
sidekickPlaybook
?->getId();
77
}
83
}
78
}
84
}
Original file line number
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
73
74
75
76
77
78
Original file line
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
{
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
-
return
$
activity
->
getActivityType
()->
getPlaybook
()->
getId
() ===
$
sidekickPlaybook
?->getId();
}
}
Diff line number
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
73
74
75
76
77
78
79
80
81
82
83
84
Diff line change
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
{
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
+
// Sidekick playbook may be null, and the activity playbook may be null as well.
+
// Both can be soft-deleted.
+
// For that reason, at least one of the two playbooks must be guaranteed not to be null.
+
if
(
$
sidekickPlaybook
===
null
) {
+
return
false
;
+
}
+
return
$
activity
->
getActivityType
()
?
->getPlaybook()
?
->getId() ===
$
sidekickPlaybook
?->getId();
}
}
Expand file
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Copy file name to clipboard
Expand all lines: app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
Lines changed: 0 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Expand file
app/Models/Activity.php
app/Models/Activity.php
app/Models/Activity.php
Copy file name to clipboard
Expand all lines: app/Models/Activity.php
Lines changed: 21 additions & 1 deletion
Viewed
Viewed
Comment on this file
More options
Collapse file
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
app/Models/PlaybookCategory.php
Copy file name to clipboard
Expand all lines: app/Models/PlaybookCategory.php
Lines changed: 1 addition & 1 deletion
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -223,7 +223,7 @@ public function hasPlaybook(): bool
223
return
$
this
->
getAttribute
(
'
playbook
'
) !==...
|
NULL
|
|
74870
|
NULL
|
0
|
2026-04-23T10:21:54.650930+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776939714650_m1.jpg...
|
Firefox
|
Jy 20541 extract common traits by Vasil-Jiminny · Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/12008/changes
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close 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 (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
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 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1321 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (37)
Commits
(
37
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
All commits
All commits
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
2
/
20
viewed
Checks pending
Checks pending
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component/Activity/Services
GetDefaultActivityTypeService.php
GetDefaultActivityTypeService.php
Listeners/Crm
RemoteCrmRecordDeletedListener.php
RemoteCrmRecordDeletedListener.php
Models
Activity.php
Activity.php
PlaybookCategory.php
PlaybookCategory.php
Services/Crm
Close
Service.php
Service.php
Helpers
ActivityPlaybookTrait.php
ActivityPlaybookTrait.php
CrmHelperRepository.php
CrmHelperRepository.php
Listeners
ConvertLeadActivities.php
ConvertLeadActivities.php
Salesforce
Fields
FieldHelper.php
FieldHelper.php
ServiceTraits
FollowupActivityTrait.php
FollowupActivityTrait.php
Service.php
Service.php
BaseService.php
BaseService.php
tests/Unit
Collapse file
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
Copy file name to clipboard
Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php
Lines changed: 7 additions & 1 deletion
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
73
{
73
{
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
75
+
// Sidekick playbook may be null, and the activity playbook may be null as well.
76
+
// Both can be soft-deleted.
77
+
// For that reason, at least one of the two playbooks must be guaranteed not to be null.
78
+
if
(
$
sidekickPlaybook
===
null
) {
79
+
return
false
;
80
+
}
75
81
76
-
return
$
activity
->
getActivityType
()->
getPlaybook
()->
getId
() ===
$
sidekickPlaybook
?->getId();
82
+
return
$
activity
->
getActivityType
()
?
->getPlaybook()
?
->getId() ===
$
sidekickPlaybook
?->getId();
77
}
83
}...
|
[{"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":"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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · 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 | Saved Reports","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Saved Reports","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 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · 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},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.017361112,"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":"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 (33)","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":"33","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 (32)","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":"32","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 20541 extract common traits #12008 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","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":"Checks pending","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","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":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 37 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-20541-extract-common-traits","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","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: 1321 additions & 442 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 (37)","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":"37","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 (2)","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":"2","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 (20)","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":"20","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 20541 extract common traits","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","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"},{"role":"AXLink","text":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 37 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-20541-extract-common-traits","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","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":"2","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"viewed","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Checks pending","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Submit review","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Submit","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"review","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Open diff view settings","depth":14,"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,"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,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"(","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Filter files…","depth":16,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Filter options","depth":16,"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,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File tree","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Component/Activity/Services","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GetDefaultActivityTypeService.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GetDefaultActivityTypeService.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners/Crm","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RemoteCrmRecordDeletedListener.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"RemoteCrmRecordDeletedListener.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Models","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Activity.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Activity.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"PlaybookCategory.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PlaybookCategory.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Services/Crm","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Close","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Helpers","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ActivityPlaybookTrait.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ActivityPlaybookTrait.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CrmHelperRepository.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CrmHelperRepository.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Listeners","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ConvertLeadActivities.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ConvertLeadActivities.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Salesforce","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fields","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"FieldHelper.php","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"FieldHelper.php","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ServiceTraits","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"FollowupActivityTrait.php","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"FollowupActivityTrait.php","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service.php","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service.php","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"BaseService.php","depth":23,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BaseService.php","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tests/Unit","depth":19,"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/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Component/Activity/Services/GetDefaultActivityTypeService.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":"AXButton","text":"Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php","depth":15,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 7 additions & 1 deletion","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":"@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","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":"playbookMatchesActivityPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bool","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","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":"playbookMatchesActivityPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bool","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"73","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"73","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"74","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","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":"sidekickService","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getSidekickPlaybook","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":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUser","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"());","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"74","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","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":"sidekickService","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getSidekickPlaybook","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":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUser","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"());","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"75","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// Sidekick playbook may be null, and the activity playbook may be null as well.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"76","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// Both can be soft-deleted.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"77","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// For that reason, at least one of the two playbooks must be guaranteed not to be null.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"78","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":"sidekickPlaybook","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":"79","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":"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":"80","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":"75","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"81","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"76","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":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivityType","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getId","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":"sidekickPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?->getId();","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"82","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":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivityType","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":"->getPlaybook()","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->getId() ===","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sidekickPlaybook","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?->getId();","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"77","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"83","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
2109717312604682144
|
-6882496456673967768
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close 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 (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
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 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1321 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (37)
Commits
(
37
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
All commits
All commits
Vasil-Jiminny
Vasil-Jiminny
wants to merge 37 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
2
/
20
viewed
Checks pending
Checks pending
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component/Activity/Services
GetDefaultActivityTypeService.php
GetDefaultActivityTypeService.php
Listeners/Crm
RemoteCrmRecordDeletedListener.php
RemoteCrmRecordDeletedListener.php
Models
Activity.php
Activity.php
PlaybookCategory.php
PlaybookCategory.php
Services/Crm
Close
Service.php
Service.php
Helpers
ActivityPlaybookTrait.php
ActivityPlaybookTrait.php
CrmHelperRepository.php
CrmHelperRepository.php
Listeners
ConvertLeadActivities.php
ConvertLeadActivities.php
Salesforce
Fields
FieldHelper.php
FieldHelper.php
ServiceTraits
FollowupActivityTrait.php
FollowupActivityTrait.php
Service.php
Service.php
BaseService.php
BaseService.php
tests/Unit
Collapse file
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
app/Component/Activity/Services/GetDefaultActivityTypeService.php
Copy file name to clipboard
Expand all lines: app/Component/Activity/Services/GetDefaultActivityTypeService.php
Lines changed: 7 additions & 1 deletion
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -72,7 +72,13 @@ public function getForUserAndChannel(User $user, string $channel): ?PlaybookCate
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
72
private
function
playbookMatchesActivityPlaybook
(
Activity
$
activity
):
bool
73
{
73
{
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
74
$
sidekickPlaybook
=
$
this
->
sidekickService
->
getSidekickPlaybook
(
$
activity
->
getUser
());
75
+
// Sidekick playbook may be null, and the activity playbook may be null as well.
76
+
// Both can be soft-deleted.
77
+
// For that reason, at least one of the two playbooks must be guaranteed not to be null.
78
+
if
(
$
sidekickPlaybook
===
null
) {
79
+
return
false
;
80
+
}
75
81
76
-
return
$
activity
->
getActivityType
()->
getPlaybook
()->
getId
() ===
$
sidekickPlaybook
?->getId();
82
+
return
$
activity
->
getActivityType
()
?
->getPlaybook()
?
->getId() ===
$
sidekickPlaybook
?->getId();
77
}
83
}...
|
NULL
|
|
74786
|
NULL
|
0
|
2026-04-23T10:16:44.816950+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776939404816_m2.jpg...
|
PhpStorm
|
faVsco.js – Activity.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
167
4
102
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Models;
use Carbon\Carbon;
use Database\Factories\ActivityFactory;
use DateTimeInterface;
use Exception;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent;
use Illuminate\Database\Eloquent\Attributes\Scope;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use InvalidArgumentException;
use Jiminny\Component\ElasticSearch;
use Jiminny\Component\MeetingBot;
use Jiminny\Component\Model\BitwiseFlagTrait;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Sidekick\SidekickService;
use Jiminny\Component\Uuid\UuidAwareInterface;
use Jiminny\Component\Workflow;
use Jiminny\Contracts;
use Jiminny\Contracts\Crm\ProspectInterface;
use Jiminny\DTO\ImportCall\Call;
use Jiminny\Events\Activities\ActivityTypeUpdated;
use Jiminny\Events\Activities\ActivityUpdated;
use Jiminny\Events\Activities\ProspectUpdated;
use Jiminny\Events\Activities\StageUpdated;
use Jiminny\Events\Activities\StatusUpdated;
use Jiminny\Events\Activities\TitleUpdated;
use Jiminny\Exceptions\InvalidArgumentException as InvalidArgumentJiminnyException;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\RuntimeException;
use Jiminny\Models;
use Jiminny\Models\Activity\ActivitySummaryLog;
use Jiminny\Models\Activity\ActivityUploadSetting;
use Jiminny\Models\Activity\AvailabilityNotification;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Log;
use Jiminny\Models\Activity\Message;
use Jiminny\Models\Activity\Moment;
use Jiminny\Models\Activity\Note;
use Jiminny\Models\Activity\ParticipantSpeech;
use Jiminny\Models\Activity\Play;
use Jiminny\Models\Activity\Question;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\Activity\Snapshot;
use Jiminny\Models\Activity\Stats;
use Jiminny\Models\Activity\SubscriptionSet;
use Jiminny\Models\Activity\TopicTrigger;
use Jiminny\Models\Activity\Transcription;
use Jiminny\Models\Calendar\CalendarEvent;
use Jiminny\Models\Crm\Configuration;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\ElasticSearch\ActivityElasticSearchTrait;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Participant\Connection;
use Jiminny\Models\Playlist\Activity as PlaylistActivity;
use Jiminny\Services\Activity\ActivityProviderRegistry;
use Jiminny\Services\Activity\Import\DataResolvers\UpdateCrmDataByStrategy;
use Jiminny\Services\Activity\Import\DataResolvers\UpdateCrmDataResolverFactory;
use Jiminny\Services\Activity\Import\DataResolvers\UpdateCrmDataResolverInterface;
use Jiminny\Traits\Enums;
use Jiminny\Traits\RequiresUUID;
use Jiminny\Utils\CurrencyFormatter;
use NumberFormatter;
use function in_array;
/**
* Jiminny\Models\Activity
*
* @property null|int $auto_score filled from ES hydrator, not in DB!
* @property-read Account|null $account
* @property-read CalendarEvent|null $calendarEvent
* @property-read Contact|null $contact
* @property-read Lead|null $lead
* @property-read Opportunity|null $opportunity
* @property-read Stage|null $stage
* @property int $id
* @property mixed|null $uuid
* @property string|null $source
* @property string|null $external_id
* @property string $provider
* @property string|null $location
* @property string|null $telephony_provider_id
* @property int|null $from_participant_id
* @property int|null $to_participant_id
* @property int|null $device_id
* @property string|null $type
* @property int|null $playbook_category_id
* @property int $user_id
* @property int|null $lead_id
* @property int|null $account_id
* @property int|null $contact_id
* @property int|null $opportunity_id
* @property int|null $stage_id
* @property string|null $value
* @property int|null $crm_configuration_id
* @property string|null $crm_provider_id
* @property string|null $language
* @property int|null $transcription_id
* @property int $duration
* @property string $status
* @property int|null $on_air
* @property int|null $calendar_event_id
* @property string $recording_state
* @property bool|null $recording_preference
* @property int $recording_reason_code
* @property int $summary_reminder_sent
* @property \Illuminate\Support\Carbon|null $log_reminder_sent_at
* @property \Illuminate\Support\Carbon|null $organizer_notified_at
* @property bool|null $has_recording_prompt
* @property bool $is_internal
* @property int $is_locked
* @property int $is_recording
* @property bool|null $is_processed
* @property bool $is_private
* @property bool $is_instant_invite
* @property string|null $poster_path
* @property string|null $summary
* @property string|null $title
* @property string|null $description
* @property \Illuminate\Support\Carbon|null $scheduled_start_time
* @property \Illuminate\Support\Carbon|null $scheduled_end_time
* @property \Illuminate\Support\Carbon|null $actual_start_time
* @property \Illuminate\Support\Carbon|null $actual_end_time
* @property int|null $uploaded_by
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property string|null $average_score
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant> $activeParticipants
* @property-read int|null $active_participants_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Scorecard\ActivityScorecardRuleTrigger> $activityScorecardRuleTriggers
* @property-read int|null $activity_scorecard_rule_triggers_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Scorecard\ActivityScorecardRule> $activityScorecardRules
* @property-read int|null $activity_scorecard_rules_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, AvailabilityNotification> $availabilityNotifications
* @property-read int|null $availability_notifications_count
* @property-read \Jiminny\Models\PlaybookCategory|null $category
* @property-read \Illuminate\Database\Eloquent\Collection<int, CoachRequest> $coachRequests
* @property-read int|null $coach_requests_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\CoachingFeedback> $coachingFeedbacks
* @property-read int|null $coaching_feedbacks_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Message> $coachingMessages
* @property-read int|null $coaching_messages_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Comment> $comments
* @property-read int|null $comments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Connection> $connections
* @property-read int|null $connections_count
* @property-read Configuration|null $crm
* @property-read \Illuminate\Database\Eloquent\Collection<int, FieldData> $data
* @property-read int|null $data_count
* @property-read \Jiminny\Models\Device|null $device
* @property-read \Kalnoy\Nestedset\Collection<int, \Jiminny\Models\Playlist> $favoritePlaylists
* @property-read int|null $favorite_playlists_count
* @property-read \Jiminny\Models\Participant|null $from
* @property-read string|null $activity_title
* @property-read mixed $comment_count
* @property-read mixed $duration_for_humans
* @property-read string $duration_for_humans_short
* @property-read int $favorite_count
* @property-read mixed $favorites_count
* @property-read mixed $formatted_value
* @property-read string $id_string
* @property-read \Jiminny\Models\Participant|null $organizer
* @property-read mixed $play_count
* @property-read int|null $plays_count
* @property-read ?ProspectInterface $prospect
* @property-read string|null $prospect_name
* @property-read mixed $prospect_type
* @property-read mixed $share_count
* @property-read int|null $shares_count
* @property-read int|null $tracks_with_telephony_count
* @property-read int|null $visible_comments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\CoachingFeedback> $latestCoachingFeedbacks
* @property-read int|null $latest_coaching_feedbacks_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Log> $logs
* @property-read int|null $logs_count
* @property-read \Jiminny\Models\Track|null $masterTrack
* @property-read \Illuminate\Database\Eloquent\Collection<int, Message> $messages
* @property-read int|null $messages_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Moment> $moments
* @property-read int|null $moments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Note> $notes
* @property-read int|null $notes_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant\Share> $participantShares
* @property-read int|null $participant_shares_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, ParticipantSpeech> $participantSpeeches
* @property-read int|null $participant_speeches_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant\ParticipantStats> $participantStats
* @property-read int|null $participant_stats_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant> $participants
* @property-read int|null $participants_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, PlaylistActivity> $playlistActivities
* @property-read int|null $playlist_activities_count
* @property-read \Kalnoy\Nestedset\Collection<int, \Jiminny\Models\Playlist> $playlists
* @property-read int|null $playlists_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Play> $plays
* @property-read \Illuminate\Database\Eloquent\Collection<int, Question> $questions
* @property-read int|null $questions_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Session> $sessions
* @property-read int|null $sessions_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Share> $shares
* @property-read \Illuminate\Database\Eloquent\Collection<int, Snapshot> $snapshots
* @property-read int|null $snapshots_count
* @property-read Stats|null $stats
* @property-read \Jiminny\Models\Participant|null $to
* @property-read \Illuminate\Database\Eloquent\Collection<int, TopicTrigger> $topicTriggers
* @property-read int|null $topic_triggers_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Track> $tracks
* @property-read int|null $tracks_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Track> $tracksWithTelephony
* @property-read Transcription|null $transcription
* @property-read \Jiminny\Models\User $user
* @property-read \Illuminate\Database\Eloquent\Collection<int, Comment> $visibleComments
*
* @method static \Illuminate\Database\Eloquent\Collection<int, static> all($columns = ['*'])
* @method static \Jiminny\Component\Eloquent\Builder|Activity chunkByIdDesc($count, callable $callback, $column = null, $alias = null)
* @method static \Database\Factories\ActivityFactory factory(...$parameters)
* @method static \Illuminate\Database\Eloquent\Collection<int, static> get($columns = ['*'])
* @method static \Jiminny\Component\Eloquent\Builder|Activity heldBetween(\Carbon\Carbon $start, \Carbon\Carbon $end)
* @method static \Jiminny\Component\Eloquent\Builder|Activity idOrUuId($idOrUuid, bool $first = true)
* @method static \Jiminny\Component\Eloquent\Builder|Activity newModelQuery()
* @method static \Jiminny\Component\Eloquent\Builder|Activity newQuery()
* @method static Builder|Activity onlyTrashed()
* @method static \Jiminny\Component\Eloquent\Builder|Activity query()
* @method static \Jiminny\Component\Eloquent\Builder|Activity scheduledBetween(\Carbon\Carbon $start, \Carbon\Carbon $end)
* @method static \Jiminny\Component\Eloquent\Builder|Activity inOpenDeals()
* @method static \Jiminny\Component\Eloquent\Builder|Activity notInOpenDeals()
* @method static \Jiminny\Component\Eloquent\Builder|Activity forTeam(int $teamId)
* @method static \Jiminny\Component\Eloquent\Builder|Activity search(callable $searchQuery, $key = null, $sortByResults = true)
* @method static \Jiminny\Component\Eloquent\Builder|Activity uuid(string $uuid, bool $first = true)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereAccountId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereActualEndTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereActualStartTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereAverageScore($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCalendarEventId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereContactId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCreatedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCrmConfigurationId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCrmProviderId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDeletedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDescription($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDeviceId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDuration($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereFromParticipantId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereHasRecordingPrompt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsInstantInvite($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsInternal($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsLocked($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsPrivate($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsProcessed($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsRecording($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLanguage($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLeadId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLocation($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLogReminderSentAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereOnAir($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereOpportunityId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereOrganizerNotifiedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity wherePlaybookCategoryId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity wherePosterPath($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereProvider($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereRecordingPreference($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereRecordingReasonCode($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereRecordingState($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereScheduledEndTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereScheduledStartTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereSource($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereExternalId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereStageId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereStatus($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereSummary($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereSummaryReminderSent($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereTelephonyProviderId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereTitle($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereToParticipantId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereTranscriptionId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereType($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUpdatedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUploadedBy($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUserId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUuid($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereValue($value)
* @method static Builder|Activity withTrashed()
* @method static Builder|Activity withoutTrashed()
*
* @mixin \Eloquent
*/
class Activity extends Model implements
ElasticSearch\Contract\Searchable,
Workflow\Workflow\WorkflowAwareInterface,
Models\Contracts\ActivityContract,
Contracts\Model\ActivityInterface,
UuidAwareInterface
{
use HasFactory;
use Enums;
use SoftDeletes;
use RequiresUUID;
use BitwiseFlagTrait;
use ElasticSearch\Model\Searchable;
use ActivityElasticSearchTrait;
use Workflow\Workflow\WorkflowAware {
transitionTo as traitTransitionTo;
}
public const int FLAG_RECORDING_REASON_DEFAULT = 0;
// Recording Prompted but never started
public const int FLAG_RECORDING_REASON_COMPLIANCE_PROMPT = 1;
public const int FLAG_RECORDING_REASON_COMPLIANCE_RESUMED = 2;
public const int FLAG_RECORDING_REASON_NO_AUDIO = 3;
// Recording Disabled by Organization
public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT = 4;
// Recording was restricted to one-side recordings only
public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT_ONE_SIDE = 8;
// Recording was not started because it was internal and team setting disabled that.
public const int FLAG_RECORDING_REASON_TEAM_INTERNAL_DISABLED = 16;
// Recording was not started because it was internal and user setting disabled that.
public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED = 32;
// Recording was not started because user setting disabled automatic recording.
public const int FLAG_RECORDING_REASON_USER_AUTOMATIC_DISABLED = 64;
// Recording was not started because team setting disabled automatic recording.
public const int FLAG_RECORDING_REASON_TEAM_AUTOMATIC_DISABLED = 128;
// Recording was not started because user has overriden default.
public const int FLAG_RECORDING_REASON_PREFERENCE_OVERRIDE = 256;
// Recording was not started because they don't want internal, and this meeting was not scheduled/imported in time.
public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED_UNSCHEDULED = 512;
// Recording was not started because their team setting does excludes the meeting type.
public const int FLAG_RECORDING_REASON_UNSUPPORTED_TYPE = 1024;
// Recording was not started because the external provider disabled it (or recording is missing etc).
public const int FLAG_RECORDING_REASON_EXTERNALLY_DISABLED = 2048;
// Recording was stopped externally ("exit-meeting" Pusher event)
public const int FLAG_RECORDING_REASON_STOPPED_EXTERNALLY = 384;
// Recording couldn't be started due to Zoom hosting conflict error
public const int FLAG_RECORDING_REASON_HOSTING_CONFLICT = 448;
// meeting.failed event with reason code BOT_DENIED_FROM_LOBBY
public const int FLAG_RECORDING_REASON_MEETING_BOT_DENIED_FROM_LOBBY = 4096;
// meeting.failed event with reason code LOBBY_TIMEOUT
public const int FLAG_RECORDING_REASON_MEETING_BOT_LOBBY_TIMEOUT = 8192;
// meeting.failed event with reason code BOT_KICKED
public const int FLAG_RECORDING_REASON_MEETING_BOT_KICKED = 16384;
// meeting.failed event with reason code UNKNOWN
public const int FLAG_RECORDING_REASON_MEETING_BOT_UNKNOWN = 32768;
public const int FLAG_RECORDING_REASON_CONSENT_DENIED = 65536;
// Invalid meeting (e.g. URL is invalid, or the meeting is not found)
public const int FLAG_RECORDING_REASON_MEETING_BOT_INVALID = 131072;
// The host stopped the recording.
public const int FLAG_RECORDING_REASON_USER_STOPPED = 262144;
// Recording was not started because an alternative vendor disabled it (or overrode it).
public const int FLAG_RECORDING_REASON_VENDOR_OVERRIDE = 1048576;
// Login required meeting.failed code
public const int FLAG_RECORDING_REASON_LOGIN_REQUIRED = 524288;
// Password for meeting was not provided - meeting.failed code
public const int FLAG_RECORDING_REASON_MEETING_PASSWORD_NOT_PROVIDED = 2097152;
// meeting.failed - when the meeting is locked
public const int FLAG_RECORDING_REASON_MEETING_IS_LOCKED = 4194304;
// max recording duration reached
public const int FLAG_RECORDING_REASON_MAX_DURATION_REACHED = 8388608;
// recording size is too small
public const int FLAG_RECORDING_REASON_EMPTY_RECORDING = 16777216;
// meeting.failed - when bot is redirected to sign in page multiple times
public const int FLAG_RECORDING_REASON_MAX_RESTART_COUNT_IS_REACHED = 33554432;
// meeting.failed event with reason code CONNECTION_LOST
public const int FLAG_RECORDING_REASON_MEETING_BOT_CONNECTION_LOST = 67108864;
// recording is corrupted.
public const int FLAG_RECORDING_REASON_MEDIA_FILE_UNSUPPORTED_MIME_TYPE = 134217728;
// meeting ended in lobby
public const int FLAG_RECORDING_REASON_MEETING_ENDED_IN_LOBBY = 268435456;
// meeting not started
public const int FLAG_RECORDING_REASON_REASON_MEETING_NOT_STARTED = 536870912;
// unfinished zoom custom disclaimer
public const int FLAG_RECORDING_REASON_FEATURE_RULE_NOT_FOUND_ERROR = 1073741824;
// recording download failed - server error
public const int FLAG_RECORDING_REASON_SERVER_ERROR = 2147483648;
// recording download failed - client code 404
public const int FLAG_RECORDING_REASON_NOT_FOUND = 2147483649;
// recording download failed - client code 401, 403
public const int FLAG_RECORDING_REASON_ACCESS_DENIED = 2147483650;
// recording download failed - client code 429
public const int FLAG_RECORDING_REASON_TOO_MANY_REQUESTS = 2147483651;
// recording download failed - unknown client error
public const int FLAG_RECORDING_REASON_CLIENT_ERROR = 2147483652;
// recording download failed - unknown error
public const int FLAG_RECORDING_REASON_UNKNOWN_ERROR = 2147483653;
// It has been setup ahead of time through calendar
public const string STATUS_SCHEDULED = 'scheduled';
// It is awaiting audio.
public const string STATUS_PENDING = 'pending';
// Participant(s) dialed in, awaiting organizer.
public const string STATUS_RINGING = 'ringing';
// Call is in progress.
public const string STATUS_IN_PROGRESS = 'in-progress';
// It has ended.
public const string STATUS_COMPLETED = 'completed';
// Cancelled prior to starting.
public const string STATUS_CANCELLED = 'canceled';
public const string STATUS_DUPLICATED = 'duplicated'; // duplicated conference
public const string STATUS_STARTING_SOON = 'starting-soon';
public const string STATUS_BOT_CREATE_SENT = 'bot-create-sent';
public const string STATUS_BOT_INSTANCE_WORKER_ASSIGNED = 'worker-assigned';
public const string STATUS_BOT_INSTANCE_STARTED = 'bot-started';
// When bot instance is waiting in lobby
public const string STATUS_BOT_INSTANCE_WAITING_LOBBY = 'bot-waiting';
public const string STATUS_BUSY = 'busy';
public const string STATUS_NO_ANSWER = 'no-answer';
public const string STATUS_FAILED = 'failed'; // Used by SMS too
// SMS related
public const string STATUS_ACCEPTED = 'accepted';
public const string STATUS_QUEUED = 'queued';
public const string STATUS_SENDING = 'sending';
public const string STATUS_SENT = 'sent';
public const string STATUS_DELIVERED = 'delivered';
public const string STATUS_UNDELIVERED = 'undelivered';
public const string STATUS_RECEIVING = 'receiving';
public const string STATUS_RECEIVED = 'received';
public const string STATUS_RESENT = 'resent';
public const array SMS_STATUSES = [
Activity::STATUS_RECEIVED,
Activity::STATUS_SENT,
Activity::STATUS_DELIVERED,
];
public const array SOFT_PHONE_CONFERENCE_STATUSES = [
Activity::STATUS_IN_PROGRESS,
Activity::STATUS_COMPLETED,
];
// @todo refactor prefix from `TYPE_` to `CHANNEL_`
public const string TYPE_SOFTPHONE = 'softphone';
public const string TYPE_SOFTPHONE_INBOUND = 'softphone-inbound';
public const string TYPE_CONFERENCE = 'conference';
public const string TYPE_SMS_INBOUND = 'sms-inbound';
public const string TYPE_SMS_OUTBOUND = 'sms-outbound';
public const string TYPE_EMAIL_INBOUND = 'email-inbound';
public const string TYPE_EMAIL_OUTBOUND = 'email-outbound';
public const array CHANNELS = [
self::TYPE_SOFTPHONE,
self::TYPE_SOFTPHONE_INBOUND,
self::TYPE_CONFERENCE,
self::TYPE_SMS_INBOUND,
self::TYPE_SMS_OUTBOUND,
self::TYPE_EMAIL_INBOUND,
self::TYPE_EMAIL_OUTBOUND,
];
public const array PLAYABLE_CHANNELS = [
self::TYPE_SOFTPHONE,
self::TYPE_SOFTPHONE_INBOUND,
self::TYPE_CONFERENCE,
];
// Recording States
public const string RECORDING_OFF = 'off'; // Default state
public const string RECORDING_IN_PROGRESS = 'in-progress';
public const string RECORDING_PAUSED = 'paused';
public const string RECORDING_STOPPED = 'stopped'; // To never be resumed.
public const string RECORDING_RECORDED = 'recorded'; // At least some portion of it was recorded.
public const string RECORDING_FAILED = 'failed'; // Recording was attempted but failed for some reason.
// Live Stream States
public const int ON_AIR_DEFAULT = 0;
public const int ON_AIR_READY = 1;
public const int ON_AIR_PREPARING = 2;
public const int ON_AIR_STREAMING = 3;
public const int ON_AIR_FINISHED = 4;
public const int ON_AIR_NOT_STREAMED = 5;
public const int ON_AIR_ERROR = -1;
public const string SOURCE_GONG = 'gong';
public const string SOURCE_CHORUS = 'chorus';
public const string SOURCE_OUTLOOK = 'outlook';
public const string SOURCE_GOOGLE = 'google';
// Activity Providers
public const string PROVIDER_TWILIO = 'twilio'; // XXX: This is run via the Jiminny Provider.
public const string PROVIDER_OUTREACH = 'outreach';
public const string PROVIDER_ZOOM_BOT = 'zoom-bot';
public const string PROVIDER_SALESLOFT = 'salesloft';
public const string PROVIDER_GOOGLE = 'google';
public const string PROVIDER_AIRCALL = 'aircall';
public const string PROVIDER_JUSTCALL = 'justcall';
public const string PROVIDER_GOOGLE_MEET = 'google-meet';
public const string PROVIDER_GONG = 'gong';
public const string PROVIDER_HUBSPOT = 'hubspot';
public const string PROVIDER_CLOSE = 'close';
public const string PROVIDER_TEAMS = 'ms-teams';
public const string PROVIDER_SALESFORCE = 'salesforce';
public const string PROVIDER_GROOVE = 'groove';
public const string PROVIDER_XANT = 'xant';
public const string PROVIDER_OFFICE = 'office';
public const string PROVIDER_NATTERBOX = 'natterbox';
public const string PROVIDER_RINGCENTRAL = 'ringcentral';
public const string PROVIDER_RINGCENTRAL_VIDEO = 'ringcentral-video';
public const string PROVIDER_GOTOMEETING = 'go-to-meeting';
public const string PROVIDER_DEMODESK = 'demo-desk';
public const string PROVIDER_DIALPAD = 'dialpad';
public const string PROVIDER_ZOOM_PHONE = 'zoom-phone';
public const string PROVIDER_CLOUDCALL = 'cloudcall';
public const string PROVIDER_CLOUDCALL_US = 'cloudcall-us';
public const string PROVIDER_EIGHT_BY_EIGHT = 'eight-by-eight'; // "8x8" UK
public const string PROVIDER_EIGHT_BY_EIGHT_CA = 'eight-by-eight-ca'; // "8x8" Canada
public const string PROVIDER_EIGHT_BY_EIGHT_AP = 'eight-by-eight-ap'; // "8x8" Australia
public const string PROVIDER_EIGHT_BY_EIGHT_US_EAST = 'eight-by-eight-use'; // "8x8" US East
public const string PROVIDER_EIGHT_BY_EIGHT_US_WEST = 'eight-by-eight-usw'; // "8x8" US West
public const string PROVIDER_CONNECT_AND_SELL = 'connect-and-sell';
public const string PROVIDER_CLOUD_TALK = 'cloud-talk';
public const string PROVIDER_AMAZON_CONNECT = 'amazon-connect';
public const string PROVIDER_VONAGE = 'vonage';
public const string PROVIDER_MIGRATOR = 'migrator';
public const string PROVIDER_UPLOADER = 'uploader';
public const string PROVIDER_TALKDESK = 'talkdesk';
public const string PROVIDER_TWILIO_FLEX = 'twilio-flex';
public const string PROVIDER_TWILIO_FLEX_DIRECT = 'twilio-flex-direct';
public const string PROVIDER_TWILIO_VIDEO = 'twilio-video';
public const string PROVIDER_AVAYA = 'avaya';
public const string PROVIDER_TELUS = 'telus';
public const string PROVIDER_FIVE_NINE = 'five-nine';
public const string PROVIDER_APOLLO = 'apollo';
public const string PROVIDER_ORUM = 'orum';
public const string PROVIDER_BLOOBIRDS = 'bloobirds';
/**
* @const API_PROVIDERS
* A list of integrations that import calls via API instead of webhooks
*/
public const array API_PROVIDERS = [
self::PROVIDER_OUTREACH,
self::PROVIDER_SALESLOFT,
self::PROVIDER_HUBSPOT,
self::PROVIDER_GROOVE,
self::PROVIDER_XANT,
self::PROVIDER_NATTERBOX,
self::PROVIDER_CLOUDCALL,
self::PROVIDER_CLOUDCALL_US,
self::PROVIDER_EIGHT_BY_EIGHT,
self::PROVIDER_EIGHT_BY_EIGHT_CA,
self::PROVIDER_EIGHT_BY_EIGHT_AP,
self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,
self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,
self::PROVIDER_CONNECT_AND_SELL,
self::PROVIDER_CLOUD_TALK,
self::PROVIDER_AMAZON_CONNECT,
self::PROVIDER_VONAGE,
self::PROVIDER_TALKDESK,
self::PROVIDER_TWILIO_VIDEO,
self::PROVIDER_TWILIO_FLEX,
self::PROVIDER_TWILIO_FLEX_DIRECT,
self::PROVIDER_FIVE_NINE,
self::PROVIDER_APOLLO,
self::PROVIDER_ORUM,
self::PROVIDER_BLOOBIRDS,
self::PROVIDER_RINGCENTRAL,
self::PROVIDER_AVAYA,
self::PROVIDER_TELUS,
];
public const array FINITE_STATES = [
self::TYPE_SOFTPHONE => [
self::STATUS_COMPLETED,
self::STATUS_FAILED,
self::STATUS_NO_ANSWER,
self::STATUS_BUSY,
],
self::TYPE_SOFTPHONE_INBOUND => [
self::STATUS_COMPLETED,
self::STATUS_FAILED,
self::STATUS_NO_ANSWER,
self::STATUS_BUSY,
],
self::TYPE_CONFERENCE => self::FINITE_STATES_CONFERENCE,
];
public const array FINITE_STATES_CONFERENCE = [
self::STATUS_COMPLETED,
self::STATUS_FAILED,
self::STATUS_CANCELLED,
];
public const array MEETING_BOT_JOIN_ATTEMPTED = [
self::STATUS_BOT_INSTANCE_WAITING_LOBBY,
self::STATUS_BOT_INSTANCE_STARTED,
];
public static array $enumStatuses = [
self::STATUS_SCHEDULED,
self::STATUS_PENDING,
self::STATUS_RINGING,
self::STATUS_IN_PROGRESS,
self::STATUS_COMPLETED,
self::STATUS_CANCELLED,
self::STATUS_BUSY,
self::STATUS_NO_ANSWER,
self::STATUS_FAILED,
self::STATUS_ACCEPTED,
self::STATUS_QUEUED,
self::STATUS_SENDING,
self::STATUS_SENT,
self::STATUS_RESENT,
self::STATUS_DELIVERED,
self::STATUS_UNDELIVERED,
self::STATUS_RECEIVING,
self::STATUS_RECEIVED,
self::STATUS_BOT_INSTANCE_WAITING_LOBBY,
self::STATUS_STARTING_SOON,
self::STATUS_BOT_INSTANCE_WORKER_ASSIGNED,
self::STATUS_BOT_INSTANCE_STARTED,
self::STATUS_DUPLICATED,
];
public static array $enumProviders = [
self::PROVIDER_TWILIO,
self::PROVIDER_OUTREACH,
self::PROVIDER_ZOOM_BOT,
self::PROVIDER_SALESLOFT,
self::PROVIDER_AIRCALL,
self::PROVIDER_JUSTCALL,
self::PROVIDER_GOOGLE_MEET,
self::PROVIDER_GONG,
self::PROVIDER_HUBSPOT,
self::PROVIDER_CLOSE,
self::PROVIDER_TEAMS,
self::PROVIDER_SALESFORCE,
self::PROVIDER_GROOVE,
self::PROVIDER_XANT,
self::PROVIDER_GOOGLE,
self::PROVIDER_OFFICE,
self::PROVIDER_NATTERBOX,
self::PROVIDER_RINGCENTRAL,
self::PROVIDER_RINGCENTRAL_VIDEO,
self::PROVIDER_GOTOMEETING,
self::PROVIDER_DEMODESK,
self::PROVIDER_DIALPAD,
self::PROVIDER_ZOOM_PHONE,
self::PROVIDER_CLOUDCALL,
self::PROVIDER_CLOUDCALL_US,
self::PROVIDER_EIGHT_BY_EIGHT,
self::PROVIDER_EIGHT_BY_EIGHT_CA,
self::PROVIDER_EIGHT_BY_EIGHT_AP,
self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,
self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,
self::PROVIDER_CONNECT_AND_SELL,
self::PROVIDER_CLOUD_TALK,
self::PROVIDER_AMAZON_CONNECT,
self::PROVIDER_VONAGE,
self::PROVIDER_TALKDESK,
self::PROVIDER_TWILIO_FLEX,
self::PROVIDER_TWILIO_FLEX_DIRECT,
self::PROVIDER_TWILIO_VIDEO,
self::PROVIDER_AVAYA,
self::PROVIDER_TELUS,
self::PROVIDER_FIVE_NINE,
self::PROVIDER_APOLLO,
self::PROVIDER_ORUM,
self::PROVIDER_BLOOBIRDS,
];
public static $enumRecordingStates = [
self::RECORDING_OFF, // Default state
self::RECORDING_IN_PROGRESS,
self::RECORDING_PAUSED,
self::RECORDING_STOPPED,
self::RECORDING_RECORDED,
self::RECORDING_FAILED,
];
// @Important:
// This collection is not used anywhere, and is fully duplicated by the Channels const.
// Validate if it is referred somehow via the enum trait, and if not, remove it entirely.
// An even better strategy will be to move all those constants to a dedicated class
protected array $enumTypes = [
self::TYPE_SOFTPHONE,
self::TYPE_SOFTPHONE_INBOUND,
self::TYPE_CONFERENCE,
self::TYPE_SMS_INBOUND,
self::TYPE_SMS_OUTBOUND,
self::TYPE_EMAIL_INBOUND,
self::TYPE_EMAIL_OUTBOUND,
];
protected static $enumFailedStatuses = [
self::STATUS_NO_ANSWER,
self::STATUS_FAILED,
self::STATUS_BUSY,
self::STATUS_CANCELLED,
];
protected $table = 'activities';
protected $fillable = [
// Type of activity.
'type', // @todo refactor to `channel`
// The activity type.
'playbook_category_id',
// User who hosts the activity.
'user_id',
// Related Lead record (if applicable)
'lead_id',
// Related Account record (if applicable)
'account_id',
// Related Contact record (if applicable)
'contact_id',
// Related Opportunity record (if applicable)
'opportunity_id',
// Stage of activity.
'stage_id',
// Value of opportunity.
'value',
// If the activity relates to a CRM task.
'crm_provider_id',
// If the activity was created through an external device.
'device_id',
// the activity's language code
'language',
// transcription id
'transcription_id',
// Duration of the call, with microseconds precision.
'duration',
// One of enumStatuses above.
'status',
// Have we reminded them to log the call?
'log_reminder_sent_at',
// If activity is private or inter-org, flagged here.
'is_internal',
// Managers and above can mark a call as private, to exclude it from other team members
'is_private',
'is_processed',
// Boolean for this activity being instant invite handled.
'is_instant_invite',
// If activity is in recording state, flagged here.
'recording_state',
// If activity recording is overidden from default.
'recording_preference',
// if recording did (not) happen, why that is
'recording_reason_code',
// Average score, updated during
'average_score',
// Summary that the organizer has taken after the call.
'summary',
// Subject of the activity, usually taken from calendar event.
'title',
// Description of the activity, usually taken from calendar event.
'description',
// Start time, usually taken from calendar event.
'scheduled_start_time',
// End time, usually taken from calendar event.
'scheduled_end_time',
// When the call actually started.
'actual_start_time',
// When the call actually ended.
'actual_end_time',
// SMS: Message reference
'telephony_provider_id',
// SMS: Participant who sent message
'from_participant_id',
// SMS: Participant who should receive the message
'to_participant_id',
// When an external guest joins an organizers meeting room and the organizer is not present,
// send them an SMS notification that someone has joined.
'organizer_notified_at',
// where was the activity imported from
'source',
// The id in the source system (e.g. the bot id in Recall.ai)
'external_id',
// The provider, by default it is twilio.
'provider',
// Meeting location url
'location',
// The snapshot for displaying a poster image.
'poster_path',
'crm_configuration_id',
// If there is an automated message that the conversation is being recorded
'has_recording_prompt',
// If the activity is being live-streamed
'on_air',
'calendar_event_id',
];
protected $appends = [
'id_string',
'organizer',
];
protected $hidden = [
'uuid',
];
protected $visible = [
'id_string',
'type',
'duration',
'average_score',
'status',
'log_reminder_sent_at',
'title',
'description',
'is_internal',
'scheduled_start_time',
'scheduled_end_time',
'actual_start_time',
'actual_end_time',
'user',
'category',
'account',
'contact',
'opportunity',
'lead',
'stage',
'stats',
'participants',
'playlists',
'tracks',
'comments',
'plays',
'coachingFeedbacks',
'shares',
'favorites',
'language',
'transcription',
'is_private',
'is_instant_invite',
'on_air',
'calendar_event_id',
];
protected function casts(): array
{
return [
'scheduled_start_time' => 'datetime',
'scheduled_end_time' => 'datetime',
'actual_start_time' => 'datetime',
'actual_end_time' => 'datetime',
'organizer_notified_at' => 'datetime',
'log_reminder_sent_at' => 'datetime',
'is_internal' => 'boolean',
'duration' => 'integer',
'average_score' => 'decimal:2',
'is_private' => 'boolean',
'is_processed' => 'boolean',
'is_instant_invite' => 'boolean',
'value' => 'decimal:2',
'recording_preference' => 'boolean',
'recording_reason_code' => 'integer',
'has_recording_prompt' => 'boolean',
'on_air' => 'integer',
];
}
protected static function boot()
{
parent::boot();
static::updated(static function (Activity $activity) {
// If activity is about to start (pending, ringing, in-progress) or event is scheduled in less than 1 week
if (in_array($activity->status, [Activity::STATUS_PENDING, Activity::STATUS_RINGING, Activity::STATUS_IN_PROGRESS], true) ||
($activity->scheduled_start_time && (int) $activity->scheduled_start_time->diffInWeeks(new Carbon(), true) < 1)) {
if ($activity->isDirty('status')) {
event(new StatusUpdated($activity));
}
if ($activity->isDirty('stage_id')) {
event(new StageUpdated($activity));
}
if ($activity->isDirty(['lead_id', 'account_id', 'contact_id'])) {
event(new ProspectUpdated($activity));
}
if ($activity->isDirty('opportunity_id')) {
event(new ActivityUpdated($activity, 'activity.opportunity-updated', Auth::user()));
}
if ($activity->isDirty('title')) {
event(new TitleUpdated($activity));
}
}
if ($activity->isDirty('playbook_category_id')) {
event(new ActivityTypeUpdated($activity));
}
});
static::deleted(static function (Activity $activity) {
// Hard delete associated playlistActivities
$activity->playlistActivities()->delete();
});
}
public function getOrganizerAttribute(): ?Participant
{
$participant = $this->participants()->where('user_id', $this->user_id)->first();
if (! $participant instanceof Participant && $participant !== null) {
throw new RuntimeException(sprintf('$participant must be an instance of "%s" or null', Participant::class));
}
return $participant;
}
public function getFormattedValueAttribute()
{
$currencyCode = 'USD';
if ($this->opportunity) {
$currencyCode = $this->opportunity->getCurrencyCode();
}
$formatter = new CurrencyFormatter();
$formatter->setTextAttribute(NumberFormatter::CURRENCY_CODE, $currencyCode);
$formatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 0);
return $formatter->format($this->value, $currencyCode);
}
public function getProspectNameAttribute(): ?string
{
$prospectName = null;
if ($this->lead_id) {
$prospectName = $this->lead->name;
} elseif ($this->contact_id) {
$prospectName = $this->contact->name;
} elseif ($this->account_id) {
$prospectName = $this->account->name;
}
return $prospectName;
}
public function getProspectName(): ?string
{
/** @var string|null */
return $this->getAttribute('prospect_name');
}
/**
* Get activity title depending on prospect or title
*/
public function getActivityTitleAttribute(): ?string
{
$activityTitle = null;
if ($this->prospect && $this->prospect->getName()) {
if ($this->account_id) {
$activityTitle = $this->account->name;
} elseif ($this->lead_id) {
$activityTitle = $this->lead->company;
} elseif ($this->contact_id) {
$activityTitle = $this->contact->account ? $this->contact->account->name : $this->contact->name;
}
} elseif ($this->title) {
$activityTitle = $this->title;
}
return $activityTitle;
}
public function wasRecentlyCreated(): bool
{
return $this->wasRecentlyCreated;
}
public function getProspectTypeAttribute()
{
$prospectType = null;
if ($this->lead_id) {
$prospectType = 'Lead';
} elseif ($this->contact_id) {
$prospectType = 'Contact';
} elseif ($this->account_id) {
$prospectType = 'Account';
}
return $prospectType;
}
/**
* Return the best match for prospect. Results are in the following order of priority:
* 1. Lead
* 2. Contact
* 3. Account
* 4. NULL
*/
public function getProspectAttribute(): ?ProspectInterface
{
if ($this->hasLead()) {
return $this->getLead();
}
if ($this->hasContact()) {
return $this->getContact();
}
if ($this->hasAccount()) {
return $this->getAccount();
}
return null;
}
public function getTitleAttribute($value): ?string
{
return \getActivityTitleAttribute(
$this->user->name,
$this->getType(),
$value,
$this->prospect->name ?? null,
$this->from->national_phone_number ?? null
);
}
public function getTitle(): ?string
{
return $this->getAttribute('title');
}
public function getSummary(): ?string
{
return $this->getAttribute('summary');
}
public function isInternal(): bool
{
return $this->getAttribute('is_internal');
}
public function getIsPrivate(): bool
{
return $this->getAttribute('is_private');
}
public function getDescription(): ?string
{
return $this->getAttribute('description');
}
public function hasTitle(): bool
{
return $this->getOriginal('title') !== null;
}
public function getPlayCountAttribute()
{
return $this->getPlaysCountAttribute();
}
public function getPlaysCountAttribute()
{
if (! isset($this->attributes['plays_count'])) {
$this->loadCount('plays');
}
return $this->attributes['plays_count'];
}
public function getCommentCountAttribute()
{
return $this->getCommentsCountAttribute();
}
public function getCommentsCountAttribute()
{
if (! isset($this->attributes['comments_count'])) {
$this->loadCount('comments');
}
return $this->attributes['comments_count'];
}
public function getVisibleCommentsCountAttribute()
{
if (! isset($this->attributes['visible_comments_count'])) {
$activityCommentsService = app(ActivityCommentService::class);
$user = Auth::user() instanceof User ? Auth::user() : null;
$this->attributes['visible_comments_count'] = $activityCommentsService
->getVisibleCommentsCount($this, $user);
}
return $this->attributes['visible_comments_count'];
}
public function getShareCountAttribute()
{
return $this->getSharesCountAttribute();
}
public function getSharesCountAttribute()
{
if (! isset($this->attributes['shares_count'])) {
$this->loadCount('shares');
}
return $this->attributes['shares_count'];
}
/**
* Get the count of favorites playlists this activity appears in
*/
public function getFavoriteCountAttribute(): int
{
return $this->getFavoritesCountAttribute();
}
public function getFavoritesCountAttribute()
{
if (! isset($this->attributes['favorites_count'])) {
$this->loadCount('favorites');
}
return $this->attributes['favorites_count'];
}
public function getActiveParticipantsCountAttribute()
{
if (! isset($this->attributes['active_participants_count'])) {
$this->loadCount('activeParticipants');
}
return $this->attributes['active_participants_count'];
}
public function getTracksWithTelephonyCountAttribute()
{
if (! isset($this->attributes['tracks_with_telephony_count'])) {
$this->loadCount('tracksWithTelephony');
}
return $this->attributes['tracks_with_telephony_count'];
}
/**
* @TEMP
* $this->loadCount('tracksWithTelephony') throws null pointer exception
*/
public function countTracksWithTelephony(): int
{
return $this->tracks()->whereNotNull('telephony_provider_id')->count();
}
public function getDuration(): float
{
return $this->getAttribute('duration');
}
public function getDurationForHumansAttribute()
{
return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true);
}
public function getDurationForHumansShortAttribute(): string
{
return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true, true);
}
public function hasRec...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"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":"JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.10139628,"height":0.025538707},"help_text":"Git Branch: JY-20157-AJ-report-not-send-notification","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.8171542,"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":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.8324468,"top":0.019952115,"width":0.0831117,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.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 'AutomatedReportsCommandTest'","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":"4","depth":4,"bounds":{"left":0.70212764,"top":0.17478053,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"167","depth":4,"bounds":{"left":0.71210104,"top":0.17478053,"width":0.011635638,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.7257314,"top":0.17478053,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"102","depth":4,"bounds":{"left":0.7357048,"top":0.17478053,"width":0.011968086,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.7496675,"top":0.17478053,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.7593085,"top":0.17318435,"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.76662236,"top":0.17318435,"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\nnamespace Jiminny\\Models;\n\nuse Carbon\\Carbon;\nuse Database\\Factories\\ActivityFactory;\nuse DateTimeInterface;\nuse Exception;\nuse Illuminate\\Contracts\\Auth\\Authenticatable;\nuse Illuminate\\Database\\Eloquent;\nuse Illuminate\\Database\\Eloquent\\Attributes\\Scope;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsTo;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasMany;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasManyThrough;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasOne;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Auth;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ElasticSearch;\nuse Jiminny\\Component\\MeetingBot;\nuse Jiminny\\Component\\Model\\BitwiseFlagTrait;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Sidekick\\SidekickService;\nuse Jiminny\\Component\\Uuid\\UuidAwareInterface;\nuse Jiminny\\Component\\Workflow;\nuse Jiminny\\Contracts;\nuse Jiminny\\Contracts\\Crm\\ProspectInterface;\nuse Jiminny\\DTO\\ImportCall\\Call;\nuse Jiminny\\Events\\Activities\\ActivityTypeUpdated;\nuse Jiminny\\Events\\Activities\\ActivityUpdated;\nuse Jiminny\\Events\\Activities\\ProspectUpdated;\nuse Jiminny\\Events\\Activities\\StageUpdated;\nuse Jiminny\\Events\\Activities\\StatusUpdated;\nuse Jiminny\\Events\\Activities\\TitleUpdated;\nuse Jiminny\\Exceptions\\InvalidArgumentException as InvalidArgumentJiminnyException;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\RuntimeException;\nuse Jiminny\\Models;\nuse Jiminny\\Models\\Activity\\ActivitySummaryLog;\nuse Jiminny\\Models\\Activity\\ActivityUploadSetting;\nuse Jiminny\\Models\\Activity\\AvailabilityNotification;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Log;\nuse Jiminny\\Models\\Activity\\Message;\nuse Jiminny\\Models\\Activity\\Moment;\nuse Jiminny\\Models\\Activity\\Note;\nuse Jiminny\\Models\\Activity\\ParticipantSpeech;\nuse Jiminny\\Models\\Activity\\Play;\nuse Jiminny\\Models\\Activity\\Question;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\Activity\\Snapshot;\nuse Jiminny\\Models\\Activity\\Stats;\nuse Jiminny\\Models\\Activity\\SubscriptionSet;\nuse Jiminny\\Models\\Activity\\TopicTrigger;\nuse Jiminny\\Models\\Activity\\Transcription;\nuse Jiminny\\Models\\Calendar\\CalendarEvent;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\ElasticSearch\\ActivityElasticSearchTrait;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Participant\\Connection;\nuse Jiminny\\Models\\Playlist\\Activity as PlaylistActivity;\nuse Jiminny\\Services\\Activity\\ActivityProviderRegistry;\nuse Jiminny\\Services\\Activity\\Import\\DataResolvers\\UpdateCrmDataByStrategy;\nuse Jiminny\\Services\\Activity\\Import\\DataResolvers\\UpdateCrmDataResolverFactory;\nuse Jiminny\\Services\\Activity\\Import\\DataResolvers\\UpdateCrmDataResolverInterface;\nuse Jiminny\\Traits\\Enums;\nuse Jiminny\\Traits\\RequiresUUID;\nuse Jiminny\\Utils\\CurrencyFormatter;\nuse NumberFormatter;\n\nuse function in_array;\n\n/**\n * Jiminny\\Models\\Activity\n *\n * @property null|int $auto_score filled from ES hydrator, not in DB!\n * @property-read Account|null $account\n * @property-read CalendarEvent|null $calendarEvent\n * @property-read Contact|null $contact\n * @property-read Lead|null $lead\n * @property-read Opportunity|null $opportunity\n * @property-read Stage|null $stage\n * @property int $id\n * @property mixed|null $uuid\n * @property string|null $source\n * @property string|null $external_id\n * @property string $provider\n * @property string|null $location\n * @property string|null $telephony_provider_id\n * @property int|null $from_participant_id\n * @property int|null $to_participant_id\n * @property int|null $device_id\n * @property string|null $type\n * @property int|null $playbook_category_id\n * @property int $user_id\n * @property int|null $lead_id\n * @property int|null $account_id\n * @property int|null $contact_id\n * @property int|null $opportunity_id\n * @property int|null $stage_id\n * @property string|null $value\n * @property int|null $crm_configuration_id\n * @property string|null $crm_provider_id\n * @property string|null $language\n * @property int|null $transcription_id\n * @property int $duration\n * @property string $status\n * @property int|null $on_air\n * @property int|null $calendar_event_id\n * @property string $recording_state\n * @property bool|null $recording_preference\n * @property int $recording_reason_code\n * @property int $summary_reminder_sent\n * @property \\Illuminate\\Support\\Carbon|null $log_reminder_sent_at\n * @property \\Illuminate\\Support\\Carbon|null $organizer_notified_at\n * @property bool|null $has_recording_prompt\n * @property bool $is_internal\n * @property int $is_locked\n * @property int $is_recording\n * @property bool|null $is_processed\n * @property bool $is_private\n * @property bool $is_instant_invite\n * @property string|null $poster_path\n * @property string|null $summary\n * @property string|null $title\n * @property string|null $description\n * @property \\Illuminate\\Support\\Carbon|null $scheduled_start_time\n * @property \\Illuminate\\Support\\Carbon|null $scheduled_end_time\n * @property \\Illuminate\\Support\\Carbon|null $actual_start_time\n * @property \\Illuminate\\Support\\Carbon|null $actual_end_time\n * @property int|null $uploaded_by\n * @property \\Illuminate\\Support\\Carbon|null $deleted_at\n * @property \\Illuminate\\Support\\Carbon|null $created_at\n * @property \\Illuminate\\Support\\Carbon|null $updated_at\n * @property string|null $average_score\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant> $activeParticipants\n * @property-read int|null $active_participants_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Scorecard\\ActivityScorecardRuleTrigger> $activityScorecardRuleTriggers\n * @property-read int|null $activity_scorecard_rule_triggers_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Scorecard\\ActivityScorecardRule> $activityScorecardRules\n * @property-read int|null $activity_scorecard_rules_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, AvailabilityNotification> $availabilityNotifications\n * @property-read int|null $availability_notifications_count\n * @property-read \\Jiminny\\Models\\PlaybookCategory|null $category\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, CoachRequest> $coachRequests\n * @property-read int|null $coach_requests_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\CoachingFeedback> $coachingFeedbacks\n * @property-read int|null $coaching_feedbacks_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Message> $coachingMessages\n * @property-read int|null $coaching_messages_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Comment> $comments\n * @property-read int|null $comments_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Connection> $connections\n * @property-read int|null $connections_count\n * @property-read Configuration|null $crm\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, FieldData> $data\n * @property-read int|null $data_count\n * @property-read \\Jiminny\\Models\\Device|null $device\n * @property-read \\Kalnoy\\Nestedset\\Collection<int, \\Jiminny\\Models\\Playlist> $favoritePlaylists\n * @property-read int|null $favorite_playlists_count\n * @property-read \\Jiminny\\Models\\Participant|null $from\n * @property-read string|null $activity_title\n * @property-read mixed $comment_count\n * @property-read mixed $duration_for_humans\n * @property-read string $duration_for_humans_short\n * @property-read int $favorite_count\n * @property-read mixed $favorites_count\n * @property-read mixed $formatted_value\n * @property-read string $id_string\n * @property-read \\Jiminny\\Models\\Participant|null $organizer\n * @property-read mixed $play_count\n * @property-read int|null $plays_count\n * @property-read ?ProspectInterface $prospect\n * @property-read string|null $prospect_name\n * @property-read mixed $prospect_type\n * @property-read mixed $share_count\n * @property-read int|null $shares_count\n * @property-read int|null $tracks_with_telephony_count\n * @property-read int|null $visible_comments_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\CoachingFeedback> $latestCoachingFeedbacks\n * @property-read int|null $latest_coaching_feedbacks_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Log> $logs\n * @property-read int|null $logs_count\n * @property-read \\Jiminny\\Models\\Track|null $masterTrack\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Message> $messages\n * @property-read int|null $messages_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Moment> $moments\n * @property-read int|null $moments_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Note> $notes\n * @property-read int|null $notes_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant\\Share> $participantShares\n * @property-read int|null $participant_shares_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, ParticipantSpeech> $participantSpeeches\n * @property-read int|null $participant_speeches_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant\\ParticipantStats> $participantStats\n * @property-read int|null $participant_stats_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant> $participants\n * @property-read int|null $participants_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, PlaylistActivity> $playlistActivities\n * @property-read int|null $playlist_activities_count\n * @property-read \\Kalnoy\\Nestedset\\Collection<int, \\Jiminny\\Models\\Playlist> $playlists\n * @property-read int|null $playlists_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Play> $plays\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Question> $questions\n * @property-read int|null $questions_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Session> $sessions\n * @property-read int|null $sessions_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Share> $shares\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Snapshot> $snapshots\n * @property-read int|null $snapshots_count\n * @property-read Stats|null $stats\n * @property-read \\Jiminny\\Models\\Participant|null $to\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, TopicTrigger> $topicTriggers\n * @property-read int|null $topic_triggers_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Track> $tracks\n * @property-read int|null $tracks_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Track> $tracksWithTelephony\n * @property-read Transcription|null $transcription\n * @property-read \\Jiminny\\Models\\User $user\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Comment> $visibleComments\n *\n * @method static \\Illuminate\\Database\\Eloquent\\Collection<int, static> all($columns = ['*'])\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity chunkByIdDesc($count, callable $callback, $column = null, $alias = null)\n * @method static \\Database\\Factories\\ActivityFactory factory(...$parameters)\n * @method static \\Illuminate\\Database\\Eloquent\\Collection<int, static> get($columns = ['*'])\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity heldBetween(\\Carbon\\Carbon $start, \\Carbon\\Carbon $end)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity idOrUuId($idOrUuid, bool $first = true)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity newModelQuery()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity newQuery()\n * @method static Builder|Activity onlyTrashed()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity query()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity scheduledBetween(\\Carbon\\Carbon $start, \\Carbon\\Carbon $end)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity inOpenDeals()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity notInOpenDeals()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity forTeam(int $teamId)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity search(callable $searchQuery, $key = null, $sortByResults = true)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity uuid(string $uuid, bool $first = true)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereAccountId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereActualEndTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereActualStartTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereAverageScore($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCalendarEventId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereContactId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCreatedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCrmConfigurationId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCrmProviderId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDeletedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDescription($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDeviceId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDuration($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereFromParticipantId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereHasRecordingPrompt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsInstantInvite($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsInternal($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsLocked($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsPrivate($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsProcessed($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsRecording($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLanguage($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLeadId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLocation($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLogReminderSentAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereOnAir($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereOpportunityId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereOrganizerNotifiedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity wherePlaybookCategoryId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity wherePosterPath($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereProvider($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereRecordingPreference($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereRecordingReasonCode($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereRecordingState($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereScheduledEndTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereScheduledStartTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereSource($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereExternalId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereStageId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereStatus($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereSummary($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereSummaryReminderSent($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereTelephonyProviderId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereTitle($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereToParticipantId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereTranscriptionId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereType($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUpdatedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUploadedBy($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUserId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUuid($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereValue($value)\n * @method static Builder|Activity withTrashed()\n * @method static Builder|Activity withoutTrashed()\n *\n * @mixin \\Eloquent\n */\nclass Activity extends Model implements\n ElasticSearch\\Contract\\Searchable,\n Workflow\\Workflow\\WorkflowAwareInterface,\n Models\\Contracts\\ActivityContract,\n Contracts\\Model\\ActivityInterface,\n UuidAwareInterface\n{\n use HasFactory;\n\n use Enums;\n use SoftDeletes;\n use RequiresUUID;\n use BitwiseFlagTrait;\n use ElasticSearch\\Model\\Searchable;\n use ActivityElasticSearchTrait;\n\n use Workflow\\Workflow\\WorkflowAware {\n transitionTo as traitTransitionTo;\n }\n\n public const int FLAG_RECORDING_REASON_DEFAULT = 0;\n\n // Recording Prompted but never started\n public const int FLAG_RECORDING_REASON_COMPLIANCE_PROMPT = 1;\n public const int FLAG_RECORDING_REASON_COMPLIANCE_RESUMED = 2;\n public const int FLAG_RECORDING_REASON_NO_AUDIO = 3;\n\n // Recording Disabled by Organization\n public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT = 4;\n\n // Recording was restricted to one-side recordings only\n public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT_ONE_SIDE = 8;\n\n // Recording was not started because it was internal and team setting disabled that.\n public const int FLAG_RECORDING_REASON_TEAM_INTERNAL_DISABLED = 16;\n\n // Recording was not started because it was internal and user setting disabled that.\n public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED = 32;\n\n // Recording was not started because user setting disabled automatic recording.\n public const int FLAG_RECORDING_REASON_USER_AUTOMATIC_DISABLED = 64;\n\n // Recording was not started because team setting disabled automatic recording.\n public const int FLAG_RECORDING_REASON_TEAM_AUTOMATIC_DISABLED = 128;\n\n // Recording was not started because user has overriden default.\n public const int FLAG_RECORDING_REASON_PREFERENCE_OVERRIDE = 256;\n\n // Recording was not started because they don't want internal, and this meeting was not scheduled/imported in time.\n public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED_UNSCHEDULED = 512;\n\n // Recording was not started because their team setting does excludes the meeting type.\n public const int FLAG_RECORDING_REASON_UNSUPPORTED_TYPE = 1024;\n\n // Recording was not started because the external provider disabled it (or recording is missing etc).\n public const int FLAG_RECORDING_REASON_EXTERNALLY_DISABLED = 2048;\n\n // Recording was stopped externally (\"exit-meeting\" Pusher event)\n public const int FLAG_RECORDING_REASON_STOPPED_EXTERNALLY = 384;\n\n // Recording couldn't be started due to Zoom hosting conflict error\n public const int FLAG_RECORDING_REASON_HOSTING_CONFLICT = 448;\n\n // meeting.failed event with reason code BOT_DENIED_FROM_LOBBY\n public const int FLAG_RECORDING_REASON_MEETING_BOT_DENIED_FROM_LOBBY = 4096;\n\n // meeting.failed event with reason code LOBBY_TIMEOUT\n public const int FLAG_RECORDING_REASON_MEETING_BOT_LOBBY_TIMEOUT = 8192;\n\n // meeting.failed event with reason code BOT_KICKED\n public const int FLAG_RECORDING_REASON_MEETING_BOT_KICKED = 16384;\n\n // meeting.failed event with reason code UNKNOWN\n public const int FLAG_RECORDING_REASON_MEETING_BOT_UNKNOWN = 32768;\n\n public const int FLAG_RECORDING_REASON_CONSENT_DENIED = 65536;\n\n // Invalid meeting (e.g. URL is invalid, or the meeting is not found)\n public const int FLAG_RECORDING_REASON_MEETING_BOT_INVALID = 131072;\n\n // The host stopped the recording.\n public const int FLAG_RECORDING_REASON_USER_STOPPED = 262144;\n\n // Recording was not started because an alternative vendor disabled it (or overrode it).\n public const int FLAG_RECORDING_REASON_VENDOR_OVERRIDE = 1048576;\n\n // Login required meeting.failed code\n public const int FLAG_RECORDING_REASON_LOGIN_REQUIRED = 524288;\n\n // Password for meeting was not provided - meeting.failed code\n public const int FLAG_RECORDING_REASON_MEETING_PASSWORD_NOT_PROVIDED = 2097152;\n\n // meeting.failed - when the meeting is locked\n public const int FLAG_RECORDING_REASON_MEETING_IS_LOCKED = 4194304;\n\n // max recording duration reached\n public const int FLAG_RECORDING_REASON_MAX_DURATION_REACHED = 8388608;\n\n // recording size is too small\n public const int FLAG_RECORDING_REASON_EMPTY_RECORDING = 16777216;\n\n // meeting.failed - when bot is redirected to sign in page multiple times\n public const int FLAG_RECORDING_REASON_MAX_RESTART_COUNT_IS_REACHED = 33554432;\n\n // meeting.failed event with reason code CONNECTION_LOST\n public const int FLAG_RECORDING_REASON_MEETING_BOT_CONNECTION_LOST = 67108864;\n\n // recording is corrupted.\n public const int FLAG_RECORDING_REASON_MEDIA_FILE_UNSUPPORTED_MIME_TYPE = 134217728;\n\n // meeting ended in lobby\n public const int FLAG_RECORDING_REASON_MEETING_ENDED_IN_LOBBY = 268435456;\n\n // meeting not started\n public const int FLAG_RECORDING_REASON_REASON_MEETING_NOT_STARTED = 536870912;\n\n // unfinished zoom custom disclaimer\n public const int FLAG_RECORDING_REASON_FEATURE_RULE_NOT_FOUND_ERROR = 1073741824;\n\n // recording download failed - server error\n public const int FLAG_RECORDING_REASON_SERVER_ERROR = 2147483648;\n\n // recording download failed - client code 404\n public const int FLAG_RECORDING_REASON_NOT_FOUND = 2147483649;\n\n // recording download failed - client code 401, 403\n public const int FLAG_RECORDING_REASON_ACCESS_DENIED = 2147483650;\n\n // recording download failed - client code 429\n public const int FLAG_RECORDING_REASON_TOO_MANY_REQUESTS = 2147483651;\n\n // recording download failed - unknown client error\n public const int FLAG_RECORDING_REASON_CLIENT_ERROR = 2147483652;\n\n // recording download failed - unknown error\n public const int FLAG_RECORDING_REASON_UNKNOWN_ERROR = 2147483653;\n\n // It has been setup ahead of time through calendar\n public const string STATUS_SCHEDULED = 'scheduled';\n\n // It is awaiting audio.\n public const string STATUS_PENDING = 'pending';\n\n // Participant(s) dialed in, awaiting organizer.\n public const string STATUS_RINGING = 'ringing';\n\n // Call is in progress.\n public const string STATUS_IN_PROGRESS = 'in-progress';\n\n // It has ended.\n public const string STATUS_COMPLETED = 'completed';\n\n // Cancelled prior to starting.\n public const string STATUS_CANCELLED = 'canceled';\n\n public const string STATUS_DUPLICATED = 'duplicated'; // duplicated conference\n\n public const string STATUS_STARTING_SOON = 'starting-soon';\n\n public const string STATUS_BOT_CREATE_SENT = 'bot-create-sent';\n\n public const string STATUS_BOT_INSTANCE_WORKER_ASSIGNED = 'worker-assigned';\n\n public const string STATUS_BOT_INSTANCE_STARTED = 'bot-started';\n\n // When bot instance is waiting in lobby\n public const string STATUS_BOT_INSTANCE_WAITING_LOBBY = 'bot-waiting';\n\n public const string STATUS_BUSY = 'busy';\n public const string STATUS_NO_ANSWER = 'no-answer';\n public const string STATUS_FAILED = 'failed'; // Used by SMS too\n\n // SMS related\n public const string STATUS_ACCEPTED = 'accepted';\n public const string STATUS_QUEUED = 'queued';\n public const string STATUS_SENDING = 'sending';\n public const string STATUS_SENT = 'sent';\n public const string STATUS_DELIVERED = 'delivered';\n public const string STATUS_UNDELIVERED = 'undelivered';\n public const string STATUS_RECEIVING = 'receiving';\n public const string STATUS_RECEIVED = 'received';\n public const string STATUS_RESENT = 'resent';\n\n public const array SMS_STATUSES = [\n Activity::STATUS_RECEIVED,\n Activity::STATUS_SENT,\n Activity::STATUS_DELIVERED,\n ];\n\n public const array SOFT_PHONE_CONFERENCE_STATUSES = [\n Activity::STATUS_IN_PROGRESS,\n Activity::STATUS_COMPLETED,\n ];\n\n // @todo refactor prefix from `TYPE_` to `CHANNEL_`\n public const string TYPE_SOFTPHONE = 'softphone';\n public const string TYPE_SOFTPHONE_INBOUND = 'softphone-inbound';\n public const string TYPE_CONFERENCE = 'conference';\n public const string TYPE_SMS_INBOUND = 'sms-inbound';\n public const string TYPE_SMS_OUTBOUND = 'sms-outbound';\n public const string TYPE_EMAIL_INBOUND = 'email-inbound';\n public const string TYPE_EMAIL_OUTBOUND = 'email-outbound';\n\n public const array CHANNELS = [\n self::TYPE_SOFTPHONE,\n self::TYPE_SOFTPHONE_INBOUND,\n self::TYPE_CONFERENCE,\n self::TYPE_SMS_INBOUND,\n self::TYPE_SMS_OUTBOUND,\n self::TYPE_EMAIL_INBOUND,\n self::TYPE_EMAIL_OUTBOUND,\n ];\n\n public const array PLAYABLE_CHANNELS = [\n self::TYPE_SOFTPHONE,\n self::TYPE_SOFTPHONE_INBOUND,\n self::TYPE_CONFERENCE,\n ];\n\n // Recording States\n public const string RECORDING_OFF = 'off'; // Default state\n public const string RECORDING_IN_PROGRESS = 'in-progress';\n public const string RECORDING_PAUSED = 'paused';\n public const string RECORDING_STOPPED = 'stopped'; // To never be resumed.\n public const string RECORDING_RECORDED = 'recorded'; // At least some portion of it was recorded.\n public const string RECORDING_FAILED = 'failed'; // Recording was attempted but failed for some reason.\n\n // Live Stream States\n public const int ON_AIR_DEFAULT = 0;\n public const int ON_AIR_READY = 1;\n public const int ON_AIR_PREPARING = 2;\n public const int ON_AIR_STREAMING = 3;\n public const int ON_AIR_FINISHED = 4;\n public const int ON_AIR_NOT_STREAMED = 5;\n public const int ON_AIR_ERROR = -1;\n\n public const string SOURCE_GONG = 'gong';\n public const string SOURCE_CHORUS = 'chorus';\n public const string SOURCE_OUTLOOK = 'outlook';\n public const string SOURCE_GOOGLE = 'google';\n\n // Activity Providers\n public const string PROVIDER_TWILIO = 'twilio'; // XXX: This is run via the Jiminny Provider.\n public const string PROVIDER_OUTREACH = 'outreach';\n public const string PROVIDER_ZOOM_BOT = 'zoom-bot';\n public const string PROVIDER_SALESLOFT = 'salesloft';\n public const string PROVIDER_GOOGLE = 'google';\n public const string PROVIDER_AIRCALL = 'aircall';\n public const string PROVIDER_JUSTCALL = 'justcall';\n public const string PROVIDER_GOOGLE_MEET = 'google-meet';\n public const string PROVIDER_GONG = 'gong';\n public const string PROVIDER_HUBSPOT = 'hubspot';\n public const string PROVIDER_CLOSE = 'close';\n public const string PROVIDER_TEAMS = 'ms-teams';\n public const string PROVIDER_SALESFORCE = 'salesforce';\n public const string PROVIDER_GROOVE = 'groove';\n public const string PROVIDER_XANT = 'xant';\n public const string PROVIDER_OFFICE = 'office';\n public const string PROVIDER_NATTERBOX = 'natterbox';\n public const string PROVIDER_RINGCENTRAL = 'ringcentral';\n public const string PROVIDER_RINGCENTRAL_VIDEO = 'ringcentral-video';\n public const string PROVIDER_GOTOMEETING = 'go-to-meeting';\n public const string PROVIDER_DEMODESK = 'demo-desk';\n public const string PROVIDER_DIALPAD = 'dialpad';\n public const string PROVIDER_ZOOM_PHONE = 'zoom-phone';\n public const string PROVIDER_CLOUDCALL = 'cloudcall';\n public const string PROVIDER_CLOUDCALL_US = 'cloudcall-us';\n public const string PROVIDER_EIGHT_BY_EIGHT = 'eight-by-eight'; // \"8x8\" UK\n public const string PROVIDER_EIGHT_BY_EIGHT_CA = 'eight-by-eight-ca'; // \"8x8\" Canada\n public const string PROVIDER_EIGHT_BY_EIGHT_AP = 'eight-by-eight-ap'; // \"8x8\" Australia\n public const string PROVIDER_EIGHT_BY_EIGHT_US_EAST = 'eight-by-eight-use'; // \"8x8\" US East\n public const string PROVIDER_EIGHT_BY_EIGHT_US_WEST = 'eight-by-eight-usw'; // \"8x8\" US West\n public const string PROVIDER_CONNECT_AND_SELL = 'connect-and-sell';\n public const string PROVIDER_CLOUD_TALK = 'cloud-talk';\n public const string PROVIDER_AMAZON_CONNECT = 'amazon-connect';\n public const string PROVIDER_VONAGE = 'vonage';\n public const string PROVIDER_MIGRATOR = 'migrator';\n public const string PROVIDER_UPLOADER = 'uploader';\n public const string PROVIDER_TALKDESK = 'talkdesk';\n public const string PROVIDER_TWILIO_FLEX = 'twilio-flex';\n public const string PROVIDER_TWILIO_FLEX_DIRECT = 'twilio-flex-direct';\n public const string PROVIDER_TWILIO_VIDEO = 'twilio-video';\n public const string PROVIDER_AVAYA = 'avaya';\n public const string PROVIDER_TELUS = 'telus';\n public const string PROVIDER_FIVE_NINE = 'five-nine';\n public const string PROVIDER_APOLLO = 'apollo';\n public const string PROVIDER_ORUM = 'orum';\n public const string PROVIDER_BLOOBIRDS = 'bloobirds';\n\n /**\n * @const API_PROVIDERS\n * A list of integrations that import calls via API instead of webhooks\n */\n public const array API_PROVIDERS = [\n self::PROVIDER_OUTREACH,\n self::PROVIDER_SALESLOFT,\n self::PROVIDER_HUBSPOT,\n self::PROVIDER_GROOVE,\n self::PROVIDER_XANT,\n self::PROVIDER_NATTERBOX,\n self::PROVIDER_CLOUDCALL,\n self::PROVIDER_CLOUDCALL_US,\n self::PROVIDER_EIGHT_BY_EIGHT,\n self::PROVIDER_EIGHT_BY_EIGHT_CA,\n self::PROVIDER_EIGHT_BY_EIGHT_AP,\n self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,\n self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,\n self::PROVIDER_CONNECT_AND_SELL,\n self::PROVIDER_CLOUD_TALK,\n self::PROVIDER_AMAZON_CONNECT,\n self::PROVIDER_VONAGE,\n self::PROVIDER_TALKDESK,\n self::PROVIDER_TWILIO_VIDEO,\n self::PROVIDER_TWILIO_FLEX,\n self::PROVIDER_TWILIO_FLEX_DIRECT,\n self::PROVIDER_FIVE_NINE,\n self::PROVIDER_APOLLO,\n self::PROVIDER_ORUM,\n self::PROVIDER_BLOOBIRDS,\n self::PROVIDER_RINGCENTRAL,\n self::PROVIDER_AVAYA,\n self::PROVIDER_TELUS,\n ];\n\n public const array FINITE_STATES = [\n self::TYPE_SOFTPHONE => [\n self::STATUS_COMPLETED,\n self::STATUS_FAILED,\n self::STATUS_NO_ANSWER,\n self::STATUS_BUSY,\n ],\n self::TYPE_SOFTPHONE_INBOUND => [\n self::STATUS_COMPLETED,\n self::STATUS_FAILED,\n self::STATUS_NO_ANSWER,\n self::STATUS_BUSY,\n ],\n self::TYPE_CONFERENCE => self::FINITE_STATES_CONFERENCE,\n ];\n\n public const array FINITE_STATES_CONFERENCE = [\n self::STATUS_COMPLETED,\n self::STATUS_FAILED,\n self::STATUS_CANCELLED,\n ];\n\n public const array MEETING_BOT_JOIN_ATTEMPTED = [\n self::STATUS_BOT_INSTANCE_WAITING_LOBBY,\n self::STATUS_BOT_INSTANCE_STARTED,\n ];\n\n public static array $enumStatuses = [\n self::STATUS_SCHEDULED,\n self::STATUS_PENDING,\n self::STATUS_RINGING,\n self::STATUS_IN_PROGRESS,\n self::STATUS_COMPLETED,\n self::STATUS_CANCELLED,\n self::STATUS_BUSY,\n self::STATUS_NO_ANSWER,\n self::STATUS_FAILED,\n self::STATUS_ACCEPTED,\n self::STATUS_QUEUED,\n self::STATUS_SENDING,\n self::STATUS_SENT,\n self::STATUS_RESENT,\n self::STATUS_DELIVERED,\n self::STATUS_UNDELIVERED,\n self::STATUS_RECEIVING,\n self::STATUS_RECEIVED,\n self::STATUS_BOT_INSTANCE_WAITING_LOBBY,\n self::STATUS_STARTING_SOON,\n self::STATUS_BOT_INSTANCE_WORKER_ASSIGNED,\n self::STATUS_BOT_INSTANCE_STARTED,\n self::STATUS_DUPLICATED,\n ];\n\n public static array $enumProviders = [\n self::PROVIDER_TWILIO,\n self::PROVIDER_OUTREACH,\n self::PROVIDER_ZOOM_BOT,\n self::PROVIDER_SALESLOFT,\n self::PROVIDER_AIRCALL,\n self::PROVIDER_JUSTCALL,\n self::PROVIDER_GOOGLE_MEET,\n self::PROVIDER_GONG,\n self::PROVIDER_HUBSPOT,\n self::PROVIDER_CLOSE,\n self::PROVIDER_TEAMS,\n self::PROVIDER_SALESFORCE,\n self::PROVIDER_GROOVE,\n self::PROVIDER_XANT,\n self::PROVIDER_GOOGLE,\n self::PROVIDER_OFFICE,\n self::PROVIDER_NATTERBOX,\n self::PROVIDER_RINGCENTRAL,\n self::PROVIDER_RINGCENTRAL_VIDEO,\n self::PROVIDER_GOTOMEETING,\n self::PROVIDER_DEMODESK,\n self::PROVIDER_DIALPAD,\n self::PROVIDER_ZOOM_PHONE,\n self::PROVIDER_CLOUDCALL,\n self::PROVIDER_CLOUDCALL_US,\n self::PROVIDER_EIGHT_BY_EIGHT,\n self::PROVIDER_EIGHT_BY_EIGHT_CA,\n self::PROVIDER_EIGHT_BY_EIGHT_AP,\n self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,\n self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,\n self::PROVIDER_CONNECT_AND_SELL,\n self::PROVIDER_CLOUD_TALK,\n self::PROVIDER_AMAZON_CONNECT,\n self::PROVIDER_VONAGE,\n self::PROVIDER_TALKDESK,\n self::PROVIDER_TWILIO_FLEX,\n self::PROVIDER_TWILIO_FLEX_DIRECT,\n self::PROVIDER_TWILIO_VIDEO,\n self::PROVIDER_AVAYA,\n self::PROVIDER_TELUS,\n self::PROVIDER_FIVE_NINE,\n self::PROVIDER_APOLLO,\n self::PROVIDER_ORUM,\n self::PROVIDER_BLOOBIRDS,\n ];\n\n public static $enumRecordingStates = [\n self::RECORDING_OFF, // Default state\n self::RECORDING_IN_PROGRESS,\n self::RECORDING_PAUSED,\n self::RECORDING_STOPPED,\n self::RECORDING_RECORDED,\n self::RECORDING_FAILED,\n ];\n\n // @Important:\n // This collection is not used anywhere, and is fully duplicated by the Channels const.\n // Validate if it is referred somehow via the enum trait, and if not, remove it entirely.\n // An even better strategy will be to move all those constants to a dedicated class\n protected array $enumTypes = [\n self::TYPE_SOFTPHONE,\n self::TYPE_SOFTPHONE_INBOUND,\n self::TYPE_CONFERENCE,\n self::TYPE_SMS_INBOUND,\n self::TYPE_SMS_OUTBOUND,\n self::TYPE_EMAIL_INBOUND,\n self::TYPE_EMAIL_OUTBOUND,\n ];\n\n protected static $enumFailedStatuses = [\n self::STATUS_NO_ANSWER,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n self::STATUS_CANCELLED,\n ];\n\n protected $table = 'activities';\n\n protected $fillable = [\n // Type of activity.\n 'type', // @todo refactor to `channel`\n // The activity type.\n 'playbook_category_id',\n // User who hosts the activity.\n 'user_id',\n // Related Lead record (if applicable)\n 'lead_id',\n // Related Account record (if applicable)\n 'account_id',\n // Related Contact record (if applicable)\n 'contact_id',\n // Related Opportunity record (if applicable)\n 'opportunity_id',\n // Stage of activity.\n 'stage_id',\n // Value of opportunity.\n 'value',\n // If the activity relates to a CRM task.\n 'crm_provider_id',\n // If the activity was created through an external device.\n 'device_id',\n // the activity's language code\n 'language',\n // transcription id\n 'transcription_id',\n // Duration of the call, with microseconds precision.\n 'duration',\n // One of enumStatuses above.\n 'status',\n // Have we reminded them to log the call?\n 'log_reminder_sent_at',\n // If activity is private or inter-org, flagged here.\n 'is_internal',\n // Managers and above can mark a call as private, to exclude it from other team members\n 'is_private',\n 'is_processed',\n // Boolean for this activity being instant invite handled.\n 'is_instant_invite',\n // If activity is in recording state, flagged here.\n 'recording_state',\n // If activity recording is overidden from default.\n 'recording_preference',\n // if recording did (not) happen, why that is\n 'recording_reason_code',\n // Average score, updated during\n 'average_score',\n // Summary that the organizer has taken after the call.\n 'summary',\n // Subject of the activity, usually taken from calendar event.\n 'title',\n // Description of the activity, usually taken from calendar event.\n 'description',\n // Start time, usually taken from calendar event.\n 'scheduled_start_time',\n // End time, usually taken from calendar event.\n 'scheduled_end_time',\n // When the call actually started.\n 'actual_start_time',\n // When the call actually ended.\n 'actual_end_time',\n // SMS: Message reference\n 'telephony_provider_id',\n // SMS: Participant who sent message\n 'from_participant_id',\n // SMS: Participant who should receive the message\n 'to_participant_id',\n // When an external guest joins an organizers meeting room and the organizer is not present,\n // send them an SMS notification that someone has joined.\n 'organizer_notified_at',\n // where was the activity imported from\n 'source',\n // The id in the source system (e.g. the bot id in Recall.ai)\n 'external_id',\n // The provider, by default it is twilio.\n 'provider',\n // Meeting location url\n 'location',\n // The snapshot for displaying a poster image.\n 'poster_path',\n 'crm_configuration_id',\n // If there is an automated message that the conversation is being recorded\n 'has_recording_prompt',\n // If the activity is being live-streamed\n 'on_air',\n 'calendar_event_id',\n ];\n\n protected $appends = [\n 'id_string',\n 'organizer',\n ];\n\n protected $hidden = [\n 'uuid',\n ];\n\n protected $visible = [\n 'id_string',\n 'type',\n 'duration',\n 'average_score',\n 'status',\n 'log_reminder_sent_at',\n 'title',\n 'description',\n 'is_internal',\n 'scheduled_start_time',\n 'scheduled_end_time',\n 'actual_start_time',\n 'actual_end_time',\n 'user',\n 'category',\n 'account',\n 'contact',\n 'opportunity',\n 'lead',\n 'stage',\n 'stats',\n 'participants',\n 'playlists',\n 'tracks',\n 'comments',\n 'plays',\n 'coachingFeedbacks',\n 'shares',\n 'favorites',\n 'language',\n 'transcription',\n 'is_private',\n 'is_instant_invite',\n 'on_air',\n 'calendar_event_id',\n ];\n\n protected function casts(): array\n {\n return [\n 'scheduled_start_time' => 'datetime',\n 'scheduled_end_time' => 'datetime',\n 'actual_start_time' => 'datetime',\n 'actual_end_time' => 'datetime',\n 'organizer_notified_at' => 'datetime',\n 'log_reminder_sent_at' => 'datetime',\n 'is_internal' => 'boolean',\n 'duration' => 'integer',\n 'average_score' => 'decimal:2',\n 'is_private' => 'boolean',\n 'is_processed' => 'boolean',\n 'is_instant_invite' => 'boolean',\n 'value' => 'decimal:2',\n 'recording_preference' => 'boolean',\n 'recording_reason_code' => 'integer',\n 'has_recording_prompt' => 'boolean',\n 'on_air' => 'integer',\n ];\n }\n\n protected static function boot()\n {\n parent::boot();\n\n static::updated(static function (Activity $activity) {\n // If activity is about to start (pending, ringing, in-progress) or event is scheduled in less than 1 week\n if (in_array($activity->status, [Activity::STATUS_PENDING, Activity::STATUS_RINGING, Activity::STATUS_IN_PROGRESS], true) ||\n ($activity->scheduled_start_time && (int) $activity->scheduled_start_time->diffInWeeks(new Carbon(), true) < 1)) {\n if ($activity->isDirty('status')) {\n event(new StatusUpdated($activity));\n }\n\n if ($activity->isDirty('stage_id')) {\n event(new StageUpdated($activity));\n }\n\n if ($activity->isDirty(['lead_id', 'account_id', 'contact_id'])) {\n event(new ProspectUpdated($activity));\n }\n\n if ($activity->isDirty('opportunity_id')) {\n event(new ActivityUpdated($activity, 'activity.opportunity-updated', Auth::user()));\n }\n\n if ($activity->isDirty('title')) {\n event(new TitleUpdated($activity));\n }\n }\n\n if ($activity->isDirty('playbook_category_id')) {\n event(new ActivityTypeUpdated($activity));\n }\n });\n\n static::deleted(static function (Activity $activity) {\n // Hard delete associated playlistActivities\n $activity->playlistActivities()->delete();\n });\n }\n\n public function getOrganizerAttribute(): ?Participant\n {\n $participant = $this->participants()->where('user_id', $this->user_id)->first();\n\n if (! $participant instanceof Participant && $participant !== null) {\n throw new RuntimeException(sprintf('$participant must be an instance of \"%s\" or null', Participant::class));\n }\n\n return $participant;\n }\n\n public function getFormattedValueAttribute()\n {\n $currencyCode = 'USD';\n if ($this->opportunity) {\n $currencyCode = $this->opportunity->getCurrencyCode();\n }\n\n $formatter = new CurrencyFormatter();\n $formatter->setTextAttribute(NumberFormatter::CURRENCY_CODE, $currencyCode);\n $formatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 0);\n\n return $formatter->format($this->value, $currencyCode);\n }\n\n public function getProspectNameAttribute(): ?string\n {\n $prospectName = null;\n\n if ($this->lead_id) {\n $prospectName = $this->lead->name;\n } elseif ($this->contact_id) {\n $prospectName = $this->contact->name;\n } elseif ($this->account_id) {\n $prospectName = $this->account->name;\n }\n\n return $prospectName;\n }\n\n public function getProspectName(): ?string\n {\n /** @var string|null */\n return $this->getAttribute('prospect_name');\n }\n\n /**\n * Get activity title depending on prospect or title\n */\n public function getActivityTitleAttribute(): ?string\n {\n $activityTitle = null;\n if ($this->prospect && $this->prospect->getName()) {\n if ($this->account_id) {\n $activityTitle = $this->account->name;\n } elseif ($this->lead_id) {\n $activityTitle = $this->lead->company;\n } elseif ($this->contact_id) {\n $activityTitle = $this->contact->account ? $this->contact->account->name : $this->contact->name;\n }\n } elseif ($this->title) {\n $activityTitle = $this->title;\n }\n\n return $activityTitle;\n }\n\n public function wasRecentlyCreated(): bool\n {\n return $this->wasRecentlyCreated;\n }\n\n public function getProspectTypeAttribute()\n {\n $prospectType = null;\n\n if ($this->lead_id) {\n $prospectType = 'Lead';\n } elseif ($this->contact_id) {\n $prospectType = 'Contact';\n } elseif ($this->account_id) {\n $prospectType = 'Account';\n }\n\n return $prospectType;\n }\n\n /**\n * Return the best match for prospect. Results are in the following order of priority:\n * 1. Lead\n * 2. Contact\n * 3. Account\n * 4. NULL\n */\n public function getProspectAttribute(): ?ProspectInterface\n {\n if ($this->hasLead()) {\n return $this->getLead();\n }\n\n if ($this->hasContact()) {\n return $this->getContact();\n }\n\n if ($this->hasAccount()) {\n return $this->getAccount();\n }\n\n return null;\n }\n\n public function getTitleAttribute($value): ?string\n {\n return \\getActivityTitleAttribute(\n $this->user->name,\n $this->getType(),\n $value,\n $this->prospect->name ?? null,\n $this->from->national_phone_number ?? null\n );\n }\n\n public function getTitle(): ?string\n {\n return $this->getAttribute('title');\n }\n\n public function getSummary(): ?string\n {\n return $this->getAttribute('summary');\n }\n\n public function isInternal(): bool\n {\n return $this->getAttribute('is_internal');\n }\n\n public function getIsPrivate(): bool\n {\n return $this->getAttribute('is_private');\n }\n\n public function getDescription(): ?string\n {\n return $this->getAttribute('description');\n }\n\n public function hasTitle(): bool\n {\n return $this->getOriginal('title') !== null;\n }\n\n public function getPlayCountAttribute()\n {\n return $this->getPlaysCountAttribute();\n }\n\n public function getPlaysCountAttribute()\n {\n if (! isset($this->attributes['plays_count'])) {\n $this->loadCount('plays');\n }\n\n return $this->attributes['plays_count'];\n }\n\n public function getCommentCountAttribute()\n {\n return $this->getCommentsCountAttribute();\n }\n\n public function getCommentsCountAttribute()\n {\n if (! isset($this->attributes['comments_count'])) {\n $this->loadCount('comments');\n }\n\n return $this->attributes['comments_count'];\n }\n\n public function getVisibleCommentsCountAttribute()\n {\n if (! isset($this->attributes['visible_comments_count'])) {\n $activityCommentsService = app(ActivityCommentService::class);\n $user = Auth::user() instanceof User ? Auth::user() : null;\n $this->attributes['visible_comments_count'] = $activityCommentsService\n ->getVisibleCommentsCount($this, $user);\n }\n\n return $this->attributes['visible_comments_count'];\n }\n\n public function getShareCountAttribute()\n {\n return $this->getSharesCountAttribute();\n }\n\n public function getSharesCountAttribute()\n {\n if (! isset($this->attributes['shares_count'])) {\n $this->loadCount('shares');\n }\n\n return $this->attributes['shares_count'];\n }\n\n\n /**\n * Get the count of favorites playlists this activity appears in\n */\n public function getFavoriteCountAttribute(): int\n {\n return $this->getFavoritesCountAttribute();\n }\n\n public function getFavoritesCountAttribute()\n {\n if (! isset($this->attributes['favorites_count'])) {\n $this->loadCount('favorites');\n }\n\n return $this->attributes['favorites_count'];\n }\n\n public function getActiveParticipantsCountAttribute()\n {\n if (! isset($this->attributes['active_participants_count'])) {\n $this->loadCount('activeParticipants');\n }\n\n return $this->attributes['active_participants_count'];\n }\n\n public function getTracksWithTelephonyCountAttribute()\n {\n if (! isset($this->attributes['tracks_with_telephony_count'])) {\n $this->loadCount('tracksWithTelephony');\n }\n\n return $this->attributes['tracks_with_telephony_count'];\n }\n\n /**\n * @TEMP\n * $this->loadCount('tracksWithTelephony') throws null pointer exception\n */\n public function countTracksWithTelephony(): int\n {\n return $this->tracks()->whereNotNull('telephony_provider_id')->count();\n }\n\n public function getDuration(): float\n {\n return $this->getAttribute('duration');\n }\n\n public function getDurationForHumansAttribute()\n {\n return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true);\n }\n\n public function getDurationForHumansShortAttribute(): string\n {\n return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true, true);\n }\n\n public function hasRecordingPreference(): bool\n {\n return $this->getAttribute('recording_preference') !== null;\n }\n\n public function getRecordingPreference()\n {\n return $this->getAttribute('recording_preference');\n }\n\n /** @return BelongsTo<User, self> */\n public function user(): BelongsTo\n {\n return $this->belongsTo(User::class)->with('group');\n }\n\n public function device()\n {\n return $this->belongsTo(Device::class);\n }\n\n public function category()\n {\n return $this->belongsTo(PlaybookCategory::class, 'playbook_category_id');\n }\n\n public function getCategory(): ?PlaybookCategory\n {\n return $this->getAttribute('category');\n }\n\n public function getPlaybookCategoryId(): ?int\n {\n return $this->getAttribute('playbook_category_id');\n }\n\n public function hasStats(): bool\n {\n return $this->getAttribute('stats') !== null;\n }\n\n public function getStats(): ?Stats\n {\n return $this->getAttribute('stats');\n }\n\n public function stats(): HasOne\n {\n return $this->hasOne(Stats::class);\n }\n\n public function participantStats(): Eloquent\\Relations\\HasManyThrough\n {\n return $this->hasManyThrough(\n Models\\Participant\\ParticipantStats::class,\n Participant::class,\n 'activity_id',\n 'participant_id'\n );\n }\n\n public function getParticipantStats(): Eloquent\\Collection\n {\n return $this->getAttribute('participantStats');\n }\n\n public function account()\n {\n return $this->belongsTo(Account::class);\n }\n\n public function contact()\n {\n return $this->belongsTo(Contact::class)->with(['account']);\n }\n\n public function lead()\n {\n return $this->belongsTo(Lead::class)->with(['stage', 'recordType']);\n }\n\n /**\n * @return BelongsTo<Opportunity, self>\n */\n public function opportunity(): BelongsTo\n {\n /** @var BelongsTo<Opportunity, self> */\n return $this->belongsTo(Opportunity::class);\n }\n\n public function stage()\n {\n return $this->belongsTo(Stage::class);\n }\n\n /**\n * @return HasMany<Session>\n */\n public function sessions(): HasMany\n {\n return $this->hasMany(Session::class);\n }\n\n /**\n * @return HasMany|ParticipantSpeech[]|Eloquent\\Collection\n */\n public function participantSpeeches()\n {\n return $this->hasMany(ParticipantSpeech::class);\n }\n\n public function getParticipantSpeeches(): Eloquent\\Collection\n {\n return $this->getAttribute('participantSpeeches');\n }\n\n /**\n * @return HasMany|Log[]|Eloquent\\Collection\n */\n public function logs()\n {\n return $this->hasMany(Log::class);\n }\n\n /**\n * @return HasMany|Moment[]|Eloquent\\Collection\n */\n public function moments()\n {\n return $this->hasMany(Moment::class);\n }\n\n /**\n * @return HasMany|Note[]|Eloquent\\Collection\n */\n public function notes()\n {\n return $this->hasMany(Note::class);\n }\n\n /**\n * @return Eloquent\\Collection|Note[]\n */\n public function getNotes(): Eloquent\\Collection\n {\n return $this->getAttribute('notes');\n }\n\n /**\n * @return HasMany|Message[]|Eloquent\\Collection\n */\n public function messages()\n {\n return $this->hasMany(Message::class);\n }\n\n public function coachingMessages(): HasMany\n {\n return $this->hasMany(Message::class)\n ->where('is_private', 1);\n }\n\n public function getCoachingMessages(): Eloquent\\Collection\n {\n return $this->getAttribute('coachingMessages');\n }\n\n public function participants(): HasMany\n {\n return $this->hasMany(Participant::class);\n }\n\n public function getSnapshots(): Eloquent\\Collection\n {\n return $this->getAttribute('snapshots');\n }\n\n /** @return HasMany<Track> */\n public function tracks(): HasMany\n {\n return $this->hasMany(Track::class);\n }\n\n public function tracksWithTelephony(): HasMany\n {\n return $this->hasMany(Track::class)->whereNotNull('telephony_provider_id');\n }\n\n public function getTracksWithTelephony(): Eloquent\\Collection\n {\n return $this->getAttribute('tracksWithTelephony');\n }\n\n /** @return Collection|Track[] */\n public function getTracks(): Eloquent\\Collection\n {\n return $this->getAttribute('tracks');\n }\n\n public function masterTrack(): HasOne\n {\n return $this->hasOne(Track::class)->where('is_master', 1)\n ->whereIn('format', [Track::FORMAT_WAV, Track::FORMAT_M3U8])\n ->latest();\n }\n\n public function getMasterTrack(): ?Track\n {\n /** @var Track|null */\n return $this->getAttribute('masterTrack');\n }\n\n public function transcription(): Eloquent\\Relations\\BelongsTo\n {\n return $this->belongsTo(Transcription::class, 'transcription_id');\n }\n\n public function findTranscriptionPromptSummaries(): Collection\n {\n $transcriptionId = $this->getTranscriptionId();\n if (is_null($transcriptionId)) {\n return new Collection();\n }\n\n return Models\\AiPrompt::query()\n ->where('transcription_id', $transcriptionId)\n ->get();\n }\n\n public function getTranscription(): Transcription\n {\n return $this->getAttribute('transcription');\n }\n\n public function hasTranscription(): bool\n {\n return $this->getAttribute('transcription') !== null;\n }\n\n public function setTranscriptionId(int $transcriptionId): Activity\n {\n $this->setAttribute('transcription_id', $transcriptionId);\n\n return $this;\n }\n\n public function unsetTranscriptionId(): self\n {\n $this->setAttribute('transcription_id', null);\n\n return $this;\n }\n\n public function getTranscriptionId(): ?int\n {\n return $this->getAttribute('transcription_id');\n }\n\n /** @deprecated */\n public function hasTranscriptionId(): bool\n {\n return $this->getAttribute('transcription_id') !== null;\n }\n\n public function coachRequests()\n {\n return $this->hasMany(CoachRequest::class);\n }\n\n public function availabilityNotifications()\n {\n return $this->hasMany(AvailabilityNotification::class);\n }\n\n public function processingStates()\n {\n return $this->hasMany(Models\\Activity\\ActivityProcessingState::class);\n }\n\n public function uploadSettings()\n {\n return $this->hasMany(ActivityUploadSetting::class);\n }\n\n public function comments()\n {\n return $this->hasMany(Comment::class);\n }\n\n public function getComments(): Eloquent\\Collection\n {\n return $this->getAttribute('comments');\n }\n\n public function visibleComments()\n {\n $rel = $this->hasMany(Comment::class);\n // Doesn't have auth()->user() in some tests, breaks the build\n if ($user = auth()->user()) {\n return $rel->visibleThreads($user->id);\n }\n\n return $rel;\n }\n\n public function snapshots(): HasMany\n {\n return $this->hasMany(Snapshot::class);\n }\n\n public function calendarEvent()\n {\n return $this->belongsTo(CalendarEvent::class);\n }\n\n public function getCalendarEvent(): ?CalendarEvent\n {\n return $this->getAttribute('calendarEvent');\n }\n\n public function latestCoachingFeedbacks(): HasMany\n {\n return $this->hasMany(CoachingFeedback::class)->latest();\n }\n\n public function playlists(): BelongsToMany\n {\n return $this->belongsToMany(Playlist::class, 'playlist_activities')\n ->withPivot('id', 'uuid', 'user_id', 'start_time', 'end_time')\n ->using(PlaylistActivity::class)\n ->withTimestamps();\n }\n\n public function coachingFeedbacks(): HasMany\n {\n return $this->hasMany(CoachingFeedback::class);\n }\n\n /**\n * @return Eloquent\\Collection|CoachingFeedback[]\n */\n public function getCoachingFeedback(): Eloquent\\Collection\n {\n return $this->getAttribute('coachingFeedbacks');\n }\n\n /** @return Eloquent\\Collection<int, PlaylistActivity> */\n public function favoritedBy(User $user): Eloquent\\Collection\n {\n return $this->favorites()->where('user_id', $user->getId())->get();\n }\n\n /**\n * Checks whether consumer has added this activity to their favorites playlist\n * In addition a default playlist gets created if not already present\n */\n public function wasFavoritedBy(User $user): bool\n {\n $playlist = $user->favoritePlaylist();\n\n return $playlist\n ->activities()\n ->where('activity_id', '=', $this->getId())\n ->exists();\n }\n\n /**\n * @return HasMany<PlaylistActivity>\n */\n public function playlistActivities(): HasMany\n {\n return $this->hasMany(PlaylistActivity::class);\n }\n\n /**\n * @return HasManyThrough<Playlist>\n */\n public function favoritePlaylists(): HasManyThrough\n {\n return $this->hasManyThrough(\n Playlist::class,\n PlaylistActivity::class,\n 'activity_id',\n 'id',\n 'id',\n 'playlist_id'\n )->where('is_default', 1);\n }\n\n /**\n * @return Eloquent\\Collection<int, Playlist>\n */\n public function getFavoritePlaylists(): Eloquent\\Collection\n {\n return $this->getAttribute('favoritePlaylists');\n }\n\n /**\n * Get activities from the default/favorite playlist\n *\n * @return Eloquent\\Builder|static\n */\n public function favorites()\n {\n return $this->playlistActivities()->whereHas('playlist', function ($query) {\n $query->where('is_default', 1);\n });\n }\n\n /**\n * @return Model|SubscriptionSet|null|object\n */\n public function subscribedBy(User $user)\n {\n if ($this->prospect === null) {\n return null;\n }\n\n return SubscriptionSet::select('activity_subscription_sets.*')\n ->where('user_id', $user->id)\n ->join('activity_subscriptions', function ($join) {\n $join\n ->on('subscription_set_id', '=', 'activity_subscription_sets.id');\n\n if ($this->account_id) {\n if ($this->opportunity_id) {\n $join\n ->where('followable_type', 'opportunity')\n ->where('followable_id', $this->opportunity_id);\n } else {\n $join\n ->where('followable_type', 'account')\n ->where('followable_id', $this->account_id);\n }\n } elseif ($this->contact_id) {\n $join\n ->where('followable_type', 'contact')\n ->where('followable_id', $this->contact_id);\n } elseif ($this->lead_id) {\n $join\n ->where('followable_type', 'lead')\n ->where('followable_id', $this->lead_id);\n }\n })\n ->first();\n }\n\n /**\n * @return array|Eloquent\\Builder[]|Eloquent\\Collection|SubscriptionSet[]\n */\n public function subscribers()\n {\n if ($this->prospect === null) {\n return [];\n }\n\n return SubscriptionSet::with(['subscriptions', 'user'])\n ->whereHas('subscriptions', function ($query) {\n if ($this->account_id) {\n if ($this->opportunity_id) {\n $query\n ->where('followable_type', 'opportunity')\n ->where('followable_id', $this->opportunity_id);\n } else {\n $query\n ->where('followable_type', 'account')\n ->where('followable_id', $this->account_id);\n }\n } elseif ($this->contact_id) {\n $query\n ->where('followable_type', 'contact')\n ->where('followable_id', $this->contact_id);\n } elseif ($this->lead_id) {\n $query\n ->where('followable_type', 'lead')\n ->where('followable_id', $this->lead_id);\n } else {\n // Nothing to join on?\n // refactor - use Jiminny specific exception\n throw new InvalidArgumentException('Cannot join on a specific customer filter.');\n }\n })\n ->whereHas('user', function ($query) {\n $query\n ->where('team_id', $this->user->team_id)\n ->where('status', User::STATUS_ACTIVE);\n })\n ->get();\n }\n\n /**\n * @return HasMany|Builder|Eloquent\\Collection|Play[]\n */\n public function plays()\n {\n return $this->hasMany(Play::class);\n }\n\n public function getPlays(): Eloquent\\Collection\n {\n return $this->getAttribute('plays');\n }\n\n public function playsBy(User $user)\n {\n /** @var Builder $builder */\n $builder = $this->plays()->where('user_id', $user->id);\n\n return $builder->get();\n }\n\n /**\n * Check if activity was played by a user\n */\n public function wasPlayedBy(User $user): bool\n {\n return $this->plays()->where('user_id', $user->id)->exists();\n }\n\n public function shares()\n {\n return $this->hasMany(Share::class);\n }\n\n /** @return BelongsTo<Participant, self> */\n public function from(): BelongsTo\n {\n return $this->belongsTo(Participant::class, 'from_participant_id');\n }\n\n /** @return BelongsTo<Participant, self> */\n public function to(): BelongsTo\n {\n return $this->belongsTo(Participant::class, 'to_participant_id');\n }\n\n /**\n * Get all of the connections through the participants.\n */\n public function connections()\n {\n return $this->hasManyThrough(\n Connection::class,\n Participant::class,\n 'activity_id',\n 'participant_id'\n );\n }\n\n public function getConnections(): Eloquent\\Collection\n {\n return $this->getAttribute('connections');\n }\n\n /**\n * Get all of the shares through the participants.\n */\n public function participantShares()\n {\n return $this->hasManyThrough(\n Participant\\Share::class,\n Participant::class,\n 'activity_id',\n 'participant_id'\n );\n }\n\n public function getParticipantShares(): Eloquent\\Collection\n {\n return $this->getAttribute('participantShares');\n }\n\n public function topicTriggers(): HasMany\n {\n return $this->hasMany(TopicTrigger::class);\n }\n\n public function activityScorecardRuleTriggers(): HasMany\n {\n return $this->hasMany(Models\\Scorecard\\ActivityScorecardRuleTrigger::class);\n }\n\n public function activityScorecardRules(): HasMany\n {\n return $this->hasMany(Models\\Scorecard\\ActivityScorecardRule::class);\n }\n\n public function questions(): HasMany\n {\n return $this->hasMany(Question::class);\n }\n\n /**\n * Get all the custom data attached to it.\n */\n public function data(): HasMany\n {\n return $this->hasMany(FieldData::class);\n }\n\n public function getData(): Eloquent\\Collection\n {\n /** @var Eloquent\\Collection */\n return $this->getAttribute('data');\n }\n\n #[Scope]\n protected function heldBetween($query, Carbon $start, Carbon $end)\n {\n // Sanity check.\n $from = min($start, $end);\n $until = max($start, $end);\n\n return $query\n ->where('actual_start_date', '>=', $from)\n ->where('actual_end_date', '<=', $until);\n }\n\n #[Scope]\n protected function scheduledBetween($query, Carbon $start, Carbon $end)\n {\n // Sanity check.\n $from = min($start, $end);\n $until = max($start, $end);\n\n return $query\n ->where('scheduled_start_date', '>=', $from)\n ->where('scheduled_end_date', '<=', $until);\n }\n\n /**\n * @param Builder<self> $query\n *\n * @return Builder<self>\n */\n #[Scope]\n protected function forTeam(Builder $query, int $teamId): Builder\n {\n /** @var Builder<self> */\n return $query->whereHas('user', static function (Builder $query) use ($teamId): void {\n $query->where('team_id', $teamId);\n });\n }\n\n /**\n * @param Builder<self> $query\n *\n * @return Builder<self>\n */\n #[Scope]\n protected function inOpenDeals(Builder $query): Builder\n {\n /** @var Builder<self> */\n return $query->whereHas(\n 'opportunity',\n static fn (Builder $query): Builder => $query\n ->where('is_closed', false)\n ->where('deleted_at', '=', null),\n );\n }\n\n /**\n * @param Builder<self> $query\n *\n * @return Builder<self>\n */\n #[Scope]\n protected function notInOpenDeals(Builder $query): Builder\n {\n /** @var Builder<self> */\n return $query->where(\n static fn (Builder $query): Builder => $query->whereNull('opportunity_id')\n ->orWhereHas(\n 'opportunity',\n static fn (Builder $query): Builder => $query->where('is_closed', true),\n )\n ->orWhereHas(\n 'opportunity',\n static fn (Builder $query): Builder => $query->withTrashed()->where('deleted_at', '!=', null),\n ),\n );\n }\n\n /**\n * Finds a participant and updates it with data. If participant doesn't exist creates a new participant from data.\n *\n * @param array $data participant data used to identify the participant and update it\n * @param bool $enterRoom true if participant is entering the room. false if we just want to update some participant data\n * @param Carbon|null $enterTime if $enterNow is true then this is the join time when the actual enter has occurred\n */\n public function updateOrCreateParticipant(\n array $data,\n bool $enterRoom = true,\n ?Carbon $enterTime = null,\n bool $nameMatching = false,\n ): Participant {\n $search = [];\n $participant = null;\n\n if (isset($data['user_id'])) {\n // Check if they already exist based on their ID.\n $search['user_id'] = $data['user_id'];\n } elseif (isset($data['provider_id'])) {\n $search['provider_id'] = $data['provider_id'];\n } elseif ($nameMatching && isset($data['name'])) {\n $search['name'] = $data['name'];\n }\n\n if (! empty($data['email'])) {\n $search['email'] = $data['email'];\n\n // If we have their email, this should be unique enough to lookup (e.g. calendar event based participant).\n unset($search['provider_id']);\n }\n\n // Search by phone number only in case nothing else is available to search by.\n if (array_key_exists('phone_number', $data) && empty($search)) {\n $search['phone_number'] = $data['phone_number'];\n }\n\n if (! empty($search)) {\n // Do a lookup now to see if we have a match on the provided data.\n $lookup = array_map(static function ($key, $value): array {\n return [$key, $value];\n }, array_keys($search), $search);\n\n $participant = $this->participants()->withTrashed()->where($lookup)->first();\n }\n\n // Do a partial match on the name and search in the team members.\n if (! $participant instanceof Participant && $nameMatching && ! empty($data['name'])) {\n $participantMatcher = app(MeetingBot\\Service\\ParticipantMatcher::class);\n\n if (! $participantMatcher instanceof MeetingBot\\Service\\ParticipantMatcher) {\n throw new LogicException('Expecting ParticipantMatcher service instance');\n }\n\n $participant = $participantMatcher->match($this, $data['name']);\n\n // If we've found good participant, avoid data overwrite in `$participant->fill($data)` below.\n if ($participant instanceof Models\\Participant && $participant->hasName()) {\n unset($data['name']); // Thoughts: should we unset also $data['user_id'] and $data['email'] ?\n }\n }\n\n if (! $participant instanceof Participant) {\n // If no match, create a new participant.\n if (empty($search)) {\n $participant = $this->participants()->create();\n } else {\n // If no match, create a new participant but avoid creating duplicates\n $participant = $this->participants()->withTrashed()->firstOrNew($search);\n }\n }\n\n // If we have just recycled a deleted participant\n if ($participant->trashed()) {\n $participant->deleted_at = null;\n }\n\n // Deal with the case when calendar syncs the event while it's in progress.\n // We should prevent change of the participant name, because speeches mapping will fail.\n if ($enterRoom === false\n && $this->isInProgress()\n && $participant->hasName()\n && isset($data['name'])\n && $data['name'] !== $participant->getName()\n ) {\n unset($data['name']);\n }\n\n // Upsert with new data.\n $participant->fill($data);\n\n if ($enterRoom) {\n if ($enterTime === null) {\n $enterTime = now();\n }\n\n // Participant enters room for the first time\n if ($participant->enter_time === null) {\n $participant->enter_time = $enterTime;\n }\n\n // If there is an exit time and it's prior to new enter_time\n if ($participant->exit_time && $participant->exit_time->lt($enterTime)) {\n // Participant has re-joined\n $participant->exit_time = null;\n }\n }\n\n $participant->save();\n\n return $participant;\n }\n\n /**\n * Updates participant CRM data\n *\n * @param array{\n * Lead|null,\n * Account|null,\n * Opportunity|null,\n * Contact|null,\n * Stage|null,\n * string|null\n *} $records\n * @param Participant $participant participant the CRM data is associated with\n */\n public function updateParticipantCrmData(array $records, Participant $participant): void\n {\n // Extract the records.\n [$lead, , , $contact] = $records;\n\n $resolver = $this->getUpdateCrmDataResolver();\n $strategy = $resolver->resolveForParticipant($lead, $contact);\n\n if ($strategy == UpdateCrmDataByStrategy::Lead) {\n if (! $participant->hasName()) {\n $participant->name = $lead->name;\n }\n\n if (! $participant->hasEmailAddress()) {\n $participant->email = $lead->email;\n }\n\n if (! $participant->hasPhoneNumber()) {\n $participant->phone_number = $lead->phone;\n }\n\n $participant->lead_id = $lead->id;\n $participant->save();\n } elseif ($strategy == UpdateCrmDataByStrategy::Contact) {\n if (! $participant->hasName()) {\n $participant->name = $contact->name;\n }\n\n if (! $participant->hasEmailAddress()) {\n $participant->email = $contact->email;\n }\n\n if (! $participant->hasPhoneNumber()) {\n $participant->phone_number = $contact->phone;\n }\n\n $participant->contact_id = $contact->id;\n $participant->save();\n }\n }\n\n /**\n * Updates activity CRM data\n *\n * @param array{\n * Lead|null,\n * Account|null,\n * Opportunity|null,\n * Contact|null,\n * Stage|null,\n * string|null\n *} $records\n */\n public function updateActivityCrmData(array $records): void\n {\n // Extract the records.\n [$lead, $account, $opportunity, $contact, $stage] = $records;\n\n $resolver = $this->getUpdateCrmDataResolver();\n $strategy = $resolver->resolveForActivity($lead, $contact, $account);\n\n if ($strategy == UpdateCrmDataByStrategy::Lead) {\n // Also update the parent activity if required, checking we don't create a mixed lead/account record.\n if ($this->account_id === null && $this->contact_id === null && $this->lead_id === null) {\n $this->lead_id = $lead->id;\n\n if ($this->stage_id === null && $stage) {\n $this->stage_id = $stage->id;\n }\n\n $this->save();\n }\n } elseif ($strategy == UpdateCrmDataByStrategy::Contact) {\n // Also update the parent activity if required, checking we don't create a mixed lead/account record.\n $this->lead_id = null;\n if ($this->stage && $this->stage->getType() === Stage::TYPE_LEAD) {\n $this->stage_id = null;\n }\n\n // Don't trust previous matched account_id as it might have been changed in the CRM\n if ($account && $account->id !== $this->account_id) {\n $this->account_id = $account->id;\n }\n\n if ($this->stage_id === null && $stage) {\n $this->stage_id = $stage->id;\n }\n\n if ($opportunity && $this->opportunity_id !== $opportunity->id) {\n $this->opportunity_id = $opportunity->id;\n }\n\n if ($opportunity && $this->value !== $opportunity->value) {\n $this->value = $opportunity->value;\n }\n\n // Always set contact_id when available, regardless of account_id status\n if ($this->contact_id === null && $contact) {\n $this->contact_id = $contact->id;\n }\n\n $this->save();\n } elseif ($strategy == UpdateCrmDataByStrategy::Account && $this->account_id === null) {\n // Also update the parent activity if required, checking we don't create a mixed lead/account record.\n $this->lead_id = null;\n if ($this->stage && $this->stage->getType() === Stage::TYPE_LEAD) {\n $this->stage_id = null;\n }\n\n // Update the account and opportunity on the activity record if possible.\n $this->account_id = $account->id;\n\n if ($this->stage_id === null && $stage) {\n $this->stage_id = $stage->id;\n }\n\n if ($this->opportunity_id === null && $opportunity) {\n $this->opportunity_id = $opportunity->id;\n $this->value = $opportunity->value;\n }\n\n $this->save();\n }\n }\n\n public function getActivityProspectData(): array\n {\n return [\n 'lead' => $this->lead_id,\n 'contact' => $this->contact_id,\n 'account' => $this->account_id,\n 'opportunity' => $this->opportunity_id,\n 'stage' => $this->stage_id,\n ];\n }\n\n public function isOrganizer(User $user): bool\n {\n return $this->user_id && $this->user_id === $user->id;\n }\n\n public function isJoinable(): bool\n {\n return \\in_array($this->status, [\n self::STATUS_SCHEDULED,\n self::STATUS_PENDING,\n self::STATUS_RINGING,\n self::STATUS_IN_PROGRESS,\n ], true);\n }\n\n public function isAttemptedForBotJoin(): bool\n {\n return in_array($this->getAttribute('status'), self::MEETING_BOT_JOIN_ATTEMPTED, true);\n }\n\n /**\n * Check if the activity can be saved to CRM (manual or autolog)\n */\n public function isLoggable(): bool\n {\n if ($this->getUser()->getTeam()->hasFeature(FeatureEnum::SIDEKICK_SETTINGS)) {\n $sidekickService = app(SidekickService::class);\n\n if (! $sidekickService->isSidekickEnabledForUser($this->getUser())) {\n return false;\n }\n }\n\n // If we don't know the activity type, don't try to log.\n if ($this->playbook_category_id === null) {\n return false;\n }\n\n if ($this->user->crm_required === false) {\n return false;\n }\n\n // Don't prompt for internal meetings.\n if ($this->is_internal) {\n return false;\n }\n\n // If we don't know who we are trying to log to, don't try to log.\n if ($this->prospect === null) {\n return false;\n }\n\n $validStatus = false;\n switch ($this->type) {\n case self::TYPE_SOFTPHONE:\n case self::TYPE_SOFTPHONE_INBOUND:\n $validStatus = true;\n\n break;\n case self::TYPE_CONFERENCE:\n $validStatus = in_array($this->status, [\n self::STATUS_BUSY,\n self::STATUS_NO_ANSWER,\n self::STATUS_COMPLETED,\n self::STATUS_CANCELLED,\n ], true);\n\n break;\n case self::TYPE_SMS_INBOUND:\n case self::TYPE_SMS_OUTBOUND:\n $validStatus = in_array($this->status, [\n self::STATUS_QUEUED,\n self::STATUS_SENT,\n self::STATUS_UNDELIVERED,\n self::STATUS_DELIVERED,\n self::STATUS_RECEIVED,\n ], true);\n\n break;\n }\n\n // Depending on the activity channel, we should not try to log.\n return $validStatus;\n }\n\n public function isScheduled(): bool\n {\n return $this->status === self::STATUS_SCHEDULED;\n }\n\n public function scheduledDuration(): int\n {\n if ($this->scheduled_start_time && $this->scheduled_end_time) {\n return $this->scheduled_end_time->timestamp - $this->scheduled_start_time->timestamp;\n }\n\n return 0;\n }\n\n public function isPending(): bool\n {\n return $this->status === self::STATUS_PENDING;\n }\n\n public function isCompleted(): bool\n {\n return $this->status === self::STATUS_COMPLETED;\n }\n\n public function isRinging(): bool\n {\n return $this->status === self::STATUS_RINGING;\n }\n\n public function isInProgress(): bool\n {\n return $this->status === self::STATUS_IN_PROGRESS;\n }\n\n public function isBusy(): bool\n {\n return $this->status === self::STATUS_BUSY;\n }\n\n public function isNoAnswer(): bool\n {\n return $this->status === self::STATUS_NO_ANSWER;\n }\n\n public function isFailed(): bool\n {\n return $this->status === self::STATUS_FAILED;\n }\n\n public function isCancelled(): bool\n {\n return $this->status === self::STATUS_CANCELLED;\n }\n\n public function hasEnded(int $gracePeriodMinutes = 15): bool\n {\n if ($this->isCompleted()) {\n return true;\n }\n\n if (($this->isFailed() || $this->isCancelled()) && $this->hasScheduledEndTime()) {\n return $this->getScheduledEndTime()->addMinutes($gracePeriodMinutes)->isPast();\n }\n\n return false;\n }\n\n public function hasStarted(): bool\n {\n return $this->hasActualStartTime();\n }\n\n public function isOngoing(): bool\n {\n return $this->hasActualStartTime() && ! $this->hasActualEndTime();\n }\n\n public function isTypeSmsInbound(): bool\n {\n return $this->getType() === self::TYPE_SMS_INBOUND;\n }\n\n public function isTypeSmsOutbound(): bool\n {\n return $this->getType() === self::TYPE_SMS_OUTBOUND;\n }\n\n public function isTypeSoftPhone(): bool\n {\n return $this->getType() === self::TYPE_SOFTPHONE;\n }\n\n public function isTypeSoftphoneInbound(): bool\n {\n return $this->getType() === self::TYPE_SOFTPHONE_INBOUND;\n }\n\n public function isTypeConference(): bool\n {\n return $this->getType() === self::TYPE_CONFERENCE;\n }\n\n /**\n * Get a conference elapsed time in seconds.\n *\n * @return int seconds count\n */\n public function secondsTimeElapsed(): int\n {\n if (empty($this->actual_start_time)) {\n return 0;\n }\n\n // Get number of seconds since conference actual start time\n return (int) abs(Carbon::now()->diffInRealSeconds($this->actual_start_time));\n }\n\n /**\n * Get a conference elapsed time formatted as \"1:30:20\" if more than 1 hour or \"30:20\" otherwise.\n */\n public function formattedTimeElapsed(): string\n {\n // Get number of seconds since conference actual start time.\n $elapsedSeconds = $this->secondsTimeElapsed();\n $elapsedTime = Carbon::createFromTimestampUTC($elapsedSeconds);\n\n // Format conference start time.\n return $elapsedTime->format($elapsedSeconds < 3600 ? 'i:s' : 'G:i:s');\n }\n\n public function wasScheduled(): bool\n {\n return $this->calendarEvent !== null || in_array($this->getSource(), [self::SOURCE_OUTLOOK, self::SOURCE_GOOGLE]);\n }\n\n public function isInstant(): bool\n {\n return ! $this->wasScheduled();\n }\n\n /**\n * GETTERS AND SETTERS FOLLOW BELOW\n */\n\n public function getUuid(): string\n {\n return $this->getAttribute('id_string');\n }\n\n public function getId(): int\n {\n return $this->getAttribute('id');\n }\n\n public function getFromParticipantId(): ?int\n {\n return $this->getAttribute('from_participant_id');\n }\n\n public function getFromParticipant(): ?Participant\n {\n return $this->getAttribute('from');\n }\n\n public function getToParticipantId(): ?int\n {\n return $this->getAttribute('to_participant_id');\n }\n\n public function getToParticipant(): ?Participant\n {\n return $this->getAttribute('to');\n }\n\n public function hasScheduledStartTime(): bool\n {\n return $this->getAttribute('scheduled_start_time') !== null;\n }\n\n public function getScheduledStartTime(): ?Carbon\n {\n return $this->getAttribute('scheduled_start_time');\n }\n\n public function setScheduledStartTime(DateTimeInterface $dateTime): self\n {\n $this->setAttribute('scheduled_start_time', $dateTime);\n\n return $this;\n }\n\n public function getScheduledEndTime(): ?DateTimeInterface\n {\n return $this->getAttribute('scheduled_end_time');\n }\n\n public function hasScheduledEndTime(): bool\n {\n return $this->getAttribute('scheduled_end_time') !== null;\n }\n\n public function setScheduledEndTime(DateTimeInterface $dateTime): self\n {\n $this->setAttribute('scheduled_end_time', $dateTime);\n\n return $this;\n }\n\n public function getActualStartTime(): ?Carbon\n {\n return $this->getAttribute('actual_start_time');\n }\n\n public function hasActualStartTime(): bool\n {\n return $this->getAttribute('actual_start_time') !== null;\n }\n\n public function getActualEndTime(): ?Carbon\n {\n return $this->getAttribute('actual_end_time');\n }\n\n public function hasActualEndTime(): bool\n {\n return $this->getAttribute('actual_end_time') !== null;\n }\n\n public function getType(): ?string\n {\n return $this->getAttribute('type');\n }\n\n public function getStatus(): string\n {\n return $this->getAttribute('status');\n }\n\n public function setStatus(string $status): self\n {\n $this->setAttribute('status', $status);\n\n return $this;\n }\n\n public function setActualStartTime(DateTimeInterface $dateTime): self\n {\n $this->setAttribute('actual_start_time', $dateTime);\n\n return $this;\n }\n\n public function setActualEndTime(DateTimeInterface $dateTime, bool $shouldUpdateDuration = true): self\n {\n $this->setAttribute('actual_end_time', $dateTime);\n\n if (! $shouldUpdateDuration) {\n return $this;\n }\n\n return $this->updateDuration();\n }\n\n public function updateDuration(): self\n {\n if (! $this->hasActualStartTime() || ! $this->hasActualEndTime()) {\n return $this;\n }\n\n return $this->setDuration(\n (int) abs($this->getActualStartTime()->diffInRealSeconds($this->getActualEndTime()))\n );\n }\n\n public function setDuration(int $duration): self\n {\n $this->setAttribute('duration', $duration);\n\n return $this;\n }\n\n public function getRecordingState(): string\n {\n return $this->getAttribute('recording_state');\n }\n\n public function isRecordingState(string $recordingState): bool\n {\n return $this->getRecordingState() === $recordingState;\n }\n\n public function setRecordingState(string $recordingState): self\n {\n $this->setAttribute('recording_state', $recordingState);\n\n return $this;\n }\n\n public function hasActivityType(): bool\n {\n return $this->getAttribute('category') !== null;\n }\n\n public function getActivityType(): PlaybookCategory\n {\n return $this->getAttribute('category');\n }\n\n public function setActivityType(int $playbookCategoryId): self\n {\n $this->setAttribute('playbook_category_id', $playbookCategoryId);\n\n return $this;\n }\n\n public function hasStage(): bool\n {\n return $this->getAttribute('stage') !== null;\n }\n\n public function getStage(): ?Stage\n {\n return $this->getAttribute('stage');\n }\n\n public function getStageId(): ?int\n {\n return $this->getAttribute('stage_id');\n }\n\n public function setStageId(?int $stageId): void\n {\n $this->setAttribute('stage_id', $stageId);\n }\n\n public function hasOpportunity(): bool\n {\n return $this->getAttribute('opportunity') !== null;\n }\n\n public function getOpportunity(): ?Opportunity\n {\n return $this->getAttribute('opportunity');\n }\n\n public function hasContact(): bool\n {\n return $this->getAttribute('contact') !== null;\n }\n\n public function getContact(): ?Contact\n {\n return $this->getAttribute('contact');\n }\n\n public function getContactId(): ?int\n {\n return $this->getAttribute('contact_id');\n }\n\n public function setContactId(?int $contactId): void\n {\n $this->setAttribute('contact_id', $contactId);\n }\n\n public function hasLead(): bool\n {\n return $this->getAttribute('lead') !== null;\n }\n\n public function getLead(): ?Lead\n {\n return $this->getAttribute('lead');\n }\n\n public function getLeadId(): ?int\n {\n return $this->getAttribute('lead_id');\n }\n\n public function setLeadId(?int $leadId): void\n {\n $this->setAttribute('lead_id', $leadId);\n }\n\n public function hasAccount(): bool\n {\n return $this->getAttribute('account') !== null;\n }\n\n public function getAccount(): ?Account\n {\n return $this->getAttribute('account');\n }\n\n public function getAccountId(): ?int\n {\n return $this->getAttribute('account_id');\n }\n\n public function setAccountId(?int $accountId): void\n {\n $this->setAttribute('account_id', $accountId);\n }\n\n /**\n * This method exists to avoid confusion using ->participants() or ->participants. Use the getter instead.\n *\n * @return Collection<int, Participant>|Participant[]\n */\n public function getParticipants(): Collection\n {\n return $this->participants;\n }\n\n /**\n * @deprecated use ParticipantRepository::findParticipantRoomOwner() instead\n */\n public function findParticipantRoomOwner(): ?Participant\n {\n $roomOwnerId = $this->getUserId();\n\n return $this->getParticipants()\n ->filter(static fn (Participant $participant): bool => $participant->isSameUserId($roomOwnerId))\n ->first();\n }\n\n public function hasCrmProviderId(): bool\n {\n return $this->getAttribute('crm_provider_id') !== null;\n }\n\n public function getCrmProviderId(): ?string\n {\n return $this->getAttribute('crm_provider_id');\n }\n\n public function getUserId(): ?int\n {\n return $this->getAttribute('user_id');\n }\n\n public function hasUser(): bool\n {\n return $this->user()->exists();\n }\n\n public function getUser(): User\n {\n return $this->getAttribute('user');\n }\n\n public function getCreatedAt(): Carbon\n {\n return $this->getAttribute('created_at');\n }\n\n public function isInFiniteState(): bool\n {\n return $this->isFiniteState($this->getStatus());\n }\n\n public function isFiniteState(string $status): bool\n {\n $finiteStates = self::FINITE_STATES[$this->getType()] ?? [];\n\n return in_array($status, $finiteStates, true);\n }\n\n public function getParticipant(Authenticatable $user): Participant\n {\n return $this->findParticipant($user);\n }\n\n public function findParticipant(Authenticatable $user): ?Participant\n {\n if ($user instanceof User) {\n /** @var User $user */\n return $this->participants()->where('user_id', '=', $user->getId())->first();\n }\n\n throw new LogicException(sprintf('Unsupported Authenticatable implementation %s', get_class($user)));\n }\n\n public function hasLanguageCode(): bool\n {\n return $this->getAttribute('language') !== null;\n }\n\n public function getLanguageCode(): ?string\n {\n /** @var string|null */\n return $this->getAttribute('language');\n }\n\n public function getLanguageCodeHyphenated(): string\n {\n return str_replace('_', '-', $this->getLanguageCode() ?? '');\n }\n\n public function getLanguageCodeLocale(): string\n {\n [ $language ] = explode('_', $this->getLanguageCode() ?? '');\n\n return $language;\n }\n\n public function setLanguageCode(string $value): self\n {\n return $this->setAttribute('language', $value);\n }\n\n public function hasSource(): bool\n {\n return $this->getAttribute('source') !== null;\n }\n\n public function setSource(?string $source): self\n {\n return $this->setAttribute('source', $source);\n }\n\n public function isSource(string $source): bool\n {\n return $this->getAttribute('source') === $source;\n }\n\n public function getSource(): ?string\n {\n return $this->getAttribute('source');\n }\n\n public function isSourceGong(): bool\n {\n return $this->isSource(self::SOURCE_GONG);\n }\n\n public function getExternalId(): ?string\n {\n return $this->getAttribute('external_id');\n }\n\n public function setExternalId(?string $externalId): self\n {\n return $this->setAttribute('external_id', $externalId);\n }\n\n public function hasExternalId(): bool\n {\n return $this->getAttribute('external_id') !== null;\n }\n\n public function getProvider(): string\n {\n return $this->getAttribute('provider');\n }\n\n public function hasTelephonyProviderId(): bool\n {\n return $this->getAttribute('telephony_provider_id') !== null;\n }\n\n public function getTelephonyProviderId(): ?string\n {\n return $this->getAttribute('telephony_provider_id');\n }\n\n public function setTelephonyProviderId(?string $telephonyProviderId): self\n {\n return $this->setAttribute('telephony_provider_id', $telephonyProviderId);\n }\n\n public function getLocation(): ?string\n {\n return $this->getAttribute('location');\n }\n\n public function setLocation(?string $location): self\n {\n return $this->setAttribute('location', $location);\n }\n\n public function isDeleted(): bool\n {\n return $this->getAttribute('deleted_at') !== null;\n }\n\n /**\n * Check if activity recording is on and activity status is not one of the failed statuses.\n */\n public function canReviewActivity(): bool\n {\n $failedStatuses = self::$enumFailedStatuses;\n\n return (! in_array($this->recording_state, [self::RECORDING_OFF, self::RECORDING_STOPPED], true) &&\n ! in_array($this->status, $failedStatuses, true));\n }\n\n public function hasReasonCodeBotKicked(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_MEETING_BOT_KICKED);\n }\n\n public function hasReasonCodeNotCompliant(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_CONSENT_DENIED);\n }\n\n public function hasTopicTriggers(): bool\n {\n return $this->topicTriggers()->count() !== 0;\n }\n\n public function getTopicTriggers(): Collection\n {\n return $this->topicTriggers;\n }\n\n public function getTopicTriggersSorted(): Collection\n {\n $this->loadMissing([\n 'topicTriggers.participant',\n 'topicTriggers.playbackThemeTopicTrigger',\n 'topicTriggers.playbackThemeTopicTrigger',\n 'topicTriggers.playbackThemeTopicTrigger.playbackThemeTopic',\n 'topicTriggers.playbackThemeTopicTrigger.playbackThemeTopic.playbackTheme',\n ]);\n\n return $this->topicTriggers\n ->sortBy([\n 'playbackThemeTopicTrigger.playbackThemeTopic.playbackTheme.sort',\n 'playbackThemeTopicTrigger.playbackThemeTopic.sort',\n 'playbackThemeTopicTrigger.sort',\n ]);\n }\n\n public function hasQuestions(): bool\n {\n return $this->questions()->exists();\n }\n\n public function getQuestions(): Collection\n {\n return $this->questions;\n }\n\n public function hasValue(): bool\n {\n return $this->getAttribute('value') !== null;\n }\n\n public function getValue(): ?float\n {\n return $this->getAttribute('value');\n }\n\n public function transitionTo(string $newState, callable $callback, ?int $timeout = null): self\n {\n $newState = $this->getWorkflowStateFor(\n $this->getType(),\n $newState\n );\n\n return $this->traitTransitionTo($newState, $callback, $timeout);\n }\n\n public function getWorkflowState(): string\n {\n return $this->getWorkflowStateFor(\n $this->getType(),\n $this->getStatus()\n );\n }\n\n public function getActivityProviderDisplayName(): string\n {\n return \\Cache::remember('activity_provider_display_name-' . $this->getProvider(), 60 * 60 * 24, function () {\n $activityProviderRegistry = app()->make(ActivityProviderRegistry::class);\n\n try {\n return $activityProviderRegistry->get($this->getProvider())->getDisplayName();\n } catch (Exception $exception) {\n return ucfirst($this->getProvider());\n }\n });\n }\n\n private function getWorkflowStateFor(string $activityChannel, string $activityStatus): string\n {\n return sprintf(\n '%s::%s',\n $activityChannel,\n $activityStatus\n );\n }\n\n public function getWorkflow(): array\n {\n $map = [\n self::TYPE_SOFTPHONE => [\n self::STATUS_SCHEDULED => [\n self::STATUS_PENDING,\n self::STATUS_IN_PROGRESS,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n ],\n self::STATUS_PENDING => [\n self::STATUS_IN_PROGRESS,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n ],\n self::STATUS_RINGING => [\n self::STATUS_CANCELLED,\n self::STATUS_FAILED,\n self::STATUS_IN_PROGRESS,\n self::STATUS_BUSY,\n ],\n self::STATUS_IN_PROGRESS => [\n self::STATUS_COMPLETED,\n ],\n ],\n self::TYPE_SOFTPHONE_INBOUND => [\n self::STATUS_RINGING => [\n self::STATUS_IN_PROGRESS,\n self::STATUS_NO_ANSWER,\n self::STATUS_CANCELLED,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n ],\n self::STATUS_IN_PROGRESS => [\n self::STATUS_COMPLETED,\n ],\n ],\n ];\n\n return collect($map)\n ->mapWithKeys(function (array $currentStates, string $activityChannel): array {\n return [\n $activityChannel => collect($currentStates)\n ->mapWithKeys(function (array $possibleStates, $currentState) use ($activityChannel): array {\n $transitionName = $this->getWorkflowStateFor($activityChannel, $currentState);\n\n return [\n $transitionName => array_map(function (string $newState) use ($activityChannel) {\n return $this->getWorkflowStateFor($activityChannel, $newState);\n }, $possibleStates),\n ];\n }),\n ];\n })\n ->reduce(static function (array $carry, Collection $item): array {\n return array_merge($carry, $item->all());\n }, []);\n }\n\n public function hasPosterPath(): bool\n {\n return $this->getAttribute('poster_path') !== null;\n }\n\n public function getPosterPath(): ?string\n {\n return $this->getAttribute('poster_path');\n }\n\n /**\n * Take into account all recording settings and determine if we need to record this activity or not.\n */\n public function shouldRecord(): bool\n {\n return $this->determineRecordingReasonCode() === null;\n }\n\n public function determineRecordingReasonCode(): ?int\n {\n // Conference specific decisions.\n if ($this->isTypeConference()) {\n // If they have manually overridden the recording setting to not record.\n if ($this->hasRecordingPreference() && $this->getRecordingPreference() === false) {\n return self::FLAG_RECORDING_REASON_PREFERENCE_OVERRIDE;\n }\n\n // If they have manually overridden the recording setting to record.\n if ($this->hasRecordingPreference() && $this->getRecordingPreference() === true) {\n return null;\n }\n\n // If their team has disabled recording meetings, don't record.\n if ($this->user->team->isConferenceRecordPreferenceDisabled()) {\n return self::FLAG_RECORDING_REASON_TEAM_AUTOMATIC_DISABLED;\n }\n\n // If the host has disabled recording meetings, don't record.\n if ($this->user->checkConferenceRecordPreference() === false) {\n return self::FLAG_RECORDING_REASON_USER_AUTOMATIC_DISABLED;\n }\n\n // If it was marked internal...\n if ($this->is_internal) {\n // and their team has disabled recording internal meetings, don't record.\n if (\n $this->user->team->isConferenceRecordPreferenceEnabled()\n && ! $this->user->team->isConferenceRecordInternalPreferenceEnabled()\n ) {\n return self::FLAG_RECORDING_REASON_TEAM_INTERNAL_DISABLED;\n }\n\n // and the host has disabled recording internal meetings, don't record.\n if ($this->user->checkConferenceRecordInternalPreference() === false) {\n return self::FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED;\n }\n }\n\n // If it was not scheduled and they disabled internal meetings, we cannot determine if it was internal.\n if ($this->wasScheduled() === false && $this->user->checkConferenceRecordInternalPreference() === false) {\n return self::FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED_UNSCHEDULED;\n }\n }\n\n return null;\n }\n\n public function getRecordingReasonCode(): int\n {\n return $this->getAttribute('recording_reason_code');\n }\n\n public function setRecordingReasonCode(int $recordingReasonCode): self\n {\n $this->setAttribute('recording_reason_code', $recordingReasonCode);\n\n return $this;\n }\n\n // Not used today.\n public function getRecordingReasonString(): ?string\n {\n if ($this->hasRecordingReasonCompliancePrompted()) {\n return Team::COMPLIANCE_MODE_RECORDING_PROMPT;\n }\n\n if ($this->hasRecordingReasonComplianceRestricted()) {\n return Team::COMPLIANCE_MODE_RECORDING_RESTRICT;\n }\n\n if ($this->hasRecordingReasonComplianceRestrictedToOneSideRecording()) {\n return Team::COMPLIANCE_MODE_RECORDING_RESTRICT_ONE_SIDE;\n }\n\n return null;\n }\n\n public function hasRecordingReasonComplianceRestricted(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT);\n }\n\n public function hasRecordingReasonCompliancePrompted(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_COMPLIANCE_PROMPT);\n }\n\n public function hasRecordingReasonComplianceRestrictedToOneSideRecording(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT_ONE_SIDE);\n }\n\n public function getAudioTrack(): ?Track\n {\n /** @var Track|null */\n return $this->tracks()\n ->where('type', '=', Track::TYPE_AUDIO)\n ->first();\n }\n\n public function activeParticipants(): HasMany\n {\n return $this->hasMany(Participant::class)->active();\n }\n\n public function getActiveParticipants(): Eloquent\\Collection\n {\n return $this->getAttribute('activeParticipants');\n }\n\n public function crm(): Eloquent\\Relations\\BelongsTo\n {\n return $this->belongsTo(Configuration::class, 'crm_configuration_id');\n }\n\n public function activitySummaryLogs(): HasMany\n {\n return $this->hasMany(ActivitySummaryLog::class);\n }\n\n public function getCrm(): ?Configuration\n {\n return $this->getAttribute('crm');\n }\n\n public function hasCrmConfiguration(): bool\n {\n return $this->getAttribute('crm') !== null;\n }\n\n public function isProcessed(): ?bool\n {\n return $this->getAttribute('is_processed');\n }\n\n public function hasRecordingPrompt(): bool\n {\n return $this->getAttribute('has_recording_prompt') === true;\n }\n\n public function recalculateAverageScore(): Activity\n {\n $coachingFeedbacksAll = $this->coachingFeedbacks->where('visibility', CoachingFeedback::VISIBLE_TO_ALL);\n\n // Sum scores\n $scoreSum = $coachingFeedbacksAll->pluck('average_score')->sum();\n\n // Calculate average score\n if ($coachingFeedbacksAll->count() > 0) {\n $this->update(['average_score' => $scoreSum / $coachingFeedbacksAll->count()]);\n $this->documentUpdate();\n }\n\n return $this;\n }\n\n public function isOnAir(): bool\n {\n return $this->getAttribute('on_air') === self::ON_AIR_READY || $this->getAttribute('on_air') === self::ON_AIR_STREAMING;\n }\n\n public function setOnAir(int $onAir): self\n {\n $this->setAttribute('on_air', $onAir);\n\n return $this;\n }\n\n public function getOnAir(): ?int\n {\n return $this->getAttribute('on_air');\n }\n\n public function setTitleFromCallData(Call $call): void\n {\n $direction = $call->isOutbound() ? 'to' : 'from';\n\n $party = $this->prospect_name\n ?? $call->getContactName()\n ?? $call->getOtherPartyPhoneNumber()\n ;\n\n $this->update(['title' => sprintf('Call %s %s', $direction, $party)]);\n }\n\n /**\n * @param array{}|array{channels:string|null, format:string|null, type:string|null, status:string|null} $audioParams\n */\n public function createAudioTrack(\n string $telephonyProviderId,\n string $recordingUrl,\n array $audioParams = []\n ): Track {\n return $this->tracks()->updateOrCreate([\n 'telephony_provider_id' => $telephonyProviderId,\n ], [\n 'type' => $audioParams['type'] ?? Track::TYPE_AUDIO,\n 'status' => $audioParams['status'] ?? Track::STATUS_PENDING,\n 'format' => $audioParams['format'] ?? Track::FORMAT_WAV,\n 'provider_content_url' => $recordingUrl,\n 'start_time' => $this->actual_start_time,\n 'end_time' => $this->actual_end_time,\n ]);\n }\n\n public function createTrack(string $telephonyProviderId, array $params): Track\n {\n return $this->tracks()->updateOrCreate(\n [\n 'telephony_provider_id' => $telephonyProviderId,\n ],\n $params\n );\n }\n\n public function createOrganiserParticipant(Call $call): Participant\n {\n $user = $this->getUser();\n\n return $this->updateOrCreateParticipant([\n 'is_ghost' => 0,\n 'name' => $user->name,\n 'email' => $user->email,\n 'phone_number' => phone_e164(null, $call->getUserPhoneNumber()),\n 'enter_time' => $this->actual_start_time,\n 'exit_time' => $this->actual_end_time,\n 'user_id' => $user->id,\n ], false);\n }\n\n public function createProspectParticipant(Call $call): Participant\n {\n // not null 'name' is mandatory here to create a separate participant with 'nameMatching'\n // in case of the same phone_number with the Organiser\n $useNameMatching = $call->getUserPhoneNumber() === $call->getOtherPartyPhoneNumber();\n $defaultName = $useNameMatching ? '' : null;\n\n return $this->updateOrCreateParticipant(data: [\n 'is_ghost' => 0,\n 'name' => $this->prospect->name ?? $defaultName,\n 'email' => $this->prospect->email ?? null,\n 'phone_number' => phone_e164(null, $call->getOtherPartyPhoneNumber()),\n 'enter_time' => $this->actual_start_time,\n 'exit_time' => $this->actual_end_time,\n 'contact_id' => $this->contact_id ?? null,\n 'lead_id' => $this->lead_id ?? null,\n ], enterRoom: false, nameMatching: $useNameMatching);\n }\n\n public function updateParticipants(Participant $organiserParticipant, Participant $prospectParticipant): void\n {\n $this->update([\n 'from_participant_id' => $this->isTypeSoftPhone() ? $organiserParticipant->id : $prospectParticipant->id,\n 'to_participant_id' => $this->isTypeSoftPhone() ? $prospectParticipant->id : $organiserParticipant->id,\n ]);\n }\n\n public function hasProspect(): bool\n {\n return $this->getProspectAttribute() !== null;\n }\n\n public function isPrivate(): bool\n {\n return $this->getAttribute('is_private');\n }\n\n /** Create a new factory instance for the model. */\n protected static function newFactory(): Factory\n {\n return ActivityFactory::new();\n }\n\n public function getUpdatedAt(): Carbon\n {\n return $this->getAttribute('updated_at');\n }\n\n public function getActivitySummaryLogs(): Eloquent\\Collection\n {\n return $this->getAttribute('activitySummaryLogs');\n }\n\n public function hasProspectActivitySummaryLog(): bool\n {\n return $this->getActivitySummaryLogs()->contains(\n 'relation_type',\n ActivitySummaryLog::RELATION_OBJECT_TYPE_PROSPECT\n );\n }\n\n public function getTeam(): Team\n {\n return $this->getUser()->getTeam();\n }\n\n private function getUpdateCrmDataResolver(): UpdateCrmDataResolverInterface\n {\n $factory = app(UpdateCrmDataResolverFactory::class);\n\n return $factory->create($this);\n }\n\n public function getMeetingTrackProviderId(string $type): string\n {\n $label = match ($type) {\n Track::TYPE_VIDEO => 'v',\n Track::TYPE_AUDIO => 'a',\n default => throw new InvalidArgumentJiminnyException('Invalid track type'),\n };\n\n $startTimestamp = $this->getScheduledStartTime()?->getTimestamp();\n $teamId = $this->getTeam()->getId();\n\n return $this->getTelephonyProviderId() . ':' . $label . ':' . $startTimestamp . ':' . $teamId;\n }\n\n /**\n * Get all consent records associated with this activity\n *\n * @return \\Illuminate\\Database\\Eloquent\\Relations\\HasMany\n */\n public function participantConsents(): HasMany\n {\n return $this->hasMany(Participant\\Consent::class);\n }\n\n public function isDiallerCall(): bool\n {\n if ($this->getProvider() === Activity::PROVIDER_UPLOADER) {\n return false;\n }\n\n if (! in_array($this->getType(), [self::TYPE_SOFTPHONE, self::TYPE_SOFTPHONE_INBOUND])) {\n return false;\n }\n\n return $this->getProvider() !== self::PROVIDER_TWILIO;\n }\n\n public function getActivityDateWithFallback(): Carbon\n {\n if ($this->getActualStartTime() !== null) {\n return $this->getActualStartTime();\n }\n\n if ($this->getScheduledStartTime() !== null) {\n return $this->getScheduledStartTime();\n }\n\n return $this->getCreatedAt();\n }\n\n public function getCrmType(): ?string\n {\n // Treat uploader activities as conferences\n if ($this->getProvider() === Activity::PROVIDER_UPLOADER) {\n return Activity::TYPE_CONFERENCE;\n }\n\n return $this->getType();\n }\n}","depth":4,"value":"<?php\n\nnamespace Jiminny\\Models;\n\nuse Carbon\\Carbon;\nuse Database\\Factories\\ActivityFactory;\nuse DateTimeInterface;\nuse Exception;\nuse Illuminate\\Contracts\\Auth\\Authenticatable;\nuse Illuminate\\Database\\Eloquent;\nuse Illuminate\\Database\\Eloquent\\Attributes\\Scope;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsTo;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasMany;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasManyThrough;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasOne;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Auth;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ElasticSearch;\nuse Jiminny\\Component\\MeetingBot;\nuse Jiminny\\Component\\Model\\BitwiseFlagTrait;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Sidekick\\SidekickService;\nuse Jiminny\\Component\\Uuid\\UuidAwareInterface;\nuse Jiminny\\Component\\Workflow;\nuse Jiminny\\Contracts;\nuse Jiminny\\Contracts\\Crm\\ProspectInterface;\nuse Jiminny\\DTO\\ImportCall\\Call;\nuse Jiminny\\Events\\Activities\\ActivityTypeUpdated;\nuse Jiminny\\Events\\Activities\\ActivityUpdated;\nuse Jiminny\\Events\\Activities\\ProspectUpdated;\nuse Jiminny\\Events\\Activities\\StageUpdated;\nuse Jiminny\\Events\\Activities\\StatusUpdated;\nuse Jiminny\\Events\\Activities\\TitleUpdated;\nuse Jiminny\\Exceptions\\InvalidArgumentException as InvalidArgumentJiminnyException;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\RuntimeException;\nuse Jiminny\\Models;\nuse Jiminny\\Models\\Activity\\ActivitySummaryLog;\nuse Jiminny\\Models\\Activity\\ActivityUploadSetting;\nuse Jiminny\\Models\\Activity\\AvailabilityNotification;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Log;\nuse Jiminny\\Models\\Activity\\Message;\nuse Jiminny\\Models\\Activity\\Moment;\nuse Jiminny\\Models\\Activity\\Note;\nuse Jiminny\\Models\\Activity\\ParticipantSpeech;\nuse Jiminny\\Models\\Activity\\Play;\nuse Jiminny\\Models\\Activity\\Question;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\Activity\\Snapshot;\nuse Jiminny\\Models\\Activity\\Stats;\nuse Jiminny\\Models\\Activity\\SubscriptionSet;\nuse Jiminny\\Models\\Activity\\TopicTrigger;\nuse Jiminny\\Models\\Activity\\Transcription;\nuse Jiminny\\Models\\Calendar\\CalendarEvent;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\ElasticSearch\\ActivityElasticSearchTrait;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Participant\\Connection;\nuse Jiminny\\Models\\Playlist\\Activity as PlaylistActivity;\nuse Jiminny\\Services\\Activity\\ActivityProviderRegistry;\nuse Jiminny\\Services\\Activity\\Import\\DataResolvers\\UpdateCrmDataByStrategy;\nuse Jiminny\\Services\\Activity\\Import\\DataResolvers\\UpdateCrmDataResolverFactory;\nuse Jiminny\\Services\\Activity\\Import\\DataResolvers\\UpdateCrmDataResolverInterface;\nuse Jiminny\\Traits\\Enums;\nuse Jiminny\\Traits\\RequiresUUID;\nuse Jiminny\\Utils\\CurrencyFormatter;\nuse NumberFormatter;\n\nuse function in_array;\n\n/**\n * Jiminny\\Models\\Activity\n *\n * @property null|int $auto_score filled from ES hydrator, not in DB!\n * @property-read Account|null $account\n * @property-read CalendarEvent|null $calendarEvent\n * @property-read Contact|null $contact\n * @property-read Lead|null $lead\n * @property-read Opportunity|null $opportunity\n * @property-read Stage|null $stage\n * @property int $id\n * @property mixed|null $uuid\n * @property string|null $source\n * @property string|null $external_id\n * @property string $provider\n * @property string|null $location\n * @property string|null $telephony_provider_id\n * @property int|null $from_participant_id\n * @property int|null $to_participant_id\n * @property int|null $device_id\n * @property string|null $type\n * @property int|null $playbook_category_id\n * @property int $user_id\n * @property int|null $lead_id\n * @property int|null $account_id\n * @property int|null $contact_id\n * @property int|null $opportunity_id\n * @property int|null $stage_id\n * @property string|null $value\n * @property int|null $crm_configuration_id\n * @property string|null $crm_provider_id\n * @property string|null $language\n * @property int|null $transcription_id\n * @property int $duration\n * @property string $status\n * @property int|null $on_air\n * @property int|null $calendar_event_id\n * @property string $recording_state\n * @property bool|null $recording_preference\n * @property int $recording_reason_code\n * @property int $summary_reminder_sent\n * @property \\Illuminate\\Support\\Carbon|null $log_reminder_sent_at\n * @property \\Illuminate\\Support\\Carbon|null $organizer_notified_at\n * @property bool|null $has_recording_prompt\n * @property bool $is_internal\n * @property int $is_locked\n * @property int $is_recording\n * @property bool|null $is_processed\n * @property bool $is_private\n * @property bool $is_instant_invite\n * @property string|null $poster_path\n * @property string|null $summary\n * @property string|null $title\n * @property string|null $description\n * @property \\Illuminate\\Support\\Carbon|null $scheduled_start_time\n * @property \\Illuminate\\Support\\Carbon|null $scheduled_end_time\n * @property \\Illuminate\\Support\\Carbon|null $actual_start_time\n * @property \\Illuminate\\Support\\Carbon|null $actual_end_time\n * @property int|null $uploaded_by\n * @property \\Illuminate\\Support\\Carbon|null $deleted_at\n * @property \\Illuminate\\Support\\Carbon|null $created_at\n * @property \\Illuminate\\Support\\Carbon|null $updated_at\n * @property string|null $average_score\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant> $activeParticipants\n * @property-read int|null $active_participants_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Scorecard\\ActivityScorecardRuleTrigger> $activityScorecardRuleTriggers\n * @property-read int|null $activity_scorecard_rule_triggers_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Scorecard\\ActivityScorecardRule> $activityScorecardRules\n * @property-read int|null $activity_scorecard_rules_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, AvailabilityNotification> $availabilityNotifications\n * @property-read int|null $availability_notifications_count\n * @property-read \\Jiminny\\Models\\PlaybookCategory|null $category\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, CoachRequest> $coachRequests\n * @property-read int|null $coach_requests_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\CoachingFeedback> $coachingFeedbacks\n * @property-read int|null $coaching_feedbacks_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Message> $coachingMessages\n * @property-read int|null $coaching_messages_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Comment> $comments\n * @property-read int|null $comments_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Connection> $connections\n * @property-read int|null $connections_count\n * @property-read Configuration|null $crm\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, FieldData> $data\n * @property-read int|null $data_count\n * @property-read \\Jiminny\\Models\\Device|null $device\n * @property-read \\Kalnoy\\Nestedset\\Collection<int, \\Jiminny\\Models\\Playlist> $favoritePlaylists\n * @property-read int|null $favorite_playlists_count\n * @property-read \\Jiminny\\Models\\Participant|null $from\n * @property-read string|null $activity_title\n * @property-read mixed $comment_count\n * @property-read mixed $duration_for_humans\n * @property-read string $duration_for_humans_short\n * @property-read int $favorite_count\n * @property-read mixed $favorites_count\n * @property-read mixed $formatted_value\n * @property-read string $id_string\n * @property-read \\Jiminny\\Models\\Participant|null $organizer\n * @property-read mixed $play_count\n * @property-read int|null $plays_count\n * @property-read ?ProspectInterface $prospect\n * @property-read string|null $prospect_name\n * @property-read mixed $prospect_type\n * @property-read mixed $share_count\n * @property-read int|null $shares_count\n * @property-read int|null $tracks_with_telephony_count\n * @property-read int|null $visible_comments_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\CoachingFeedback> $latestCoachingFeedbacks\n * @property-read int|null $latest_coaching_feedbacks_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Log> $logs\n * @property-read int|null $logs_count\n * @property-read \\Jiminny\\Models\\Track|null $masterTrack\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Message> $messages\n * @property-read int|null $messages_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Moment> $moments\n * @property-read int|null $moments_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Note> $notes\n * @property-read int|null $notes_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant\\Share> $participantShares\n * @property-read int|null $participant_shares_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, ParticipantSpeech> $participantSpeeches\n * @property-read int|null $participant_speeches_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant\\ParticipantStats> $participantStats\n * @property-read int|null $participant_stats_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant> $participants\n * @property-read int|null $participants_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, PlaylistActivity> $playlistActivities\n * @property-read int|null $playlist_activities_count\n * @property-read \\Kalnoy\\Nestedset\\Collection<int, \\Jiminny\\Models\\Playlist> $playlists\n * @property-read int|null $playlists_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Play> $plays\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Question> $questions\n * @property-read int|null $questions_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Session> $sessions\n * @property-read int|null $sessions_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Share> $shares\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Snapshot> $snapshots\n * @property-read int|null $snapshots_count\n * @property-read Stats|null $stats\n * @property-read \\Jiminny\\Models\\Participant|null $to\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, TopicTrigger> $topicTriggers\n * @property-read int|null $topic_triggers_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Track> $tracks\n * @property-read int|null $tracks_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Track> $tracksWithTelephony\n * @property-read Transcription|null $transcription\n * @property-read \\Jiminny\\Models\\User $user\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Comment> $visibleComments\n *\n * @method static \\Illuminate\\Database\\Eloquent\\Collection<int, static> all($columns = ['*'])\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity chunkByIdDesc($count, callable $callback, $column = null, $alias = null)\n * @method static \\Database\\Factories\\ActivityFactory factory(...$parameters)\n * @method static \\Illuminate\\Database\\Eloquent\\Collection<int, static> get($columns = ['*'])\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity heldBetween(\\Carbon\\Carbon $start, \\Carbon\\Carbon $end)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity idOrUuId($idOrUuid, bool $first = true)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity newModelQuery()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity newQuery()\n * @method static Builder|Activity onlyTrashed()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity query()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity scheduledBetween(\\Carbon\\Carbon $start, \\Carbon\\Carbon $end)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity inOpenDeals()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity notInOpenDeals()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity forTeam(int $teamId)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity search(callable $searchQuery, $key = null, $sortByResults = true)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity uuid(string $uuid, bool $first = true)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereAccountId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereActualEndTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereActualStartTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereAverageScore($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCalendarEventId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereContactId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCreatedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCrmConfigurationId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCrmProviderId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDeletedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDescription($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDeviceId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDuration($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereFromParticipantId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereHasRecordingPrompt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsInstantInvite($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsInternal($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsLocked($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsPrivate($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsProcessed($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsRecording($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLanguage($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLeadId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLocation($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLogReminderSentAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereOnAir($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereOpportunityId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereOrganizerNotifiedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity wherePlaybookCategoryId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity wherePosterPath($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereProvider($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereRecordingPreference($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereRecordingReasonCode($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereRecordingState($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereScheduledEndTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereScheduledStartTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereSource($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereExternalId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereStageId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereStatus($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereSummary($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereSummaryReminderSent($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereTelephonyProviderId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereTitle($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereToParticipantId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereTranscriptionId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereType($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUpdatedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUploadedBy($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUserId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUuid($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereValue($value)\n * @method static Builder|Activity withTrashed()\n * @method static Builder|Activity withoutTrashed()\n *\n * @mixin \\Eloquent\n */\nclass Activity extends Model implements\n ElasticSearch\\Contract\\Searchable,\n Workflow\\Workflow\\WorkflowAwareInterface,\n Models\\Contracts\\ActivityContract,\n Contracts\\Model\\ActivityInterface,\n UuidAwareInterface\n{\n use HasFactory;\n\n use Enums;\n use SoftDeletes;\n use RequiresUUID;\n use BitwiseFlagTrait;\n use ElasticSearch\\Model\\Searchable;\n use ActivityElasticSearchTrait;\n\n use Workflow\\Workflow\\WorkflowAware {\n transitionTo as traitTransitionTo;\n }\n\n public const int FLAG_RECORDING_REASON_DEFAULT = 0;\n\n // Recording Prompted but never started\n public const int FLAG_RECORDING_REASON_COMPLIANCE_PROMPT = 1;\n public const int FLAG_RECORDING_REASON_COMPLIANCE_RESUMED = 2;\n public const int FLAG_RECORDING_REASON_NO_AUDIO = 3;\n\n // Recording Disabled by Organization\n public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT = 4;\n\n // Recording was restricted to one-side recordings only\n public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT_ONE_SIDE = 8;\n\n // Recording was not started because it was internal and team setting disabled that.\n public const int FLAG_RECORDING_REASON_TEAM_INTERNAL_DISABLED = 16;\n\n // Recording was not started because it was internal and user setting disabled that.\n public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED = 32;\n\n // Recording was not started because user setting disabled automatic recording.\n public const int FLAG_RECORDING_REASON_USER_AUTOMATIC_DISABLED = 64;\n\n // Recording was not started because team setting disabled automatic recording.\n public const int FLAG_RECORDING_REASON_TEAM_AUTOMATIC_DISABLED = 128;\n\n // Recording was not started because user has overriden default.\n public const int FLAG_RECORDING_REASON_PREFERENCE_OVERRIDE = 256;\n\n // Recording was not started because they don't want internal, and this meeting was not scheduled/imported in time.\n public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED_UNSCHEDULED = 512;\n\n // Recording was not started because their team setting does excludes the meeting type.\n public const int FLAG_RECORDING_REASON_UNSUPPORTED_TYPE = 1024;\n\n // Recording was not started because the external provider disabled it (or recording is missing etc).\n public const int FLAG_RECORDING_REASON_EXTERNALLY_DISABLED = 2048;\n\n // Recording was stopped externally (\"exit-meeting\" Pusher event)\n public const int FLAG_RECORDING_REASON_STOPPED_EXTERNALLY = 384;\n\n // Recording couldn't be started due to Zoom hosting conflict error\n public const int FLAG_RECORDING_REASON_HOSTING_CONFLICT = 448;\n\n // meeting.failed event with reason code BOT_DENIED_FROM_LOBBY\n public const int FLAG_RECORDING_REASON_MEETING_BOT_DENIED_FROM_LOBBY = 4096;\n\n // meeting.failed event with reason code LOBBY_TIMEOUT\n public const int FLAG_RECORDING_REASON_MEETING_BOT_LOBBY_TIMEOUT = 8192;\n\n // meeting.failed event with reason code BOT_KICKED\n public const int FLAG_RECORDING_REASON_MEETING_BOT_KICKED = 16384;\n\n // meeting.failed event with reason code UNKNOWN\n public const int FLAG_RECORDING_REASON_MEETING_BOT_UNKNOWN = 32768;\n\n public const int FLAG_RECORDING_REASON_CONSENT_DENIED = 65536;\n\n // Invalid meeting (e.g. URL is invalid, or the meeting is not found)\n public const int FLAG_RECORDING_REASON_MEETING_BOT_INVALID = 131072;\n\n // The host stopped the recording.\n public const int FLAG_RECORDING_REASON_USER_STOPPED = 262144;\n\n // Recording was not started because an alternative vendor disabled it (or overrode it).\n public const int FLAG_RECORDING_REASON_VENDOR_OVERRIDE = 1048576;\n\n // Login required meeting.failed code\n public const int FLAG_RECORDING_REASON_LOGIN_REQUIRED = 524288;\n\n // Password for meeting was not provided - meeting.failed code\n public const int FLAG_RECORDING_REASON_MEETING_PASSWORD_NOT_PROVIDED = 2097152;\n\n // meeting.failed - when the meeting is locked\n public const int FLAG_RECORDING_REASON_MEETING_IS_LOCKED = 4194304;\n\n // max recording duration reached\n public const int FLAG_RECORDING_REASON_MAX_DURATION_REACHED = 8388608;\n\n // recording size is too small\n public const int FLAG_RECORDING_REASON_EMPTY_RECORDING = 16777216;\n\n // meeting.failed - when bot is redirected to sign in page multiple times\n public const int FLAG_RECORDING_REASON_MAX_RESTART_COUNT_IS_REACHED = 33554432;\n\n // meeting.failed event with reason code CONNECTION_LOST\n public const int FLAG_RECORDING_REASON_MEETING_BOT_CONNECTION_LOST = 67108864;\n\n // recording is corrupted.\n public const int FLAG_RECORDING_REASON_MEDIA_FILE_UNSUPPORTED_MIME_TYPE = 134217728;\n\n // meeting ended in lobby\n public const int FLAG_RECORDING_REASON_MEETING_ENDED_IN_LOBBY = 268435456;\n\n // meeting not started\n public const int FLAG_RECORDING_REASON_REASON_MEETING_NOT_STARTED = 536870912;\n\n // unfinished zoom custom disclaimer\n public const int FLAG_RECORDING_REASON_FEATURE_RULE_NOT_FOUND_ERROR = 1073741824;\n\n // recording download failed - server error\n public const int FLAG_RECORDING_REASON_SERVER_ERROR = 2147483648;\n\n // recording download failed - client code 404\n public const int FLAG_RECORDING_REASON_NOT_FOUND = 2147483649;\n\n // recording download failed - client code 401, 403\n public const int FLAG_RECORDING_REASON_ACCESS_DENIED = 2147483650;\n\n // recording download failed - client code 429\n public const int FLAG_RECORDING_REASON_TOO_MANY_REQUESTS = 2147483651;\n\n // recording download failed - unknown client error\n public const int FLAG_RECORDING_REASON_CLIENT_ERROR = 2147483652;\n\n // recording download failed - unknown error\n public const int FLAG_RECORDING_REASON_UNKNOWN_ERROR = 2147483653;\n\n // It has been setup ahead of time through calendar\n public const string STATUS_SCHEDULED = 'scheduled';\n\n // It is awaiting audio.\n public const string STATUS_PENDING = 'pending';\n\n // Participant(s) dialed in, awaiting organizer.\n public const string STATUS_RINGING = 'ringing';\n\n // Call is in progress.\n public const string STATUS_IN_PROGRESS = 'in-progress';\n\n // It has ended.\n public const string STATUS_COMPLETED = 'completed';\n\n // Cancelled prior to starting.\n public const string STATUS_CANCELLED = 'canceled';\n\n public const string STATUS_DUPLICATED = 'duplicated'; // duplicated conference\n\n public const string STATUS_STARTING_SOON = 'starting-soon';\n\n public const string STATUS_BOT_CREATE_SENT = 'bot-create-sent';\n\n public const string STATUS_BOT_INSTANCE_WORKER_ASSIGNED = 'worker-assigned';\n\n public const string STATUS_BOT_INSTANCE_STARTED = 'bot-started';\n\n // When bot instance is waiting in lobby\n public const string STATUS_BOT_INSTANCE_WAITING_LOBBY = 'bot-waiting';\n\n public const string STATUS_BUSY = 'busy';\n public const string STATUS_NO_ANSWER = 'no-answer';\n public const string STATUS_FAILED = 'failed'; // Used by SMS too\n\n // SMS related\n public const string STATUS_ACCEPTED = 'accepted';\n public const string STATUS_QUEUED = 'queued';\n public const string STATUS_SENDING = 'sending';\n public const string STATUS_SENT = 'sent';\n public const string STATUS_DELIVERED = 'delivered';\n public const string STATUS_UNDELIVERED = 'undelivered';\n public const string STATUS_RECEIVING = 'receiving';\n public const string STATUS_RECEIVED = 'received';\n public const string STATUS_RESENT = 'resent';\n\n public const array SMS_STATUSES = [\n Activity::STATUS_RECEIVED,\n Activity::STATUS_SENT,\n Activity::STATUS_DELIVERED,\n ];\n\n public const array SOFT_PHONE_CONFERENCE_STATUSES = [\n Activity::STATUS_IN_PROGRESS,\n Activity::STATUS_COMPLETED,\n ];\n\n // @todo refactor prefix from `TYPE_` to `CHANNEL_`\n public const string TYPE_SOFTPHONE = 'softphone';\n public const string TYPE_SOFTPHONE_INBOUND = 'softphone-inbound';\n public const string TYPE_CONFERENCE = 'conference';\n public const string TYPE_SMS_INBOUND = 'sms-inbound';\n public const string TYPE_SMS_OUTBOUND = 'sms-outbound';\n public const string TYPE_EMAIL_INBOUND = 'email-inbound';\n public const string TYPE_EMAIL_OUTBOUND = 'email-outbound';\n\n public const array CHANNELS = [\n self::TYPE_SOFTPHONE,\n self::TYPE_SOFTPHONE_INBOUND,\n self::TYPE_CONFERENCE,\n self::TYPE_SMS_INBOUND,\n self::TYPE_SMS_OUTBOUND,\n self::TYPE_EMAIL_INBOUND,\n self::TYPE_EMAIL_OUTBOUND,\n ];\n\n public const array PLAYABLE_CHANNELS = [\n self::TYPE_SOFTPHONE,\n self::TYPE_SOFTPHONE_INBOUND,\n self::TYPE_CONFERENCE,\n ];\n\n // Recording States\n public const string RECORDING_OFF = 'off'; // Default state\n public const string RECORDING_IN_PROGRESS = 'in-progress';\n public const string RECORDING_PAUSED = 'paused';\n public const string RECORDING_STOPPED = 'stopped'; // To never be resumed.\n public const string RECORDING_RECORDED = 'recorded'; // At least some portion of it was recorded.\n public const string RECORDING_FAILED = 'failed'; // Recording was attempted but failed for some reason.\n\n // Live Stream States\n public const int ON_AIR_DEFAULT = 0;\n public const int ON_AIR_READY = 1;\n public const int ON_AIR_PREPARING = 2;\n public const int ON_AIR_STREAMING = 3;\n public const int ON_AIR_FINISHED = 4;\n public const int ON_AIR_NOT_STREAMED = 5;\n public const int ON_AIR_ERROR = -1;\n\n public const string SOURCE_GONG = 'gong';\n public const string SOURCE_CHORUS = 'chorus';\n public const string SOURCE_OUTLOOK = 'outlook';\n public const string SOURCE_GOOGLE = 'google';\n\n // Activity Providers\n public const string PROVIDER_TWILIO = 'twilio'; // XXX: This is run via the Jiminny Provider.\n public const string PROVIDER_OUTREACH = 'outreach';\n public const string PROVIDER_ZOOM_BOT = 'zoom-bot';\n public const string PROVIDER_SALESLOFT = 'salesloft';\n public const string PROVIDER_GOOGLE = 'google';\n public const string PROVIDER_AIRCALL = 'aircall';\n public const string PROVIDER_JUSTCALL = 'justcall';\n public const string PROVIDER_GOOGLE_MEET = 'google-meet';\n public const string PROVIDER_GONG = 'gong';\n public const string PROVIDER_HUBSPOT = 'hubspot';\n public const string PROVIDER_CLOSE = 'close';\n public const string PROVIDER_TEAMS = 'ms-teams';\n public const string PROVIDER_SALESFORCE = 'salesforce';\n public const string PROVIDER_GROOVE = 'groove';\n public const string PROVIDER_XANT = 'xant';\n public const string PROVIDER_OFFICE = 'office';\n public const string PROVIDER_NATTERBOX = 'natterbox';\n public const string PROVIDER_RINGCENTRAL = 'ringcentral';\n public const string PROVIDER_RINGCENTRAL_VIDEO = 'ringcentral-video';\n public const string PROVIDER_GOTOMEETING = 'go-to-meeting';\n public const string PROVIDER_DEMODESK = 'demo-desk';\n public const string PROVIDER_DIALPAD = 'dialpad';\n public const string PROVIDER_ZOOM_PHONE = 'zoom-phone';\n public const string PROVIDER_CLOUDCALL = 'cloudcall';\n public const string PROVIDER_CLOUDCALL_US = 'cloudcall-us';\n public const string PROVIDER_EIGHT_BY_EIGHT = 'eight-by-eight'; // \"8x8\" UK\n public const string PROVIDER_EIGHT_BY_EIGHT_CA = 'eight-by-eight-ca'; // \"8x8\" Canada\n public const string PROVIDER_EIGHT_BY_EIGHT_AP = 'eight-by-eight-ap'; // \"8x8\" Australia\n public const string PROVIDER_EIGHT_BY_EIGHT_US_EAST = 'eight-by-eight-use'; // \"8x8\" US East\n public const string PROVIDER_EIGHT_BY_EIGHT_US_WEST = 'eight-by-eight-usw'; // \"8x8\" US West\n public const string PROVIDER_CONNECT_AND_SELL = 'connect-and-sell';\n public const string PROVIDER_CLOUD_TALK = 'cloud-talk';\n public const string PROVIDER_AMAZON_CONNECT = 'amazon-connect';\n public const string PROVIDER_VONAGE = 'vonage';\n public const string PROVIDER_MIGRATOR = 'migrator';\n public const string PROVIDER_UPLOADER = 'uploader';\n public const string PROVIDER_TALKDESK = 'talkdesk';\n public const string PROVIDER_TWILIO_FLEX = 'twilio-flex';\n public const string PROVIDER_TWILIO_FLEX_DIRECT = 'twilio-flex-direct';\n public const string PROVIDER_TWILIO_VIDEO = 'twilio-video';\n public const string PROVIDER_AVAYA = 'avaya';\n public const string PROVIDER_TELUS = 'telus';\n public const string PROVIDER_FIVE_NINE = 'five-nine';\n public const string PROVIDER_APOLLO = 'apollo';\n public const string PROVIDER_ORUM = 'orum';\n public const string PROVIDER_BLOOBIRDS = 'bloobirds';\n\n /**\n * @const API_PROVIDERS\n * A list of integrations that import calls via API instead of webhooks\n */\n public const array API_PROVIDERS = [\n self::PROVIDER_OUTREACH,\n self::PROVIDER_SALESLOFT,\n self::PROVIDER_HUBSPOT,\n self::PROVIDER_GROOVE,\n self::PROVIDER_XANT,\n self::PROVIDER_NATTERBOX,\n self::PROVIDER_CLOUDCALL,\n self::PROVIDER_CLOUDCALL_US,\n self::PROVIDER_EIGHT_BY_EIGHT,\n self::PROVIDER_EIGHT_BY_EIGHT_CA,\n self::PROVIDER_EIGHT_BY_EIGHT_AP,\n self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,\n self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,\n self::PROVIDER_CONNECT_AND_SELL,\n self::PROVIDER_CLOUD_TALK,\n self::PROVIDER_AMAZON_CONNECT,\n self::PROVIDER_VONAGE,\n self::PROVIDER_TALKDESK,\n self::PROVIDER_TWILIO_VIDEO,\n self::PROVIDER_TWILIO_FLEX,\n self::PROVIDER_TWILIO_FLEX_DIRECT,\n self::PROVIDER_FIVE_NINE,\n self::PROVIDER_APOLLO,\n self::PROVIDER_ORUM,\n self::PROVIDER_BLOOBIRDS,\n self::PROVIDER_RINGCENTRAL,\n self::PROVIDER_AVAYA,\n self::PROVIDER_TELUS,\n ];\n\n public const array FINITE_STATES = [\n self::TYPE_SOFTPHONE => [\n self::STATUS_COMPLETED,\n self::STATUS_FAILED,\n self::STATUS_NO_ANSWER,\n self::STATUS_BUSY,\n ],\n self::TYPE_SOFTPHONE_INBOUND => [\n self::STATUS_COMPLETED,\n self::STATUS_FAILED,\n self::STATUS_NO_ANSWER,\n self::STATUS_BUSY,\n ],\n self::TYPE_CONFERENCE => self::FINITE_STATES_CONFERENCE,\n ];\n\n public const array FINITE_STATES_CONFERENCE = [\n self::STATUS_COMPLETED,\n self::STATUS_FAILED,\n self::STATUS_CANCELLED,\n ];\n\n public const array MEETING_BOT_JOIN_ATTEMPTED = [\n self::STATUS_BOT_INSTANCE_WAITING_LOBBY,\n self::STATUS_BOT_INSTANCE_STARTED,\n ];\n\n public static array $enumStatuses = [\n self::STATUS_SCHEDULED,\n self::STATUS_PENDING,\n self::STATUS_RINGING,\n self::STATUS_IN_PROGRESS,\n self::STATUS_COMPLETED,\n self::STATUS_CANCELLED,\n self::STATUS_BUSY,\n self::STATUS_NO_ANSWER,\n self::STATUS_FAILED,\n self::STATUS_ACCEPTED,\n self::STATUS_QUEUED,\n self::STATUS_SENDING,\n self::STATUS_SENT,\n self::STATUS_RESENT,\n self::STATUS_DELIVERED,\n self::STATUS_UNDELIVERED,\n self::STATUS_RECEIVING,\n self::STATUS_RECEIVED,\n self::STATUS_BOT_INSTANCE_WAITING_LOBBY,\n self::STATUS_STARTING_SOON,\n self::STATUS_BOT_INSTANCE_WORKER_ASSIGNED,\n self::STATUS_BOT_INSTANCE_STARTED,\n self::STATUS_DUPLICATED,\n ];\n\n public static array $enumProviders = [\n self::PROVIDER_TWILIO,\n self::PROVIDER_OUTREACH,\n self::PROVIDER_ZOOM_BOT,\n self::PROVIDER_SALESLOFT,\n self::PROVIDER_AIRCALL,\n self::PROVIDER_JUSTCALL,\n self::PROVIDER_GOOGLE_MEET,\n self::PROVIDER_GONG,\n self::PROVIDER_HUBSPOT,\n self::PROVIDER_CLOSE,\n self::PROVIDER_TEAMS,\n self::PROVIDER_SALESFORCE,\n self::PROVIDER_GROOVE,\n self::PROVIDER_XANT,\n self::PROVIDER_GOOGLE,\n self::PROVIDER_OFFICE,\n self::PROVIDER_NATTERBOX,\n self::PROVIDER_RINGCENTRAL,\n self::PROVIDER_RINGCENTRAL_VIDEO,\n self::PROVIDER_GOTOMEETING,\n self::PROVIDER_DEMODESK,\n self::PROVIDER_DIALPAD,\n self::PROVIDER_ZOOM_PHONE,\n self::PROVIDER_CLOUDCALL,\n self::PROVIDER_CLOUDCALL_US,\n self::PROVIDER_EIGHT_BY_EIGHT,\n self::PROVIDER_EIGHT_BY_EIGHT_CA,\n self::PROVIDER_EIGHT_BY_EIGHT_AP,\n self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,\n self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,\n self::PROVIDER_CONNECT_AND_SELL,\n self::PROVIDER_CLOUD_TALK,\n self::PROVIDER_AMAZON_CONNECT,\n self::PROVIDER_VONAGE,\n self::PROVIDER_TALKDESK,\n self::PROVIDER_TWILIO_FLEX,\n self::PROVIDER_TWILIO_FLEX_DIRECT,\n self::PROVIDER_TWILIO_VIDEO,\n self::PROVIDER_AVAYA,\n self::PROVIDER_TELUS,\n self::PROVIDER_FIVE_NINE,\n self::PROVIDER_APOLLO,\n self::PROVIDER_ORUM,\n self::PROVIDER_BLOOBIRDS,\n ];\n\n public static $enumRecordingStates = [\n self::RECORDING_OFF, // Default state\n self::RECORDING_IN_PROGRESS,\n self::RECORDING_PAUSED,\n self::RECORDING_STOPPED,\n self::RECORDING_RECORDED,\n self::RECORDING_FAILED,\n ];\n\n // @Important:\n // This collection is not used anywhere, and is fully duplicated by the Channels const.\n // Validate if it is referred somehow via the enum trait, and if not, remove it entirely.\n // An even better strategy will be to move all those constants to a dedicated class\n protected array $enumTypes = [\n self::TYPE_SOFTPHONE,\n self::TYPE_SOFTPHONE_INBOUND,\n self::TYPE_CONFERENCE,\n self::TYPE_SMS_INBOUND,\n self::TYPE_SMS_OUTBOUND,\n self::TYPE_EMAIL_INBOUND,\n self::TYPE_EMAIL_OUTBOUND,\n ];\n\n protected static $enumFailedStatuses = [\n self::STATUS_NO_ANSWER,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n self::STATUS_CANCELLED,\n ];\n\n protected $table = 'activities';\n\n protected $fillable = [\n // Type of activity.\n 'type', // @todo refactor to `channel`\n // The activity type.\n 'playbook_category_id',\n // User who hosts the activity.\n 'user_id',\n // Related Lead record (if applicable)\n 'lead_id',\n // Related Account record (if applicable)\n 'account_id',\n // Related Contact record (if applicable)\n 'contact_id',\n // Related Opportunity record (if applicable)\n 'opportunity_id',\n // Stage of activity.\n 'stage_id',\n // Value of opportunity.\n 'value',\n // If the activity relates to a CRM task.\n 'crm_provider_id',\n // If the activity was created through an external device.\n 'device_id',\n // the activity's language code\n 'language',\n // transcription id\n 'transcription_id',\n // Duration of the call, with microseconds precision.\n 'duration',\n // One of enumStatuses above.\n 'status',\n // Have we reminded them to log the call?\n 'log_reminder_sent_at',\n // If activity is private or inter-org, flagged here.\n 'is_internal',\n // Managers and above can mark a call as private, to exclude it from other team members\n 'is_private',\n 'is_processed',\n // Boolean for this activity being instant invite handled.\n 'is_instant_invite',\n // If activity is in recording state, flagged here.\n 'recording_state',\n // If activity recording is overidden from default.\n 'recording_preference',\n // if recording did (not) happen, why that is\n 'recording_reason_code',\n // Average score, updated during\n 'average_score',\n // Summary that the organizer has taken after the call.\n 'summary',\n // Subject of the activity, usually taken from calendar event.\n 'title',\n // Description of the activity, usually taken from calendar event.\n 'description',\n // Start time, usually taken from calendar event.\n 'scheduled_start_time',\n // End time, usually taken from calendar event.\n 'scheduled_end_time',\n // When the call actually started.\n 'actual_start_time',\n // When the call actually ended.\n 'actual_end_time',\n // SMS: Message reference\n 'telephony_provider_id',\n // SMS: Participant who sent message\n 'from_participant_id',\n // SMS: Participant who should receive the message\n 'to_participant_id',\n // When an external guest joins an organizers meeting room and the organizer is not present,\n // send them an SMS notification that someone has joined.\n 'organizer_notified_at',\n // where was the activity imported from\n 'source',\n // The id in the source system (e.g. the bot id in Recall.ai)\n 'external_id',\n // The provider, by default it is twilio.\n 'provider',\n // Meeting location url\n 'location',\n // The snapshot for displaying a poster image.\n 'poster_path',\n 'crm_configuration_id',\n // If there is an automated message that the conversation is being recorded\n 'has_recording_prompt',\n // If the activity is being live-streamed\n 'on_air',\n 'calendar_event_id',\n ];\n\n protected $appends = [\n 'id_string',\n 'organizer',\n ];\n\n protected $hidden = [\n 'uuid',\n ];\n\n protected $visible = [\n 'id_string',\n 'type',\n 'duration',\n 'average_score',\n 'status',\n 'log_reminder_sent_at',\n 'title',\n 'description',\n 'is_internal',\n 'scheduled_start_time',\n 'scheduled_end_time',\n 'actual_start_time',\n 'actual_end_time',\n 'user',\n 'category',\n 'account',\n 'contact',\n 'opportunity',\n 'lead',\n 'stage',\n 'stats',\n 'participants',\n 'playlists',\n 'tracks',\n 'comments',\n 'plays',\n 'coachingFeedbacks',\n 'shares',\n 'favorites',\n 'language',\n 'transcription',\n 'is_private',\n 'is_instant_invite',\n 'on_air',\n 'calendar_event_id',\n ];\n\n protected function casts(): array\n {\n return [\n 'scheduled_start_time' => 'datetime',\n 'scheduled_end_time' => 'datetime',\n 'actual_start_time' => 'datetime',\n 'actual_end_time' => 'datetime',\n 'organizer_notified_at' => 'datetime',\n 'log_reminder_sent_at' => 'datetime',\n 'is_internal' => 'boolean',\n 'duration' => 'integer',\n 'average_score' => 'decimal:2',\n 'is_private' => 'boolean',\n 'is_processed' => 'boolean',\n 'is_instant_invite' => 'boolean',\n 'value' => 'decimal:2',\n 'recording_preference' => 'boolean',\n 'recording_reason_code' => 'integer',\n 'has_recording_prompt' => 'boolean',\n 'on_air' => 'integer',\n ];\n }\n\n protected static function boot()\n {\n parent::boot();\n\n static::updated(static function (Activity $activity) {\n // If activity is about to start (pending, ringing, in-progress) or event is scheduled in less than 1 week\n if (in_array($activity->status, [Activity::STATUS_PENDING, Activity::STATUS_RINGING, Activity::STATUS_IN_PROGRESS], true) ||\n ($activity->scheduled_start_time && (int) $activity->scheduled_start_time->diffInWeeks(new Carbon(), true) < 1)) {\n if ($activity->isDirty('status')) {\n event(new StatusUpdated($activity));\n }\n\n if ($activity->isDirty('stage_id')) {\n event(new StageUpdated($activity));\n }\n\n if ($activity->isDirty(['lead_id', 'account_id', 'contact_id'])) {\n event(new ProspectUpdated($activity));\n }\n\n if ($activity->isDirty('opportunity_id')) {\n event(new ActivityUpdated($activity, 'activity.opportunity-updated', Auth::user()));\n }\n\n if ($activity->isDirty('title')) {\n event(new TitleUpdated($activity));\n }\n }\n\n if ($activity->isDirty('playbook_category_id')) {\n event(new ActivityTypeUpdated($activity));\n }\n });\n\n static::deleted(static function (Activity $activity) {\n // Hard delete associated playlistActivities\n $activity->playlistActivities()->delete();\n });\n }\n\n public function getOrganizerAttribute(): ?Participant\n {\n $participant = $this->participants()->where('user_id', $this->user_id)->first();\n\n if (! $participant instanceof Participant && $participant !== null) {\n throw new RuntimeException(sprintf('$participant must be an instance of \"%s\" or null', Participant::class));\n }\n\n return $participant;\n }\n\n public function getFormattedValueAttribute()\n {\n $currencyCode = 'USD';\n if ($this->opportunity) {\n $currencyCode = $this->opportunity->getCurrencyCode();\n }\n\n $formatter = new CurrencyFormatter();\n $formatter->setTextAttribute(NumberFormatter::CURRENCY_CODE, $currencyCode);\n $formatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 0);\n\n return $formatter->format($this->value, $currencyCode);\n }\n\n public function getProspectNameAttribute(): ?string\n {\n $prospectName = null;\n\n if ($this->lead_id) {\n $prospectName = $this->lead->name;\n } elseif ($this->contact_id) {\n $prospectName = $this->contact->name;\n } elseif ($this->account_id) {\n $prospectName = $this->account->name;\n }\n\n return $prospectName;\n }\n\n public function getProspectName(): ?string\n {\n /** @var string|null */\n return $this->getAttribute('prospect_name');\n }\n\n /**\n * Get activity title depending on prospect or title\n */\n public function getActivityTitleAttribute(): ?string\n {\n $activityTitle = null;\n if ($this->prospect && $this->prospect->getName()) {\n if ($this->account_id) {\n $activityTitle = $this->account->name;\n } elseif ($this->lead_id) {\n $activityTitle = $this->lead->company;\n } elseif ($this->contact_id) {\n $activityTitle = $this->contact->account ? $this->contact->account->name : $this->contact->name;\n }\n } elseif ($this->title) {\n $activityTitle = $this->title;\n }\n\n return $activityTitle;\n }\n\n public function wasRecentlyCreated(): bool\n {\n return $this->wasRecentlyCreated;\n }\n\n public function getProspectTypeAttribute()\n {\n $prospectType = null;\n\n if ($this->lead_id) {\n $prospectType = 'Lead';\n } elseif ($this->contact_id) {\n $prospectType = 'Contact';\n } elseif ($this->account_id) {\n $prospectType = 'Account';\n }\n\n return $prospectType;\n }\n\n /**\n * Return the best match for prospect. Results are in the following order of priority:\n * 1. Lead\n * 2. Contact\n * 3. Account\n * 4. NULL\n */\n public function getProspectAttribute(): ?ProspectInterface\n {\n if ($this->hasLead()) {\n return $this->getLead();\n }\n\n if ($this->hasContact()) {\n return $this->getContact();\n }\n\n if ($this->hasAccount()) {\n return $this->getAccount();\n }\n\n return null;\n }\n\n public function getTitleAttribute($value): ?string\n {\n return \\getActivityTitleAttribute(\n $this->user->name,\n $this->getType(),\n $value,\n $this->prospect->name ?? null,\n $this->from->national_phone_number ?? null\n );\n }\n\n public function getTitle(): ?string\n {\n return $this->getAttribute('title');\n }\n\n public function getSummary(): ?string\n {\n return $this->getAttribute('summary');\n }\n\n public function isInternal(): bool\n {\n return $this->getAttribute('is_internal');\n }\n\n public function getIsPrivate(): bool\n {\n return $this->getAttribute('is_private');\n }\n\n public function getDescription(): ?string\n {\n return $this->getAttribute('description');\n }\n\n public function hasTitle(): bool\n {\n return $this->getOriginal('title') !== null;\n }\n\n public function getPlayCountAttribute()\n {\n return $this->getPlaysCountAttribute();\n }\n\n public function getPlaysCountAttribute()\n {\n if (! isset($this->attributes['plays_count'])) {\n $this->loadCount('plays');\n }\n\n return $this->attributes['plays_count'];\n }\n\n public function getCommentCountAttribute()\n {\n return $this->getCommentsCountAttribute();\n }\n\n public function getCommentsCountAttribute()\n {\n if (! isset($this->attributes['comments_count'])) {\n $this->loadCount('comments');\n }\n\n return $this->attributes['comments_count'];\n }\n\n public function getVisibleCommentsCountAttribute()\n {\n if (! isset($this->attributes['visible_comments_count'])) {\n $activityCommentsService = app(ActivityCommentService::class);\n $user = Auth::user() instanceof User ? Auth::user() : null;\n $this->attributes['visible_comments_count'] = $activityCommentsService\n ->getVisibleCommentsCount($this, $user);\n }\n\n return $this->attributes['visible_comments_count'];\n }\n\n public function getShareCountAttribute()\n {\n return $this->getSharesCountAttribute();\n }\n\n public function getSharesCountAttribute()\n {\n if (! isset($this->attributes['shares_count'])) {\n $this->loadCount('shares');\n }\n\n return $this->attributes['shares_count'];\n }\n\n\n /**\n * Get the count of favorites playlists this activity appears in\n */\n public function getFavoriteCountAttribute(): int\n {\n return $this->getFavoritesCountAttribute();\n }\n\n public function getFavoritesCountAttribute()\n {\n if (! isset($this->attributes['favorites_count'])) {\n $this->loadCount('favorites');\n }\n\n return $this->attributes['favorites_count'];\n }\n\n public function getActiveParticipantsCountAttribute()\n {\n if (! isset($this->attributes['active_participants_count'])) {\n $this->loadCount('activeParticipants');\n }\n\n return $this->attributes['active_participants_count'];\n }\n\n public function getTracksWithTelephonyCountAttribute()\n {\n if (! isset($this->attributes['tracks_with_telephony_count'])) {\n $this->loadCount('tracksWithTelephony');\n }\n\n return $this->attributes['tracks_with_telephony_count'];\n }\n\n /**\n * @TEMP\n * $this->loadCount('tracksWithTelephony') throws null pointer exception\n */\n public function countTracksWithTelephony(): int\n {\n return $this->tracks()->whereNotNull('telephony_provider_id')->count();\n }\n\n public function getDuration(): float\n {\n return $this->getAttribute('duration');\n }\n\n public function getDurationForHumansAttribute()\n {\n return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true);\n }\n\n public function getDurationForHumansShortAttribute(): string\n {\n return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true, true);\n }\n\n public function hasRecordingPreference(): bool\n {\n return $this->getAttribute('recording_preference') !== null;\n }\n\n public function getRecordingPreference()\n {\n return $this->getAttribute('recording_preference');\n }\n\n /** @return BelongsTo<User, self> */\n public function user(): BelongsTo\n {\n return $this->belongsTo(User::class)->with('group');\n }\n\n public function device()\n {\n return $this->belongsTo(Device::class);\n }\n\n public function category()\n {\n return $this->belongsTo(PlaybookCategory::class, 'playbook_category_id');\n }\n\n public function getCategory(): ?PlaybookCategory\n {\n return $this->getAttribute('category');\n }\n\n public function getPlaybookCategoryId(): ?int\n {\n return $this->getAttribute('playbook_category_id');\n }\n\n public function hasStats(): bool\n {\n return $this->getAttribute('stats') !== null;\n }\n\n public function getStats(): ?Stats\n {\n return $this->getAttribute('stats');\n }\n\n public function stats(): HasOne\n {\n return $this->hasOne(Stats::class);\n }\n\n public function participantStats(): Eloquent\\Relations\\HasManyThrough\n {\n return $this->hasManyThrough(\n Models\\Participant\\ParticipantStats::class,\n Participant::class,\n 'activity_id',\n 'participant_id'\n );\n }\n\n public function getParticipantStats(): Eloquent\\Collection\n {\n return $this->getAttribute('participantStats');\n }\n\n public function account()\n {\n return $this->belongsTo(Account::class);\n }\n\n public function contact()\n {\n return $this->belongsTo(Contact::class)->with(['account']);\n }\n\n public function lead()\n {\n return $this->belongsTo(Lead::class)->with(['stage', 'recordType']);\n }\n\n /**\n * @return BelongsTo<Opportunity, self>\n */\n public function opportunity(): BelongsTo\n {\n /** @var BelongsTo<Opportunity, self> */\n return $this->belongsTo(Opportunity::class);\n }\n\n public function stage()\n {\n return $this->belongsTo(Stage::class);\n }\n\n /**\n * @return HasMany<Session>\n */\n public function sessions(): HasMany\n {\n return $this->hasMany(Session::class);\n }\n\n /**\n * @return HasMany|ParticipantSpeech[]|Eloquent\\Collection\n */\n public function participantSpeeches()\n {\n return $this->hasMany(ParticipantSpeech::class);\n }\n\n public function getParticipantSpeeches(): Eloquent\\Collection\n {\n return $this->getAttribute('participantSpeeches');\n }\n\n /**\n * @return HasMany|Log[]|Eloquent\\Collection\n */\n public function logs()\n {\n return $this->hasMany(Log::class);\n }\n\n /**\n * @return HasMany|Moment[]|Eloquent\\Collection\n */\n public function moments()\n {\n return $this->hasMany(Moment::class);\n }\n\n /**\n * @return HasMany|Note[]|Eloquent\\Collection\n */\n public function notes()\n {\n return $this->hasMany(Note::class);\n }\n\n /**\n * @return Eloquent\\Collection|Note[]\n */\n public function getNotes(): Eloquent\\Collection\n {\n return $this->getAttribute('notes');\n }\n\n /**\n * @return HasMany|Message[]|Eloquent\\Collection\n */\n public function messages()\n {\n return $this->hasMany(Message::class);\n }\n\n public function coachingMessages(): HasMany\n {\n return $this->hasMany(Message::class)\n ->where('is_private', 1);\n }\n\n public function getCoachingMessages(): Eloquent\\Collection\n {\n return $this->getAttribute('coachingMessages');\n }\n\n public function participants(): HasMany\n {\n return $this->hasMany(Participant::class);\n }\n\n public function getSnapshots(): Eloquent\\Collection\n {\n return $this->getAttribute('snapshots');\n }\n\n /** @return HasMany<Track> */\n public function tracks(): HasMany\n {\n return $this->hasMany(Track::class);\n }\n\n public function tracksWithTelephony(): HasMany\n {\n return $this->hasMany(Track::class)->whereNotNull('telephony_provider_id');\n }\n\n public function getTracksWithTelephony(): Eloquent\\Collection\n {\n return $this->getAttribute('tracksWithTelephony');\n }\n\n /** @return Collection|Track[] */\n public function getTracks(): Eloquent\\Collection\n {\n return $this->getAttribute('tracks');\n }\n\n public function masterTrack(): HasOne\n {\n return $this->hasOne(Track::class)->where('is_master', 1)\n ->whereIn('format', [Track::FORMAT_WAV, Track::FORMAT_M3U8])\n ->latest();\n }\n\n public function getMasterTrack(): ?Track\n {\n /** @var Track|null */\n return $this->getAttribute('masterTrack');\n }\n\n public function transcription(): Eloquent\\Relations\\BelongsTo\n {\n return $this->belongsTo(Transcription::class, 'transcription_id');\n }\n\n public function findTranscriptionPromptSummaries(): Collection\n {\n $transcriptionId = $this->getTranscriptionId();\n if (is_null($transcriptionId)) {\n return new Collection();\n }\n\n return Models\\AiPrompt::query()\n ->where('transcription_id', $transcriptionId)\n ->get();\n }\n\n public function getTranscription(): Transcription\n {\n return $this->getAttribute('transcription');\n }\n\n public function hasTranscription(): bool\n {\n return $this->getAttribute('transcription') !== null;\n }\n\n public function setTranscriptionId(int $transcriptionId): Activity\n {\n $this->setAttribute('transcription_id', $transcriptionId);\n\n return $this;\n }\n\n public function unsetTranscriptionId(): self\n {\n $this->setAttribute('transcription_id', null);\n\n return $this;\n }\n\n public function getTranscriptionId(): ?int\n {\n return $this->getAttribute('transcription_id');\n }\n\n /** @deprecated */\n public function hasTranscriptionId(): bool\n {\n return $this->getAttribute('transcription_id') !== null;\n }\n\n public function coachRequests()\n {\n return $this->hasMany(CoachRequest::class);\n }\n\n public function availabilityNotifications()\n {\n return $this->hasMany(AvailabilityNotification::class);\n }\n\n public function processingStates()\n {\n return $this->hasMany(Models\\Activity\\ActivityProcessingState::class);\n }\n\n public function uploadSettings()\n {\n return $this->hasMany(ActivityUploadSetting::class);\n }\n\n public function comments()\n {\n return $this->hasMany(Comment::class);\n }\n\n public function getComments(): Eloquent\\Collection\n {\n return $this->getAttribute('comments');\n }\n\n public function visibleComments()\n {\n $rel = $this->hasMany(Comment::class);\n // Doesn't have auth()->user() in some tests, breaks the build\n if ($user = auth()->user()) {\n return $rel->visibleThreads($user->id);\n }\n\n return $rel;\n }\n\n public function snapshots(): HasMany\n {\n return $this->hasMany(Snapshot::class);\n }\n\n public function calendarEvent()\n {\n return $this->belongsTo(CalendarEvent::class);\n }\n\n public function getCalendarEvent(): ?CalendarEvent\n {\n return $this->getAttribute('calendarEvent');\n }\n\n public function latestCoachingFeedbacks(): HasMany\n {\n return $this->hasMany(CoachingFeedback::class)->latest();\n }\n\n public function playlists(): BelongsToMany\n {\n return $this->belongsToMany(Playlist::class, 'playlist_activities')\n ->withPivot('id', 'uuid', 'user_id', 'start_time', 'end_time')\n ->using(PlaylistActivity::class)\n ->withTimestamps();\n }\n\n public function coachingFeedbacks(): HasMany\n {\n return $this->hasMany(CoachingFeedback::class);\n }\n\n /**\n * @return Eloquent\\Collection|CoachingFeedback[]\n */\n public function getCoachingFeedback(): Eloquent\\Collection\n {\n return $this->getAttribute('coachingFeedbacks');\n }\n\n /** @return Eloquent\\Collection<int, PlaylistActivity> */\n public function favoritedBy(User $user): Eloquent\\Collection\n {\n return $this->favorites()->where('user_id', $user->getId())->get();\n }\n\n /**\n * Checks whether consumer has added this activity to their favorites playlist\n * In addition a default playlist gets created if not already present\n */\n public function wasFavoritedBy(User $user): bool\n {\n $playlist = $user->favoritePlaylist();\n\n return $playlist\n ->activities()\n ->where('activity_id', '=', $this->getId())\n ->exists();\n }\n\n /**\n * @return HasMany<PlaylistActivity>\n */\n public function playlistActivities(): HasMany\n {\n return $this->hasMany(PlaylistActivity::class);\n }\n\n /**\n * @return HasManyThrough<Playlist>\n */\n public function favoritePlaylists(): HasManyThrough\n {\n return $this->hasManyThrough(\n Playlist::class,\n PlaylistActivity::class,\n 'activity_id',\n 'id',\n 'id',\n 'playlist_id'\n )->where('is_default', 1);\n }\n\n /**\n * @return Eloquent\\Collection<int, Playlist>\n */\n public function getFavoritePlaylists(): Eloquent\\Collection\n {\n return $this->getAttribute('favoritePlaylists');\n }\n\n /**\n * Get activities from the default/favorite playlist\n *\n * @return Eloquent\\Builder|static\n */\n public function favorites()\n {\n return $this->playlistActivities()->whereHas('playlist', function ($query) {\n $query->where('is_default', 1);\n });\n }\n\n /**\n * @return Model|SubscriptionSet|null|object\n */\n public function subscribedBy(User $user)\n {\n if ($this->prospect === null) {\n return null;\n }\n\n return SubscriptionSet::select('activity_subscription_sets.*')\n ->where('user_id', $user->id)\n ->join('activity_subscriptions', function ($join) {\n $join\n ->on('subscription_set_id', '=', 'activity_subscription_sets.id');\n\n if ($this->account_id) {\n if ($this->opportunity_id) {\n $join\n ->where('followable_type', 'opportunity')\n ->where('followable_id', $this->opportunity_id);\n } else {\n $join\n ->where('followable_type', 'account')\n ->where('followable_id', $this->account_id);\n }\n } elseif ($this->contact_id) {\n $join\n ->where('followable_type', 'contact')\n ->where('followable_id', $this->contact_id);\n } elseif ($this->lead_id) {\n $join\n ->where('followable_type', 'lead')\n ->where('followable_id', $this->lead_id);\n }\n })\n ->first();\n }\n\n /**\n * @return array|Eloquent\\Builder[]|Eloquent\\Collection|SubscriptionSet[]\n */\n public function subscribers()\n {\n if ($this->prospect === null) {\n return [];\n }\n\n return SubscriptionSet::with(['subscriptions', 'user'])\n ->whereHas('subscriptions', function ($query) {\n if ($this->account_id) {\n if ($this->opportunity_id) {\n $query\n ->where('followable_type', 'opportunity')\n ->where('followable_id', $this->opportunity_id);\n } else {\n $query\n ->where('followable_type', 'account')\n ->where('followable_id', $this->account_id);\n }\n } elseif ($this->contact_id) {\n $query\n ->where('followable_type', 'contact')\n ->where('followable_id', $this->contact_id);\n } elseif ($this->lead_id) {\n $query\n ->where('followable_type', 'lead')\n ->where('followable_id', $this->lead_id);\n } else {\n // Nothing to join on?\n // refactor - use Jiminny specific exception\n throw new InvalidArgumentException('Cannot join on a specific customer filter.');\n }\n })\n ->whereHas('user', function ($query) {\n $query\n ->where('team_id', $this->user->team_id)\n ->where('status', User::STATUS_ACTIVE);\n })\n ->get();\n }\n\n /**\n * @return HasMany|Builder|Eloquent\\Collection|Play[]\n */\n public function plays()\n {\n return $this->hasMany(Play::class);\n }\n\n public function getPlays(): Eloquent\\Collection\n {\n return $this->getAttribute('plays');\n }\n\n public function playsBy(User $user)\n {\n /** @var Builder $builder */\n $builder = $this->plays()->where('user_id', $user->id);\n\n return $builder->get();\n }\n\n /**\n * Check if activity was played by a user\n */\n public function wasPlayedBy(User $user): bool\n {\n return $this->plays()->where('user_id', $user->id)->exists();\n }\n\n public function shares()\n {\n return $this->hasMany(Share::class);\n }\n\n /** @return BelongsTo<Participant, self> */\n public function from(): BelongsTo\n {\n return $this->belongsTo(Participant::class, 'from_participant_id');\n }\n\n /** @return BelongsTo<Participant, self> */\n public function to(): BelongsTo\n {\n return $this->belongsTo(Participant::class, 'to_participant_id');\n }\n\n /**\n * Get all of the connections through the participants.\n */\n public function connections()\n {\n return $this->hasManyThrough(\n Connection::class,\n Participant::class,\n 'activity_id',\n 'participant_id'\n );\n }\n\n public function getConnections(): Eloquent\\Collection\n {\n return $this->getAttribute('connections');\n }\n\n /**\n * Get all of the shares through the participants.\n */\n public function participantShares()\n {\n return $this->hasManyThrough(\n Participant\\Share::class,\n Participant::class,\n 'activity_id',\n 'participant_id'\n );\n }\n\n public function getParticipantShares(): Eloquent\\Collection\n {\n return $this->getAttribute('participantShares');\n }\n\n public function topicTriggers(): HasMany\n {\n return $this->hasMany(TopicTrigger::class);\n }\n\n public function activityScorecardRuleTriggers(): HasMany\n {\n return $this->hasMany(Models\\Scorecard\\ActivityScorecardRuleTrigger::class);\n }\n\n public function activityScorecardRules(): HasMany\n {\n return $this->hasMany(Models\\Scorecard\\ActivityScorecardRule::class);\n }\n\n public function questions(): HasMany\n {\n return $this->hasMany(Question::class);\n }\n\n /**\n * Get all the custom data attached to it.\n */\n public function data(): HasMany\n {\n return $this->hasMany(FieldData::class);\n }\n\n public function getData(): Eloquent\\Collection\n {\n /** @var Eloquent\\Collection */\n return $this->getAttribute('data');\n }\n\n #[Scope]\n protected function heldBetween($query, Carbon $start, Carbon $end)\n {\n // Sanity check.\n $from = min($start, $end);\n $until = max($start, $end);\n\n return $query\n ->where('actual_start_date', '>=', $from)\n ->where('actual_end_date', '<=', $until);\n }\n\n #[Scope]\n protected function scheduledBetween($query, Carbon $start, Carbon $end)\n {\n // Sanity check.\n $from = min($start, $end);\n $until = max($start, $end);\n\n return $query\n ->where('scheduled_start_date', '>=', $from)\n ->where('scheduled_end_date', '<=', $until);\n }\n\n /**\n * @param Builder<self> $query\n *\n * @return Builder<self>\n */\n #[Scope]\n protected function forTeam(Builder $query, int $teamId): Builder\n {\n /** @var Builder<self> */\n return $query->whereHas('user', static function (Builder $query) use ($teamId): void {\n $query->where('team_id', $teamId);\n });\n }\n\n /**\n * @param Builder<self> $query\n *\n * @return Builder<self>\n */\n #[Scope]\n protected function inOpenDeals(Builder $query): Builder\n {\n /** @var Builder<self> */\n return $query->whereHas(\n 'opportunity',\n static fn (Builder $query): Builder => $query\n ->where('is_closed', false)\n ->where('deleted_at', '=', null),\n );\n }\n\n /**\n * @param Builder<self> $query\n *\n * @return Builder<self>\n */\n #[Scope]\n protected function notInOpenDeals(Builder $query): Builder\n {\n /** @var Builder<self> */\n return $query->where(\n static fn (Builder $query): Builder => $query->whereNull('opportunity_id')\n ->orWhereHas(\n 'opportunity',\n static fn (Builder $query): Builder => $query->where('is_closed', true),\n )\n ->orWhereHas(\n 'opportunity',\n static fn (Builder $query): Builder => $query->withTrashed()->where('deleted_at', '!=', null),\n ),\n );\n }\n\n /**\n * Finds a participant and updates it with data. If participant doesn't exist creates a new participant from data.\n *\n * @param array $data participant data used to identify the participant and update it\n * @param bool $enterRoom true if participant is entering the room. false if we just want to update some participant data\n * @param Carbon|null $enterTime if $enterNow is true then this is the join time when the actual enter has occurred\n */\n public function updateOrCreateParticipant(\n array $data,\n bool $enterRoom = true,\n ?Carbon $enterTime = null,\n bool $nameMatching = false,\n ): Participant {\n $search = [];\n $participant = null;\n\n if (isset($data['user_id'])) {\n // Check if they already exist based on their ID.\n $search['user_id'] = $data['user_id'];\n } elseif (isset($data['provider_id'])) {\n $search['provider_id'] = $data['provider_id'];\n } elseif ($nameMatching && isset($data['name'])) {\n $search['name'] = $data['name'];\n }\n\n if (! empty($data['email'])) {\n $search['email'] = $data['email'];\n\n // If we have their email, this should be unique enough to lookup (e.g. calendar event based participant).\n unset($search['provider_id']);\n }\n\n // Search by phone number only in case nothing else is available to search by.\n if (array_key_exists('phone_number', $data) && empty($search)) {\n $search['phone_number'] = $data['phone_number'];\n }\n\n if (! empty($search)) {\n // Do a lookup now to see if we have a match on the provided data.\n $lookup = array_map(static function ($key, $value): array {\n return [$key, $value];\n }, array_keys($search), $search);\n\n $participant = $this->participants()->withTrashed()->where($lookup)->first();\n }\n\n // Do a partial match on the name and search in the team members.\n if (! $participant instanceof Participant && $nameMatching && ! empty($data['name'])) {\n $participantMatcher = app(MeetingBot\\Service\\ParticipantMatcher::class);\n\n if (! $participantMatcher instanceof MeetingBot\\Service\\ParticipantMatcher) {\n throw new LogicException('Expecting ParticipantMatcher service instance');\n }\n\n $participant = $participantMatcher->match($this, $data['name']);\n\n // If we've found good participant, avoid data overwrite in `$participant->fill($data)` below.\n if ($participant instanceof Models\\Participant && $participant->hasName()) {\n unset($data['name']); // Thoughts: should we unset also $data['user_id'] and $data['email'] ?\n }\n }\n\n if (! $participant instanceof Participant) {\n // If no match, create a new participant.\n if (empty($search)) {\n $participant = $this->participants()->create();\n } else {\n // If no match, create a new participant but avoid creating duplicates\n $participant = $this->participants()->withTrashed()->firstOrNew($search);\n }\n }\n\n // If we have just recycled a deleted participant\n if ($participant->trashed()) {\n $participant->deleted_at = null;\n }\n\n // Deal with the case when calendar syncs the event while it's in progress.\n // We should prevent change of the participant name, because speeches mapping will fail.\n if ($enterRoom === false\n && $this->isInProgress()\n && $participant->hasName()\n && isset($data['name'])\n && $data['name'] !== $participant->getName()\n ) {\n unset($data['name']);\n }\n\n // Upsert with new data.\n $participant->fill($data);\n\n if ($enterRoom) {\n if ($enterTime === null) {\n $enterTime = now();\n }\n\n // Participant enters room for the first time\n if ($participant->enter_time === null) {\n $participant->enter_time = $enterTime;\n }\n\n // If there is an exit time and it's prior to new enter_time\n if ($participant->exit_time && $participant->exit_time->lt($enterTime)) {\n // Participant has re-joined\n $participant->exit_time = null;\n }\n }\n\n $participant->save();\n\n return $participant;\n }\n\n /**\n * Updates participant CRM data\n *\n * @param array{\n * Lead|null,\n * Account|null,\n * Opportunity|null,\n * Contact|null,\n * Stage|null,\n * string|null\n *} $records\n * @param Participant $participant participant the CRM data is associated with\n */\n public function updateParticipantCrmData(array $records, Participant $participant): void\n {\n // Extract the records.\n [$lead, , , $contact] = $records;\n\n $resolver = $this->getUpdateCrmDataResolver();\n $strategy = $resolver->resolveForParticipant($lead, $contact);\n\n if ($strategy == UpdateCrmDataByStrategy::Lead) {\n if (! $participant->hasName()) {\n $participant->name = $lead->name;\n }\n\n if (! $participant->hasEmailAddress()) {\n $participant->email = $lead->email;\n }\n\n if (! $participant->hasPhoneNumber()) {\n $participant->phone_number = $lead->phone;\n }\n\n $participant->lead_id = $lead->id;\n $participant->save();\n } elseif ($strategy == UpdateCrmDataByStrategy::Contact) {\n if (! $participant->hasName()) {\n $participant->name = $contact->name;\n }\n\n if (! $participant->hasEmailAddress()) {\n $participant->email = $contact->email;\n }\n\n if (! $participant->hasPhoneNumber()) {\n $participant->phone_number = $contact->phone;\n }\n\n $participant->contact_id = $contact->id;\n $participant->save();\n }\n }\n\n /**\n * Updates activity CRM data\n *\n * @param array{\n * Lead|null,\n * Account|null,\n * Opportunity|null,\n * Contact|null,\n * Stage|null,\n * string|null\n *} $records\n */\n public function updateActivityCrmData(array $records): void\n {\n // Extract the records.\n [$lead, $account, $opportunity, $contact, $stage] = $records;\n\n $resolver = $this->getUpdateCrmDataResolver();\n $strategy = $resolver->resolveForActivity($lead, $contact, $account);\n\n if ($strategy == UpdateCrmDataByStrategy::Lead) {\n // Also update the parent activity if required, checking we don't create a mixed lead/account record.\n if ($this->account_id === null && $this->contact_id === null && $this->lead_id === null) {\n $this->lead_id = $lead->id;\n\n if ($this->stage_id === null && $stage) {\n $this->stage_id = $stage->id;\n }\n\n $this->save();\n }\n } elseif ($strategy == UpdateCrmDataByStrategy::Contact) {\n // Also update the parent activity if required, checking we don't create a mixed lead/account record.\n $this->lead_id = null;\n if ($this->stage && $this->stage->getType() === Stage::TYPE_LEAD) {\n $this->stage_id = null;\n }\n\n // Don't trust previous matched account_id as it might have been changed in the CRM\n if ($account && $account->id !== $this->account_id) {\n $this->account_id = $account->id;\n }\n\n if ($this->stage_id === null && $stage) {\n $this->stage_id = $stage->id;\n }\n\n if ($opportunity && $this->opportunity_id !== $opportunity->id) {\n $this->opportunity_id = $opportunity->id;\n }\n\n if ($opportunity && $this->value !== $opportunity->value) {\n $this->value = $opportunity->value;\n }\n\n // Always set contact_id when available, regardless of account_id status\n if ($this->contact_id === null && $contact) {\n $this->contact_id = $contact->id;\n }\n\n $this->save();\n } elseif ($strategy == UpdateCrmDataByStrategy::Account && $this->account_id === null) {\n // Also update the parent activity if required, checking we don't create a mixed lead/account record.\n $this->lead_id = null;\n if ($this->stage && $this->stage->getType() === Stage::TYPE_LEAD) {\n $this->stage_id = null;\n }\n\n // Update the account and opportunity on the activity record if possible.\n $this->account_id = $account->id;\n\n if ($this->stage_id === null && $stage) {\n $this->stage_id = $stage->id;\n }\n\n if ($this->opportunity_id === null && $opportunity) {\n $this->opportunity_id = $opportunity->id;\n $this->value = $opportunity->value;\n }\n\n $this->save();\n }\n }\n\n public function getActivityProspectData(): array\n {\n return [\n 'lead' => $this->lead_id,\n 'contact' => $this->contact_id,\n 'account' => $this->account_id,\n 'opportunity' => $this->opportunity_id,\n 'stage' => $this->stage_id,\n ];\n }\n\n public function isOrganizer(User $user): bool\n {\n return $this->user_id && $this->user_id === $user->id;\n }\n\n public function isJoinable(): bool\n {\n return \\in_array($this->status, [\n self::STATUS_SCHEDULED,\n self::STATUS_PENDING,\n self::STATUS_RINGING,\n self::STATUS_IN_PROGRESS,\n ], true);\n }\n\n public function isAttemptedForBotJoin(): bool\n {\n return in_array($this->getAttribute('status'), self::MEETING_BOT_JOIN_ATTEMPTED, true);\n }\n\n /**\n * Check if the activity can be saved to CRM (manual or autolog)\n */\n public function isLoggable(): bool\n {\n if ($this->getUser()->getTeam()->hasFeature(FeatureEnum::SIDEKICK_SETTINGS)) {\n $sidekickService = app(SidekickService::class);\n\n if (! $sidekickService->isSidekickEnabledForUser($this->getUser())) {\n return false;\n }\n }\n\n // If we don't know the activity type, don't try to log.\n if ($this->playbook_category_id === null) {\n return false;\n }\n\n if ($this->user->crm_required === false) {\n return false;\n }\n\n // Don't prompt for internal meetings.\n if ($this->is_internal) {\n return false;\n }\n\n // If we don't know who we are trying to log to, don't try to log.\n if ($this->prospect === null) {\n return false;\n }\n\n $validStatus = false;\n switch ($this->type) {\n case self::TYPE_SOFTPHONE:\n case self::TYPE_SOFTPHONE_INBOUND:\n $validStatus = true;\n\n break;\n case self::TYPE_CONFERENCE:\n $validStatus = in_array($this->status, [\n self::STATUS_BUSY,\n self::STATUS_NO_ANSWER,\n self::STATUS_COMPLETED,\n self::STATUS_CANCELLED,\n ], true);\n\n break;\n case self::TYPE_SMS_INBOUND:\n case self::TYPE_SMS_OUTBOUND:\n $validStatus = in_array($this->status, [\n self::STATUS_QUEUED,\n self::STATUS_SENT,\n self::STATUS_UNDELIVERED,\n self::STATUS_DELIVERED,\n self::STATUS_RECEIVED,\n ], true);\n\n break;\n }\n\n // Depending on the activity channel, we should not try to log.\n return $validStatus;\n }\n\n public function isScheduled(): bool\n {\n return $this->status === self::STATUS_SCHEDULED;\n }\n\n public function scheduledDuration(): int\n {\n if ($this->scheduled_start_time && $this->scheduled_end_time) {\n return $this->scheduled_end_time->timestamp - $this->scheduled_start_time->timestamp;\n }\n\n return 0;\n }\n\n public function isPending(): bool\n {\n return $this->status === self::STATUS_PENDING;\n }\n\n public function isCompleted(): bool\n {\n return $this->status === self::STATUS_COMPLETED;\n }\n\n public function isRinging(): bool\n {\n return $this->status === self::STATUS_RINGING;\n }\n\n public function isInProgress(): bool\n {\n return $this->status === self::STATUS_IN_PROGRESS;\n }\n\n public function isBusy(): bool\n {\n return $this->status === self::STATUS_BUSY;\n }\n\n public function isNoAnswer(): bool\n {\n return $this->status === self::STATUS_NO_ANSWER;\n }\n\n public function isFailed(): bool\n {\n return $this->status === self::STATUS_FAILED;\n }\n\n public function isCancelled(): bool\n {\n return $this->status === self::STATUS_CANCELLED;\n }\n\n public function hasEnded(int $gracePeriodMinutes = 15): bool\n {\n if ($this->isCompleted()) {\n return true;\n }\n\n if (($this->isFailed() || $this->isCancelled()) && $this->hasScheduledEndTime()) {\n return $this->getScheduledEndTime()->addMinutes($gracePeriodMinutes)->isPast();\n }\n\n return false;\n }\n\n public function hasStarted(): bool\n {\n return $this->hasActualStartTime();\n }\n\n public function isOngoing(): bool\n {\n return $this->hasActualStartTime() && ! $this->hasActualEndTime();\n }\n\n public function isTypeSmsInbound(): bool\n {\n return $this->getType() === self::TYPE_SMS_INBOUND;\n }\n\n public function isTypeSmsOutbound(): bool\n {\n return $this->getType() === self::TYPE_SMS_OUTBOUND;\n }\n\n public function isTypeSoftPhone(): bool\n {\n return $this->getType() === self::TYPE_SOFTPHONE;\n }\n\n public function isTypeSoftphoneInbound(): bool\n {\n return $this->getType() === self::TYPE_SOFTPHONE_INBOUND;\n }\n\n public function isTypeConference(): bool\n {\n return $this->getType() === self::TYPE_CONFERENCE;\n }\n\n /**\n * Get a conference elapsed time in seconds.\n *\n * @return int seconds count\n */\n public function secondsTimeElapsed(): int\n {\n if (empty($this->actual_start_time)) {\n return 0;\n }\n\n // Get number of seconds since conference actual start time\n return (int) abs(Carbon::now()->diffInRealSeconds($this->actual_start_time));\n }\n\n /**\n * Get a conference elapsed time formatted as \"1:30:20\" if more than 1 hour or \"30:20\" otherwise.\n */\n public function formattedTimeElapsed(): string\n {\n // Get number of seconds since conference actual start time.\n $elapsedSeconds = $this->secondsTimeElapsed();\n $elapsedTime = Carbon::createFromTimestampUTC($elapsedSeconds);\n\n // Format conference start time.\n return $elapsedTime->format($elapsedSeconds < 3600 ? 'i:s' : 'G:i:s');\n }\n\n public function wasScheduled(): bool\n {\n return $this->calendarEvent !== null || in_array($this->getSource(), [self::SOURCE_OUTLOOK, self::SOURCE_GOOGLE]);\n }\n\n public function isInstant(): bool\n {\n return ! $this->wasScheduled();\n }\n\n /**\n * GETTERS AND SETTERS FOLLOW BELOW\n */\n\n public function getUuid(): string\n {\n return $this->getAttribute('id_string');\n }\n\n public function getId(): int\n {\n return $this->getAttribute('id');\n }\n\n public function getFromParticipantId(): ?int\n {\n return $this->getAttribute('from_participant_id');\n }\n\n public function getFromParticipant(): ?Participant\n {\n return $this->getAttribute('from');\n }\n\n public function getToParticipantId(): ?int\n {\n return $this->getAttribute('to_participant_id');\n }\n\n public function getToParticipant(): ?Participant\n {\n return $this->getAttribute('to');\n }\n\n public function hasScheduledStartTime(): bool\n {\n return $this->getAttribute('scheduled_start_time') !== null;\n }\n\n public function getScheduledStartTime(): ?Carbon\n {\n return $this->getAttribute('scheduled_start_time');\n }\n\n public function setScheduledStartTime(DateTimeInterface $dateTime): self\n {\n $this->setAttribute('scheduled_start_time', $dateTime);\n\n return $this;\n }\n\n public function getScheduledEndTime(): ?DateTimeInterface\n {\n return $this->getAttribute('scheduled_end_time');\n }\n\n public function hasScheduledEndTime(): bool\n {\n return $this->getAttribute('scheduled_end_time') !== null;\n }\n\n public function setScheduledEndTime(DateTimeInterface $dateTime): self\n {\n $this->setAttribute('scheduled_end_time', $dateTime);\n\n return $this;\n }\n\n public function getActualStartTime(): ?Carbon\n {\n return $this->getAttribute('actual_start_time');\n }\n\n public function hasActualStartTime(): bool\n {\n return $this->getAttribute('actual_start_time') !== null;\n }\n\n public function getActualEndTime(): ?Carbon\n {\n return $this->getAttribute('actual_end_time');\n }\n\n public function hasActualEndTime(): bool\n {\n return $this->getAttribute('actual_end_time') !== null;\n }\n\n public function getType(): ?string\n {\n return $this->getAttribute('type');\n }\n\n public function getStatus(): string\n {\n return $this->getAttribute('status');\n }\n\n public function setStatus(string $status): self\n {\n $this->setAttribute('status', $status);\n\n return $this;\n }\n\n public function setActualStartTime(DateTimeInterface $dateTime): self\n {\n $this->setAttribute('actual_start_time', $dateTime);\n\n return $this;\n }\n\n public function setActualEndTime(DateTimeInterface $dateTime, bool $shouldUpdateDuration = true): self\n {\n $this->setAttribute('actual_end_time', $dateTime);\n\n if (! $shouldUpdateDuration) {\n return $this;\n }\n\n return $this->updateDuration();\n }\n\n public function updateDuration(): self\n {\n if (! $this->hasActualStartTime() || ! $this->hasActualEndTime()) {\n return $this;\n }\n\n return $this->setDuration(\n (int) abs($this->getActualStartTime()->diffInRealSeconds($this->getActualEndTime()))\n );\n }\n\n public function setDuration(int $duration): self\n {\n $this->setAttribute('duration', $duration);\n\n return $this;\n }\n\n public function getRecordingState(): string\n {\n return $this->getAttribute('recording_state');\n }\n\n public function isRecordingState(string $recordingState): bool\n {\n return $this->getRecordingState() === $recordingState;\n }\n\n public function setRecordingState(string $recordingState): self\n {\n $this->setAttribute('recording_state', $recordingState);\n\n return $this;\n }\n\n public function hasActivityType(): bool\n {\n return $this->getAttribute('category') !== null;\n }\n\n public function getActivityType(): PlaybookCategory\n {\n return $this->getAttribute('category');\n }\n\n public function setActivityType(int $playbookCategoryId): self\n {\n $this->setAttribute('playbook_category_id', $playbookCategoryId);\n\n return $this;\n }\n\n public function hasStage(): bool\n {\n return $this->getAttribute('stage') !== null;\n }\n\n public function getStage(): ?Stage\n {\n return $this->getAttribute('stage');\n }\n\n public function getStageId(): ?int\n {\n return $this->getAttribute('stage_id');\n }\n\n public function setStageId(?int $stageId): void\n {\n $this->setAttribute('stage_id', $stageId);\n }\n\n public function hasOpportunity(): bool\n {\n return $this->getAttribute('opportunity') !== null;\n }\n\n public function getOpportunity(): ?Opportunity\n {\n return $this->getAttribute('opportunity');\n }\n\n public function hasContact(): bool\n {\n return $this->getAttribute('contact') !== null;\n }\n\n public function getContact(): ?Contact\n {\n return $this->getAttribute('contact');\n }\n\n public function getContactId(): ?int\n {\n return $this->getAttribute('contact_id');\n }\n\n public function setContactId(?int $contactId): void\n {\n $this->setAttribute('contact_id', $contactId);\n }\n\n public function hasLead(): bool\n {\n return $this->getAttribute('lead') !== null;\n }\n\n public function getLead(): ?Lead\n {\n return $this->getAttribute('lead');\n }\n\n public function getLeadId(): ?int\n {\n return $this->getAttribute('lead_id');\n }\n\n public function setLeadId(?int $leadId): void\n {\n $this->setAttribute('lead_id', $leadId);\n }\n\n public function hasAccount(): bool\n {\n return $this->getAttribute('account') !== null;\n }\n\n public function getAccount(): ?Account\n {\n return $this->getAttribute('account');\n }\n\n public function getAccountId(): ?int\n {\n return $this->getAttribute('account_id');\n }\n\n public function setAccountId(?int $accountId): void\n {\n $this->setAttribute('account_id', $accountId);\n }\n\n /**\n * This method exists to avoid confusion using ->participants() or ->participants. Use the getter instead.\n *\n * @return Collection<int, Participant>|Participant[]\n */\n public function getParticipants(): Collection\n {\n return $this->participants;\n }\n\n /**\n * @deprecated use ParticipantRepository::findParticipantRoomOwner() instead\n */\n public function findParticipantRoomOwner(): ?Participant\n {\n $roomOwnerId = $this->getUserId();\n\n return $this->getParticipants()\n ->filter(static fn (Participant $participant): bool => $participant->isSameUserId($roomOwnerId))\n ->first();\n }\n\n public function hasCrmProviderId(): bool\n {\n return $this->getAttribute('crm_provider_id') !== null;\n }\n\n public function getCrmProviderId(): ?string\n {\n return $this->getAttribute('crm_provider_id');\n }\n\n public function getUserId(): ?int\n {\n return $this->getAttribute('user_id');\n }\n\n public function hasUser(): bool\n {\n return $this->user()->exists();\n }\n\n public function getUser(): User\n {\n return $this->getAttribute('user');\n }\n\n public function getCreatedAt(): Carbon\n {\n return $this->getAttribute('created_at');\n }\n\n public function isInFiniteState(): bool\n {\n return $this->isFiniteState($this->getStatus());\n }\n\n public function isFiniteState(string $status): bool\n {\n $finiteStates = self::FINITE_STATES[$this->getType()] ?? [];\n\n return in_array($status, $finiteStates, true);\n }\n\n public function getParticipant(Authenticatable $user): Participant\n {\n return $this->findParticipant($user);\n }\n\n public function findParticipant(Authenticatable $user): ?Participant\n {\n if ($user instanceof User) {\n /** @var User $user */\n return $this->participants()->where('user_id', '=', $user->getId())->first();\n }\n\n throw new LogicException(sprintf('Unsupported Authenticatable implementation %s', get_class($user)));\n }\n\n public function hasLanguageCode(): bool\n {\n return $this->getAttribute('language') !== null;\n }\n\n public function getLanguageCode(): ?string\n {\n /** @var string|null */\n return $this->getAttribute('language');\n }\n\n public function getLanguageCodeHyphenated(): string\n {\n return str_replace('_', '-', $this->getLanguageCode() ?? '');\n }\n\n public function getLanguageCodeLocale(): string\n {\n [ $language ] = explode('_', $this->getLanguageCode() ?? '');\n\n return $language;\n }\n\n public function setLanguageCode(string $value): self\n {\n return $this->setAttribute('language', $value);\n }\n\n public function hasSource(): bool\n {\n return $this->getAttribute('source') !== null;\n }\n\n public function setSource(?string $source): self\n {\n return $this->setAttribute('source', $source);\n }\n\n public function isSource(string $source): bool\n {\n return $this->getAttribute('source') === $source;\n }\n\n public function getSource(): ?string\n {\n return $this->getAttribute('source');\n }\n\n public function isSourceGong(): bool\n {\n return $this->isSource(self::SOURCE_GONG);\n }\n\n public function getExternalId(): ?string\n {\n return $this->getAttribute('external_id');\n }\n\n public function setExternalId(?string $externalId): self\n {\n return $this->setAttribute('external_id', $externalId);\n }\n\n public function hasExternalId(): bool\n {\n return $this->getAttribute('external_id') !== null;\n }\n\n public function getProvider(): string\n {\n return $this->getAttribute('provider');\n }\n\n public function hasTelephonyProviderId(): bool\n {\n return $this->getAttribute('telephony_provider_id') !== null;\n }\n\n public function getTelephonyProviderId(): ?string\n {\n return $this->getAttribute('telephony_provider_id');\n }\n\n public function setTelephonyProviderId(?string $telephonyProviderId): self\n {\n return $this->setAttribute('telephony_provider_id', $telephonyProviderId);\n }\n\n public function getLocation(): ?string\n {\n return $this->getAttribute('location');\n }\n\n public function setLocation(?string $location): self\n {\n return $this->setAttribute('location', $location);\n }\n\n public function isDeleted(): bool\n {\n return $this->getAttribute('deleted_at') !== null;\n }\n\n /**\n * Check if activity recording is on and activity status is not one of the failed statuses.\n */\n public function canReviewActivity(): bool\n {\n $failedStatuses = self::$enumFailedStatuses;\n\n return (! in_array($this->recording_state, [self::RECORDING_OFF, self::RECORDING_STOPPED], true) &&\n ! in_array($this->status, $failedStatuses, true));\n }\n\n public function hasReasonCodeBotKicked(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_MEETING_BOT_KICKED);\n }\n\n public function hasReasonCodeNotCompliant(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_CONSENT_DENIED);\n }\n\n public function hasTopicTriggers(): bool\n {\n return $this->topicTriggers()->count() !== 0;\n }\n\n public function getTopicTriggers(): Collection\n {\n return $this->topicTriggers;\n }\n\n public function getTopicTriggersSorted(): Collection\n {\n $this->loadMissing([\n 'topicTriggers.participant',\n 'topicTriggers.playbackThemeTopicTrigger',\n 'topicTriggers.playbackThemeTopicTrigger',\n 'topicTriggers.playbackThemeTopicTrigger.playbackThemeTopic',\n 'topicTriggers.playbackThemeTopicTrigger.playbackThemeTopic.playbackTheme',\n ]);\n\n return $this->topicTriggers\n ->sortBy([\n 'playbackThemeTopicTrigger.playbackThemeTopic.playbackTheme.sort',\n 'playbackThemeTopicTrigger.playbackThemeTopic.sort',\n 'playbackThemeTopicTrigger.sort',\n ]);\n }\n\n public function hasQuestions(): bool\n {\n return $this->questions()->exists();\n }\n\n public function getQuestions(): Collection\n {\n return $this->questions;\n }\n\n public function hasValue(): bool\n {\n return $this->getAttribute('value') !== null;\n }\n\n public function getValue(): ?float\n {\n return $this->getAttribute('value');\n }\n\n public function transitionTo(string $newState, callable $callback, ?int $timeout = null): self\n {\n $newState = $this->getWorkflowStateFor(\n $this->getType(),\n $newState\n );\n\n return $this->traitTransitionTo($newState, $callback, $timeout);\n }\n\n public function getWorkflowState(): string\n {\n return $this->getWorkflowStateFor(\n $this->getType(),\n $this->getStatus()\n );\n }\n\n public function getActivityProviderDisplayName(): string\n {\n return \\Cache::remember('activity_provider_display_name-' . $this->getProvider(), 60 * 60 * 24, function () {\n $activityProviderRegistry = app()->make(ActivityProviderRegistry::class);\n\n try {\n return $activityProviderRegistry->get($this->getProvider())->getDisplayName();\n } catch (Exception $exception) {\n return ucfirst($this->getProvider());\n }\n });\n }\n\n private function getWorkflowStateFor(string $activityChannel, string $activityStatus): string\n {\n return sprintf(\n '%s::%s',\n $activityChannel,\n $activityStatus\n );\n }\n\n public function getWorkflow(): array\n {\n $map = [\n self::TYPE_SOFTPHONE => [\n self::STATUS_SCHEDULED => [\n self::STATUS_PENDING,\n self::STATUS_IN_PROGRESS,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n ],\n self::STATUS_PENDING => [\n self::STATUS_IN_PROGRESS,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n ],\n self::STATUS_RINGING => [\n self::STATUS_CANCELLED,\n self::STATUS_FAILED,\n self::STATUS_IN_PROGRESS,\n self::STATUS_BUSY,\n ],\n self::STATUS_IN_PROGRESS => [\n self::STATUS_COMPLETED,\n ],\n ],\n self::TYPE_SOFTPHONE_INBOUND => [\n self::STATUS_RINGING => [\n self::STATUS_IN_PROGRESS,\n self::STATUS_NO_ANSWER,\n self::STATUS_CANCELLED,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n ],\n self::STATUS_IN_PROGRESS => [\n self::STATUS_COMPLETED,\n ],\n ],\n ];\n\n return collect($map)\n ->mapWithKeys(function (array $currentStates, string $activityChannel): array {\n return [\n $activityChannel => collect($currentStates)\n ->mapWithKeys(function (array $possibleStates, $currentState) use ($activityChannel): array {\n $transitionName = $this->getWorkflowStateFor($activityChannel, $currentState);\n\n return [\n $transitionName => array_map(function (string $newState) use ($activityChannel) {\n return $this->getWorkflowStateFor($activityChannel, $newState);\n }, $possibleStates),\n ];\n }),\n ];\n })\n ->reduce(static function (array $carry, Collection $item): array {\n return array_merge($carry, $item->all());\n }, []);\n }\n\n public function hasPosterPath(): bool\n {\n return $this->getAttribute('poster_path') !== null;\n }\n\n public function getPosterPath(): ?string\n {\n return $this->getAttribute('poster_path');\n }\n\n /**\n * Take into account all recording settings and determine if we need to record this activity or not.\n */\n public function shouldRecord(): bool\n {\n return $this->determineRecordingReasonCode() === null;\n }\n\n public function determineRecordingReasonCode(): ?int\n {\n // Conference specific decisions.\n if ($this->isTypeConference()) {\n // If they have manually overridden the recording setting to not record.\n if ($this->hasRecordingPreference() && $this->getRecordingPreference() === false) {\n return self::FLAG_RECORDING_REASON_PREFERENCE_OVERRIDE;\n }\n\n // If they have manually overridden the recording setting to record.\n if ($this->hasRecordingPreference() && $this->getRecordingPreference() === true) {\n return null;\n }\n\n // If their team has disabled recording meetings, don't record.\n if ($this->user->team->isConferenceRecordPreferenceDisabled()) {\n return self::FLAG_RECORDING_REASON_TEAM_AUTOMATIC_DISABLED;\n }\n\n // If the host has disabled recording meetings, don't record.\n if ($this->user->checkConferenceRecordPreference() === false) {\n return self::FLAG_RECORDING_REASON_USER_AUTOMATIC_DISABLED;\n }\n\n // If it was marked internal...\n if ($this->is_internal) {\n // and their team has disabled recording internal meetings, don't record.\n if (\n $this->user->team->isConferenceRecordPreferenceEnabled()\n && ! $this->user->team->isConferenceRecordInternalPreferenceEnabled()\n ) {\n return self::FLAG_RECORDING_REASON_TEAM_INTERNAL_DISABLED;\n }\n\n // and the host has disabled recording internal meetings, don't record.\n if ($this->user->checkConferenceRecordInternalPreference() === false) {\n return self::FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED;\n }\n }\n\n // If it was not scheduled and they disabled internal meetings, we cannot determine if it was internal.\n if ($this->wasScheduled() === false && $this->user->checkConferenceRecordInternalPreference() === false) {\n return self::FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED_UNSCHEDULED;\n }\n }\n\n return null;\n }\n\n public function getRecordingReasonCode(): int\n {\n return $this->getAttribute('recording_reason_code');\n }\n\n public function setRecordingReasonCode(int $recordingReasonCode): self\n {\n $this->setAttribute('recording_reason_code', $recordingReasonCode);\n\n return $this;\n }\n\n // Not used today.\n public function getRecordingReasonString(): ?string\n {\n if ($this->hasRecordingReasonCompliancePrompted()) {\n return Team::COMPLIANCE_MODE_RECORDING_PROMPT;\n }\n\n if ($this->hasRecordingReasonComplianceRestricted()) {\n return Team::COMPLIANCE_MODE_RECORDING_RESTRICT;\n }\n\n if ($this->hasRecordingReasonComplianceRestrictedToOneSideRecording()) {\n return Team::COMPLIANCE_MODE_RECORDING_RESTRICT_ONE_SIDE;\n }\n\n return null;\n }\n\n public function hasRecordingReasonComplianceRestricted(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT);\n }\n\n public function hasRecordingReasonCompliancePrompted(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_COMPLIANCE_PROMPT);\n }\n\n public function hasRecordingReasonComplianceRestrictedToOneSideRecording(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT_ONE_SIDE);\n }\n\n public function getAudioTrack(): ?Track\n {\n /** @var Track|null */\n return $this->tracks()\n ->where('type', '=', Track::TYPE_AUDIO)\n ->first();\n }\n\n public function activeParticipants(): HasMany\n {\n return $this->hasMany(Participant::class)->active();\n }\n\n public function getActiveParticipants(): Eloquent\\Collection\n {\n return $this->getAttribute('activeParticipants');\n }\n\n public function crm(): Eloquent\\Relations\\BelongsTo\n {\n return $this->belongsTo(Configuration::class, 'crm_configuration_id');\n }\n\n public function activitySummaryLogs(): HasMany\n {\n return $this->hasMany(ActivitySummaryLog::class);\n }\n\n public function getCrm(): ?Configuration\n {\n return $this->getAttribute('crm');\n }\n\n public function hasCrmConfiguration(): bool\n {\n return $this->getAttribute('crm') !== null;\n }\n\n public function isProcessed(): ?bool\n {\n return $this->getAttribute('is_processed');\n }\n\n public function hasRecordingPrompt(): bool\n {\n return $this->getAttribute('has_recording_prompt') === true;\n }\n\n public function recalculateAverageScore(): Activity\n {\n $coachingFeedbacksAll = $this->coachingFeedbacks->where('visibility', CoachingFeedback::VISIBLE_TO_ALL);\n\n // Sum scores\n $scoreSum = $coachingFeedbacksAll->pluck('average_score')->sum();\n\n // Calculate average score\n if ($coachingFeedbacksAll->count() > 0) {\n $this->update(['average_score' => $scoreSum / $coachingFeedbacksAll->count()]);\n $this->documentUpdate();\n }\n\n return $this;\n }\n\n public function isOnAir(): bool\n {\n return $this->getAttribute('on_air') === self::ON_AIR_READY || $this->getAttribute('on_air') === self::ON_AIR_STREAMING;\n }\n\n public function setOnAir(int $onAir): self\n {\n $this->setAttribute('on_air', $onAir);\n\n return $this;\n }\n\n public function getOnAir(): ?int\n {\n return $this->getAttribute('on_air');\n }\n\n public function setTitleFromCallData(Call $call): void\n {\n $direction = $call->isOutbound() ? 'to' : 'from';\n\n $party = $this->prospect_name\n ?? $call->getContactName()\n ?? $call->getOtherPartyPhoneNumber()\n ;\n\n $this->update(['title' => sprintf('Call %s %s', $direction, $party)]);\n }\n\n /**\n * @param array{}|array{channels:string|null, format:string|null, type:string|null, status:string|null} $audioParams\n */\n public function createAudioTrack(\n string $telephonyProviderId,\n string $recordingUrl,\n array $audioParams = []\n ): Track {\n return $this->tracks()->updateOrCreate([\n 'telephony_provider_id' => $telephonyProviderId,\n ], [\n 'type' => $audioParams['type'] ?? Track::TYPE_AUDIO,\n 'status' => $audioParams['status'] ?? Track::STATUS_PENDING,\n 'format' => $audioParams['format'] ?? Track::FORMAT_WAV,\n 'provider_content_url' => $recordingUrl,\n 'start_time' => $this->actual_start_time,\n 'end_time' => $this->actual_end_time,\n ]);\n }\n\n public function createTrack(string $telephonyProviderId, array $params): Track\n {\n return $this->tracks()->updateOrCreate(\n [\n 'telephony_provider_id' => $telephonyProviderId,\n ],\n $params\n );\n }\n\n public function createOrganiserParticipant(Call $call): Participant\n {\n $user = $this->getUser();\n\n return $this->updateOrCreateParticipant([\n 'is_ghost' => 0,\n 'name' => $user->name,\n 'email' => $user->email,\n 'phone_number' => phone_e164(null, $call->getUserPhoneNumber()),\n 'enter_time' => $this->actual_start_time,\n 'exit_time' => $this->actual_end_time,\n 'user_id' => $user->id,\n ], false);\n }\n\n public function createProspectParticipant(Call $call): Participant\n {\n // not null 'name' is mandatory here to create a separate participant with 'nameMatching'\n // in case of the same phone_number with the Organiser\n $useNameMatching = $call->getUserPhoneNumber() === $call->getOtherPartyPhoneNumber();\n $defaultName = $useNameMatching ? '' : null;\n\n return $this->updateOrCreateParticipant(data: [\n 'is_ghost' => 0,\n 'name' => $this->prospect->name ?? $defaultName,\n 'email' => $this->prospect->email ?? null,\n 'phone_number' => phone_e164(null, $call->getOtherPartyPhoneNumber()),\n 'enter_time' => $this->actual_start_time,\n 'exit_time' => $this->actual_end_time,\n 'contact_id' => $this->contact_id ?? null,\n 'lead_id' => $this->lead_id ?? null,\n ], enterRoom: false, nameMatching: $useNameMatching);\n }\n\n public function updateParticipants(Participant $organiserParticipant, Participant $prospectParticipant): void\n {\n $this->update([\n 'from_participant_id' => $this->isTypeSoftPhone() ? $organiserParticipant->id : $prospectParticipant->id,\n 'to_participant_id' => $this->isTypeSoftPhone() ? $prospectParticipant->id : $organiserParticipant->id,\n ]);\n }\n\n public function hasProspect(): bool\n {\n return $this->getProspectAttribute() !== null;\n }\n\n public function isPrivate(): bool\n {\n return $this->getAttribute('is_private');\n }\n\n /** Create a new factory instance for the model. */\n protected static function newFactory(): Factory\n {\n return ActivityFactory::new();\n }\n\n public function getUpdatedAt(): Carbon\n {\n return $this->getAttribute('updated_at');\n }\n\n public function getActivitySummaryLogs(): Eloquent\\Collection\n {\n return $this->getAttribute('activitySummaryLogs');\n }\n\n public function hasProspectActivitySummaryLog(): bool\n {\n return $this->getActivitySummaryLogs()->contains(\n 'relation_type',\n ActivitySummaryLog::RELATION_OBJECT_TYPE_PROSPECT\n );\n }\n\n public function getTeam(): Team\n {\n return $this->getUser()->getTeam();\n }\n\n private function getUpdateCrmDataResolver(): UpdateCrmDataResolverInterface\n {\n $factory = app(UpdateCrmDataResolverFactory::class);\n\n return $factory->create($this);\n }\n\n public function getMeetingTrackProviderId(string $type): string\n {\n $label = match ($type) {\n Track::TYPE_VIDEO => 'v',\n Track::TYPE_AUDIO => 'a',\n default => throw new InvalidArgumentJiminnyException('Invalid track type'),\n };\n\n $startTimestamp = $this->getScheduledStartTime()?->getTimestamp();\n $teamId = $this->getTeam()->getId();\n\n return $this->getTelephonyProviderId() . ':' . $label . ':' . $startTimestamp . ':' . $teamId;\n }\n\n /**\n * Get all consent records associated with this activity\n *\n * @return \\Illuminate\\Database\\Eloquent\\Relations\\HasMany\n */\n public function participantConsents(): HasMany\n {\n return $this->hasMany(Participant\\Consent::class);\n }\n\n public function isDiallerCall(): bool\n {\n if ($this->getProvider() === Activity::PROVIDER_UPLOADER) {\n return false;\n }\n\n if (! in_array($this->getType(), [self::TYPE_SOFTPHONE, self::TYPE_SOFTPHONE_INBOUND])) {\n return false;\n }\n\n return $this->getProvider() !== self::PROVIDER_TWILIO;\n }\n\n public function getActivityDateWithFallback(): Carbon\n {\n if ($this->getActualStartTime() !== null) {\n return $this->getActualStartTime();\n }\n\n if ($this->getScheduledStartTime() !== null) {\n return $this->getScheduledStartTime();\n }\n\n return $this->getCreatedAt();\n }\n\n public function getCrmType(): ?string\n {\n // Treat uploader activities as conferences\n if ($this->getProvider() === Activity::PROVIDER_UPLOADER) {\n return Activity::TYPE_CONFERENCE;\n }\n\n return $this->getType();\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"bounds":{"left":0.77526593,"top":0.123703115,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"bounds":{"left":0.78390956,"top":0.123703115,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"bounds":{"left":0.79488033,"top":0.123703115,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"bounds":{"left":0.80352396,"top":0.123703115,"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 Query Execution Settings…","depth":4,"bounds":{"left":0.8121675,"top":0.123703115,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"bounds":{"left":0.8231383,"top":0.123703115,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.83410907,"top":0.123703115,"width":0.024268618,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.8607048,"top":0.123703115,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"bounds":{"left":0.87167555,"top":0.123703115,"width":0.029587766,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"bounds":{"left":0.9587766,"top":0.123703115,"width":0.02825798,"height":0.01915403},"role_description":"button","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":"21","depth":4,"bounds":{"left":0.9222075,"top":0.14844373,"width":0.009640957,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.9338431,"top":0.14844373,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"bounds":{"left":0.9431516,"top":0.14844373,"width":0.00930851,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.9544548,"top":0.14844373,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.9644282,"top":0.14844373,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9740692,"top":0.14684756,"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.98138297,"top":0.14684756,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 67;\nSELECT * FROM automated_reports where id = 42;\nSELECT * FROM users WHERE id = 143; # group 28\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","depth":4,"value":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 67;\nSELECT * FROM automated_reports where id = 42;\nSELECT * FROM users WHERE id = 143; # group 28\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","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.24335106,"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}]...
|
5750528661339806640
|
8179532969745786684
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
167
4
102
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Models;
use Carbon\Carbon;
use Database\Factories\ActivityFactory;
use DateTimeInterface;
use Exception;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent;
use Illuminate\Database\Eloquent\Attributes\Scope;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use InvalidArgumentException;
use Jiminny\Component\ElasticSearch;
use Jiminny\Component\MeetingBot;
use Jiminny\Component\Model\BitwiseFlagTrait;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Sidekick\SidekickService;
use Jiminny\Component\Uuid\UuidAwareInterface;
use Jiminny\Component\Workflow;
use Jiminny\Contracts;
use Jiminny\Contracts\Crm\ProspectInterface;
use Jiminny\DTO\ImportCall\Call;
use Jiminny\Events\Activities\ActivityTypeUpdated;
use Jiminny\Events\Activities\ActivityUpdated;
use Jiminny\Events\Activities\ProspectUpdated;
use Jiminny\Events\Activities\StageUpdated;
use Jiminny\Events\Activities\StatusUpdated;
use Jiminny\Events\Activities\TitleUpdated;
use Jiminny\Exceptions\InvalidArgumentException as InvalidArgumentJiminnyException;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\RuntimeException;
use Jiminny\Models;
use Jiminny\Models\Activity\ActivitySummaryLog;
use Jiminny\Models\Activity\ActivityUploadSetting;
use Jiminny\Models\Activity\AvailabilityNotification;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Log;
use Jiminny\Models\Activity\Message;
use Jiminny\Models\Activity\Moment;
use Jiminny\Models\Activity\Note;
use Jiminny\Models\Activity\ParticipantSpeech;
use Jiminny\Models\Activity\Play;
use Jiminny\Models\Activity\Question;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\Activity\Snapshot;
use Jiminny\Models\Activity\Stats;
use Jiminny\Models\Activity\SubscriptionSet;
use Jiminny\Models\Activity\TopicTrigger;
use Jiminny\Models\Activity\Transcription;
use Jiminny\Models\Calendar\CalendarEvent;
use Jiminny\Models\Crm\Configuration;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\ElasticSearch\ActivityElasticSearchTrait;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Participant\Connection;
use Jiminny\Models\Playlist\Activity as PlaylistActivity;
use Jiminny\Services\Activity\ActivityProviderRegistry;
use Jiminny\Services\Activity\Import\DataResolvers\UpdateCrmDataByStrategy;
use Jiminny\Services\Activity\Import\DataResolvers\UpdateCrmDataResolverFactory;
use Jiminny\Services\Activity\Import\DataResolvers\UpdateCrmDataResolverInterface;
use Jiminny\Traits\Enums;
use Jiminny\Traits\RequiresUUID;
use Jiminny\Utils\CurrencyFormatter;
use NumberFormatter;
use function in_array;
/**
* Jiminny\Models\Activity
*
* @property null|int $auto_score filled from ES hydrator, not in DB!
* @property-read Account|null $account
* @property-read CalendarEvent|null $calendarEvent
* @property-read Contact|null $contact
* @property-read Lead|null $lead
* @property-read Opportunity|null $opportunity
* @property-read Stage|null $stage
* @property int $id
* @property mixed|null $uuid
* @property string|null $source
* @property string|null $external_id
* @property string $provider
* @property string|null $location
* @property string|null $telephony_provider_id
* @property int|null $from_participant_id
* @property int|null $to_participant_id
* @property int|null $device_id
* @property string|null $type
* @property int|null $playbook_category_id
* @property int $user_id
* @property int|null $lead_id
* @property int|null $account_id
* @property int|null $contact_id
* @property int|null $opportunity_id
* @property int|null $stage_id
* @property string|null $value
* @property int|null $crm_configuration_id
* @property string|null $crm_provider_id
* @property string|null $language
* @property int|null $transcription_id
* @property int $duration
* @property string $status
* @property int|null $on_air
* @property int|null $calendar_event_id
* @property string $recording_state
* @property bool|null $recording_preference
* @property int $recording_reason_code
* @property int $summary_reminder_sent
* @property \Illuminate\Support\Carbon|null $log_reminder_sent_at
* @property \Illuminate\Support\Carbon|null $organizer_notified_at
* @property bool|null $has_recording_prompt
* @property bool $is_internal
* @property int $is_locked
* @property int $is_recording
* @property bool|null $is_processed
* @property bool $is_private
* @property bool $is_instant_invite
* @property string|null $poster_path
* @property string|null $summary
* @property string|null $title
* @property string|null $description
* @property \Illuminate\Support\Carbon|null $scheduled_start_time
* @property \Illuminate\Support\Carbon|null $scheduled_end_time
* @property \Illuminate\Support\Carbon|null $actual_start_time
* @property \Illuminate\Support\Carbon|null $actual_end_time
* @property int|null $uploaded_by
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property string|null $average_score
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant> $activeParticipants
* @property-read int|null $active_participants_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Scorecard\ActivityScorecardRuleTrigger> $activityScorecardRuleTriggers
* @property-read int|null $activity_scorecard_rule_triggers_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Scorecard\ActivityScorecardRule> $activityScorecardRules
* @property-read int|null $activity_scorecard_rules_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, AvailabilityNotification> $availabilityNotifications
* @property-read int|null $availability_notifications_count
* @property-read \Jiminny\Models\PlaybookCategory|null $category
* @property-read \Illuminate\Database\Eloquent\Collection<int, CoachRequest> $coachRequests
* @property-read int|null $coach_requests_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\CoachingFeedback> $coachingFeedbacks
* @property-read int|null $coaching_feedbacks_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Message> $coachingMessages
* @property-read int|null $coaching_messages_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Comment> $comments
* @property-read int|null $comments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Connection> $connections
* @property-read int|null $connections_count
* @property-read Configuration|null $crm
* @property-read \Illuminate\Database\Eloquent\Collection<int, FieldData> $data
* @property-read int|null $data_count
* @property-read \Jiminny\Models\Device|null $device
* @property-read \Kalnoy\Nestedset\Collection<int, \Jiminny\Models\Playlist> $favoritePlaylists
* @property-read int|null $favorite_playlists_count
* @property-read \Jiminny\Models\Participant|null $from
* @property-read string|null $activity_title
* @property-read mixed $comment_count
* @property-read mixed $duration_for_humans
* @property-read string $duration_for_humans_short
* @property-read int $favorite_count
* @property-read mixed $favorites_count
* @property-read mixed $formatted_value
* @property-read string $id_string
* @property-read \Jiminny\Models\Participant|null $organizer
* @property-read mixed $play_count
* @property-read int|null $plays_count
* @property-read ?ProspectInterface $prospect
* @property-read string|null $prospect_name
* @property-read mixed $prospect_type
* @property-read mixed $share_count
* @property-read int|null $shares_count
* @property-read int|null $tracks_with_telephony_count
* @property-read int|null $visible_comments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\CoachingFeedback> $latestCoachingFeedbacks
* @property-read int|null $latest_coaching_feedbacks_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Log> $logs
* @property-read int|null $logs_count
* @property-read \Jiminny\Models\Track|null $masterTrack
* @property-read \Illuminate\Database\Eloquent\Collection<int, Message> $messages
* @property-read int|null $messages_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Moment> $moments
* @property-read int|null $moments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Note> $notes
* @property-read int|null $notes_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant\Share> $participantShares
* @property-read int|null $participant_shares_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, ParticipantSpeech> $participantSpeeches
* @property-read int|null $participant_speeches_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant\ParticipantStats> $participantStats
* @property-read int|null $participant_stats_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant> $participants
* @property-read int|null $participants_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, PlaylistActivity> $playlistActivities
* @property-read int|null $playlist_activities_count
* @property-read \Kalnoy\Nestedset\Collection<int, \Jiminny\Models\Playlist> $playlists
* @property-read int|null $playlists_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Play> $plays
* @property-read \Illuminate\Database\Eloquent\Collection<int, Question> $questions
* @property-read int|null $questions_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Session> $sessions
* @property-read int|null $sessions_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Share> $shares
* @property-read \Illuminate\Database\Eloquent\Collection<int, Snapshot> $snapshots
* @property-read int|null $snapshots_count
* @property-read Stats|null $stats
* @property-read \Jiminny\Models\Participant|null $to
* @property-read \Illuminate\Database\Eloquent\Collection<int, TopicTrigger> $topicTriggers
* @property-read int|null $topic_triggers_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Track> $tracks
* @property-read int|null $tracks_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Track> $tracksWithTelephony
* @property-read Transcription|null $transcription
* @property-read \Jiminny\Models\User $user
* @property-read \Illuminate\Database\Eloquent\Collection<int, Comment> $visibleComments
*
* @method static \Illuminate\Database\Eloquent\Collection<int, static> all($columns = ['*'])
* @method static \Jiminny\Component\Eloquent\Builder|Activity chunkByIdDesc($count, callable $callback, $column = null, $alias = null)
* @method static \Database\Factories\ActivityFactory factory(...$parameters)
* @method static \Illuminate\Database\Eloquent\Collection<int, static> get($columns = ['*'])
* @method static \Jiminny\Component\Eloquent\Builder|Activity heldBetween(\Carbon\Carbon $start, \Carbon\Carbon $end)
* @method static \Jiminny\Component\Eloquent\Builder|Activity idOrUuId($idOrUuid, bool $first = true)
* @method static \Jiminny\Component\Eloquent\Builder|Activity newModelQuery()
* @method static \Jiminny\Component\Eloquent\Builder|Activity newQuery()
* @method static Builder|Activity onlyTrashed()
* @method static \Jiminny\Component\Eloquent\Builder|Activity query()
* @method static \Jiminny\Component\Eloquent\Builder|Activity scheduledBetween(\Carbon\Carbon $start, \Carbon\Carbon $end)
* @method static \Jiminny\Component\Eloquent\Builder|Activity inOpenDeals()
* @method static \Jiminny\Component\Eloquent\Builder|Activity notInOpenDeals()
* @method static \Jiminny\Component\Eloquent\Builder|Activity forTeam(int $teamId)
* @method static \Jiminny\Component\Eloquent\Builder|Activity search(callable $searchQuery, $key = null, $sortByResults = true)
* @method static \Jiminny\Component\Eloquent\Builder|Activity uuid(string $uuid, bool $first = true)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereAccountId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereActualEndTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereActualStartTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereAverageScore($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCalendarEventId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereContactId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCreatedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCrmConfigurationId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCrmProviderId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDeletedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDescription($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDeviceId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDuration($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereFromParticipantId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereHasRecordingPrompt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsInstantInvite($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsInternal($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsLocked($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsPrivate($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsProcessed($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsRecording($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLanguage($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLeadId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLocation($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLogReminderSentAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereOnAir($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereOpportunityId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereOrganizerNotifiedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity wherePlaybookCategoryId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity wherePosterPath($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereProvider($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereRecordingPreference($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereRecordingReasonCode($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereRecordingState($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereScheduledEndTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereScheduledStartTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereSource($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereExternalId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereStageId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereStatus($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereSummary($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereSummaryReminderSent($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereTelephonyProviderId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereTitle($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereToParticipantId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereTranscriptionId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereType($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUpdatedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUploadedBy($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUserId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUuid($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereValue($value)
* @method static Builder|Activity withTrashed()
* @method static Builder|Activity withoutTrashed()
*
* @mixin \Eloquent
*/
class Activity extends Model implements
ElasticSearch\Contract\Searchable,
Workflow\Workflow\WorkflowAwareInterface,
Models\Contracts\ActivityContract,
Contracts\Model\ActivityInterface,
UuidAwareInterface
{
use HasFactory;
use Enums;
use SoftDeletes;
use RequiresUUID;
use BitwiseFlagTrait;
use ElasticSearch\Model\Searchable;
use ActivityElasticSearchTrait;
use Workflow\Workflow\WorkflowAware {
transitionTo as traitTransitionTo;
}
public const int FLAG_RECORDING_REASON_DEFAULT = 0;
// Recording Prompted but never started
public const int FLAG_RECORDING_REASON_COMPLIANCE_PROMPT = 1;
public const int FLAG_RECORDING_REASON_COMPLIANCE_RESUMED = 2;
public const int FLAG_RECORDING_REASON_NO_AUDIO = 3;
// Recording Disabled by Organization
public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT = 4;
// Recording was restricted to one-side recordings only
public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT_ONE_SIDE = 8;
// Recording was not started because it was internal and team setting disabled that.
public const int FLAG_RECORDING_REASON_TEAM_INTERNAL_DISABLED = 16;
// Recording was not started because it was internal and user setting disabled that.
public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED = 32;
// Recording was not started because user setting disabled automatic recording.
public const int FLAG_RECORDING_REASON_USER_AUTOMATIC_DISABLED = 64;
// Recording was not started because team setting disabled automatic recording.
public const int FLAG_RECORDING_REASON_TEAM_AUTOMATIC_DISABLED = 128;
// Recording was not started because user has overriden default.
public const int FLAG_RECORDING_REASON_PREFERENCE_OVERRIDE = 256;
// Recording was not started because they don't want internal, and this meeting was not scheduled/imported in time.
public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED_UNSCHEDULED = 512;
// Recording was not started because their team setting does excludes the meeting type.
public const int FLAG_RECORDING_REASON_UNSUPPORTED_TYPE = 1024;
// Recording was not started because the external provider disabled it (or recording is missing etc).
public const int FLAG_RECORDING_REASON_EXTERNALLY_DISABLED = 2048;
// Recording was stopped externally ("exit-meeting" Pusher event)
public const int FLAG_RECORDING_REASON_STOPPED_EXTERNALLY = 384;
// Recording couldn't be started due to Zoom hosting conflict error
public const int FLAG_RECORDING_REASON_HOSTING_CONFLICT = 448;
// meeting.failed event with reason code BOT_DENIED_FROM_LOBBY
public const int FLAG_RECORDING_REASON_MEETING_BOT_DENIED_FROM_LOBBY = 4096;
// meeting.failed event with reason code LOBBY_TIMEOUT
public const int FLAG_RECORDING_REASON_MEETING_BOT_LOBBY_TIMEOUT = 8192;
// meeting.failed event with reason code BOT_KICKED
public const int FLAG_RECORDING_REASON_MEETING_BOT_KICKED = 16384;
// meeting.failed event with reason code UNKNOWN
public const int FLAG_RECORDING_REASON_MEETING_BOT_UNKNOWN = 32768;
public const int FLAG_RECORDING_REASON_CONSENT_DENIED = 65536;
// Invalid meeting (e.g. URL is invalid, or the meeting is not found)
public const int FLAG_RECORDING_REASON_MEETING_BOT_INVALID = 131072;
// The host stopped the recording.
public const int FLAG_RECORDING_REASON_USER_STOPPED = 262144;
// Recording was not started because an alternative vendor disabled it (or overrode it).
public const int FLAG_RECORDING_REASON_VENDOR_OVERRIDE = 1048576;
// Login required meeting.failed code
public const int FLAG_RECORDING_REASON_LOGIN_REQUIRED = 524288;
// Password for meeting was not provided - meeting.failed code
public const int FLAG_RECORDING_REASON_MEETING_PASSWORD_NOT_PROVIDED = 2097152;
// meeting.failed - when the meeting is locked
public const int FLAG_RECORDING_REASON_MEETING_IS_LOCKED = 4194304;
// max recording duration reached
public const int FLAG_RECORDING_REASON_MAX_DURATION_REACHED = 8388608;
// recording size is too small
public const int FLAG_RECORDING_REASON_EMPTY_RECORDING = 16777216;
// meeting.failed - when bot is redirected to sign in page multiple times
public const int FLAG_RECORDING_REASON_MAX_RESTART_COUNT_IS_REACHED = 33554432;
// meeting.failed event with reason code CONNECTION_LOST
public const int FLAG_RECORDING_REASON_MEETING_BOT_CONNECTION_LOST = 67108864;
// recording is corrupted.
public const int FLAG_RECORDING_REASON_MEDIA_FILE_UNSUPPORTED_MIME_TYPE = 134217728;
// meeting ended in lobby
public const int FLAG_RECORDING_REASON_MEETING_ENDED_IN_LOBBY = 268435456;
// meeting not started
public const int FLAG_RECORDING_REASON_REASON_MEETING_NOT_STARTED = 536870912;
// unfinished zoom custom disclaimer
public const int FLAG_RECORDING_REASON_FEATURE_RULE_NOT_FOUND_ERROR = 1073741824;
// recording download failed - server error
public const int FLAG_RECORDING_REASON_SERVER_ERROR = 2147483648;
// recording download failed - client code 404
public const int FLAG_RECORDING_REASON_NOT_FOUND = 2147483649;
// recording download failed - client code 401, 403
public const int FLAG_RECORDING_REASON_ACCESS_DENIED = 2147483650;
// recording download failed - client code 429
public const int FLAG_RECORDING_REASON_TOO_MANY_REQUESTS = 2147483651;
// recording download failed - unknown client error
public const int FLAG_RECORDING_REASON_CLIENT_ERROR = 2147483652;
// recording download failed - unknown error
public const int FLAG_RECORDING_REASON_UNKNOWN_ERROR = 2147483653;
// It has been setup ahead of time through calendar
public const string STATUS_SCHEDULED = 'scheduled';
// It is awaiting audio.
public const string STATUS_PENDING = 'pending';
// Participant(s) dialed in, awaiting organizer.
public const string STATUS_RINGING = 'ringing';
// Call is in progress.
public const string STATUS_IN_PROGRESS = 'in-progress';
// It has ended.
public const string STATUS_COMPLETED = 'completed';
// Cancelled prior to starting.
public const string STATUS_CANCELLED = 'canceled';
public const string STATUS_DUPLICATED = 'duplicated'; // duplicated conference
public const string STATUS_STARTING_SOON = 'starting-soon';
public const string STATUS_BOT_CREATE_SENT = 'bot-create-sent';
public const string STATUS_BOT_INSTANCE_WORKER_ASSIGNED = 'worker-assigned';
public const string STATUS_BOT_INSTANCE_STARTED = 'bot-started';
// When bot instance is waiting in lobby
public const string STATUS_BOT_INSTANCE_WAITING_LOBBY = 'bot-waiting';
public const string STATUS_BUSY = 'busy';
public const string STATUS_NO_ANSWER = 'no-answer';
public const string STATUS_FAILED = 'failed'; // Used by SMS too
// SMS related
public const string STATUS_ACCEPTED = 'accepted';
public const string STATUS_QUEUED = 'queued';
public const string STATUS_SENDING = 'sending';
public const string STATUS_SENT = 'sent';
public const string STATUS_DELIVERED = 'delivered';
public const string STATUS_UNDELIVERED = 'undelivered';
public const string STATUS_RECEIVING = 'receiving';
public const string STATUS_RECEIVED = 'received';
public const string STATUS_RESENT = 'resent';
public const array SMS_STATUSES = [
Activity::STATUS_RECEIVED,
Activity::STATUS_SENT,
Activity::STATUS_DELIVERED,
];
public const array SOFT_PHONE_CONFERENCE_STATUSES = [
Activity::STATUS_IN_PROGRESS,
Activity::STATUS_COMPLETED,
];
// @todo refactor prefix from `TYPE_` to `CHANNEL_`
public const string TYPE_SOFTPHONE = 'softphone';
public const string TYPE_SOFTPHONE_INBOUND = 'softphone-inbound';
public const string TYPE_CONFERENCE = 'conference';
public const string TYPE_SMS_INBOUND = 'sms-inbound';
public const string TYPE_SMS_OUTBOUND = 'sms-outbound';
public const string TYPE_EMAIL_INBOUND = 'email-inbound';
public const string TYPE_EMAIL_OUTBOUND = 'email-outbound';
public const array CHANNELS = [
self::TYPE_SOFTPHONE,
self::TYPE_SOFTPHONE_INBOUND,
self::TYPE_CONFERENCE,
self::TYPE_SMS_INBOUND,
self::TYPE_SMS_OUTBOUND,
self::TYPE_EMAIL_INBOUND,
self::TYPE_EMAIL_OUTBOUND,
];
public const array PLAYABLE_CHANNELS = [
self::TYPE_SOFTPHONE,
self::TYPE_SOFTPHONE_INBOUND,
self::TYPE_CONFERENCE,
];
// Recording States
public const string RECORDING_OFF = 'off'; // Default state
public const string RECORDING_IN_PROGRESS = 'in-progress';
public const string RECORDING_PAUSED = 'paused';
public const string RECORDING_STOPPED = 'stopped'; // To never be resumed.
public const string RECORDING_RECORDED = 'recorded'; // At least some portion of it was recorded.
public const string RECORDING_FAILED = 'failed'; // Recording was attempted but failed for some reason.
// Live Stream States
public const int ON_AIR_DEFAULT = 0;
public const int ON_AIR_READY = 1;
public const int ON_AIR_PREPARING = 2;
public const int ON_AIR_STREAMING = 3;
public const int ON_AIR_FINISHED = 4;
public const int ON_AIR_NOT_STREAMED = 5;
public const int ON_AIR_ERROR = -1;
public const string SOURCE_GONG = 'gong';
public const string SOURCE_CHORUS = 'chorus';
public const string SOURCE_OUTLOOK = 'outlook';
public const string SOURCE_GOOGLE = 'google';
// Activity Providers
public const string PROVIDER_TWILIO = 'twilio'; // XXX: This is run via the Jiminny Provider.
public const string PROVIDER_OUTREACH = 'outreach';
public const string PROVIDER_ZOOM_BOT = 'zoom-bot';
public const string PROVIDER_SALESLOFT = 'salesloft';
public const string PROVIDER_GOOGLE = 'google';
public const string PROVIDER_AIRCALL = 'aircall';
public const string PROVIDER_JUSTCALL = 'justcall';
public const string PROVIDER_GOOGLE_MEET = 'google-meet';
public const string PROVIDER_GONG = 'gong';
public const string PROVIDER_HUBSPOT = 'hubspot';
public const string PROVIDER_CLOSE = 'close';
public const string PROVIDER_TEAMS = 'ms-teams';
public const string PROVIDER_SALESFORCE = 'salesforce';
public const string PROVIDER_GROOVE = 'groove';
public const string PROVIDER_XANT = 'xant';
public const string PROVIDER_OFFICE = 'office';
public const string PROVIDER_NATTERBOX = 'natterbox';
public const string PROVIDER_RINGCENTRAL = 'ringcentral';
public const string PROVIDER_RINGCENTRAL_VIDEO = 'ringcentral-video';
public const string PROVIDER_GOTOMEETING = 'go-to-meeting';
public const string PROVIDER_DEMODESK = 'demo-desk';
public const string PROVIDER_DIALPAD = 'dialpad';
public const string PROVIDER_ZOOM_PHONE = 'zoom-phone';
public const string PROVIDER_CLOUDCALL = 'cloudcall';
public const string PROVIDER_CLOUDCALL_US = 'cloudcall-us';
public const string PROVIDER_EIGHT_BY_EIGHT = 'eight-by-eight'; // "8x8" UK
public const string PROVIDER_EIGHT_BY_EIGHT_CA = 'eight-by-eight-ca'; // "8x8" Canada
public const string PROVIDER_EIGHT_BY_EIGHT_AP = 'eight-by-eight-ap'; // "8x8" Australia
public const string PROVIDER_EIGHT_BY_EIGHT_US_EAST = 'eight-by-eight-use'; // "8x8" US East
public const string PROVIDER_EIGHT_BY_EIGHT_US_WEST = 'eight-by-eight-usw'; // "8x8" US West
public const string PROVIDER_CONNECT_AND_SELL = 'connect-and-sell';
public const string PROVIDER_CLOUD_TALK = 'cloud-talk';
public const string PROVIDER_AMAZON_CONNECT = 'amazon-connect';
public const string PROVIDER_VONAGE = 'vonage';
public const string PROVIDER_MIGRATOR = 'migrator';
public const string PROVIDER_UPLOADER = 'uploader';
public const string PROVIDER_TALKDESK = 'talkdesk';
public const string PROVIDER_TWILIO_FLEX = 'twilio-flex';
public const string PROVIDER_TWILIO_FLEX_DIRECT = 'twilio-flex-direct';
public const string PROVIDER_TWILIO_VIDEO = 'twilio-video';
public const string PROVIDER_AVAYA = 'avaya';
public const string PROVIDER_TELUS = 'telus';
public const string PROVIDER_FIVE_NINE = 'five-nine';
public const string PROVIDER_APOLLO = 'apollo';
public const string PROVIDER_ORUM = 'orum';
public const string PROVIDER_BLOOBIRDS = 'bloobirds';
/**
* @const API_PROVIDERS
* A list of integrations that import calls via API instead of webhooks
*/
public const array API_PROVIDERS = [
self::PROVIDER_OUTREACH,
self::PROVIDER_SALESLOFT,
self::PROVIDER_HUBSPOT,
self::PROVIDER_GROOVE,
self::PROVIDER_XANT,
self::PROVIDER_NATTERBOX,
self::PROVIDER_CLOUDCALL,
self::PROVIDER_CLOUDCALL_US,
self::PROVIDER_EIGHT_BY_EIGHT,
self::PROVIDER_EIGHT_BY_EIGHT_CA,
self::PROVIDER_EIGHT_BY_EIGHT_AP,
self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,
self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,
self::PROVIDER_CONNECT_AND_SELL,
self::PROVIDER_CLOUD_TALK,
self::PROVIDER_AMAZON_CONNECT,
self::PROVIDER_VONAGE,
self::PROVIDER_TALKDESK,
self::PROVIDER_TWILIO_VIDEO,
self::PROVIDER_TWILIO_FLEX,
self::PROVIDER_TWILIO_FLEX_DIRECT,
self::PROVIDER_FIVE_NINE,
self::PROVIDER_APOLLO,
self::PROVIDER_ORUM,
self::PROVIDER_BLOOBIRDS,
self::PROVIDER_RINGCENTRAL,
self::PROVIDER_AVAYA,
self::PROVIDER_TELUS,
];
public const array FINITE_STATES = [
self::TYPE_SOFTPHONE => [
self::STATUS_COMPLETED,
self::STATUS_FAILED,
self::STATUS_NO_ANSWER,
self::STATUS_BUSY,
],
self::TYPE_SOFTPHONE_INBOUND => [
self::STATUS_COMPLETED,
self::STATUS_FAILED,
self::STATUS_NO_ANSWER,
self::STATUS_BUSY,
],
self::TYPE_CONFERENCE => self::FINITE_STATES_CONFERENCE,
];
public const array FINITE_STATES_CONFERENCE = [
self::STATUS_COMPLETED,
self::STATUS_FAILED,
self::STATUS_CANCELLED,
];
public const array MEETING_BOT_JOIN_ATTEMPTED = [
self::STATUS_BOT_INSTANCE_WAITING_LOBBY,
self::STATUS_BOT_INSTANCE_STARTED,
];
public static array $enumStatuses = [
self::STATUS_SCHEDULED,
self::STATUS_PENDING,
self::STATUS_RINGING,
self::STATUS_IN_PROGRESS,
self::STATUS_COMPLETED,
self::STATUS_CANCELLED,
self::STATUS_BUSY,
self::STATUS_NO_ANSWER,
self::STATUS_FAILED,
self::STATUS_ACCEPTED,
self::STATUS_QUEUED,
self::STATUS_SENDING,
self::STATUS_SENT,
self::STATUS_RESENT,
self::STATUS_DELIVERED,
self::STATUS_UNDELIVERED,
self::STATUS_RECEIVING,
self::STATUS_RECEIVED,
self::STATUS_BOT_INSTANCE_WAITING_LOBBY,
self::STATUS_STARTING_SOON,
self::STATUS_BOT_INSTANCE_WORKER_ASSIGNED,
self::STATUS_BOT_INSTANCE_STARTED,
self::STATUS_DUPLICATED,
];
public static array $enumProviders = [
self::PROVIDER_TWILIO,
self::PROVIDER_OUTREACH,
self::PROVIDER_ZOOM_BOT,
self::PROVIDER_SALESLOFT,
self::PROVIDER_AIRCALL,
self::PROVIDER_JUSTCALL,
self::PROVIDER_GOOGLE_MEET,
self::PROVIDER_GONG,
self::PROVIDER_HUBSPOT,
self::PROVIDER_CLOSE,
self::PROVIDER_TEAMS,
self::PROVIDER_SALESFORCE,
self::PROVIDER_GROOVE,
self::PROVIDER_XANT,
self::PROVIDER_GOOGLE,
self::PROVIDER_OFFICE,
self::PROVIDER_NATTERBOX,
self::PROVIDER_RINGCENTRAL,
self::PROVIDER_RINGCENTRAL_VIDEO,
self::PROVIDER_GOTOMEETING,
self::PROVIDER_DEMODESK,
self::PROVIDER_DIALPAD,
self::PROVIDER_ZOOM_PHONE,
self::PROVIDER_CLOUDCALL,
self::PROVIDER_CLOUDCALL_US,
self::PROVIDER_EIGHT_BY_EIGHT,
self::PROVIDER_EIGHT_BY_EIGHT_CA,
self::PROVIDER_EIGHT_BY_EIGHT_AP,
self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,
self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,
self::PROVIDER_CONNECT_AND_SELL,
self::PROVIDER_CLOUD_TALK,
self::PROVIDER_AMAZON_CONNECT,
self::PROVIDER_VONAGE,
self::PROVIDER_TALKDESK,
self::PROVIDER_TWILIO_FLEX,
self::PROVIDER_TWILIO_FLEX_DIRECT,
self::PROVIDER_TWILIO_VIDEO,
self::PROVIDER_AVAYA,
self::PROVIDER_TELUS,
self::PROVIDER_FIVE_NINE,
self::PROVIDER_APOLLO,
self::PROVIDER_ORUM,
self::PROVIDER_BLOOBIRDS,
];
public static $enumRecordingStates = [
self::RECORDING_OFF, // Default state
self::RECORDING_IN_PROGRESS,
self::RECORDING_PAUSED,
self::RECORDING_STOPPED,
self::RECORDING_RECORDED,
self::RECORDING_FAILED,
];
// @Important:
// This collection is not used anywhere, and is fully duplicated by the Channels const.
// Validate if it is referred somehow via the enum trait, and if not, remove it entirely.
// An even better strategy will be to move all those constants to a dedicated class
protected array $enumTypes = [
self::TYPE_SOFTPHONE,
self::TYPE_SOFTPHONE_INBOUND,
self::TYPE_CONFERENCE,
self::TYPE_SMS_INBOUND,
self::TYPE_SMS_OUTBOUND,
self::TYPE_EMAIL_INBOUND,
self::TYPE_EMAIL_OUTBOUND,
];
protected static $enumFailedStatuses = [
self::STATUS_NO_ANSWER,
self::STATUS_FAILED,
self::STATUS_BUSY,
self::STATUS_CANCELLED,
];
protected $table = 'activities';
protected $fillable = [
// Type of activity.
'type', // @todo refactor to `channel`
// The activity type.
'playbook_category_id',
// User who hosts the activity.
'user_id',
// Related Lead record (if applicable)
'lead_id',
// Related Account record (if applicable)
'account_id',
// Related Contact record (if applicable)
'contact_id',
// Related Opportunity record (if applicable)
'opportunity_id',
// Stage of activity.
'stage_id',
// Value of opportunity.
'value',
// If the activity relates to a CRM task.
'crm_provider_id',
// If the activity was created through an external device.
'device_id',
// the activity's language code
'language',
// transcription id
'transcription_id',
// Duration of the call, with microseconds precision.
'duration',
// One of enumStatuses above.
'status',
// Have we reminded them to log the call?
'log_reminder_sent_at',
// If activity is private or inter-org, flagged here.
'is_internal',
// Managers and above can mark a call as private, to exclude it from other team members
'is_private',
'is_processed',
// Boolean for this activity being instant invite handled.
'is_instant_invite',
// If activity is in recording state, flagged here.
'recording_state',
// If activity recording is overidden from default.
'recording_preference',
// if recording did (not) happen, why that is
'recording_reason_code',
// Average score, updated during
'average_score',
// Summary that the organizer has taken after the call.
'summary',
// Subject of the activity, usually taken from calendar event.
'title',
// Description of the activity, usually taken from calendar event.
'description',
// Start time, usually taken from calendar event.
'scheduled_start_time',
// End time, usually taken from calendar event.
'scheduled_end_time',
// When the call actually started.
'actual_start_time',
// When the call actually ended.
'actual_end_time',
// SMS: Message reference
'telephony_provider_id',
// SMS: Participant who sent message
'from_participant_id',
// SMS: Participant who should receive the message
'to_participant_id',
// When an external guest joins an organizers meeting room and the organizer is not present,
// send them an SMS notification that someone has joined.
'organizer_notified_at',
// where was the activity imported from
'source',
// The id in the source system (e.g. the bot id in Recall.ai)
'external_id',
// The provider, by default it is twilio.
'provider',
// Meeting location url
'location',
// The snapshot for displaying a poster image.
'poster_path',
'crm_configuration_id',
// If there is an automated message that the conversation is being recorded
'has_recording_prompt',
// If the activity is being live-streamed
'on_air',
'calendar_event_id',
];
protected $appends = [
'id_string',
'organizer',
];
protected $hidden = [
'uuid',
];
protected $visible = [
'id_string',
'type',
'duration',
'average_score',
'status',
'log_reminder_sent_at',
'title',
'description',
'is_internal',
'scheduled_start_time',
'scheduled_end_time',
'actual_start_time',
'actual_end_time',
'user',
'category',
'account',
'contact',
'opportunity',
'lead',
'stage',
'stats',
'participants',
'playlists',
'tracks',
'comments',
'plays',
'coachingFeedbacks',
'shares',
'favorites',
'language',
'transcription',
'is_private',
'is_instant_invite',
'on_air',
'calendar_event_id',
];
protected function casts(): array
{
return [
'scheduled_start_time' => 'datetime',
'scheduled_end_time' => 'datetime',
'actual_start_time' => 'datetime',
'actual_end_time' => 'datetime',
'organizer_notified_at' => 'datetime',
'log_reminder_sent_at' => 'datetime',
'is_internal' => 'boolean',
'duration' => 'integer',
'average_score' => 'decimal:2',
'is_private' => 'boolean',
'is_processed' => 'boolean',
'is_instant_invite' => 'boolean',
'value' => 'decimal:2',
'recording_preference' => 'boolean',
'recording_reason_code' => 'integer',
'has_recording_prompt' => 'boolean',
'on_air' => 'integer',
];
}
protected static function boot()
{
parent::boot();
static::updated(static function (Activity $activity) {
// If activity is about to start (pending, ringing, in-progress) or event is scheduled in less than 1 week
if (in_array($activity->status, [Activity::STATUS_PENDING, Activity::STATUS_RINGING, Activity::STATUS_IN_PROGRESS], true) ||
($activity->scheduled_start_time && (int) $activity->scheduled_start_time->diffInWeeks(new Carbon(), true) < 1)) {
if ($activity->isDirty('status')) {
event(new StatusUpdated($activity));
}
if ($activity->isDirty('stage_id')) {
event(new StageUpdated($activity));
}
if ($activity->isDirty(['lead_id', 'account_id', 'contact_id'])) {
event(new ProspectUpdated($activity));
}
if ($activity->isDirty('opportunity_id')) {
event(new ActivityUpdated($activity, 'activity.opportunity-updated', Auth::user()));
}
if ($activity->isDirty('title')) {
event(new TitleUpdated($activity));
}
}
if ($activity->isDirty('playbook_category_id')) {
event(new ActivityTypeUpdated($activity));
}
});
static::deleted(static function (Activity $activity) {
// Hard delete associated playlistActivities
$activity->playlistActivities()->delete();
});
}
public function getOrganizerAttribute(): ?Participant
{
$participant = $this->participants()->where('user_id', $this->user_id)->first();
if (! $participant instanceof Participant && $participant !== null) {
throw new RuntimeException(sprintf('$participant must be an instance of "%s" or null', Participant::class));
}
return $participant;
}
public function getFormattedValueAttribute()
{
$currencyCode = 'USD';
if ($this->opportunity) {
$currencyCode = $this->opportunity->getCurrencyCode();
}
$formatter = new CurrencyFormatter();
$formatter->setTextAttribute(NumberFormatter::CURRENCY_CODE, $currencyCode);
$formatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 0);
return $formatter->format($this->value, $currencyCode);
}
public function getProspectNameAttribute(): ?string
{
$prospectName = null;
if ($this->lead_id) {
$prospectName = $this->lead->name;
} elseif ($this->contact_id) {
$prospectName = $this->contact->name;
} elseif ($this->account_id) {
$prospectName = $this->account->name;
}
return $prospectName;
}
public function getProspectName(): ?string
{
/** @var string|null */
return $this->getAttribute('prospect_name');
}
/**
* Get activity title depending on prospect or title
*/
public function getActivityTitleAttribute(): ?string
{
$activityTitle = null;
if ($this->prospect && $this->prospect->getName()) {
if ($this->account_id) {
$activityTitle = $this->account->name;
} elseif ($this->lead_id) {
$activityTitle = $this->lead->company;
} elseif ($this->contact_id) {
$activityTitle = $this->contact->account ? $this->contact->account->name : $this->contact->name;
}
} elseif ($this->title) {
$activityTitle = $this->title;
}
return $activityTitle;
}
public function wasRecentlyCreated(): bool
{
return $this->wasRecentlyCreated;
}
public function getProspectTypeAttribute()
{
$prospectType = null;
if ($this->lead_id) {
$prospectType = 'Lead';
} elseif ($this->contact_id) {
$prospectType = 'Contact';
} elseif ($this->account_id) {
$prospectType = 'Account';
}
return $prospectType;
}
/**
* Return the best match for prospect. Results are in the following order of priority:
* 1. Lead
* 2. Contact
* 3. Account
* 4. NULL
*/
public function getProspectAttribute(): ?ProspectInterface
{
if ($this->hasLead()) {
return $this->getLead();
}
if ($this->hasContact()) {
return $this->getContact();
}
if ($this->hasAccount()) {
return $this->getAccount();
}
return null;
}
public function getTitleAttribute($value): ?string
{
return \getActivityTitleAttribute(
$this->user->name,
$this->getType(),
$value,
$this->prospect->name ?? null,
$this->from->national_phone_number ?? null
);
}
public function getTitle(): ?string
{
return $this->getAttribute('title');
}
public function getSummary(): ?string
{
return $this->getAttribute('summary');
}
public function isInternal(): bool
{
return $this->getAttribute('is_internal');
}
public function getIsPrivate(): bool
{
return $this->getAttribute('is_private');
}
public function getDescription(): ?string
{
return $this->getAttribute('description');
}
public function hasTitle(): bool
{
return $this->getOriginal('title') !== null;
}
public function getPlayCountAttribute()
{
return $this->getPlaysCountAttribute();
}
public function getPlaysCountAttribute()
{
if (! isset($this->attributes['plays_count'])) {
$this->loadCount('plays');
}
return $this->attributes['plays_count'];
}
public function getCommentCountAttribute()
{
return $this->getCommentsCountAttribute();
}
public function getCommentsCountAttribute()
{
if (! isset($this->attributes['comments_count'])) {
$this->loadCount('comments');
}
return $this->attributes['comments_count'];
}
public function getVisibleCommentsCountAttribute()
{
if (! isset($this->attributes['visible_comments_count'])) {
$activityCommentsService = app(ActivityCommentService::class);
$user = Auth::user() instanceof User ? Auth::user() : null;
$this->attributes['visible_comments_count'] = $activityCommentsService
->getVisibleCommentsCount($this, $user);
}
return $this->attributes['visible_comments_count'];
}
public function getShareCountAttribute()
{
return $this->getSharesCountAttribute();
}
public function getSharesCountAttribute()
{
if (! isset($this->attributes['shares_count'])) {
$this->loadCount('shares');
}
return $this->attributes['shares_count'];
}
/**
* Get the count of favorites playlists this activity appears in
*/
public function getFavoriteCountAttribute(): int
{
return $this->getFavoritesCountAttribute();
}
public function getFavoritesCountAttribute()
{
if (! isset($this->attributes['favorites_count'])) {
$this->loadCount('favorites');
}
return $this->attributes['favorites_count'];
}
public function getActiveParticipantsCountAttribute()
{
if (! isset($this->attributes['active_participants_count'])) {
$this->loadCount('activeParticipants');
}
return $this->attributes['active_participants_count'];
}
public function getTracksWithTelephonyCountAttribute()
{
if (! isset($this->attributes['tracks_with_telephony_count'])) {
$this->loadCount('tracksWithTelephony');
}
return $this->attributes['tracks_with_telephony_count'];
}
/**
* @TEMP
* $this->loadCount('tracksWithTelephony') throws null pointer exception
*/
public function countTracksWithTelephony(): int
{
return $this->tracks()->whereNotNull('telephony_provider_id')->count();
}
public function getDuration(): float
{
return $this->getAttribute('duration');
}
public function getDurationForHumansAttribute()
{
return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true);
}
public function getDurationForHumansShortAttribute(): string
{
return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true, true);
}
public function hasRec...
|
NULL
|
|
74782
|
NULL
|
0
|
2026-04-23T10:16:36.751235+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776939396751_m1.jpg...
|
PhpStorm
|
faVsco.js – Activity.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
167
4
102
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Models;
use Carbon\Carbon;
use Database\Factories\ActivityFactory;
use DateTimeInterface;
use Exception;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent;
use Illuminate\Database\Eloquent\Attributes\Scope;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use InvalidArgumentException;
use Jiminny\Component\ElasticSearch;
use Jiminny\Component\MeetingBot;
use Jiminny\Component\Model\BitwiseFlagTrait;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Sidekick\SidekickService;
use Jiminny\Component\Uuid\UuidAwareInterface;
use Jiminny\Component\Workflow;
use Jiminny\Contracts;
use Jiminny\Contracts\Crm\ProspectInterface;
use Jiminny\DTO\ImportCall\Call;
use Jiminny\Events\Activities\ActivityTypeUpdated;
use Jiminny\Events\Activities\ActivityUpdated;
use Jiminny\Events\Activities\ProspectUpdated;
use Jiminny\Events\Activities\StageUpdated;
use Jiminny\Events\Activities\StatusUpdated;
use Jiminny\Events\Activities\TitleUpdated;
use Jiminny\Exceptions\InvalidArgumentException as InvalidArgumentJiminnyException;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\RuntimeException;
use Jiminny\Models;
use Jiminny\Models\Activity\ActivitySummaryLog;
use Jiminny\Models\Activity\ActivityUploadSetting;
use Jiminny\Models\Activity\AvailabilityNotification;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Log;
use Jiminny\Models\Activity\Message;
use Jiminny\Models\Activity\Moment;
use Jiminny\Models\Activity\Note;
use Jiminny\Models\Activity\ParticipantSpeech;
use Jiminny\Models\Activity\Play;
use Jiminny\Models\Activity\Question;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\Activity\Snapshot;
use Jiminny\Models\Activity\Stats;
use Jiminny\Models\Activity\SubscriptionSet;
use Jiminny\Models\Activity\TopicTrigger;
use Jiminny\Models\Activity\Transcription;
use Jiminny\Models\Calendar\CalendarEvent;
use Jiminny\Models\Crm\Configuration;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\ElasticSearch\ActivityElasticSearchTrait;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Participant\Connection;
use Jiminny\Models\Playlist\Activity as PlaylistActivity;
use Jiminny\Services\Activity\ActivityProviderRegistry;
use Jiminny\Services\Activity\Import\DataResolvers\UpdateCrmDataByStrategy;
use Jiminny\Services\Activity\Import\DataResolvers\UpdateCrmDataResolverFactory;
use Jiminny\Services\Activity\Import\DataResolvers\UpdateCrmDataResolverInterface;
use Jiminny\Traits\Enums;
use Jiminny\Traits\RequiresUUID;
use Jiminny\Utils\CurrencyFormatter;
use NumberFormatter;
use function in_array;
/**
* Jiminny\Models\Activity
*
* @property null|int $auto_score filled from ES hydrator, not in DB!
* @property-read Account|null $account
* @property-read CalendarEvent|null $calendarEvent
* @property-read Contact|null $contact
* @property-read Lead|null $lead
* @property-read Opportunity|null $opportunity
* @property-read Stage|null $stage
* @property int $id
* @property mixed|null $uuid
* @property string|null $source
* @property string|null $external_id
* @property string $provider
* @property string|null $location
* @property string|null $telephony_provider_id
* @property int|null $from_participant_id
* @property int|null $to_participant_id
* @property int|null $device_id
* @property string|null $type
* @property int|null $playbook_category_id
* @property int $user_id
* @property int|null $lead_id
* @property int|null $account_id
* @property int|null $contact_id
* @property int|null $opportunity_id
* @property int|null $stage_id
* @property string|null $value
* @property int|null $crm_configuration_id
* @property string|null $crm_provider_id
* @property string|null $language
* @property int|null $transcription_id
* @property int $duration
* @property string $status
* @property int|null $on_air
* @property int|null $calendar_event_id
* @property string $recording_state
* @property bool|null $recording_preference
* @property int $recording_reason_code
* @property int $summary_reminder_sent
* @property \Illuminate\Support\Carbon|null $log_reminder_sent_at
* @property \Illuminate\Support\Carbon|null $organizer_notified_at
* @property bool|null $has_recording_prompt
* @property bool $is_internal
* @property int $is_locked
* @property int $is_recording
* @property bool|null $is_processed
* @property bool $is_private
* @property bool $is_instant_invite
* @property string|null $poster_path
* @property string|null $summary
* @property string|null $title
* @property string|null $description
* @property \Illuminate\Support\Carbon|null $scheduled_start_time
* @property \Illuminate\Support\Carbon|null $scheduled_end_time
* @property \Illuminate\Support\Carbon|null $actual_start_time
* @property \Illuminate\Support\Carbon|null $actual_end_time
* @property int|null $uploaded_by
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property string|null $average_score
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant> $activeParticipants
* @property-read int|null $active_participants_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Scorecard\ActivityScorecardRuleTrigger> $activityScorecardRuleTriggers
* @property-read int|null $activity_scorecard_rule_triggers_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Scorecard\ActivityScorecardRule> $activityScorecardRules
* @property-read int|null $activity_scorecard_rules_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, AvailabilityNotification> $availabilityNotifications
* @property-read int|null $availability_notifications_count
* @property-read \Jiminny\Models\PlaybookCategory|null $category
* @property-read \Illuminate\Database\Eloquent\Collection<int, CoachRequest> $coachRequests
* @property-read int|null $coach_requests_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\CoachingFeedback> $coachingFeedbacks
* @property-read int|null $coaching_feedbacks_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Message> $coachingMessages
* @property-read int|null $coaching_messages_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Comment> $comments
* @property-read int|null $comments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Connection> $connections
* @property-read int|null $connections_count
* @property-read Configuration|null $crm
* @property-read \Illuminate\Database\Eloquent\Collection<int, FieldData> $data
* @property-read int|null $data_count
* @property-read \Jiminny\Models\Device|null $device
* @property-read \Kalnoy\Nestedset\Collection<int, \Jiminny\Models\Playlist> $favoritePlaylists
* @property-read int|null $favorite_playlists_count
* @property-read \Jiminny\Models\Participant|null $from
* @property-read string|null $activity_title
* @property-read mixed $comment_count
* @property-read mixed $duration_for_humans
* @property-read string $duration_for_humans_short
* @property-read int $favorite_count
* @property-read mixed $favorites_count
* @property-read mixed $formatted_value
* @property-read string $id_string
* @property-read \Jiminny\Models\Participant|null $organizer
* @property-read mixed $play_count
* @property-read int|null $plays_count
* @property-read ?ProspectInterface $prospect
* @property-read string|null $prospect_name
* @property-read mixed $prospect_type
* @property-read mixed $share_count
* @property-read int|null $shares_count
* @property-read int|null $tracks_with_telephony_count
* @property-read int|null $visible_comments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\CoachingFeedback> $latestCoachingFeedbacks
* @property-read int|null $latest_coaching_feedbacks_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Log> $logs
* @property-read int|null $logs_count
* @property-read \Jiminny\Models\Track|null $masterTrack
* @property-read \Illuminate\Database\Eloquent\Collection<int, Message> $messages
* @property-read int|null $messages_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Moment> $moments
* @property-read int|null $moments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Note> $notes
* @property-read int|null $notes_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant\Share> $participantShares
* @property-read int|null $participant_shares_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, ParticipantSpeech> $participantSpeeches
* @property-read int|null $participant_speeches_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant\ParticipantStats> $participantStats
* @property-read int|null $participant_stats_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant> $participants
* @property-read int|null $participants_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, PlaylistActivity> $playlistActivities
* @property-read int|null $playlist_activities_count
* @property-read \Kalnoy\Nestedset\Collection<int, \Jiminny\Models\Playlist> $playlists
* @property-read int|null $playlists_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Play> $plays
* @property-read \Illuminate\Database\Eloquent\Collection<int, Question> $questions
* @property-read int|null $questions_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Session> $sessions
* @property-read int|null $sessions_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Share> $shares
* @property-read \Illuminate\Database\Eloquent\Collection<int, Snapshot> $snapshots
* @property-read int|null $snapshots_count
* @property-read Stats|null $stats
* @property-read \Jiminny\Models\Participant|null $to
* @property-read \Illuminate\Database\Eloquent\Collection<int, TopicTrigger> $topicTriggers
* @property-read int|null $topic_triggers_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Track> $tracks
* @property-read int|null $tracks_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Track> $tracksWithTelephony
* @property-read Transcription|null $transcription
* @property-read \Jiminny\Models\User $user
* @property-read \Illuminate\Database\Eloquent\Collection<int, Comment> $visibleComments
*
* @method static \Illuminate\Database\Eloquent\Collection<int, static> all($columns = ['*'])
* @method static \Jiminny\Component\Eloquent\Builder|Activity chunkByIdDesc($count, callable $callback, $column = null, $alias = null)
* @method static \Database\Factories\ActivityFactory factory(...$parameters)
* @method static \Illuminate\Database\Eloquent\Collection<int, static> get($columns = ['*'])
* @method static \Jiminny\Component\Eloquent\Builder|Activity heldBetween(\Carbon\Carbon $start, \Carbon\Carbon $end)
* @method static \Jiminny\Component\Eloquent\Builder|Activity idOrUuId($idOrUuid, bool $first = true)
* @method static \Jiminny\Component\Eloquent\Builder|Activity newModelQuery()
* @method static \Jiminny\Component\Eloquent\Builder|Activity newQuery()
* @method static Builder|Activity onlyTrashed()
* @method static \Jiminny\Component\Eloquent\Builder|Activity query()
* @method static \Jiminny\Component\Eloquent\Builder|Activity scheduledBetween(\Carbon\Carbon $start, \Carbon\Carbon $end)
* @method static \Jiminny\Component\Eloquent\Builder|Activity inOpenDeals()
* @method static \Jiminny\Component\Eloquent\Builder|Activity notInOpenDeals()
* @method static \Jiminny\Component\Eloquent\Builder|Activity forTeam(int $teamId)
* @method static \Jiminny\Component\Eloquent\Builder|Activity search(callable $searchQuery, $key = null, $sortByResults = true)
* @method static \Jiminny\Component\Eloquent\Builder|Activity uuid(string $uuid, bool $first = true)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereAccountId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereActualEndTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereActualStartTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereAverageScore($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCalendarEventId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereContactId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCreatedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCrmConfigurationId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCrmProviderId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDeletedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDescription($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDeviceId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDuration($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereFromParticipantId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereHasRecordingPrompt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsInstantInvite($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsInternal($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsLocked($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsPrivate($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsProcessed($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsRecording($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLanguage($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLeadId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLocation($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLogReminderSentAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereOnAir($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereOpportunityId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereOrganizerNotifiedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity wherePlaybookCategoryId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity wherePosterPath($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereProvider($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereRecordingPreference($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereRecordingReasonCode($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereRecordingState($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereScheduledEndTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereScheduledStartTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereSource($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereExternalId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereStageId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereStatus($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereSummary($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereSummaryReminderSent($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereTelephonyProviderId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereTitle($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereToParticipantId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereTranscriptionId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereType($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUpdatedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUploadedBy($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUserId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUuid($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereValue($value)
* @method static Builder|Activity withTrashed()
* @method static Builder|Activity withoutTrashed()
*
* @mixin \Eloquent
*/
class Activity extends Model implements
ElasticSearch\Contract\Searchable,
Workflow\Workflow\WorkflowAwareInterface,
Models\Contracts\ActivityContract,
Contracts\Model\ActivityInterface,
UuidAwareInterface
{
use HasFactory;
use Enums;
use SoftDeletes;
use RequiresUUID;
use BitwiseFlagTrait;
use ElasticSearch\Model\Searchable;
use ActivityElasticSearchTrait;
use Workflow\Workflow\WorkflowAware {
transitionTo as traitTransitionTo;
}
public const int FLAG_RECORDING_REASON_DEFAULT = 0;
// Recording Prompted but never started
public const int FLAG_RECORDING_REASON_COMPLIANCE_PROMPT = 1;
public const int FLAG_RECORDING_REASON_COMPLIANCE_RESUMED = 2;
public const int FLAG_RECORDING_REASON_NO_AUDIO = 3;
// Recording Disabled by Organization
public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT = 4;
// Recording was restricted to one-side recordings only
public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT_ONE_SIDE = 8;
// Recording was not started because it was internal and team setting disabled that.
public const int FLAG_RECORDING_REASON_TEAM_INTERNAL_DISABLED = 16;
// Recording was not started because it was internal and user setting disabled that.
public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED = 32;
// Recording was not started because user setting disabled automatic recording.
public const int FLAG_RECORDING_REASON_USER_AUTOMATIC_DISABLED = 64;
// Recording was not started because team setting disabled automatic recording.
public const int FLAG_RECORDING_REASON_TEAM_AUTOMATIC_DISABLED = 128;
// Recording was not started because user has overriden default.
public const int FLAG_RECORDING_REASON_PREFERENCE_OVERRIDE = 256;
// Recording was not started because they don't want internal, and this meeting was not scheduled/imported in time.
public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED_UNSCHEDULED = 512;
// Recording was not started because their team setting does excludes the meeting type.
public const int FLAG_RECORDING_REASON_UNSUPPORTED_TYPE = 1024;
// Recording was not started because the external provider disabled it (or recording is missing etc).
public const int FLAG_RECORDING_REASON_EXTERNALLY_DISABLED = 2048;
// Recording was stopped externally ("exit-meeting" Pusher event)
public const int FLAG_RECORDING_REASON_STOPPED_EXTERNALLY = 384;
// Recording couldn't be started due to Zoom hosting conflict error
public const int FLAG_RECORDING_REASON_HOSTING_CONFLICT = 448;
// meeting.failed event with reason code BOT_DENIED_FROM_LOBBY
public const int FLAG_RECORDING_REASON_MEETING_BOT_DENIED_FROM_LOBBY = 4096;
// meeting.failed event with reason code LOBBY_TIMEOUT
public const int FLAG_RECORDING_REASON_MEETING_BOT_LOBBY_TIMEOUT = 8192;
// meeting.failed event with reason code BOT_KICKED
public const int FLAG_RECORDING_REASON_MEETING_BOT_KICKED = 16384;
// meeting.failed event with reason code UNKNOWN
public const int FLAG_RECORDING_REASON_MEETING_BOT_UNKNOWN = 32768;
public const int FLAG_RECORDING_REASON_CONSENT_DENIED = 65536;
// Invalid meeting (e.g. URL is invalid, or the meeting is not found)
public const int FLAG_RECORDING_REASON_MEETING_BOT_INVALID = 131072;
// The host stopped the recording.
public const int FLAG_RECORDING_REASON_USER_STOPPED = 262144;
// Recording was not started because an alternative vendor disabled it (or overrode it).
public const int FLAG_RECORDING_REASON_VENDOR_OVERRIDE = 1048576;
// Login required meeting.failed code
public const int FLAG_RECORDING_REASON_LOGIN_REQUIRED = 524288;
// Password for meeting was not provided - meeting.failed code
public const int FLAG_RECORDING_REASON_MEETING_PASSWORD_NOT_PROVIDED = 2097152;
// meeting.failed - when the meeting is locked
public const int FLAG_RECORDING_REASON_MEETING_IS_LOCKED = 4194304;
// max recording duration reached
public const int FLAG_RECORDING_REASON_MAX_DURATION_REACHED = 8388608;
// recording size is too small
public const int FLAG_RECORDING_REASON_EMPTY_RECORDING = 16777216;
// meeting.failed - when bot is redirected to sign in page multiple times
public const int FLAG_RECORDING_REASON_MAX_RESTART_COUNT_IS_REACHED = 33554432;
// meeting.failed event with reason code CONNECTION_LOST
public const int FLAG_RECORDING_REASON_MEETING_BOT_CONNECTION_LOST = 67108864;
// recording is corrupted.
public const int FLAG_RECORDING_REASON_MEDIA_FILE_UNSUPPORTED_MIME_TYPE = 134217728;
// meeting ended in lobby
public const int FLAG_RECORDING_REASON_MEETING_ENDED_IN_LOBBY = 268435456;
// meeting not started
public const int FLAG_RECORDING_REASON_REASON_MEETING_NOT_STARTED = 536870912;
// unfinished zoom custom disclaimer
public const int FLAG_RECORDING_REASON_FEATURE_RULE_NOT_FOUND_ERROR = 1073741824;
// recording download failed - server error
public const int FLAG_RECORDING_REASON_SERVER_ERROR = 2147483648;
// recording download failed - client code 404
public const int FLAG_RECORDING_REASON_NOT_FOUND = 2147483649;
// recording download failed - client code 401, 403
public const int FLAG_RECORDING_REASON_ACCESS_DENIED = 2147483650;
// recording download failed - client code 429
public const int FLAG_RECORDING_REASON_TOO_MANY_REQUESTS = 2147483651;
// recording download failed - unknown client error
public const int FLAG_RECORDING_REASON_CLIENT_ERROR = 2147483652;
// recording download failed - unknown error
public const int FLAG_RECORDING_REASON_UNKNOWN_ERROR = 2147483653;
// It has been setup ahead of time through calendar
public const string STATUS_SCHEDULED = 'scheduled';
// It is awaiting audio.
public const string STATUS_PENDING = 'pending';
// Participant(s) dialed in, awaiting organizer.
public const string STATUS_RINGING = 'ringing';
// Call is in progress.
public const string STATUS_IN_PROGRESS = 'in-progress';
// It has ended.
public const string STATUS_COMPLETED = 'completed';
// Cancelled prior to starting.
public const string STATUS_CANCELLED = 'canceled';
public const string STATUS_DUPLICATED = 'duplicated'; // duplicated conference
public const string STATUS_STARTING_SOON = 'starting-soon';
public const string STATUS_BOT_CREATE_SENT = 'bot-create-sent';
public const string STATUS_BOT_INSTANCE_WORKER_ASSIGNED = 'worker-assigned';
public const string STATUS_BOT_INSTANCE_STARTED = 'bot-started';
// When bot instance is waiting in lobby
public const string STATUS_BOT_INSTANCE_WAITING_LOBBY = 'bot-waiting';
public const string STATUS_BUSY = 'busy';
public const string STATUS_NO_ANSWER = 'no-answer';
public const string STATUS_FAILED = 'failed'; // Used by SMS too
// SMS related
public const string STATUS_ACCEPTED = 'accepted';
public const string STATUS_QUEUED = 'queued';
public const string STATUS_SENDING = 'sending';
public const string STATUS_SENT = 'sent';
public const string STATUS_DELIVERED = 'delivered';
public const string STATUS_UNDELIVERED = 'undelivered';
public const string STATUS_RECEIVING = 'receiving';
public const string STATUS_RECEIVED = 'received';
public const string STATUS_RESENT = 'resent';
public const array SMS_STATUSES = [
Activity::STATUS_RECEIVED,
Activity::STATUS_SENT,
Activity::STATUS_DELIVERED,
];
public const array SOFT_PHONE_CONFERENCE_STATUSES = [
Activity::STATUS_IN_PROGRESS,
Activity::STATUS_COMPLETED,
];
// @todo refactor prefix from `TYPE_` to `CHANNEL_`
public const string TYPE_SOFTPHONE = 'softphone';
public const string TYPE_SOFTPHONE_INBOUND = 'softphone-inbound';
public const string TYPE_CONFERENCE = 'conference';
public const string TYPE_SMS_INBOUND = 'sms-inbound';
public const string TYPE_SMS_OUTBOUND = 'sms-outbound';
public const string TYPE_EMAIL_INBOUND = 'email-inbound';
public const string TYPE_EMAIL_OUTBOUND = 'email-outbound';
public const array CHANNELS = [
self::TYPE_SOFTPHONE,
self::TYPE_SOFTPHONE_INBOUND,
self::TYPE_CONFERENCE,
self::TYPE_SMS_INBOUND,
self::TYPE_SMS_OUTBOUND,
self::TYPE_EMAIL_INBOUND,
self::TYPE_EMAIL_OUTBOUND,
];
public const array PLAYABLE_CHANNELS = [
self::TYPE_SOFTPHONE,
self::TYPE_SOFTPHONE_INBOUND,
self::TYPE_CONFERENCE,
];
// Recording States
public const string RECORDING_OFF = 'off'; // Default state
public const string RECORDING_IN_PROGRESS = 'in-progress';
public const string RECORDING_PAUSED = 'paused';
public const string RECORDING_STOPPED = 'stopped'; // To never be resumed.
public const string RECORDING_RECORDED = 'recorded'; // At least some portion of it was recorded.
public const string RECORDING_FAILED = 'failed'; // Recording was attempted but failed for some reason.
// Live Stream States
public const int ON_AIR_DEFAULT = 0;
public const int ON_AIR_READY = 1;
public const int ON_AIR_PREPARING = 2;
public const int ON_AIR_STREAMING = 3;
public const int ON_AIR_FINISHED = 4;
public const int ON_AIR_NOT_STREAMED = 5;
public const int ON_AIR_ERROR = -1;
public const string SOURCE_GONG = 'gong';
public const string SOURCE_CHORUS = 'chorus';
public const string SOURCE_OUTLOOK = 'outlook';
public const string SOURCE_GOOGLE = 'google';
// Activity Providers
public const string PROVIDER_TWILIO = 'twilio'; // XXX: This is run via the Jiminny Provider.
public const string PROVIDER_OUTREACH = 'outreach';
public const string PROVIDER_ZOOM_BOT = 'zoom-bot';
public const string PROVIDER_SALESLOFT = 'salesloft';
public const string PROVIDER_GOOGLE = 'google';
public const string PROVIDER_AIRCALL = 'aircall';
public const string PROVIDER_JUSTCALL = 'justcall';
public const string PROVIDER_GOOGLE_MEET = 'google-meet';
public const string PROVIDER_GONG = 'gong';
public const string PROVIDER_HUBSPOT = 'hubspot';
public const string PROVIDER_CLOSE = 'close';
public const string PROVIDER_TEAMS = 'ms-teams';
public const string PROVIDER_SALESFORCE = 'salesforce';
public const string PROVIDER_GROOVE = 'groove';
public const string PROVIDER_XANT = 'xant';
public const string PROVIDER_OFFICE = 'office';
public const string PROVIDER_NATTERBOX = 'natterbox';
public const string PROVIDER_RINGCENTRAL = 'ringcentral';
public const string PROVIDER_RINGCENTRAL_VIDEO = 'ringcentral-video';
public const string PROVIDER_GOTOMEETING = 'go-to-meeting';
public const string PROVIDER_DEMODESK = 'demo-desk';
public const string PROVIDER_DIALPAD = 'dialpad';
public const string PROVIDER_ZOOM_PHONE = 'zoom-phone';
public const string PROVIDER_CLOUDCALL = 'cloudcall';
public const string PROVIDER_CLOUDCALL_US = 'cloudcall-us';
public const string PROVIDER_EIGHT_BY_EIGHT = 'eight-by-eight'; // "8x8" UK
public const string PROVIDER_EIGHT_BY_EIGHT_CA = 'eight-by-eight-ca'; // "8x8" Canada
public const string PROVIDER_EIGHT_BY_EIGHT_AP = 'eight-by-eight-ap'; // "8x8" Australia
public const string PROVIDER_EIGHT_BY_EIGHT_US_EAST = 'eight-by-eight-use'; // "8x8" US East
public const string PROVIDER_EIGHT_BY_EIGHT_US_WEST = 'eight-by-eight-usw'; // "8x8" US West
public const string PROVIDER_CONNECT_AND_SELL = 'connect-and-sell';
public const string PROVIDER_CLOUD_TALK = 'cloud-talk';
public const string PROVIDER_AMAZON_CONNECT = 'amazon-connect';
public const string PROVIDER_VONAGE = 'vonage';
public const string PROVIDER_MIGRATOR = 'migrator';
public const string PROVIDER_UPLOADER = 'uploader';
public const string PROVIDER_TALKDESK = 'talkdesk';
public const string PROVIDER_TWILIO_FLEX = 'twilio-flex';
public const string PROVIDER_TWILIO_FLEX_DIRECT = 'twilio-flex-direct';
public const string PROVIDER_TWILIO_VIDEO = 'twilio-video';
public const string PROVIDER_AVAYA = 'avaya';
public const string PROVIDER_TELUS = 'telus';
public const string PROVIDER_FIVE_NINE = 'five-nine';
public const string PROVIDER_APOLLO = 'apollo';
public const string PROVIDER_ORUM = 'orum';
public const string PROVIDER_BLOOBIRDS = 'bloobirds';
/**
* @const API_PROVIDERS
* A list of integrations that import calls via API instead of webhooks
*/
public const array API_PROVIDERS = [
self::PROVIDER_OUTREACH,
self::PROVIDER_SALESLOFT,
self::PROVIDER_HUBSPOT,
self::PROVIDER_GROOVE,
self::PROVIDER_XANT,
self::PROVIDER_NATTERBOX,
self::PROVIDER_CLOUDCALL,
self::PROVIDER_CLOUDCALL_US,
self::PROVIDER_EIGHT_BY_EIGHT,
self::PROVIDER_EIGHT_BY_EIGHT_CA,
self::PROVIDER_EIGHT_BY_EIGHT_AP,
self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,
self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,
self::PROVIDER_CONNECT_AND_SELL,
self::PROVIDER_CLOUD_TALK,
self::PROVIDER_AMAZON_CONNECT,
self::PROVIDER_VONAGE,
self::PROVIDER_TALKDESK,
self::PROVIDER_TWILIO_VIDEO,
self::PROVIDER_TWILIO_FLEX,
self::PROVIDER_TWILIO_FLEX_DIRECT,
self::PROVIDER_FIVE_NINE,
self::PROVIDER_APOLLO,
self::PROVIDER_ORUM,
self::PROVIDER_BLOOBIRDS,
self::PROVIDER_RINGCENTRAL,
self::PROVIDER_AVAYA,
self::PROVIDER_TELUS,
];
public const array FINITE_STATES = [
self::TYPE_SOFTPHONE => [
self::STATUS_COMPLETED,
self::STATUS_FAILED,
self::STATUS_NO_ANSWER,
self::STATUS_BUSY,
],
self::TYPE_SOFTPHONE_INBOUND => [
self::STATUS_COMPLETED,
self::STATUS_FAILED,
self::STATUS_NO_ANSWER,
self::STATUS_BUSY,
],
self::TYPE_CONFERENCE => self::FINITE_STATES_CONFERENCE,
];
public const array FINITE_STATES_CONFERENCE = [
self::STATUS_COMPLETED,
self::STATUS_FAILED,
self::STATUS_CANCELLED,
];
public const array MEETING_BOT_JOIN_ATTEMPTED = [
self::STATUS_BOT_INSTANCE_WAITING_LOBBY,
self::STATUS_BOT_INSTANCE_STARTED,
];
public static array $enumStatuses = [
self::STATUS_SCHEDULED,
self::STATUS_PENDING,
self::STATUS_RINGING,
self::STATUS_IN_PROGRESS,
self::STATUS_COMPLETED,
self::STATUS_CANCELLED,
self::STATUS_BUSY,
self::STATUS_NO_ANSWER,
self::STATUS_FAILED,
self::STATUS_ACCEPTED,
self::STATUS_QUEUED,
self::STATUS_SENDING,
self::STATUS_SENT,
self::STATUS_RESENT,
self::STATUS_DELIVERED,
self::STATUS_UNDELIVERED,
self::STATUS_RECEIVING,
self::STATUS_RECEIVED,
self::STATUS_BOT_INSTANCE_WAITING_LOBBY,
self::STATUS_STARTING_SOON,
self::STATUS_BOT_INSTANCE_WORKER_ASSIGNED,
self::STATUS_BOT_INSTANCE_STARTED,
self::STATUS_DUPLICATED,
];
public static array $enumProviders = [
self::PROVIDER_TWILIO,
self::PROVIDER_OUTREACH,
self::PROVIDER_ZOOM_BOT,
self::PROVIDER_SALESLOFT,
self::PROVIDER_AIRCALL,
self::PROVIDER_JUSTCALL,
self::PROVIDER_GOOGLE_MEET,
self::PROVIDER_GONG,
self::PROVIDER_HUBSPOT,
self::PROVIDER_CLOSE,
self::PROVIDER_TEAMS,
self::PROVIDER_SALESFORCE,
self::PROVIDER_GROOVE,
self::PROVIDER_XANT,
self::PROVIDER_GOOGLE,
self::PROVIDER_OFFICE,
self::PROVIDER_NATTERBOX,
self::PROVIDER_RINGCENTRAL,
self::PROVIDER_RINGCENTRAL_VIDEO,
self::PROVIDER_GOTOMEETING,
self::PROVIDER_DEMODESK,
self::PROVIDER_DIALPAD,
self::PROVIDER_ZOOM_PHONE,
self::PROVIDER_CLOUDCALL,
self::PROVIDER_CLOUDCALL_US,
self::PROVIDER_EIGHT_BY_EIGHT,
self::PROVIDER_EIGHT_BY_EIGHT_CA,
self::PROVIDER_EIGHT_BY_EIGHT_AP,
self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,
self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,
self::PROVIDER_CONNECT_AND_SELL,
self::PROVIDER_CLOUD_TALK,
self::PROVIDER_AMAZON_CONNECT,
self::PROVIDER_VONAGE,
self::PROVIDER_TALKDESK,
self::PROVIDER_TWILIO_FLEX,
self::PROVIDER_TWILIO_FLEX_DIRECT,
self::PROVIDER_TWILIO_VIDEO,
self::PROVIDER_AVAYA,
self::PROVIDER_TELUS,
self::PROVIDER_FIVE_NINE,
self::PROVIDER_APOLLO,
self::PROVIDER_ORUM,
self::PROVIDER_BLOOBIRDS,
];
public static $enumRecordingStates = [
self::RECORDING_OFF, // Default state
self::RECORDING_IN_PROGRESS,
self::RECORDING_PAUSED,
self::RECORDING_STOPPED,
self::RECORDING_RECORDED,
self::RECORDING_FAILED,
];
// @Important:
// This collection is not used anywhere, and is fully duplicated by the Channels const.
// Validate if it is referred somehow via the enum trait, and if not, remove it entirely.
// An even better strategy will be to move all those constants to a dedicated class
protected array $enumTypes = [
self::TYPE_SOFTPHONE,
self::TYPE_SOFTPHONE_INBOUND,
self::TYPE_CONFERENCE,
self::TYPE_SMS_INBOUND,
self::TYPE_SMS_OUTBOUND,
self::TYPE_EMAIL_INBOUND,
self::TYPE_EMAIL_OUTBOUND,
];
protected static $enumFailedStatuses = [
self::STATUS_NO_ANSWER,
self::STATUS_FAILED,
self::STATUS_BUSY,
self::STATUS_CANCELLED,
];
protected $table = 'activities';
protected $fillable = [
// Type of activity.
'type', // @todo refactor to `channel`
// The activity type.
'playbook_category_id',
// User who hosts the activity.
'user_id',
// Related Lead record (if applicable)
'lead_id',
// Related Account record (if applicable)
'account_id',
// Related Contact record (if applicable)
'contact_id',
// Related Opportunity record (if applicable)
'opportunity_id',
// Stage of activity.
'stage_id',
// Value of opportunity.
'value',
// If the activity relates to a CRM task.
'crm_provider_id',
// If the activity was created through an external device.
'device_id',
// the activity's language code
'language',
// transcription id
'transcription_id',
// Duration of the call, with microseconds precision.
'duration',
// One of enumStatuses above.
'status',
// Have we reminded them to log the call?
'log_reminder_sent_at',
// If activity is private or inter-org, flagged here.
'is_internal',
// Managers and above can mark a call as private, to exclude it from other team members
'is_private',
'is_processed',
// Boolean for this activity being instant invite handled.
'is_instant_invite',
// If activity is in recording state, flagged here.
'recording_state',
// If activity recording is overidden from default.
'recording_preference',
// if recording did (not) happen, why that is
'recording_reason_code',
// Average score, updated during
'average_score',
// Summary that the organizer has taken after the call.
'summary',
// Subject of the activity, usually taken from calendar event.
'title',
// Description of the activity, usually taken from calendar event.
'description',
// Start time, usually taken from calendar event.
'scheduled_start_time',
// End time, usually taken from calendar event.
'scheduled_end_time',
// When the call actually started.
'actual_start_time',
// When the call actually ended.
'actual_end_time',
// SMS: Message reference
'telephony_provider_id',
// SMS: Participant who sent message
'from_participant_id',
// SMS: Participant who should receive the message
'to_participant_id',
// When an external guest joins an organizers meeting room and the organizer is not present,
// send them an SMS notification that someone has joined.
'organizer_notified_at',
// where was the activity imported from
'source',
// The id in the source system (e.g. the bot id in Recall.ai)
'external_id',
// The provider, by default it is twilio.
'provider',
// Meeting location url
'location',
// The snapshot for displaying a poster image.
'poster_path',
'crm_configuration_id',
// If there is an automated message that the conversation is being recorded
'has_recording_prompt',
// If the activity is being live-streamed
'on_air',
'calendar_event_id',
];
protected $appends = [
'id_string',
'organizer',
];
protected $hidden = [
'uuid',
];
protected $visible = [
'id_string',
'type',
'duration',
'average_score',
'status',
'log_reminder_sent_at',
'title',
'description',
'is_internal',
'scheduled_start_time',
'scheduled_end_time',
'actual_start_time',
'actual_end_time',
'user',
'category',
'account',
'contact',
'opportunity',
'lead',
'stage',
'stats',
'participants',
'playlists',
'tracks',
'comments',
'plays',
'coachingFeedbacks',
'shares',
'favorites',
'language',
'transcription',
'is_private',
'is_instant_invite',
'on_air',
'calendar_event_id',
];
protected function casts(): array
{
return [
'scheduled_start_time' => 'datetime',
'scheduled_end_time' => 'datetime',
'actual_start_time' => 'datetime',
'actual_end_time' => 'datetime',
'organizer_notified_at' => 'datetime',
'log_reminder_sent_at' => 'datetime',
'is_internal' => 'boolean',
'duration' => 'integer',
'average_score' => 'decimal:2',
'is_private' => 'boolean',
'is_processed' => 'boolean',
'is_instant_invite' => 'boolean',
'value' => 'decimal:2',
'recording_preference' => 'boolean',
'recording_reason_code' => 'integer',
'has_recording_prompt' => 'boolean',
'on_air' => 'integer',
];
}
protected static function boot()
{
parent::boot();
static::updated(static function (Activity $activity) {
// If activity is about to start (pending, ringing, in-progress) or event is scheduled in less than 1 week
if (in_array($activity->status, [Activity::STATUS_PENDING, Activity::STATUS_RINGING, Activity::STATUS_IN_PROGRESS], true) ||
($activity->scheduled_start_time && (int) $activity->scheduled_start_time->diffInWeeks(new Carbon(), true) < 1)) {
if ($activity->isDirty('status')) {
event(new StatusUpdated($activity));
}
if ($activity->isDirty('stage_id')) {
event(new StageUpdated($activity));
}
if ($activity->isDirty(['lead_id', 'account_id', 'contact_id'])) {
event(new ProspectUpdated($activity));
}
if ($activity->isDirty('opportunity_id')) {
event(new ActivityUpdated($activity, 'activity.opportunity-updated', Auth::user()));
}
if ($activity->isDirty('title')) {
event(new TitleUpdated($activity));
}
}
if ($activity->isDirty('playbook_category_id')) {
event(new ActivityTypeUpdated($activity));
}
});
static::deleted(static function (Activity $activity) {
// Hard delete associated playlistActivities
$activity->playlistActivities()->delete();
});
}
public function getOrganizerAttribute(): ?Participant
{
$participant = $this->participants()->where('user_id', $this->user_id)->first();
if (! $participant instanceof Participant && $participant !== null) {
throw new RuntimeException(sprintf('$participant must be an instance of "%s" or null', Participant::class));
}
return $participant;
}
public function getFormattedValueAttribute()
{
$currencyCode = 'USD';
if ($this->opportunity) {
$currencyCode = $this->opportunity->getCurrencyCode();
}
$formatter = new CurrencyFormatter();
$formatter->setTextAttribute(NumberFormatter::CURRENCY_CODE, $currencyCode);
$formatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 0);
return $formatter->format($this->value, $currencyCode);
}
public function getProspectNameAttribute(): ?string
{
$prospectName = null;
if ($this->lead_id) {
$prospectName = $this->lead->name;
} elseif ($this->contact_id) {
$prospectName = $this->contact->name;
} elseif ($this->account_id) {
$prospectName = $this->account->name;
}
return $prospectName;
}
public function getProspectName(): ?string
{
/** @var string|null */
return $this->getAttribute('prospect_name');
}
/**
* Get activity title depending on prospect or title
*/
public function getActivityTitleAttribute(): ?string
{
$activityTitle = null;
if ($this->prospect && $this->prospect->getName()) {
if ($this->account_id) {
$activityTitle = $this->account->name;
} elseif ($this->lead_id) {
$activityTitle = $this->lead->company;
} elseif ($this->contact_id) {
$activityTitle = $this->contact->account ? $this->contact->account->name : $this->contact->name;
}
} elseif ($this->title) {
$activityTitle = $this->title;
}
return $activityTitle;
}
public function wasRecentlyCreated(): bool
{
return $this->wasRecentlyCreated;
}
public function getProspectTypeAttribute()
{
$prospectType = null;
if ($this->lead_id) {
$prospectType = 'Lead';
} elseif ($this->contact_id) {
$prospectType = 'Contact';
} elseif ($this->account_id) {
$prospectType = 'Account';
}
return $prospectType;
}
/**
* Return the best match for prospect. Results are in the following order of priority:
* 1. Lead
* 2. Contact
* 3. Account
* 4. NULL
*/
public function getProspectAttribute(): ?ProspectInterface
{
if ($this->hasLead()) {
return $this->getLead();
}
if ($this->hasContact()) {
return $this->getContact();
}
if ($this->hasAccount()) {
return $this->getAccount();
}
return null;
}
public function getTitleAttribute($value): ?string
{
return \getActivityTitleAttribute(
$this->user->name,
$this->getType(),
$value,
$this->prospect->name ?? null,
$this->from->national_phone_number ?? null
);
}
public function getTitle(): ?string
{
return $this->getAttribute('title');
}
public function getSummary(): ?string
{
return $this->getAttribute('summary');
}
public function isInternal(): bool
{
return $this->getAttribute('is_internal');
}
public function getIsPrivate(): bool
{
return $this->getAttribute('is_private');
}
public function getDescription(): ?string
{
return $this->getAttribute('description');
}
public function hasTitle(): bool
{
return $this->getOriginal('title') !== null;
}
public function getPlayCountAttribute()
{
return $this->getPlaysCountAttribute();
}
public function getPlaysCountAttribute()
{
if (! isset($this->attributes['plays_count'])) {
$this->loadCount('plays');
}
return $this->attributes['plays_count'];
}
public function getCommentCountAttribute()
{
return $this->getCommentsCountAttribute();
}
public function getCommentsCountAttribute()
{
if (! isset($this->attributes['comments_count'])) {
$this->loadCount('comments');
}
return $this->attributes['comments_count'];
}
public function getVisibleCommentsCountAttribute()
{
if (! isset($this->attributes['visible_comments_count'])) {
$activityCommentsService = app(ActivityCommentService::class);
$user = Auth::user() instanceof User ? Auth::user() : null;
$this->attributes['visible_comments_count'] = $activityCommentsService
->getVisibleCommentsCount($this, $user);
}
return $this->attributes['visible_comments_count'];
}
public function getShareCountAttribute()
{
return $this->getSharesCountAttribute();
}
public function getSharesCountAttribute()
{
if (! isset($this->attributes['shares_count'])) {
$this->loadCount('shares');
}
return $this->attributes['shares_count'];
}
/**
* Get the count of favorites playlists this activity appears in
*/
public function getFavoriteCountAttribute(): int
{
return $this->getFavoritesCountAttribute();
}
public function getFavoritesCountAttribute()
{
if (! isset($this->attributes['favorites_count'])) {
$this->loadCount('favorites');
}
return $this->attributes['favorites_count'];
}
public function getActiveParticipantsCountAttribute()
{
if (! isset($this->attributes['active_participants_count'])) {
$this->loadCount('activeParticipants');
}
return $this->attributes['active_participants_count'];
}
public function getTracksWithTelephonyCountAttribute()
{
if (! isset($this->attributes['tracks_with_telephony_count'])) {
$this->loadCount('tracksWithTelephony');
}
return $this->attributes['tracks_with_telephony_count'];
}
/**
* @TEMP
* $this->loadCount('tracksWithTelephony') throws null pointer exception
*/
public function countTracksWithTelephony(): int
{
return $this->tracks()->whereNotNull('telephony_provider_id')->count();
}
public function getDuration(): float
{
return $this->getAttribute('duration');
}
public function getDurationForHumansAttribute()
{
return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true);
}
public function getDurationForHumansShortAttribute(): string
{
return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true, true);
}
public function hasRec...
|
[{"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":"JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Git Branch: JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"167","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"102","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\nnamespace Jiminny\\Models;\n\nuse Carbon\\Carbon;\nuse Database\\Factories\\ActivityFactory;\nuse DateTimeInterface;\nuse Exception;\nuse Illuminate\\Contracts\\Auth\\Authenticatable;\nuse Illuminate\\Database\\Eloquent;\nuse Illuminate\\Database\\Eloquent\\Attributes\\Scope;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsTo;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasMany;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasManyThrough;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasOne;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Auth;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ElasticSearch;\nuse Jiminny\\Component\\MeetingBot;\nuse Jiminny\\Component\\Model\\BitwiseFlagTrait;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Sidekick\\SidekickService;\nuse Jiminny\\Component\\Uuid\\UuidAwareInterface;\nuse Jiminny\\Component\\Workflow;\nuse Jiminny\\Contracts;\nuse Jiminny\\Contracts\\Crm\\ProspectInterface;\nuse Jiminny\\DTO\\ImportCall\\Call;\nuse Jiminny\\Events\\Activities\\ActivityTypeUpdated;\nuse Jiminny\\Events\\Activities\\ActivityUpdated;\nuse Jiminny\\Events\\Activities\\ProspectUpdated;\nuse Jiminny\\Events\\Activities\\StageUpdated;\nuse Jiminny\\Events\\Activities\\StatusUpdated;\nuse Jiminny\\Events\\Activities\\TitleUpdated;\nuse Jiminny\\Exceptions\\InvalidArgumentException as InvalidArgumentJiminnyException;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\RuntimeException;\nuse Jiminny\\Models;\nuse Jiminny\\Models\\Activity\\ActivitySummaryLog;\nuse Jiminny\\Models\\Activity\\ActivityUploadSetting;\nuse Jiminny\\Models\\Activity\\AvailabilityNotification;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Log;\nuse Jiminny\\Models\\Activity\\Message;\nuse Jiminny\\Models\\Activity\\Moment;\nuse Jiminny\\Models\\Activity\\Note;\nuse Jiminny\\Models\\Activity\\ParticipantSpeech;\nuse Jiminny\\Models\\Activity\\Play;\nuse Jiminny\\Models\\Activity\\Question;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\Activity\\Snapshot;\nuse Jiminny\\Models\\Activity\\Stats;\nuse Jiminny\\Models\\Activity\\SubscriptionSet;\nuse Jiminny\\Models\\Activity\\TopicTrigger;\nuse Jiminny\\Models\\Activity\\Transcription;\nuse Jiminny\\Models\\Calendar\\CalendarEvent;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\ElasticSearch\\ActivityElasticSearchTrait;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Participant\\Connection;\nuse Jiminny\\Models\\Playlist\\Activity as PlaylistActivity;\nuse Jiminny\\Services\\Activity\\ActivityProviderRegistry;\nuse Jiminny\\Services\\Activity\\Import\\DataResolvers\\UpdateCrmDataByStrategy;\nuse Jiminny\\Services\\Activity\\Import\\DataResolvers\\UpdateCrmDataResolverFactory;\nuse Jiminny\\Services\\Activity\\Import\\DataResolvers\\UpdateCrmDataResolverInterface;\nuse Jiminny\\Traits\\Enums;\nuse Jiminny\\Traits\\RequiresUUID;\nuse Jiminny\\Utils\\CurrencyFormatter;\nuse NumberFormatter;\n\nuse function in_array;\n\n/**\n * Jiminny\\Models\\Activity\n *\n * @property null|int $auto_score filled from ES hydrator, not in DB!\n * @property-read Account|null $account\n * @property-read CalendarEvent|null $calendarEvent\n * @property-read Contact|null $contact\n * @property-read Lead|null $lead\n * @property-read Opportunity|null $opportunity\n * @property-read Stage|null $stage\n * @property int $id\n * @property mixed|null $uuid\n * @property string|null $source\n * @property string|null $external_id\n * @property string $provider\n * @property string|null $location\n * @property string|null $telephony_provider_id\n * @property int|null $from_participant_id\n * @property int|null $to_participant_id\n * @property int|null $device_id\n * @property string|null $type\n * @property int|null $playbook_category_id\n * @property int $user_id\n * @property int|null $lead_id\n * @property int|null $account_id\n * @property int|null $contact_id\n * @property int|null $opportunity_id\n * @property int|null $stage_id\n * @property string|null $value\n * @property int|null $crm_configuration_id\n * @property string|null $crm_provider_id\n * @property string|null $language\n * @property int|null $transcription_id\n * @property int $duration\n * @property string $status\n * @property int|null $on_air\n * @property int|null $calendar_event_id\n * @property string $recording_state\n * @property bool|null $recording_preference\n * @property int $recording_reason_code\n * @property int $summary_reminder_sent\n * @property \\Illuminate\\Support\\Carbon|null $log_reminder_sent_at\n * @property \\Illuminate\\Support\\Carbon|null $organizer_notified_at\n * @property bool|null $has_recording_prompt\n * @property bool $is_internal\n * @property int $is_locked\n * @property int $is_recording\n * @property bool|null $is_processed\n * @property bool $is_private\n * @property bool $is_instant_invite\n * @property string|null $poster_path\n * @property string|null $summary\n * @property string|null $title\n * @property string|null $description\n * @property \\Illuminate\\Support\\Carbon|null $scheduled_start_time\n * @property \\Illuminate\\Support\\Carbon|null $scheduled_end_time\n * @property \\Illuminate\\Support\\Carbon|null $actual_start_time\n * @property \\Illuminate\\Support\\Carbon|null $actual_end_time\n * @property int|null $uploaded_by\n * @property \\Illuminate\\Support\\Carbon|null $deleted_at\n * @property \\Illuminate\\Support\\Carbon|null $created_at\n * @property \\Illuminate\\Support\\Carbon|null $updated_at\n * @property string|null $average_score\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant> $activeParticipants\n * @property-read int|null $active_participants_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Scorecard\\ActivityScorecardRuleTrigger> $activityScorecardRuleTriggers\n * @property-read int|null $activity_scorecard_rule_triggers_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Scorecard\\ActivityScorecardRule> $activityScorecardRules\n * @property-read int|null $activity_scorecard_rules_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, AvailabilityNotification> $availabilityNotifications\n * @property-read int|null $availability_notifications_count\n * @property-read \\Jiminny\\Models\\PlaybookCategory|null $category\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, CoachRequest> $coachRequests\n * @property-read int|null $coach_requests_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\CoachingFeedback> $coachingFeedbacks\n * @property-read int|null $coaching_feedbacks_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Message> $coachingMessages\n * @property-read int|null $coaching_messages_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Comment> $comments\n * @property-read int|null $comments_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Connection> $connections\n * @property-read int|null $connections_count\n * @property-read Configuration|null $crm\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, FieldData> $data\n * @property-read int|null $data_count\n * @property-read \\Jiminny\\Models\\Device|null $device\n * @property-read \\Kalnoy\\Nestedset\\Collection<int, \\Jiminny\\Models\\Playlist> $favoritePlaylists\n * @property-read int|null $favorite_playlists_count\n * @property-read \\Jiminny\\Models\\Participant|null $from\n * @property-read string|null $activity_title\n * @property-read mixed $comment_count\n * @property-read mixed $duration_for_humans\n * @property-read string $duration_for_humans_short\n * @property-read int $favorite_count\n * @property-read mixed $favorites_count\n * @property-read mixed $formatted_value\n * @property-read string $id_string\n * @property-read \\Jiminny\\Models\\Participant|null $organizer\n * @property-read mixed $play_count\n * @property-read int|null $plays_count\n * @property-read ?ProspectInterface $prospect\n * @property-read string|null $prospect_name\n * @property-read mixed $prospect_type\n * @property-read mixed $share_count\n * @property-read int|null $shares_count\n * @property-read int|null $tracks_with_telephony_count\n * @property-read int|null $visible_comments_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\CoachingFeedback> $latestCoachingFeedbacks\n * @property-read int|null $latest_coaching_feedbacks_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Log> $logs\n * @property-read int|null $logs_count\n * @property-read \\Jiminny\\Models\\Track|null $masterTrack\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Message> $messages\n * @property-read int|null $messages_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Moment> $moments\n * @property-read int|null $moments_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Note> $notes\n * @property-read int|null $notes_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant\\Share> $participantShares\n * @property-read int|null $participant_shares_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, ParticipantSpeech> $participantSpeeches\n * @property-read int|null $participant_speeches_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant\\ParticipantStats> $participantStats\n * @property-read int|null $participant_stats_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant> $participants\n * @property-read int|null $participants_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, PlaylistActivity> $playlistActivities\n * @property-read int|null $playlist_activities_count\n * @property-read \\Kalnoy\\Nestedset\\Collection<int, \\Jiminny\\Models\\Playlist> $playlists\n * @property-read int|null $playlists_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Play> $plays\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Question> $questions\n * @property-read int|null $questions_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Session> $sessions\n * @property-read int|null $sessions_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Share> $shares\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Snapshot> $snapshots\n * @property-read int|null $snapshots_count\n * @property-read Stats|null $stats\n * @property-read \\Jiminny\\Models\\Participant|null $to\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, TopicTrigger> $topicTriggers\n * @property-read int|null $topic_triggers_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Track> $tracks\n * @property-read int|null $tracks_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Track> $tracksWithTelephony\n * @property-read Transcription|null $transcription\n * @property-read \\Jiminny\\Models\\User $user\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Comment> $visibleComments\n *\n * @method static \\Illuminate\\Database\\Eloquent\\Collection<int, static> all($columns = ['*'])\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity chunkByIdDesc($count, callable $callback, $column = null, $alias = null)\n * @method static \\Database\\Factories\\ActivityFactory factory(...$parameters)\n * @method static \\Illuminate\\Database\\Eloquent\\Collection<int, static> get($columns = ['*'])\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity heldBetween(\\Carbon\\Carbon $start, \\Carbon\\Carbon $end)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity idOrUuId($idOrUuid, bool $first = true)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity newModelQuery()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity newQuery()\n * @method static Builder|Activity onlyTrashed()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity query()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity scheduledBetween(\\Carbon\\Carbon $start, \\Carbon\\Carbon $end)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity inOpenDeals()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity notInOpenDeals()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity forTeam(int $teamId)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity search(callable $searchQuery, $key = null, $sortByResults = true)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity uuid(string $uuid, bool $first = true)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereAccountId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereActualEndTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereActualStartTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereAverageScore($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCalendarEventId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereContactId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCreatedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCrmConfigurationId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCrmProviderId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDeletedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDescription($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDeviceId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDuration($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereFromParticipantId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereHasRecordingPrompt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsInstantInvite($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsInternal($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsLocked($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsPrivate($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsProcessed($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsRecording($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLanguage($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLeadId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLocation($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLogReminderSentAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereOnAir($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereOpportunityId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereOrganizerNotifiedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity wherePlaybookCategoryId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity wherePosterPath($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereProvider($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereRecordingPreference($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereRecordingReasonCode($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereRecordingState($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereScheduledEndTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereScheduledStartTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereSource($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereExternalId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereStageId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereStatus($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereSummary($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereSummaryReminderSent($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereTelephonyProviderId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereTitle($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereToParticipantId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereTranscriptionId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereType($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUpdatedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUploadedBy($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUserId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUuid($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereValue($value)\n * @method static Builder|Activity withTrashed()\n * @method static Builder|Activity withoutTrashed()\n *\n * @mixin \\Eloquent\n */\nclass Activity extends Model implements\n ElasticSearch\\Contract\\Searchable,\n Workflow\\Workflow\\WorkflowAwareInterface,\n Models\\Contracts\\ActivityContract,\n Contracts\\Model\\ActivityInterface,\n UuidAwareInterface\n{\n use HasFactory;\n\n use Enums;\n use SoftDeletes;\n use RequiresUUID;\n use BitwiseFlagTrait;\n use ElasticSearch\\Model\\Searchable;\n use ActivityElasticSearchTrait;\n\n use Workflow\\Workflow\\WorkflowAware {\n transitionTo as traitTransitionTo;\n }\n\n public const int FLAG_RECORDING_REASON_DEFAULT = 0;\n\n // Recording Prompted but never started\n public const int FLAG_RECORDING_REASON_COMPLIANCE_PROMPT = 1;\n public const int FLAG_RECORDING_REASON_COMPLIANCE_RESUMED = 2;\n public const int FLAG_RECORDING_REASON_NO_AUDIO = 3;\n\n // Recording Disabled by Organization\n public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT = 4;\n\n // Recording was restricted to one-side recordings only\n public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT_ONE_SIDE = 8;\n\n // Recording was not started because it was internal and team setting disabled that.\n public const int FLAG_RECORDING_REASON_TEAM_INTERNAL_DISABLED = 16;\n\n // Recording was not started because it was internal and user setting disabled that.\n public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED = 32;\n\n // Recording was not started because user setting disabled automatic recording.\n public const int FLAG_RECORDING_REASON_USER_AUTOMATIC_DISABLED = 64;\n\n // Recording was not started because team setting disabled automatic recording.\n public const int FLAG_RECORDING_REASON_TEAM_AUTOMATIC_DISABLED = 128;\n\n // Recording was not started because user has overriden default.\n public const int FLAG_RECORDING_REASON_PREFERENCE_OVERRIDE = 256;\n\n // Recording was not started because they don't want internal, and this meeting was not scheduled/imported in time.\n public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED_UNSCHEDULED = 512;\n\n // Recording was not started because their team setting does excludes the meeting type.\n public const int FLAG_RECORDING_REASON_UNSUPPORTED_TYPE = 1024;\n\n // Recording was not started because the external provider disabled it (or recording is missing etc).\n public const int FLAG_RECORDING_REASON_EXTERNALLY_DISABLED = 2048;\n\n // Recording was stopped externally (\"exit-meeting\" Pusher event)\n public const int FLAG_RECORDING_REASON_STOPPED_EXTERNALLY = 384;\n\n // Recording couldn't be started due to Zoom hosting conflict error\n public const int FLAG_RECORDING_REASON_HOSTING_CONFLICT = 448;\n\n // meeting.failed event with reason code BOT_DENIED_FROM_LOBBY\n public const int FLAG_RECORDING_REASON_MEETING_BOT_DENIED_FROM_LOBBY = 4096;\n\n // meeting.failed event with reason code LOBBY_TIMEOUT\n public const int FLAG_RECORDING_REASON_MEETING_BOT_LOBBY_TIMEOUT = 8192;\n\n // meeting.failed event with reason code BOT_KICKED\n public const int FLAG_RECORDING_REASON_MEETING_BOT_KICKED = 16384;\n\n // meeting.failed event with reason code UNKNOWN\n public const int FLAG_RECORDING_REASON_MEETING_BOT_UNKNOWN = 32768;\n\n public const int FLAG_RECORDING_REASON_CONSENT_DENIED = 65536;\n\n // Invalid meeting (e.g. URL is invalid, or the meeting is not found)\n public const int FLAG_RECORDING_REASON_MEETING_BOT_INVALID = 131072;\n\n // The host stopped the recording.\n public const int FLAG_RECORDING_REASON_USER_STOPPED = 262144;\n\n // Recording was not started because an alternative vendor disabled it (or overrode it).\n public const int FLAG_RECORDING_REASON_VENDOR_OVERRIDE = 1048576;\n\n // Login required meeting.failed code\n public const int FLAG_RECORDING_REASON_LOGIN_REQUIRED = 524288;\n\n // Password for meeting was not provided - meeting.failed code\n public const int FLAG_RECORDING_REASON_MEETING_PASSWORD_NOT_PROVIDED = 2097152;\n\n // meeting.failed - when the meeting is locked\n public const int FLAG_RECORDING_REASON_MEETING_IS_LOCKED = 4194304;\n\n // max recording duration reached\n public const int FLAG_RECORDING_REASON_MAX_DURATION_REACHED = 8388608;\n\n // recording size is too small\n public const int FLAG_RECORDING_REASON_EMPTY_RECORDING = 16777216;\n\n // meeting.failed - when bot is redirected to sign in page multiple times\n public const int FLAG_RECORDING_REASON_MAX_RESTART_COUNT_IS_REACHED = 33554432;\n\n // meeting.failed event with reason code CONNECTION_LOST\n public const int FLAG_RECORDING_REASON_MEETING_BOT_CONNECTION_LOST = 67108864;\n\n // recording is corrupted.\n public const int FLAG_RECORDING_REASON_MEDIA_FILE_UNSUPPORTED_MIME_TYPE = 134217728;\n\n // meeting ended in lobby\n public const int FLAG_RECORDING_REASON_MEETING_ENDED_IN_LOBBY = 268435456;\n\n // meeting not started\n public const int FLAG_RECORDING_REASON_REASON_MEETING_NOT_STARTED = 536870912;\n\n // unfinished zoom custom disclaimer\n public const int FLAG_RECORDING_REASON_FEATURE_RULE_NOT_FOUND_ERROR = 1073741824;\n\n // recording download failed - server error\n public const int FLAG_RECORDING_REASON_SERVER_ERROR = 2147483648;\n\n // recording download failed - client code 404\n public const int FLAG_RECORDING_REASON_NOT_FOUND = 2147483649;\n\n // recording download failed - client code 401, 403\n public const int FLAG_RECORDING_REASON_ACCESS_DENIED = 2147483650;\n\n // recording download failed - client code 429\n public const int FLAG_RECORDING_REASON_TOO_MANY_REQUESTS = 2147483651;\n\n // recording download failed - unknown client error\n public const int FLAG_RECORDING_REASON_CLIENT_ERROR = 2147483652;\n\n // recording download failed - unknown error\n public const int FLAG_RECORDING_REASON_UNKNOWN_ERROR = 2147483653;\n\n // It has been setup ahead of time through calendar\n public const string STATUS_SCHEDULED = 'scheduled';\n\n // It is awaiting audio.\n public const string STATUS_PENDING = 'pending';\n\n // Participant(s) dialed in, awaiting organizer.\n public const string STATUS_RINGING = 'ringing';\n\n // Call is in progress.\n public const string STATUS_IN_PROGRESS = 'in-progress';\n\n // It has ended.\n public const string STATUS_COMPLETED = 'completed';\n\n // Cancelled prior to starting.\n public const string STATUS_CANCELLED = 'canceled';\n\n public const string STATUS_DUPLICATED = 'duplicated'; // duplicated conference\n\n public const string STATUS_STARTING_SOON = 'starting-soon';\n\n public const string STATUS_BOT_CREATE_SENT = 'bot-create-sent';\n\n public const string STATUS_BOT_INSTANCE_WORKER_ASSIGNED = 'worker-assigned';\n\n public const string STATUS_BOT_INSTANCE_STARTED = 'bot-started';\n\n // When bot instance is waiting in lobby\n public const string STATUS_BOT_INSTANCE_WAITING_LOBBY = 'bot-waiting';\n\n public const string STATUS_BUSY = 'busy';\n public const string STATUS_NO_ANSWER = 'no-answer';\n public const string STATUS_FAILED = 'failed'; // Used by SMS too\n\n // SMS related\n public const string STATUS_ACCEPTED = 'accepted';\n public const string STATUS_QUEUED = 'queued';\n public const string STATUS_SENDING = 'sending';\n public const string STATUS_SENT = 'sent';\n public const string STATUS_DELIVERED = 'delivered';\n public const string STATUS_UNDELIVERED = 'undelivered';\n public const string STATUS_RECEIVING = 'receiving';\n public const string STATUS_RECEIVED = 'received';\n public const string STATUS_RESENT = 'resent';\n\n public const array SMS_STATUSES = [\n Activity::STATUS_RECEIVED,\n Activity::STATUS_SENT,\n Activity::STATUS_DELIVERED,\n ];\n\n public const array SOFT_PHONE_CONFERENCE_STATUSES = [\n Activity::STATUS_IN_PROGRESS,\n Activity::STATUS_COMPLETED,\n ];\n\n // @todo refactor prefix from `TYPE_` to `CHANNEL_`\n public const string TYPE_SOFTPHONE = 'softphone';\n public const string TYPE_SOFTPHONE_INBOUND = 'softphone-inbound';\n public const string TYPE_CONFERENCE = 'conference';\n public const string TYPE_SMS_INBOUND = 'sms-inbound';\n public const string TYPE_SMS_OUTBOUND = 'sms-outbound';\n public const string TYPE_EMAIL_INBOUND = 'email-inbound';\n public const string TYPE_EMAIL_OUTBOUND = 'email-outbound';\n\n public const array CHANNELS = [\n self::TYPE_SOFTPHONE,\n self::TYPE_SOFTPHONE_INBOUND,\n self::TYPE_CONFERENCE,\n self::TYPE_SMS_INBOUND,\n self::TYPE_SMS_OUTBOUND,\n self::TYPE_EMAIL_INBOUND,\n self::TYPE_EMAIL_OUTBOUND,\n ];\n\n public const array PLAYABLE_CHANNELS = [\n self::TYPE_SOFTPHONE,\n self::TYPE_SOFTPHONE_INBOUND,\n self::TYPE_CONFERENCE,\n ];\n\n // Recording States\n public const string RECORDING_OFF = 'off'; // Default state\n public const string RECORDING_IN_PROGRESS = 'in-progress';\n public const string RECORDING_PAUSED = 'paused';\n public const string RECORDING_STOPPED = 'stopped'; // To never be resumed.\n public const string RECORDING_RECORDED = 'recorded'; // At least some portion of it was recorded.\n public const string RECORDING_FAILED = 'failed'; // Recording was attempted but failed for some reason.\n\n // Live Stream States\n public const int ON_AIR_DEFAULT = 0;\n public const int ON_AIR_READY = 1;\n public const int ON_AIR_PREPARING = 2;\n public const int ON_AIR_STREAMING = 3;\n public const int ON_AIR_FINISHED = 4;\n public const int ON_AIR_NOT_STREAMED = 5;\n public const int ON_AIR_ERROR = -1;\n\n public const string SOURCE_GONG = 'gong';\n public const string SOURCE_CHORUS = 'chorus';\n public const string SOURCE_OUTLOOK = 'outlook';\n public const string SOURCE_GOOGLE = 'google';\n\n // Activity Providers\n public const string PROVIDER_TWILIO = 'twilio'; // XXX: This is run via the Jiminny Provider.\n public const string PROVIDER_OUTREACH = 'outreach';\n public const string PROVIDER_ZOOM_BOT = 'zoom-bot';\n public const string PROVIDER_SALESLOFT = 'salesloft';\n public const string PROVIDER_GOOGLE = 'google';\n public const string PROVIDER_AIRCALL = 'aircall';\n public const string PROVIDER_JUSTCALL = 'justcall';\n public const string PROVIDER_GOOGLE_MEET = 'google-meet';\n public const string PROVIDER_GONG = 'gong';\n public const string PROVIDER_HUBSPOT = 'hubspot';\n public const string PROVIDER_CLOSE = 'close';\n public const string PROVIDER_TEAMS = 'ms-teams';\n public const string PROVIDER_SALESFORCE = 'salesforce';\n public const string PROVIDER_GROOVE = 'groove';\n public const string PROVIDER_XANT = 'xant';\n public const string PROVIDER_OFFICE = 'office';\n public const string PROVIDER_NATTERBOX = 'natterbox';\n public const string PROVIDER_RINGCENTRAL = 'ringcentral';\n public const string PROVIDER_RINGCENTRAL_VIDEO = 'ringcentral-video';\n public const string PROVIDER_GOTOMEETING = 'go-to-meeting';\n public const string PROVIDER_DEMODESK = 'demo-desk';\n public const string PROVIDER_DIALPAD = 'dialpad';\n public const string PROVIDER_ZOOM_PHONE = 'zoom-phone';\n public const string PROVIDER_CLOUDCALL = 'cloudcall';\n public const string PROVIDER_CLOUDCALL_US = 'cloudcall-us';\n public const string PROVIDER_EIGHT_BY_EIGHT = 'eight-by-eight'; // \"8x8\" UK\n public const string PROVIDER_EIGHT_BY_EIGHT_CA = 'eight-by-eight-ca'; // \"8x8\" Canada\n public const string PROVIDER_EIGHT_BY_EIGHT_AP = 'eight-by-eight-ap'; // \"8x8\" Australia\n public const string PROVIDER_EIGHT_BY_EIGHT_US_EAST = 'eight-by-eight-use'; // \"8x8\" US East\n public const string PROVIDER_EIGHT_BY_EIGHT_US_WEST = 'eight-by-eight-usw'; // \"8x8\" US West\n public const string PROVIDER_CONNECT_AND_SELL = 'connect-and-sell';\n public const string PROVIDER_CLOUD_TALK = 'cloud-talk';\n public const string PROVIDER_AMAZON_CONNECT = 'amazon-connect';\n public const string PROVIDER_VONAGE = 'vonage';\n public const string PROVIDER_MIGRATOR = 'migrator';\n public const string PROVIDER_UPLOADER = 'uploader';\n public const string PROVIDER_TALKDESK = 'talkdesk';\n public const string PROVIDER_TWILIO_FLEX = 'twilio-flex';\n public const string PROVIDER_TWILIO_FLEX_DIRECT = 'twilio-flex-direct';\n public const string PROVIDER_TWILIO_VIDEO = 'twilio-video';\n public const string PROVIDER_AVAYA = 'avaya';\n public const string PROVIDER_TELUS = 'telus';\n public const string PROVIDER_FIVE_NINE = 'five-nine';\n public const string PROVIDER_APOLLO = 'apollo';\n public const string PROVIDER_ORUM = 'orum';\n public const string PROVIDER_BLOOBIRDS = 'bloobirds';\n\n /**\n * @const API_PROVIDERS\n * A list of integrations that import calls via API instead of webhooks\n */\n public const array API_PROVIDERS = [\n self::PROVIDER_OUTREACH,\n self::PROVIDER_SALESLOFT,\n self::PROVIDER_HUBSPOT,\n self::PROVIDER_GROOVE,\n self::PROVIDER_XANT,\n self::PROVIDER_NATTERBOX,\n self::PROVIDER_CLOUDCALL,\n self::PROVIDER_CLOUDCALL_US,\n self::PROVIDER_EIGHT_BY_EIGHT,\n self::PROVIDER_EIGHT_BY_EIGHT_CA,\n self::PROVIDER_EIGHT_BY_EIGHT_AP,\n self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,\n self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,\n self::PROVIDER_CONNECT_AND_SELL,\n self::PROVIDER_CLOUD_TALK,\n self::PROVIDER_AMAZON_CONNECT,\n self::PROVIDER_VONAGE,\n self::PROVIDER_TALKDESK,\n self::PROVIDER_TWILIO_VIDEO,\n self::PROVIDER_TWILIO_FLEX,\n self::PROVIDER_TWILIO_FLEX_DIRECT,\n self::PROVIDER_FIVE_NINE,\n self::PROVIDER_APOLLO,\n self::PROVIDER_ORUM,\n self::PROVIDER_BLOOBIRDS,\n self::PROVIDER_RINGCENTRAL,\n self::PROVIDER_AVAYA,\n self::PROVIDER_TELUS,\n ];\n\n public const array FINITE_STATES = [\n self::TYPE_SOFTPHONE => [\n self::STATUS_COMPLETED,\n self::STATUS_FAILED,\n self::STATUS_NO_ANSWER,\n self::STATUS_BUSY,\n ],\n self::TYPE_SOFTPHONE_INBOUND => [\n self::STATUS_COMPLETED,\n self::STATUS_FAILED,\n self::STATUS_NO_ANSWER,\n self::STATUS_BUSY,\n ],\n self::TYPE_CONFERENCE => self::FINITE_STATES_CONFERENCE,\n ];\n\n public const array FINITE_STATES_CONFERENCE = [\n self::STATUS_COMPLETED,\n self::STATUS_FAILED,\n self::STATUS_CANCELLED,\n ];\n\n public const array MEETING_BOT_JOIN_ATTEMPTED = [\n self::STATUS_BOT_INSTANCE_WAITING_LOBBY,\n self::STATUS_BOT_INSTANCE_STARTED,\n ];\n\n public static array $enumStatuses = [\n self::STATUS_SCHEDULED,\n self::STATUS_PENDING,\n self::STATUS_RINGING,\n self::STATUS_IN_PROGRESS,\n self::STATUS_COMPLETED,\n self::STATUS_CANCELLED,\n self::STATUS_BUSY,\n self::STATUS_NO_ANSWER,\n self::STATUS_FAILED,\n self::STATUS_ACCEPTED,\n self::STATUS_QUEUED,\n self::STATUS_SENDING,\n self::STATUS_SENT,\n self::STATUS_RESENT,\n self::STATUS_DELIVERED,\n self::STATUS_UNDELIVERED,\n self::STATUS_RECEIVING,\n self::STATUS_RECEIVED,\n self::STATUS_BOT_INSTANCE_WAITING_LOBBY,\n self::STATUS_STARTING_SOON,\n self::STATUS_BOT_INSTANCE_WORKER_ASSIGNED,\n self::STATUS_BOT_INSTANCE_STARTED,\n self::STATUS_DUPLICATED,\n ];\n\n public static array $enumProviders = [\n self::PROVIDER_TWILIO,\n self::PROVIDER_OUTREACH,\n self::PROVIDER_ZOOM_BOT,\n self::PROVIDER_SALESLOFT,\n self::PROVIDER_AIRCALL,\n self::PROVIDER_JUSTCALL,\n self::PROVIDER_GOOGLE_MEET,\n self::PROVIDER_GONG,\n self::PROVIDER_HUBSPOT,\n self::PROVIDER_CLOSE,\n self::PROVIDER_TEAMS,\n self::PROVIDER_SALESFORCE,\n self::PROVIDER_GROOVE,\n self::PROVIDER_XANT,\n self::PROVIDER_GOOGLE,\n self::PROVIDER_OFFICE,\n self::PROVIDER_NATTERBOX,\n self::PROVIDER_RINGCENTRAL,\n self::PROVIDER_RINGCENTRAL_VIDEO,\n self::PROVIDER_GOTOMEETING,\n self::PROVIDER_DEMODESK,\n self::PROVIDER_DIALPAD,\n self::PROVIDER_ZOOM_PHONE,\n self::PROVIDER_CLOUDCALL,\n self::PROVIDER_CLOUDCALL_US,\n self::PROVIDER_EIGHT_BY_EIGHT,\n self::PROVIDER_EIGHT_BY_EIGHT_CA,\n self::PROVIDER_EIGHT_BY_EIGHT_AP,\n self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,\n self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,\n self::PROVIDER_CONNECT_AND_SELL,\n self::PROVIDER_CLOUD_TALK,\n self::PROVIDER_AMAZON_CONNECT,\n self::PROVIDER_VONAGE,\n self::PROVIDER_TALKDESK,\n self::PROVIDER_TWILIO_FLEX,\n self::PROVIDER_TWILIO_FLEX_DIRECT,\n self::PROVIDER_TWILIO_VIDEO,\n self::PROVIDER_AVAYA,\n self::PROVIDER_TELUS,\n self::PROVIDER_FIVE_NINE,\n self::PROVIDER_APOLLO,\n self::PROVIDER_ORUM,\n self::PROVIDER_BLOOBIRDS,\n ];\n\n public static $enumRecordingStates = [\n self::RECORDING_OFF, // Default state\n self::RECORDING_IN_PROGRESS,\n self::RECORDING_PAUSED,\n self::RECORDING_STOPPED,\n self::RECORDING_RECORDED,\n self::RECORDING_FAILED,\n ];\n\n // @Important:\n // This collection is not used anywhere, and is fully duplicated by the Channels const.\n // Validate if it is referred somehow via the enum trait, and if not, remove it entirely.\n // An even better strategy will be to move all those constants to a dedicated class\n protected array $enumTypes = [\n self::TYPE_SOFTPHONE,\n self::TYPE_SOFTPHONE_INBOUND,\n self::TYPE_CONFERENCE,\n self::TYPE_SMS_INBOUND,\n self::TYPE_SMS_OUTBOUND,\n self::TYPE_EMAIL_INBOUND,\n self::TYPE_EMAIL_OUTBOUND,\n ];\n\n protected static $enumFailedStatuses = [\n self::STATUS_NO_ANSWER,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n self::STATUS_CANCELLED,\n ];\n\n protected $table = 'activities';\n\n protected $fillable = [\n // Type of activity.\n 'type', // @todo refactor to `channel`\n // The activity type.\n 'playbook_category_id',\n // User who hosts the activity.\n 'user_id',\n // Related Lead record (if applicable)\n 'lead_id',\n // Related Account record (if applicable)\n 'account_id',\n // Related Contact record (if applicable)\n 'contact_id',\n // Related Opportunity record (if applicable)\n 'opportunity_id',\n // Stage of activity.\n 'stage_id',\n // Value of opportunity.\n 'value',\n // If the activity relates to a CRM task.\n 'crm_provider_id',\n // If the activity was created through an external device.\n 'device_id',\n // the activity's language code\n 'language',\n // transcription id\n 'transcription_id',\n // Duration of the call, with microseconds precision.\n 'duration',\n // One of enumStatuses above.\n 'status',\n // Have we reminded them to log the call?\n 'log_reminder_sent_at',\n // If activity is private or inter-org, flagged here.\n 'is_internal',\n // Managers and above can mark a call as private, to exclude it from other team members\n 'is_private',\n 'is_processed',\n // Boolean for this activity being instant invite handled.\n 'is_instant_invite',\n // If activity is in recording state, flagged here.\n 'recording_state',\n // If activity recording is overidden from default.\n 'recording_preference',\n // if recording did (not) happen, why that is\n 'recording_reason_code',\n // Average score, updated during\n 'average_score',\n // Summary that the organizer has taken after the call.\n 'summary',\n // Subject of the activity, usually taken from calendar event.\n 'title',\n // Description of the activity, usually taken from calendar event.\n 'description',\n // Start time, usually taken from calendar event.\n 'scheduled_start_time',\n // End time, usually taken from calendar event.\n 'scheduled_end_time',\n // When the call actually started.\n 'actual_start_time',\n // When the call actually ended.\n 'actual_end_time',\n // SMS: Message reference\n 'telephony_provider_id',\n // SMS: Participant who sent message\n 'from_participant_id',\n // SMS: Participant who should receive the message\n 'to_participant_id',\n // When an external guest joins an organizers meeting room and the organizer is not present,\n // send them an SMS notification that someone has joined.\n 'organizer_notified_at',\n // where was the activity imported from\n 'source',\n // The id in the source system (e.g. the bot id in Recall.ai)\n 'external_id',\n // The provider, by default it is twilio.\n 'provider',\n // Meeting location url\n 'location',\n // The snapshot for displaying a poster image.\n 'poster_path',\n 'crm_configuration_id',\n // If there is an automated message that the conversation is being recorded\n 'has_recording_prompt',\n // If the activity is being live-streamed\n 'on_air',\n 'calendar_event_id',\n ];\n\n protected $appends = [\n 'id_string',\n 'organizer',\n ];\n\n protected $hidden = [\n 'uuid',\n ];\n\n protected $visible = [\n 'id_string',\n 'type',\n 'duration',\n 'average_score',\n 'status',\n 'log_reminder_sent_at',\n 'title',\n 'description',\n 'is_internal',\n 'scheduled_start_time',\n 'scheduled_end_time',\n 'actual_start_time',\n 'actual_end_time',\n 'user',\n 'category',\n 'account',\n 'contact',\n 'opportunity',\n 'lead',\n 'stage',\n 'stats',\n 'participants',\n 'playlists',\n 'tracks',\n 'comments',\n 'plays',\n 'coachingFeedbacks',\n 'shares',\n 'favorites',\n 'language',\n 'transcription',\n 'is_private',\n 'is_instant_invite',\n 'on_air',\n 'calendar_event_id',\n ];\n\n protected function casts(): array\n {\n return [\n 'scheduled_start_time' => 'datetime',\n 'scheduled_end_time' => 'datetime',\n 'actual_start_time' => 'datetime',\n 'actual_end_time' => 'datetime',\n 'organizer_notified_at' => 'datetime',\n 'log_reminder_sent_at' => 'datetime',\n 'is_internal' => 'boolean',\n 'duration' => 'integer',\n 'average_score' => 'decimal:2',\n 'is_private' => 'boolean',\n 'is_processed' => 'boolean',\n 'is_instant_invite' => 'boolean',\n 'value' => 'decimal:2',\n 'recording_preference' => 'boolean',\n 'recording_reason_code' => 'integer',\n 'has_recording_prompt' => 'boolean',\n 'on_air' => 'integer',\n ];\n }\n\n protected static function boot()\n {\n parent::boot();\n\n static::updated(static function (Activity $activity) {\n // If activity is about to start (pending, ringing, in-progress) or event is scheduled in less than 1 week\n if (in_array($activity->status, [Activity::STATUS_PENDING, Activity::STATUS_RINGING, Activity::STATUS_IN_PROGRESS], true) ||\n ($activity->scheduled_start_time && (int) $activity->scheduled_start_time->diffInWeeks(new Carbon(), true) < 1)) {\n if ($activity->isDirty('status')) {\n event(new StatusUpdated($activity));\n }\n\n if ($activity->isDirty('stage_id')) {\n event(new StageUpdated($activity));\n }\n\n if ($activity->isDirty(['lead_id', 'account_id', 'contact_id'])) {\n event(new ProspectUpdated($activity));\n }\n\n if ($activity->isDirty('opportunity_id')) {\n event(new ActivityUpdated($activity, 'activity.opportunity-updated', Auth::user()));\n }\n\n if ($activity->isDirty('title')) {\n event(new TitleUpdated($activity));\n }\n }\n\n if ($activity->isDirty('playbook_category_id')) {\n event(new ActivityTypeUpdated($activity));\n }\n });\n\n static::deleted(static function (Activity $activity) {\n // Hard delete associated playlistActivities\n $activity->playlistActivities()->delete();\n });\n }\n\n public function getOrganizerAttribute(): ?Participant\n {\n $participant = $this->participants()->where('user_id', $this->user_id)->first();\n\n if (! $participant instanceof Participant && $participant !== null) {\n throw new RuntimeException(sprintf('$participant must be an instance of \"%s\" or null', Participant::class));\n }\n\n return $participant;\n }\n\n public function getFormattedValueAttribute()\n {\n $currencyCode = 'USD';\n if ($this->opportunity) {\n $currencyCode = $this->opportunity->getCurrencyCode();\n }\n\n $formatter = new CurrencyFormatter();\n $formatter->setTextAttribute(NumberFormatter::CURRENCY_CODE, $currencyCode);\n $formatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 0);\n\n return $formatter->format($this->value, $currencyCode);\n }\n\n public function getProspectNameAttribute(): ?string\n {\n $prospectName = null;\n\n if ($this->lead_id) {\n $prospectName = $this->lead->name;\n } elseif ($this->contact_id) {\n $prospectName = $this->contact->name;\n } elseif ($this->account_id) {\n $prospectName = $this->account->name;\n }\n\n return $prospectName;\n }\n\n public function getProspectName(): ?string\n {\n /** @var string|null */\n return $this->getAttribute('prospect_name');\n }\n\n /**\n * Get activity title depending on prospect or title\n */\n public function getActivityTitleAttribute(): ?string\n {\n $activityTitle = null;\n if ($this->prospect && $this->prospect->getName()) {\n if ($this->account_id) {\n $activityTitle = $this->account->name;\n } elseif ($this->lead_id) {\n $activityTitle = $this->lead->company;\n } elseif ($this->contact_id) {\n $activityTitle = $this->contact->account ? $this->contact->account->name : $this->contact->name;\n }\n } elseif ($this->title) {\n $activityTitle = $this->title;\n }\n\n return $activityTitle;\n }\n\n public function wasRecentlyCreated(): bool\n {\n return $this->wasRecentlyCreated;\n }\n\n public function getProspectTypeAttribute()\n {\n $prospectType = null;\n\n if ($this->lead_id) {\n $prospectType = 'Lead';\n } elseif ($this->contact_id) {\n $prospectType = 'Contact';\n } elseif ($this->account_id) {\n $prospectType = 'Account';\n }\n\n return $prospectType;\n }\n\n /**\n * Return the best match for prospect. Results are in the following order of priority:\n * 1. Lead\n * 2. Contact\n * 3. Account\n * 4. NULL\n */\n public function getProspectAttribute(): ?ProspectInterface\n {\n if ($this->hasLead()) {\n return $this->getLead();\n }\n\n if ($this->hasContact()) {\n return $this->getContact();\n }\n\n if ($this->hasAccount()) {\n return $this->getAccount();\n }\n\n return null;\n }\n\n public function getTitleAttribute($value): ?string\n {\n return \\getActivityTitleAttribute(\n $this->user->name,\n $this->getType(),\n $value,\n $this->prospect->name ?? null,\n $this->from->national_phone_number ?? null\n );\n }\n\n public function getTitle(): ?string\n {\n return $this->getAttribute('title');\n }\n\n public function getSummary(): ?string\n {\n return $this->getAttribute('summary');\n }\n\n public function isInternal(): bool\n {\n return $this->getAttribute('is_internal');\n }\n\n public function getIsPrivate(): bool\n {\n return $this->getAttribute('is_private');\n }\n\n public function getDescription(): ?string\n {\n return $this->getAttribute('description');\n }\n\n public function hasTitle(): bool\n {\n return $this->getOriginal('title') !== null;\n }\n\n public function getPlayCountAttribute()\n {\n return $this->getPlaysCountAttribute();\n }\n\n public function getPlaysCountAttribute()\n {\n if (! isset($this->attributes['plays_count'])) {\n $this->loadCount('plays');\n }\n\n return $this->attributes['plays_count'];\n }\n\n public function getCommentCountAttribute()\n {\n return $this->getCommentsCountAttribute();\n }\n\n public function getCommentsCountAttribute()\n {\n if (! isset($this->attributes['comments_count'])) {\n $this->loadCount('comments');\n }\n\n return $this->attributes['comments_count'];\n }\n\n public function getVisibleCommentsCountAttribute()\n {\n if (! isset($this->attributes['visible_comments_count'])) {\n $activityCommentsService = app(ActivityCommentService::class);\n $user = Auth::user() instanceof User ? Auth::user() : null;\n $this->attributes['visible_comments_count'] = $activityCommentsService\n ->getVisibleCommentsCount($this, $user);\n }\n\n return $this->attributes['visible_comments_count'];\n }\n\n public function getShareCountAttribute()\n {\n return $this->getSharesCountAttribute();\n }\n\n public function getSharesCountAttribute()\n {\n if (! isset($this->attributes['shares_count'])) {\n $this->loadCount('shares');\n }\n\n return $this->attributes['shares_count'];\n }\n\n\n /**\n * Get the count of favorites playlists this activity appears in\n */\n public function getFavoriteCountAttribute(): int\n {\n return $this->getFavoritesCountAttribute();\n }\n\n public function getFavoritesCountAttribute()\n {\n if (! isset($this->attributes['favorites_count'])) {\n $this->loadCount('favorites');\n }\n\n return $this->attributes['favorites_count'];\n }\n\n public function getActiveParticipantsCountAttribute()\n {\n if (! isset($this->attributes['active_participants_count'])) {\n $this->loadCount('activeParticipants');\n }\n\n return $this->attributes['active_participants_count'];\n }\n\n public function getTracksWithTelephonyCountAttribute()\n {\n if (! isset($this->attributes['tracks_with_telephony_count'])) {\n $this->loadCount('tracksWithTelephony');\n }\n\n return $this->attributes['tracks_with_telephony_count'];\n }\n\n /**\n * @TEMP\n * $this->loadCount('tracksWithTelephony') throws null pointer exception\n */\n public function countTracksWithTelephony(): int\n {\n return $this->tracks()->whereNotNull('telephony_provider_id')->count();\n }\n\n public function getDuration(): float\n {\n return $this->getAttribute('duration');\n }\n\n public function getDurationForHumansAttribute()\n {\n return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true);\n }\n\n public function getDurationForHumansShortAttribute(): string\n {\n return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true, true);\n }\n\n public function hasRecordingPreference(): bool\n {\n return $this->getAttribute('recording_preference') !== null;\n }\n\n public function getRecordingPreference()\n {\n return $this->getAttribute('recording_preference');\n }\n\n /** @return BelongsTo<User, self> */\n public function user(): BelongsTo\n {\n return $this->belongsTo(User::class)->with('group');\n }\n\n public function device()\n {\n return $this->belongsTo(Device::class);\n }\n\n public function category()\n {\n return $this->belongsTo(PlaybookCategory::class, 'playbook_category_id');\n }\n\n public function getCategory(): ?PlaybookCategory\n {\n return $this->getAttribute('category');\n }\n\n public function getPlaybookCategoryId(): ?int\n {\n return $this->getAttribute('playbook_category_id');\n }\n\n public function hasStats(): bool\n {\n return $this->getAttribute('stats') !== null;\n }\n\n public function getStats(): ?Stats\n {\n return $this->getAttribute('stats');\n }\n\n public function stats(): HasOne\n {\n return $this->hasOne(Stats::class);\n }\n\n public function participantStats(): Eloquent\\Relations\\HasManyThrough\n {\n return $this->hasManyThrough(\n Models\\Participant\\ParticipantStats::class,\n Participant::class,\n 'activity_id',\n 'participant_id'\n );\n }\n\n public function getParticipantStats(): Eloquent\\Collection\n {\n return $this->getAttribute('participantStats');\n }\n\n public function account()\n {\n return $this->belongsTo(Account::class);\n }\n\n public function contact()\n {\n return $this->belongsTo(Contact::class)->with(['account']);\n }\n\n public function lead()\n {\n return $this->belongsTo(Lead::class)->with(['stage', 'recordType']);\n }\n\n /**\n * @return BelongsTo<Opportunity, self>\n */\n public function opportunity(): BelongsTo\n {\n /** @var BelongsTo<Opportunity, self> */\n return $this->belongsTo(Opportunity::class);\n }\n\n public function stage()\n {\n return $this->belongsTo(Stage::class);\n }\n\n /**\n * @return HasMany<Session>\n */\n public function sessions(): HasMany\n {\n return $this->hasMany(Session::class);\n }\n\n /**\n * @return HasMany|ParticipantSpeech[]|Eloquent\\Collection\n */\n public function participantSpeeches()\n {\n return $this->hasMany(ParticipantSpeech::class);\n }\n\n public function getParticipantSpeeches(): Eloquent\\Collection\n {\n return $this->getAttribute('participantSpeeches');\n }\n\n /**\n * @return HasMany|Log[]|Eloquent\\Collection\n */\n public function logs()\n {\n return $this->hasMany(Log::class);\n }\n\n /**\n * @return HasMany|Moment[]|Eloquent\\Collection\n */\n public function moments()\n {\n return $this->hasMany(Moment::class);\n }\n\n /**\n * @return HasMany|Note[]|Eloquent\\Collection\n */\n public function notes()\n {\n return $this->hasMany(Note::class);\n }\n\n /**\n * @return Eloquent\\Collection|Note[]\n */\n public function getNotes(): Eloquent\\Collection\n {\n return $this->getAttribute('notes');\n }\n\n /**\n * @return HasMany|Message[]|Eloquent\\Collection\n */\n public function messages()\n {\n return $this->hasMany(Message::class);\n }\n\n public function coachingMessages(): HasMany\n {\n return $this->hasMany(Message::class)\n ->where('is_private', 1);\n }\n\n public function getCoachingMessages(): Eloquent\\Collection\n {\n return $this->getAttribute('coachingMessages');\n }\n\n public function participants(): HasMany\n {\n return $this->hasMany(Participant::class);\n }\n\n public function getSnapshots(): Eloquent\\Collection\n {\n return $this->getAttribute('snapshots');\n }\n\n /** @return HasMany<Track> */\n public function tracks(): HasMany\n {\n return $this->hasMany(Track::class);\n }\n\n public function tracksWithTelephony(): HasMany\n {\n return $this->hasMany(Track::class)->whereNotNull('telephony_provider_id');\n }\n\n public function getTracksWithTelephony(): Eloquent\\Collection\n {\n return $this->getAttribute('tracksWithTelephony');\n }\n\n /** @return Collection|Track[] */\n public function getTracks(): Eloquent\\Collection\n {\n return $this->getAttribute('tracks');\n }\n\n public function masterTrack(): HasOne\n {\n return $this->hasOne(Track::class)->where('is_master', 1)\n ->whereIn('format', [Track::FORMAT_WAV, Track::FORMAT_M3U8])\n ->latest();\n }\n\n public function getMasterTrack(): ?Track\n {\n /** @var Track|null */\n return $this->getAttribute('masterTrack');\n }\n\n public function transcription(): Eloquent\\Relations\\BelongsTo\n {\n return $this->belongsTo(Transcription::class, 'transcription_id');\n }\n\n public function findTranscriptionPromptSummaries(): Collection\n {\n $transcriptionId = $this->getTranscriptionId();\n if (is_null($transcriptionId)) {\n return new Collection();\n }\n\n return Models\\AiPrompt::query()\n ->where('transcription_id', $transcriptionId)\n ->get();\n }\n\n public function getTranscription(): Transcription\n {\n return $this->getAttribute('transcription');\n }\n\n public function hasTranscription(): bool\n {\n return $this->getAttribute('transcription') !== null;\n }\n\n public function setTranscriptionId(int $transcriptionId): Activity\n {\n $this->setAttribute('transcription_id', $transcriptionId);\n\n return $this;\n }\n\n public function unsetTranscriptionId(): self\n {\n $this->setAttribute('transcription_id', null);\n\n return $this;\n }\n\n public function getTranscriptionId(): ?int\n {\n return $this->getAttribute('transcription_id');\n }\n\n /** @deprecated */\n public function hasTranscriptionId(): bool\n {\n return $this->getAttribute('transcription_id') !== null;\n }\n\n public function coachRequests()\n {\n return $this->hasMany(CoachRequest::class);\n }\n\n public function availabilityNotifications()\n {\n return $this->hasMany(AvailabilityNotification::class);\n }\n\n public function processingStates()\n {\n return $this->hasMany(Models\\Activity\\ActivityProcessingState::class);\n }\n\n public function uploadSettings()\n {\n return $this->hasMany(ActivityUploadSetting::class);\n }\n\n public function comments()\n {\n return $this->hasMany(Comment::class);\n }\n\n public function getComments(): Eloquent\\Collection\n {\n return $this->getAttribute('comments');\n }\n\n public function visibleComments()\n {\n $rel = $this->hasMany(Comment::class);\n // Doesn't have auth()->user() in some tests, breaks the build\n if ($user = auth()->user()) {\n return $rel->visibleThreads($user->id);\n }\n\n return $rel;\n }\n\n public function snapshots(): HasMany\n {\n return $this->hasMany(Snapshot::class);\n }\n\n public function calendarEvent()\n {\n return $this->belongsTo(CalendarEvent::class);\n }\n\n public function getCalendarEvent(): ?CalendarEvent\n {\n return $this->getAttribute('calendarEvent');\n }\n\n public function latestCoachingFeedbacks(): HasMany\n {\n return $this->hasMany(CoachingFeedback::class)->latest();\n }\n\n public function playlists(): BelongsToMany\n {\n return $this->belongsToMany(Playlist::class, 'playlist_activities')\n ->withPivot('id', 'uuid', 'user_id', 'start_time', 'end_time')\n ->using(PlaylistActivity::class)\n ->withTimestamps();\n }\n\n public function coachingFeedbacks(): HasMany\n {\n return $this->hasMany(CoachingFeedback::class);\n }\n\n /**\n * @return Eloquent\\Collection|CoachingFeedback[]\n */\n public function getCoachingFeedback(): Eloquent\\Collection\n {\n return $this->getAttribute('coachingFeedbacks');\n }\n\n /** @return Eloquent\\Collection<int, PlaylistActivity> */\n public function favoritedBy(User $user): Eloquent\\Collection\n {\n return $this->favorites()->where('user_id', $user->getId())->get();\n }\n\n /**\n * Checks whether consumer has added this activity to their favorites playlist\n * In addition a default playlist gets created if not already present\n */\n public function wasFavoritedBy(User $user): bool\n {\n $playlist = $user->favoritePlaylist();\n\n return $playlist\n ->activities()\n ->where('activity_id', '=', $this->getId())\n ->exists();\n }\n\n /**\n * @return HasMany<PlaylistActivity>\n */\n public function playlistActivities(): HasMany\n {\n return $this->hasMany(PlaylistActivity::class);\n }\n\n /**\n * @return HasManyThrough<Playlist>\n */\n public function favoritePlaylists(): HasManyThrough\n {\n return $this->hasManyThrough(\n Playlist::class,\n PlaylistActivity::class,\n 'activity_id',\n 'id',\n 'id',\n 'playlist_id'\n )->where('is_default', 1);\n }\n\n /**\n * @return Eloquent\\Collection<int, Playlist>\n */\n public function getFavoritePlaylists(): Eloquent\\Collection\n {\n return $this->getAttribute('favoritePlaylists');\n }\n\n /**\n * Get activities from the default/favorite playlist\n *\n * @return Eloquent\\Builder|static\n */\n public function favorites()\n {\n return $this->playlistActivities()->whereHas('playlist', function ($query) {\n $query->where('is_default', 1);\n });\n }\n\n /**\n * @return Model|SubscriptionSet|null|object\n */\n public function subscribedBy(User $user)\n {\n if ($this->prospect === null) {\n return null;\n }\n\n return SubscriptionSet::select('activity_subscription_sets.*')\n ->where('user_id', $user->id)\n ->join('activity_subscriptions', function ($join) {\n $join\n ->on('subscription_set_id', '=', 'activity_subscription_sets.id');\n\n if ($this->account_id) {\n if ($this->opportunity_id) {\n $join\n ->where('followable_type', 'opportunity')\n ->where('followable_id', $this->opportunity_id);\n } else {\n $join\n ->where('followable_type', 'account')\n ->where('followable_id', $this->account_id);\n }\n } elseif ($this->contact_id) {\n $join\n ->where('followable_type', 'contact')\n ->where('followable_id', $this->contact_id);\n } elseif ($this->lead_id) {\n $join\n ->where('followable_type', 'lead')\n ->where('followable_id', $this->lead_id);\n }\n })\n ->first();\n }\n\n /**\n * @return array|Eloquent\\Builder[]|Eloquent\\Collection|SubscriptionSet[]\n */\n public function subscribers()\n {\n if ($this->prospect === null) {\n return [];\n }\n\n return SubscriptionSet::with(['subscriptions', 'user'])\n ->whereHas('subscriptions', function ($query) {\n if ($this->account_id) {\n if ($this->opportunity_id) {\n $query\n ->where('followable_type', 'opportunity')\n ->where('followable_id', $this->opportunity_id);\n } else {\n $query\n ->where('followable_type', 'account')\n ->where('followable_id', $this->account_id);\n }\n } elseif ($this->contact_id) {\n $query\n ->where('followable_type', 'contact')\n ->where('followable_id', $this->contact_id);\n } elseif ($this->lead_id) {\n $query\n ->where('followable_type', 'lead')\n ->where('followable_id', $this->lead_id);\n } else {\n // Nothing to join on?\n // refactor - use Jiminny specific exception\n throw new InvalidArgumentException('Cannot join on a specific customer filter.');\n }\n })\n ->whereHas('user', function ($query) {\n $query\n ->where('team_id', $this->user->team_id)\n ->where('status', User::STATUS_ACTIVE);\n })\n ->get();\n }\n\n /**\n * @return HasMany|Builder|Eloquent\\Collection|Play[]\n */\n public function plays()\n {\n return $this->hasMany(Play::class);\n }\n\n public function getPlays(): Eloquent\\Collection\n {\n return $this->getAttribute('plays');\n }\n\n public function playsBy(User $user)\n {\n /** @var Builder $builder */\n $builder = $this->plays()->where('user_id', $user->id);\n\n return $builder->get();\n }\n\n /**\n * Check if activity was played by a user\n */\n public function wasPlayedBy(User $user): bool\n {\n return $this->plays()->where('user_id', $user->id)->exists();\n }\n\n public function shares()\n {\n return $this->hasMany(Share::class);\n }\n\n /** @return BelongsTo<Participant, self> */\n public function from(): BelongsTo\n {\n return $this->belongsTo(Participant::class, 'from_participant_id');\n }\n\n /** @return BelongsTo<Participant, self> */\n public function to(): BelongsTo\n {\n return $this->belongsTo(Participant::class, 'to_participant_id');\n }\n\n /**\n * Get all of the connections through the participants.\n */\n public function connections()\n {\n return $this->hasManyThrough(\n Connection::class,\n Participant::class,\n 'activity_id',\n 'participant_id'\n );\n }\n\n public function getConnections(): Eloquent\\Collection\n {\n return $this->getAttribute('connections');\n }\n\n /**\n * Get all of the shares through the participants.\n */\n public function participantShares()\n {\n return $this->hasManyThrough(\n Participant\\Share::class,\n Participant::class,\n 'activity_id',\n 'participant_id'\n );\n }\n\n public function getParticipantShares(): Eloquent\\Collection\n {\n return $this->getAttribute('participantShares');\n }\n\n public function topicTriggers(): HasMany\n {\n return $this->hasMany(TopicTrigger::class);\n }\n\n public function activityScorecardRuleTriggers(): HasMany\n {\n return $this->hasMany(Models\\Scorecard\\ActivityScorecardRuleTrigger::class);\n }\n\n public function activityScorecardRules(): HasMany\n {\n return $this->hasMany(Models\\Scorecard\\ActivityScorecardRule::class);\n }\n\n public function questions(): HasMany\n {\n return $this->hasMany(Question::class);\n }\n\n /**\n * Get all the custom data attached to it.\n */\n public function data(): HasMany\n {\n return $this->hasMany(FieldData::class);\n }\n\n public function getData(): Eloquent\\Collection\n {\n /** @var Eloquent\\Collection */\n return $this->getAttribute('data');\n }\n\n #[Scope]\n protected function heldBetween($query, Carbon $start, Carbon $end)\n {\n // Sanity check.\n $from = min($start, $end);\n $until = max($start, $end);\n\n return $query\n ->where('actual_start_date', '>=', $from)\n ->where('actual_end_date', '<=', $until);\n }\n\n #[Scope]\n protected function scheduledBetween($query, Carbon $start, Carbon $end)\n {\n // Sanity check.\n $from = min($start, $end);\n $until = max($start, $end);\n\n return $query\n ->where('scheduled_start_date', '>=', $from)\n ->where('scheduled_end_date', '<=', $until);\n }\n\n /**\n * @param Builder<self> $query\n *\n * @return Builder<self>\n */\n #[Scope]\n protected function forTeam(Builder $query, int $teamId): Builder\n {\n /** @var Builder<self> */\n return $query->whereHas('user', static function (Builder $query) use ($teamId): void {\n $query->where('team_id', $teamId);\n });\n }\n\n /**\n * @param Builder<self> $query\n *\n * @return Builder<self>\n */\n #[Scope]\n protected function inOpenDeals(Builder $query): Builder\n {\n /** @var Builder<self> */\n return $query->whereHas(\n 'opportunity',\n static fn (Builder $query): Builder => $query\n ->where('is_closed', false)\n ->where('deleted_at', '=', null),\n );\n }\n\n /**\n * @param Builder<self> $query\n *\n * @return Builder<self>\n */\n #[Scope]\n protected function notInOpenDeals(Builder $query): Builder\n {\n /** @var Builder<self> */\n return $query->where(\n static fn (Builder $query): Builder => $query->whereNull('opportunity_id')\n ->orWhereHas(\n 'opportunity',\n static fn (Builder $query): Builder => $query->where('is_closed', true),\n )\n ->orWhereHas(\n 'opportunity',\n static fn (Builder $query): Builder => $query->withTrashed()->where('deleted_at', '!=', null),\n ),\n );\n }\n\n /**\n * Finds a participant and updates it with data. If participant doesn't exist creates a new participant from data.\n *\n * @param array $data participant data used to identify the participant and update it\n * @param bool $enterRoom true if participant is entering the room. false if we just want to update some participant data\n * @param Carbon|null $enterTime if $enterNow is true then this is the join time when the actual enter has occurred\n */\n public function updateOrCreateParticipant(\n array $data,\n bool $enterRoom = true,\n ?Carbon $enterTime = null,\n bool $nameMatching = false,\n ): Participant {\n $search = [];\n $participant = null;\n\n if (isset($data['user_id'])) {\n // Check if they already exist based on their ID.\n $search['user_id'] = $data['user_id'];\n } elseif (isset($data['provider_id'])) {\n $search['provider_id'] = $data['provider_id'];\n } elseif ($nameMatching && isset($data['name'])) {\n $search['name'] = $data['name'];\n }\n\n if (! empty($data['email'])) {\n $search['email'] = $data['email'];\n\n // If we have their email, this should be unique enough to lookup (e.g. calendar event based participant).\n unset($search['provider_id']);\n }\n\n // Search by phone number only in case nothing else is available to search by.\n if (array_key_exists('phone_number', $data) && empty($search)) {\n $search['phone_number'] = $data['phone_number'];\n }\n\n if (! empty($search)) {\n // Do a lookup now to see if we have a match on the provided data.\n $lookup = array_map(static function ($key, $value): array {\n return [$key, $value];\n }, array_keys($search), $search);\n\n $participant = $this->participants()->withTrashed()->where($lookup)->first();\n }\n\n // Do a partial match on the name and search in the team members.\n if (! $participant instanceof Participant && $nameMatching && ! empty($data['name'])) {\n $participantMatcher = app(MeetingBot\\Service\\ParticipantMatcher::class);\n\n if (! $participantMatcher instanceof MeetingBot\\Service\\ParticipantMatcher) {\n throw new LogicException('Expecting ParticipantMatcher service instance');\n }\n\n $participant = $participantMatcher->match($this, $data['name']);\n\n // If we've found good participant, avoid data overwrite in `$participant->fill($data)` below.\n if ($participant instanceof Models\\Participant && $participant->hasName()) {\n unset($data['name']); // Thoughts: should we unset also $data['user_id'] and $data['email'] ?\n }\n }\n\n if (! $participant instanceof Participant) {\n // If no match, create a new participant.\n if (empty($search)) {\n $participant = $this->participants()->create();\n } else {\n // If no match, create a new participant but avoid creating duplicates\n $participant = $this->participants()->withTrashed()->firstOrNew($search);\n }\n }\n\n // If we have just recycled a deleted participant\n if ($participant->trashed()) {\n $participant->deleted_at = null;\n }\n\n // Deal with the case when calendar syncs the event while it's in progress.\n // We should prevent change of the participant name, because speeches mapping will fail.\n if ($enterRoom === false\n && $this->isInProgress()\n && $participant->hasName()\n && isset($data['name'])\n && $data['name'] !== $participant->getName()\n ) {\n unset($data['name']);\n }\n\n // Upsert with new data.\n $participant->fill($data);\n\n if ($enterRoom) {\n if ($enterTime === null) {\n $enterTime = now();\n }\n\n // Participant enters room for the first time\n if ($participant->enter_time === null) {\n $participant->enter_time = $enterTime;\n }\n\n // If there is an exit time and it's prior to new enter_time\n if ($participant->exit_time && $participant->exit_time->lt($enterTime)) {\n // Participant has re-joined\n $participant->exit_time = null;\n }\n }\n\n $participant->save();\n\n return $participant;\n }\n\n /**\n * Updates participant CRM data\n *\n * @param array{\n * Lead|null,\n * Account|null,\n * Opportunity|null,\n * Contact|null,\n * Stage|null,\n * string|null\n *} $records\n * @param Participant $participant participant the CRM data is associated with\n */\n public function updateParticipantCrmData(array $records, Participant $participant): void\n {\n // Extract the records.\n [$lead, , , $contact] = $records;\n\n $resolver = $this->getUpdateCrmDataResolver();\n $strategy = $resolver->resolveForParticipant($lead, $contact);\n\n if ($strategy == UpdateCrmDataByStrategy::Lead) {\n if (! $participant->hasName()) {\n $participant->name = $lead->name;\n }\n\n if (! $participant->hasEmailAddress()) {\n $participant->email = $lead->email;\n }\n\n if (! $participant->hasPhoneNumber()) {\n $participant->phone_number = $lead->phone;\n }\n\n $participant->lead_id = $lead->id;\n $participant->save();\n } elseif ($strategy == UpdateCrmDataByStrategy::Contact) {\n if (! $participant->hasName()) {\n $participant->name = $contact->name;\n }\n\n if (! $participant->hasEmailAddress()) {\n $participant->email = $contact->email;\n }\n\n if (! $participant->hasPhoneNumber()) {\n $participant->phone_number = $contact->phone;\n }\n\n $participant->contact_id = $contact->id;\n $participant->save();\n }\n }\n\n /**\n * Updates activity CRM data\n *\n * @param array{\n * Lead|null,\n * Account|null,\n * Opportunity|null,\n * Contact|null,\n * Stage|null,\n * string|null\n *} $records\n */\n public function updateActivityCrmData(array $records): void\n {\n // Extract the records.\n [$lead, $account, $opportunity, $contact, $stage] = $records;\n\n $resolver = $this->getUpdateCrmDataResolver();\n $strategy = $resolver->resolveForActivity($lead, $contact, $account);\n\n if ($strategy == UpdateCrmDataByStrategy::Lead) {\n // Also update the parent activity if required, checking we don't create a mixed lead/account record.\n if ($this->account_id === null && $this->contact_id === null && $this->lead_id === null) {\n $this->lead_id = $lead->id;\n\n if ($this->stage_id === null && $stage) {\n $this->stage_id = $stage->id;\n }\n\n $this->save();\n }\n } elseif ($strategy == UpdateCrmDataByStrategy::Contact) {\n // Also update the parent activity if required, checking we don't create a mixed lead/account record.\n $this->lead_id = null;\n if ($this->stage && $this->stage->getType() === Stage::TYPE_LEAD) {\n $this->stage_id = null;\n }\n\n // Don't trust previous matched account_id as it might have been changed in the CRM\n if ($account && $account->id !== $this->account_id) {\n $this->account_id = $account->id;\n }\n\n if ($this->stage_id === null && $stage) {\n $this->stage_id = $stage->id;\n }\n\n if ($opportunity && $this->opportunity_id !== $opportunity->id) {\n $this->opportunity_id = $opportunity->id;\n }\n\n if ($opportunity && $this->value !== $opportunity->value) {\n $this->value = $opportunity->value;\n }\n\n // Always set contact_id when available, regardless of account_id status\n if ($this->contact_id === null && $contact) {\n $this->contact_id = $contact->id;\n }\n\n $this->save();\n } elseif ($strategy == UpdateCrmDataByStrategy::Account && $this->account_id === null) {\n // Also update the parent activity if required, checking we don't create a mixed lead/account record.\n $this->lead_id = null;\n if ($this->stage && $this->stage->getType() === Stage::TYPE_LEAD) {\n $this->stage_id = null;\n }\n\n // Update the account and opportunity on the activity record if possible.\n $this->account_id = $account->id;\n\n if ($this->stage_id === null && $stage) {\n $this->stage_id = $stage->id;\n }\n\n if ($this->opportunity_id === null && $opportunity) {\n $this->opportunity_id = $opportunity->id;\n $this->value = $opportunity->value;\n }\n\n $this->save();\n }\n }\n\n public function getActivityProspectData(): array\n {\n return [\n 'lead' => $this->lead_id,\n 'contact' => $this->contact_id,\n 'account' => $this->account_id,\n 'opportunity' => $this->opportunity_id,\n 'stage' => $this->stage_id,\n ];\n }\n\n public function isOrganizer(User $user): bool\n {\n return $this->user_id && $this->user_id === $user->id;\n }\n\n public function isJoinable(): bool\n {\n return \\in_array($this->status, [\n self::STATUS_SCHEDULED,\n self::STATUS_PENDING,\n self::STATUS_RINGING,\n self::STATUS_IN_PROGRESS,\n ], true);\n }\n\n public function isAttemptedForBotJoin(): bool\n {\n return in_array($this->getAttribute('status'), self::MEETING_BOT_JOIN_ATTEMPTED, true);\n }\n\n /**\n * Check if the activity can be saved to CRM (manual or autolog)\n */\n public function isLoggable(): bool\n {\n if ($this->getUser()->getTeam()->hasFeature(FeatureEnum::SIDEKICK_SETTINGS)) {\n $sidekickService = app(SidekickService::class);\n\n if (! $sidekickService->isSidekickEnabledForUser($this->getUser())) {\n return false;\n }\n }\n\n // If we don't know the activity type, don't try to log.\n if ($this->playbook_category_id === null) {\n return false;\n }\n\n if ($this->user->crm_required === false) {\n return false;\n }\n\n // Don't prompt for internal meetings.\n if ($this->is_internal) {\n return false;\n }\n\n // If we don't know who we are trying to log to, don't try to log.\n if ($this->prospect === null) {\n return false;\n }\n\n $validStatus = false;\n switch ($this->type) {\n case self::TYPE_SOFTPHONE:\n case self::TYPE_SOFTPHONE_INBOUND:\n $validStatus = true;\n\n break;\n case self::TYPE_CONFERENCE:\n $validStatus = in_array($this->status, [\n self::STATUS_BUSY,\n self::STATUS_NO_ANSWER,\n self::STATUS_COMPLETED,\n self::STATUS_CANCELLED,\n ], true);\n\n break;\n case self::TYPE_SMS_INBOUND:\n case self::TYPE_SMS_OUTBOUND:\n $validStatus = in_array($this->status, [\n self::STATUS_QUEUED,\n self::STATUS_SENT,\n self::STATUS_UNDELIVERED,\n self::STATUS_DELIVERED,\n self::STATUS_RECEIVED,\n ], true);\n\n break;\n }\n\n // Depending on the activity channel, we should not try to log.\n return $validStatus;\n }\n\n public function isScheduled(): bool\n {\n return $this->status === self::STATUS_SCHEDULED;\n }\n\n public function scheduledDuration(): int\n {\n if ($this->scheduled_start_time && $this->scheduled_end_time) {\n return $this->scheduled_end_time->timestamp - $this->scheduled_start_time->timestamp;\n }\n\n return 0;\n }\n\n public function isPending(): bool\n {\n return $this->status === self::STATUS_PENDING;\n }\n\n public function isCompleted(): bool\n {\n return $this->status === self::STATUS_COMPLETED;\n }\n\n public function isRinging(): bool\n {\n return $this->status === self::STATUS_RINGING;\n }\n\n public function isInProgress(): bool\n {\n return $this->status === self::STATUS_IN_PROGRESS;\n }\n\n public function isBusy(): bool\n {\n return $this->status === self::STATUS_BUSY;\n }\n\n public function isNoAnswer(): bool\n {\n return $this->status === self::STATUS_NO_ANSWER;\n }\n\n public function isFailed(): bool\n {\n return $this->status === self::STATUS_FAILED;\n }\n\n public function isCancelled(): bool\n {\n return $this->status === self::STATUS_CANCELLED;\n }\n\n public function hasEnded(int $gracePeriodMinutes = 15): bool\n {\n if ($this->isCompleted()) {\n return true;\n }\n\n if (($this->isFailed() || $this->isCancelled()) && $this->hasScheduledEndTime()) {\n return $this->getScheduledEndTime()->addMinutes($gracePeriodMinutes)->isPast();\n }\n\n return false;\n }\n\n public function hasStarted(): bool\n {\n return $this->hasActualStartTime();\n }\n\n public function isOngoing(): bool\n {\n return $this->hasActualStartTime() && ! $this->hasActualEndTime();\n }\n\n public function isTypeSmsInbound(): bool\n {\n return $this->getType() === self::TYPE_SMS_INBOUND;\n }\n\n public function isTypeSmsOutbound(): bool\n {\n return $this->getType() === self::TYPE_SMS_OUTBOUND;\n }\n\n public function isTypeSoftPhone(): bool\n {\n return $this->getType() === self::TYPE_SOFTPHONE;\n }\n\n public function isTypeSoftphoneInbound(): bool\n {\n return $this->getType() === self::TYPE_SOFTPHONE_INBOUND;\n }\n\n public function isTypeConference(): bool\n {\n return $this->getType() === self::TYPE_CONFERENCE;\n }\n\n /**\n * Get a conference elapsed time in seconds.\n *\n * @return int seconds count\n */\n public function secondsTimeElapsed(): int\n {\n if (empty($this->actual_start_time)) {\n return 0;\n }\n\n // Get number of seconds since conference actual start time\n return (int) abs(Carbon::now()->diffInRealSeconds($this->actual_start_time));\n }\n\n /**\n * Get a conference elapsed time formatted as \"1:30:20\" if more than 1 hour or \"30:20\" otherwise.\n */\n public function formattedTimeElapsed(): string\n {\n // Get number of seconds since conference actual start time.\n $elapsedSeconds = $this->secondsTimeElapsed();\n $elapsedTime = Carbon::createFromTimestampUTC($elapsedSeconds);\n\n // Format conference start time.\n return $elapsedTime->format($elapsedSeconds < 3600 ? 'i:s' : 'G:i:s');\n }\n\n public function wasScheduled(): bool\n {\n return $this->calendarEvent !== null || in_array($this->getSource(), [self::SOURCE_OUTLOOK, self::SOURCE_GOOGLE]);\n }\n\n public function isInstant(): bool\n {\n return ! $this->wasScheduled();\n }\n\n /**\n * GETTERS AND SETTERS FOLLOW BELOW\n */\n\n public function getUuid(): string\n {\n return $this->getAttribute('id_string');\n }\n\n public function getId(): int\n {\n return $this->getAttribute('id');\n }\n\n public function getFromParticipantId(): ?int\n {\n return $this->getAttribute('from_participant_id');\n }\n\n public function getFromParticipant(): ?Participant\n {\n return $this->getAttribute('from');\n }\n\n public function getToParticipantId(): ?int\n {\n return $this->getAttribute('to_participant_id');\n }\n\n public function getToParticipant(): ?Participant\n {\n return $this->getAttribute('to');\n }\n\n public function hasScheduledStartTime(): bool\n {\n return $this->getAttribute('scheduled_start_time') !== null;\n }\n\n public function getScheduledStartTime(): ?Carbon\n {\n return $this->getAttribute('scheduled_start_time');\n }\n\n public function setScheduledStartTime(DateTimeInterface $dateTime): self\n {\n $this->setAttribute('scheduled_start_time', $dateTime);\n\n return $this;\n }\n\n public function getScheduledEndTime(): ?DateTimeInterface\n {\n return $this->getAttribute('scheduled_end_time');\n }\n\n public function hasScheduledEndTime(): bool\n {\n return $this->getAttribute('scheduled_end_time') !== null;\n }\n\n public function setScheduledEndTime(DateTimeInterface $dateTime): self\n {\n $this->setAttribute('scheduled_end_time', $dateTime);\n\n return $this;\n }\n\n public function getActualStartTime(): ?Carbon\n {\n return $this->getAttribute('actual_start_time');\n }\n\n public function hasActualStartTime(): bool\n {\n return $this->getAttribute('actual_start_time') !== null;\n }\n\n public function getActualEndTime(): ?Carbon\n {\n return $this->getAttribute('actual_end_time');\n }\n\n public function hasActualEndTime(): bool\n {\n return $this->getAttribute('actual_end_time') !== null;\n }\n\n public function getType(): ?string\n {\n return $this->getAttribute('type');\n }\n\n public function getStatus(): string\n {\n return $this->getAttribute('status');\n }\n\n public function setStatus(string $status): self\n {\n $this->setAttribute('status', $status);\n\n return $this;\n }\n\n public function setActualStartTime(DateTimeInterface $dateTime): self\n {\n $this->setAttribute('actual_start_time', $dateTime);\n\n return $this;\n }\n\n public function setActualEndTime(DateTimeInterface $dateTime, bool $shouldUpdateDuration = true): self\n {\n $this->setAttribute('actual_end_time', $dateTime);\n\n if (! $shouldUpdateDuration) {\n return $this;\n }\n\n return $this->updateDuration();\n }\n\n public function updateDuration(): self\n {\n if (! $this->hasActualStartTime() || ! $this->hasActualEndTime()) {\n return $this;\n }\n\n return $this->setDuration(\n (int) abs($this->getActualStartTime()->diffInRealSeconds($this->getActualEndTime()))\n );\n }\n\n public function setDuration(int $duration): self\n {\n $this->setAttribute('duration', $duration);\n\n return $this;\n }\n\n public function getRecordingState(): string\n {\n return $this->getAttribute('recording_state');\n }\n\n public function isRecordingState(string $recordingState): bool\n {\n return $this->getRecordingState() === $recordingState;\n }\n\n public function setRecordingState(string $recordingState): self\n {\n $this->setAttribute('recording_state', $recordingState);\n\n return $this;\n }\n\n public function hasActivityType(): bool\n {\n return $this->getAttribute('category') !== null;\n }\n\n public function getActivityType(): PlaybookCategory\n {\n return $this->getAttribute('category');\n }\n\n public function setActivityType(int $playbookCategoryId): self\n {\n $this->setAttribute('playbook_category_id', $playbookCategoryId);\n\n return $this;\n }\n\n public function hasStage(): bool\n {\n return $this->getAttribute('stage') !== null;\n }\n\n public function getStage(): ?Stage\n {\n return $this->getAttribute('stage');\n }\n\n public function getStageId(): ?int\n {\n return $this->getAttribute('stage_id');\n }\n\n public function setStageId(?int $stageId): void\n {\n $this->setAttribute('stage_id', $stageId);\n }\n\n public function hasOpportunity(): bool\n {\n return $this->getAttribute('opportunity') !== null;\n }\n\n public function getOpportunity(): ?Opportunity\n {\n return $this->getAttribute('opportunity');\n }\n\n public function hasContact(): bool\n {\n return $this->getAttribute('contact') !== null;\n }\n\n public function getContact(): ?Contact\n {\n return $this->getAttribute('contact');\n }\n\n public function getContactId(): ?int\n {\n return $this->getAttribute('contact_id');\n }\n\n public function setContactId(?int $contactId): void\n {\n $this->setAttribute('contact_id', $contactId);\n }\n\n public function hasLead(): bool\n {\n return $this->getAttribute('lead') !== null;\n }\n\n public function getLead(): ?Lead\n {\n return $this->getAttribute('lead');\n }\n\n public function getLeadId(): ?int\n {\n return $this->getAttribute('lead_id');\n }\n\n public function setLeadId(?int $leadId): void\n {\n $this->setAttribute('lead_id', $leadId);\n }\n\n public function hasAccount(): bool\n {\n return $this->getAttribute('account') !== null;\n }\n\n public function getAccount(): ?Account\n {\n return $this->getAttribute('account');\n }\n\n public function getAccountId(): ?int\n {\n return $this->getAttribute('account_id');\n }\n\n public function setAccountId(?int $accountId): void\n {\n $this->setAttribute('account_id', $accountId);\n }\n\n /**\n * This method exists to avoid confusion using ->participants() or ->participants. Use the getter instead.\n *\n * @return Collection<int, Participant>|Participant[]\n */\n public function getParticipants(): Collection\n {\n return $this->participants;\n }\n\n /**\n * @deprecated use ParticipantRepository::findParticipantRoomOwner() instead\n */\n public function findParticipantRoomOwner(): ?Participant\n {\n $roomOwnerId = $this->getUserId();\n\n return $this->getParticipants()\n ->filter(static fn (Participant $participant): bool => $participant->isSameUserId($roomOwnerId))\n ->first();\n }\n\n public function hasCrmProviderId(): bool\n {\n return $this->getAttribute('crm_provider_id') !== null;\n }\n\n public function getCrmProviderId(): ?string\n {\n return $this->getAttribute('crm_provider_id');\n }\n\n public function getUserId(): ?int\n {\n return $this->getAttribute('user_id');\n }\n\n public function hasUser(): bool\n {\n return $this->user()->exists();\n }\n\n public function getUser(): User\n {\n return $this->getAttribute('user');\n }\n\n public function getCreatedAt(): Carbon\n {\n return $this->getAttribute('created_at');\n }\n\n public function isInFiniteState(): bool\n {\n return $this->isFiniteState($this->getStatus());\n }\n\n public function isFiniteState(string $status): bool\n {\n $finiteStates = self::FINITE_STATES[$this->getType()] ?? [];\n\n return in_array($status, $finiteStates, true);\n }\n\n public function getParticipant(Authenticatable $user): Participant\n {\n return $this->findParticipant($user);\n }\n\n public function findParticipant(Authenticatable $user): ?Participant\n {\n if ($user instanceof User) {\n /** @var User $user */\n return $this->participants()->where('user_id', '=', $user->getId())->first();\n }\n\n throw new LogicException(sprintf('Unsupported Authenticatable implementation %s', get_class($user)));\n }\n\n public function hasLanguageCode(): bool\n {\n return $this->getAttribute('language') !== null;\n }\n\n public function getLanguageCode(): ?string\n {\n /** @var string|null */\n return $this->getAttribute('language');\n }\n\n public function getLanguageCodeHyphenated(): string\n {\n return str_replace('_', '-', $this->getLanguageCode() ?? '');\n }\n\n public function getLanguageCodeLocale(): string\n {\n [ $language ] = explode('_', $this->getLanguageCode() ?? '');\n\n return $language;\n }\n\n public function setLanguageCode(string $value): self\n {\n return $this->setAttribute('language', $value);\n }\n\n public function hasSource(): bool\n {\n return $this->getAttribute('source') !== null;\n }\n\n public function setSource(?string $source): self\n {\n return $this->setAttribute('source', $source);\n }\n\n public function isSource(string $source): bool\n {\n return $this->getAttribute('source') === $source;\n }\n\n public function getSource(): ?string\n {\n return $this->getAttribute('source');\n }\n\n public function isSourceGong(): bool\n {\n return $this->isSource(self::SOURCE_GONG);\n }\n\n public function getExternalId(): ?string\n {\n return $this->getAttribute('external_id');\n }\n\n public function setExternalId(?string $externalId): self\n {\n return $this->setAttribute('external_id', $externalId);\n }\n\n public function hasExternalId(): bool\n {\n return $this->getAttribute('external_id') !== null;\n }\n\n public function getProvider(): string\n {\n return $this->getAttribute('provider');\n }\n\n public function hasTelephonyProviderId(): bool\n {\n return $this->getAttribute('telephony_provider_id') !== null;\n }\n\n public function getTelephonyProviderId(): ?string\n {\n return $this->getAttribute('telephony_provider_id');\n }\n\n public function setTelephonyProviderId(?string $telephonyProviderId): self\n {\n return $this->setAttribute('telephony_provider_id', $telephonyProviderId);\n }\n\n public function getLocation(): ?string\n {\n return $this->getAttribute('location');\n }\n\n public function setLocation(?string $location): self\n {\n return $this->setAttribute('location', $location);\n }\n\n public function isDeleted(): bool\n {\n return $this->getAttribute('deleted_at') !== null;\n }\n\n /**\n * Check if activity recording is on and activity status is not one of the failed statuses.\n */\n public function canReviewActivity(): bool\n {\n $failedStatuses = self::$enumFailedStatuses;\n\n return (! in_array($this->recording_state, [self::RECORDING_OFF, self::RECORDING_STOPPED], true) &&\n ! in_array($this->status, $failedStatuses, true));\n }\n\n public function hasReasonCodeBotKicked(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_MEETING_BOT_KICKED);\n }\n\n public function hasReasonCodeNotCompliant(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_CONSENT_DENIED);\n }\n\n public function hasTopicTriggers(): bool\n {\n return $this->topicTriggers()->count() !== 0;\n }\n\n public function getTopicTriggers(): Collection\n {\n return $this->topicTriggers;\n }\n\n public function getTopicTriggersSorted(): Collection\n {\n $this->loadMissing([\n 'topicTriggers.participant',\n 'topicTriggers.playbackThemeTopicTrigger',\n 'topicTriggers.playbackThemeTopicTrigger',\n 'topicTriggers.playbackThemeTopicTrigger.playbackThemeTopic',\n 'topicTriggers.playbackThemeTopicTrigger.playbackThemeTopic.playbackTheme',\n ]);\n\n return $this->topicTriggers\n ->sortBy([\n 'playbackThemeTopicTrigger.playbackThemeTopic.playbackTheme.sort',\n 'playbackThemeTopicTrigger.playbackThemeTopic.sort',\n 'playbackThemeTopicTrigger.sort',\n ]);\n }\n\n public function hasQuestions(): bool\n {\n return $this->questions()->exists();\n }\n\n public function getQuestions(): Collection\n {\n return $this->questions;\n }\n\n public function hasValue(): bool\n {\n return $this->getAttribute('value') !== null;\n }\n\n public function getValue(): ?float\n {\n return $this->getAttribute('value');\n }\n\n public function transitionTo(string $newState, callable $callback, ?int $timeout = null): self\n {\n $newState = $this->getWorkflowStateFor(\n $this->getType(),\n $newState\n );\n\n return $this->traitTransitionTo($newState, $callback, $timeout);\n }\n\n public function getWorkflowState(): string\n {\n return $this->getWorkflowStateFor(\n $this->getType(),\n $this->getStatus()\n );\n }\n\n public function getActivityProviderDisplayName(): string\n {\n return \\Cache::remember('activity_provider_display_name-' . $this->getProvider(), 60 * 60 * 24, function () {\n $activityProviderRegistry = app()->make(ActivityProviderRegistry::class);\n\n try {\n return $activityProviderRegistry->get($this->getProvider())->getDisplayName();\n } catch (Exception $exception) {\n return ucfirst($this->getProvider());\n }\n });\n }\n\n private function getWorkflowStateFor(string $activityChannel, string $activityStatus): string\n {\n return sprintf(\n '%s::%s',\n $activityChannel,\n $activityStatus\n );\n }\n\n public function getWorkflow(): array\n {\n $map = [\n self::TYPE_SOFTPHONE => [\n self::STATUS_SCHEDULED => [\n self::STATUS_PENDING,\n self::STATUS_IN_PROGRESS,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n ],\n self::STATUS_PENDING => [\n self::STATUS_IN_PROGRESS,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n ],\n self::STATUS_RINGING => [\n self::STATUS_CANCELLED,\n self::STATUS_FAILED,\n self::STATUS_IN_PROGRESS,\n self::STATUS_BUSY,\n ],\n self::STATUS_IN_PROGRESS => [\n self::STATUS_COMPLETED,\n ],\n ],\n self::TYPE_SOFTPHONE_INBOUND => [\n self::STATUS_RINGING => [\n self::STATUS_IN_PROGRESS,\n self::STATUS_NO_ANSWER,\n self::STATUS_CANCELLED,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n ],\n self::STATUS_IN_PROGRESS => [\n self::STATUS_COMPLETED,\n ],\n ],\n ];\n\n return collect($map)\n ->mapWithKeys(function (array $currentStates, string $activityChannel): array {\n return [\n $activityChannel => collect($currentStates)\n ->mapWithKeys(function (array $possibleStates, $currentState) use ($activityChannel): array {\n $transitionName = $this->getWorkflowStateFor($activityChannel, $currentState);\n\n return [\n $transitionName => array_map(function (string $newState) use ($activityChannel) {\n return $this->getWorkflowStateFor($activityChannel, $newState);\n }, $possibleStates),\n ];\n }),\n ];\n })\n ->reduce(static function (array $carry, Collection $item): array {\n return array_merge($carry, $item->all());\n }, []);\n }\n\n public function hasPosterPath(): bool\n {\n return $this->getAttribute('poster_path') !== null;\n }\n\n public function getPosterPath(): ?string\n {\n return $this->getAttribute('poster_path');\n }\n\n /**\n * Take into account all recording settings and determine if we need to record this activity or not.\n */\n public function shouldRecord(): bool\n {\n return $this->determineRecordingReasonCode() === null;\n }\n\n public function determineRecordingReasonCode(): ?int\n {\n // Conference specific decisions.\n if ($this->isTypeConference()) {\n // If they have manually overridden the recording setting to not record.\n if ($this->hasRecordingPreference() && $this->getRecordingPreference() === false) {\n return self::FLAG_RECORDING_REASON_PREFERENCE_OVERRIDE;\n }\n\n // If they have manually overridden the recording setting to record.\n if ($this->hasRecordingPreference() && $this->getRecordingPreference() === true) {\n return null;\n }\n\n // If their team has disabled recording meetings, don't record.\n if ($this->user->team->isConferenceRecordPreferenceDisabled()) {\n return self::FLAG_RECORDING_REASON_TEAM_AUTOMATIC_DISABLED;\n }\n\n // If the host has disabled recording meetings, don't record.\n if ($this->user->checkConferenceRecordPreference() === false) {\n return self::FLAG_RECORDING_REASON_USER_AUTOMATIC_DISABLED;\n }\n\n // If it was marked internal...\n if ($this->is_internal) {\n // and their team has disabled recording internal meetings, don't record.\n if (\n $this->user->team->isConferenceRecordPreferenceEnabled()\n && ! $this->user->team->isConferenceRecordInternalPreferenceEnabled()\n ) {\n return self::FLAG_RECORDING_REASON_TEAM_INTERNAL_DISABLED;\n }\n\n // and the host has disabled recording internal meetings, don't record.\n if ($this->user->checkConferenceRecordInternalPreference() === false) {\n return self::FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED;\n }\n }\n\n // If it was not scheduled and they disabled internal meetings, we cannot determine if it was internal.\n if ($this->wasScheduled() === false && $this->user->checkConferenceRecordInternalPreference() === false) {\n return self::FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED_UNSCHEDULED;\n }\n }\n\n return null;\n }\n\n public function getRecordingReasonCode(): int\n {\n return $this->getAttribute('recording_reason_code');\n }\n\n public function setRecordingReasonCode(int $recordingReasonCode): self\n {\n $this->setAttribute('recording_reason_code', $recordingReasonCode);\n\n return $this;\n }\n\n // Not used today.\n public function getRecordingReasonString(): ?string\n {\n if ($this->hasRecordingReasonCompliancePrompted()) {\n return Team::COMPLIANCE_MODE_RECORDING_PROMPT;\n }\n\n if ($this->hasRecordingReasonComplianceRestricted()) {\n return Team::COMPLIANCE_MODE_RECORDING_RESTRICT;\n }\n\n if ($this->hasRecordingReasonComplianceRestrictedToOneSideRecording()) {\n return Team::COMPLIANCE_MODE_RECORDING_RESTRICT_ONE_SIDE;\n }\n\n return null;\n }\n\n public function hasRecordingReasonComplianceRestricted(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT);\n }\n\n public function hasRecordingReasonCompliancePrompted(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_COMPLIANCE_PROMPT);\n }\n\n public function hasRecordingReasonComplianceRestrictedToOneSideRecording(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT_ONE_SIDE);\n }\n\n public function getAudioTrack(): ?Track\n {\n /** @var Track|null */\n return $this->tracks()\n ->where('type', '=', Track::TYPE_AUDIO)\n ->first();\n }\n\n public function activeParticipants(): HasMany\n {\n return $this->hasMany(Participant::class)->active();\n }\n\n public function getActiveParticipants(): Eloquent\\Collection\n {\n return $this->getAttribute('activeParticipants');\n }\n\n public function crm(): Eloquent\\Relations\\BelongsTo\n {\n return $this->belongsTo(Configuration::class, 'crm_configuration_id');\n }\n\n public function activitySummaryLogs(): HasMany\n {\n return $this->hasMany(ActivitySummaryLog::class);\n }\n\n public function getCrm(): ?Configuration\n {\n return $this->getAttribute('crm');\n }\n\n public function hasCrmConfiguration(): bool\n {\n return $this->getAttribute('crm') !== null;\n }\n\n public function isProcessed(): ?bool\n {\n return $this->getAttribute('is_processed');\n }\n\n public function hasRecordingPrompt(): bool\n {\n return $this->getAttribute('has_recording_prompt') === true;\n }\n\n public function recalculateAverageScore(): Activity\n {\n $coachingFeedbacksAll = $this->coachingFeedbacks->where('visibility', CoachingFeedback::VISIBLE_TO_ALL);\n\n // Sum scores\n $scoreSum = $coachingFeedbacksAll->pluck('average_score')->sum();\n\n // Calculate average score\n if ($coachingFeedbacksAll->count() > 0) {\n $this->update(['average_score' => $scoreSum / $coachingFeedbacksAll->count()]);\n $this->documentUpdate();\n }\n\n return $this;\n }\n\n public function isOnAir(): bool\n {\n return $this->getAttribute('on_air') === self::ON_AIR_READY || $this->getAttribute('on_air') === self::ON_AIR_STREAMING;\n }\n\n public function setOnAir(int $onAir): self\n {\n $this->setAttribute('on_air', $onAir);\n\n return $this;\n }\n\n public function getOnAir(): ?int\n {\n return $this->getAttribute('on_air');\n }\n\n public function setTitleFromCallData(Call $call): void\n {\n $direction = $call->isOutbound() ? 'to' : 'from';\n\n $party = $this->prospect_name\n ?? $call->getContactName()\n ?? $call->getOtherPartyPhoneNumber()\n ;\n\n $this->update(['title' => sprintf('Call %s %s', $direction, $party)]);\n }\n\n /**\n * @param array{}|array{channels:string|null, format:string|null, type:string|null, status:string|null} $audioParams\n */\n public function createAudioTrack(\n string $telephonyProviderId,\n string $recordingUrl,\n array $audioParams = []\n ): Track {\n return $this->tracks()->updateOrCreate([\n 'telephony_provider_id' => $telephonyProviderId,\n ], [\n 'type' => $audioParams['type'] ?? Track::TYPE_AUDIO,\n 'status' => $audioParams['status'] ?? Track::STATUS_PENDING,\n 'format' => $audioParams['format'] ?? Track::FORMAT_WAV,\n 'provider_content_url' => $recordingUrl,\n 'start_time' => $this->actual_start_time,\n 'end_time' => $this->actual_end_time,\n ]);\n }\n\n public function createTrack(string $telephonyProviderId, array $params): Track\n {\n return $this->tracks()->updateOrCreate(\n [\n 'telephony_provider_id' => $telephonyProviderId,\n ],\n $params\n );\n }\n\n public function createOrganiserParticipant(Call $call): Participant\n {\n $user = $this->getUser();\n\n return $this->updateOrCreateParticipant([\n 'is_ghost' => 0,\n 'name' => $user->name,\n 'email' => $user->email,\n 'phone_number' => phone_e164(null, $call->getUserPhoneNumber()),\n 'enter_time' => $this->actual_start_time,\n 'exit_time' => $this->actual_end_time,\n 'user_id' => $user->id,\n ], false);\n }\n\n public function createProspectParticipant(Call $call): Participant\n {\n // not null 'name' is mandatory here to create a separate participant with 'nameMatching'\n // in case of the same phone_number with the Organiser\n $useNameMatching = $call->getUserPhoneNumber() === $call->getOtherPartyPhoneNumber();\n $defaultName = $useNameMatching ? '' : null;\n\n return $this->updateOrCreateParticipant(data: [\n 'is_ghost' => 0,\n 'name' => $this->prospect->name ?? $defaultName,\n 'email' => $this->prospect->email ?? null,\n 'phone_number' => phone_e164(null, $call->getOtherPartyPhoneNumber()),\n 'enter_time' => $this->actual_start_time,\n 'exit_time' => $this->actual_end_time,\n 'contact_id' => $this->contact_id ?? null,\n 'lead_id' => $this->lead_id ?? null,\n ], enterRoom: false, nameMatching: $useNameMatching);\n }\n\n public function updateParticipants(Participant $organiserParticipant, Participant $prospectParticipant): void\n {\n $this->update([\n 'from_participant_id' => $this->isTypeSoftPhone() ? $organiserParticipant->id : $prospectParticipant->id,\n 'to_participant_id' => $this->isTypeSoftPhone() ? $prospectParticipant->id : $organiserParticipant->id,\n ]);\n }\n\n public function hasProspect(): bool\n {\n return $this->getProspectAttribute() !== null;\n }\n\n public function isPrivate(): bool\n {\n return $this->getAttribute('is_private');\n }\n\n /** Create a new factory instance for the model. */\n protected static function newFactory(): Factory\n {\n return ActivityFactory::new();\n }\n\n public function getUpdatedAt(): Carbon\n {\n return $this->getAttribute('updated_at');\n }\n\n public function getActivitySummaryLogs(): Eloquent\\Collection\n {\n return $this->getAttribute('activitySummaryLogs');\n }\n\n public function hasProspectActivitySummaryLog(): bool\n {\n return $this->getActivitySummaryLogs()->contains(\n 'relation_type',\n ActivitySummaryLog::RELATION_OBJECT_TYPE_PROSPECT\n );\n }\n\n public function getTeam(): Team\n {\n return $this->getUser()->getTeam();\n }\n\n private function getUpdateCrmDataResolver(): UpdateCrmDataResolverInterface\n {\n $factory = app(UpdateCrmDataResolverFactory::class);\n\n return $factory->create($this);\n }\n\n public function getMeetingTrackProviderId(string $type): string\n {\n $label = match ($type) {\n Track::TYPE_VIDEO => 'v',\n Track::TYPE_AUDIO => 'a',\n default => throw new InvalidArgumentJiminnyException('Invalid track type'),\n };\n\n $startTimestamp = $this->getScheduledStartTime()?->getTimestamp();\n $teamId = $this->getTeam()->getId();\n\n return $this->getTelephonyProviderId() . ':' . $label . ':' . $startTimestamp . ':' . $teamId;\n }\n\n /**\n * Get all consent records associated with this activity\n *\n * @return \\Illuminate\\Database\\Eloquent\\Relations\\HasMany\n */\n public function participantConsents(): HasMany\n {\n return $this->hasMany(Participant\\Consent::class);\n }\n\n public function isDiallerCall(): bool\n {\n if ($this->getProvider() === Activity::PROVIDER_UPLOADER) {\n return false;\n }\n\n if (! in_array($this->getType(), [self::TYPE_SOFTPHONE, self::TYPE_SOFTPHONE_INBOUND])) {\n return false;\n }\n\n return $this->getProvider() !== self::PROVIDER_TWILIO;\n }\n\n public function getActivityDateWithFallback(): Carbon\n {\n if ($this->getActualStartTime() !== null) {\n return $this->getActualStartTime();\n }\n\n if ($this->getScheduledStartTime() !== null) {\n return $this->getScheduledStartTime();\n }\n\n return $this->getCreatedAt();\n }\n\n public function getCrmType(): ?string\n {\n // Treat uploader activities as conferences\n if ($this->getProvider() === Activity::PROVIDER_UPLOADER) {\n return Activity::TYPE_CONFERENCE;\n }\n\n return $this->getType();\n }\n}","depth":4,"value":"<?php\n\nnamespace Jiminny\\Models;\n\nuse Carbon\\Carbon;\nuse Database\\Factories\\ActivityFactory;\nuse DateTimeInterface;\nuse Exception;\nuse Illuminate\\Contracts\\Auth\\Authenticatable;\nuse Illuminate\\Database\\Eloquent;\nuse Illuminate\\Database\\Eloquent\\Attributes\\Scope;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsTo;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasMany;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasManyThrough;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasOne;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Auth;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ElasticSearch;\nuse Jiminny\\Component\\MeetingBot;\nuse Jiminny\\Component\\Model\\BitwiseFlagTrait;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Sidekick\\SidekickService;\nuse Jiminny\\Component\\Uuid\\UuidAwareInterface;\nuse Jiminny\\Component\\Workflow;\nuse Jiminny\\Contracts;\nuse Jiminny\\Contracts\\Crm\\ProspectInterface;\nuse Jiminny\\DTO\\ImportCall\\Call;\nuse Jiminny\\Events\\Activities\\ActivityTypeUpdated;\nuse Jiminny\\Events\\Activities\\ActivityUpdated;\nuse Jiminny\\Events\\Activities\\ProspectUpdated;\nuse Jiminny\\Events\\Activities\\StageUpdated;\nuse Jiminny\\Events\\Activities\\StatusUpdated;\nuse Jiminny\\Events\\Activities\\TitleUpdated;\nuse Jiminny\\Exceptions\\InvalidArgumentException as InvalidArgumentJiminnyException;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\RuntimeException;\nuse Jiminny\\Models;\nuse Jiminny\\Models\\Activity\\ActivitySummaryLog;\nuse Jiminny\\Models\\Activity\\ActivityUploadSetting;\nuse Jiminny\\Models\\Activity\\AvailabilityNotification;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Log;\nuse Jiminny\\Models\\Activity\\Message;\nuse Jiminny\\Models\\Activity\\Moment;\nuse Jiminny\\Models\\Activity\\Note;\nuse Jiminny\\Models\\Activity\\ParticipantSpeech;\nuse Jiminny\\Models\\Activity\\Play;\nuse Jiminny\\Models\\Activity\\Question;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\Activity\\Snapshot;\nuse Jiminny\\Models\\Activity\\Stats;\nuse Jiminny\\Models\\Activity\\SubscriptionSet;\nuse Jiminny\\Models\\Activity\\TopicTrigger;\nuse Jiminny\\Models\\Activity\\Transcription;\nuse Jiminny\\Models\\Calendar\\CalendarEvent;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\ElasticSearch\\ActivityElasticSearchTrait;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Participant\\Connection;\nuse Jiminny\\Models\\Playlist\\Activity as PlaylistActivity;\nuse Jiminny\\Services\\Activity\\ActivityProviderRegistry;\nuse Jiminny\\Services\\Activity\\Import\\DataResolvers\\UpdateCrmDataByStrategy;\nuse Jiminny\\Services\\Activity\\Import\\DataResolvers\\UpdateCrmDataResolverFactory;\nuse Jiminny\\Services\\Activity\\Import\\DataResolvers\\UpdateCrmDataResolverInterface;\nuse Jiminny\\Traits\\Enums;\nuse Jiminny\\Traits\\RequiresUUID;\nuse Jiminny\\Utils\\CurrencyFormatter;\nuse NumberFormatter;\n\nuse function in_array;\n\n/**\n * Jiminny\\Models\\Activity\n *\n * @property null|int $auto_score filled from ES hydrator, not in DB!\n * @property-read Account|null $account\n * @property-read CalendarEvent|null $calendarEvent\n * @property-read Contact|null $contact\n * @property-read Lead|null $lead\n * @property-read Opportunity|null $opportunity\n * @property-read Stage|null $stage\n * @property int $id\n * @property mixed|null $uuid\n * @property string|null $source\n * @property string|null $external_id\n * @property string $provider\n * @property string|null $location\n * @property string|null $telephony_provider_id\n * @property int|null $from_participant_id\n * @property int|null $to_participant_id\n * @property int|null $device_id\n * @property string|null $type\n * @property int|null $playbook_category_id\n * @property int $user_id\n * @property int|null $lead_id\n * @property int|null $account_id\n * @property int|null $contact_id\n * @property int|null $opportunity_id\n * @property int|null $stage_id\n * @property string|null $value\n * @property int|null $crm_configuration_id\n * @property string|null $crm_provider_id\n * @property string|null $language\n * @property int|null $transcription_id\n * @property int $duration\n * @property string $status\n * @property int|null $on_air\n * @property int|null $calendar_event_id\n * @property string $recording_state\n * @property bool|null $recording_preference\n * @property int $recording_reason_code\n * @property int $summary_reminder_sent\n * @property \\Illuminate\\Support\\Carbon|null $log_reminder_sent_at\n * @property \\Illuminate\\Support\\Carbon|null $organizer_notified_at\n * @property bool|null $has_recording_prompt\n * @property bool $is_internal\n * @property int $is_locked\n * @property int $is_recording\n * @property bool|null $is_processed\n * @property bool $is_private\n * @property bool $is_instant_invite\n * @property string|null $poster_path\n * @property string|null $summary\n * @property string|null $title\n * @property string|null $description\n * @property \\Illuminate\\Support\\Carbon|null $scheduled_start_time\n * @property \\Illuminate\\Support\\Carbon|null $scheduled_end_time\n * @property \\Illuminate\\Support\\Carbon|null $actual_start_time\n * @property \\Illuminate\\Support\\Carbon|null $actual_end_time\n * @property int|null $uploaded_by\n * @property \\Illuminate\\Support\\Carbon|null $deleted_at\n * @property \\Illuminate\\Support\\Carbon|null $created_at\n * @property \\Illuminate\\Support\\Carbon|null $updated_at\n * @property string|null $average_score\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant> $activeParticipants\n * @property-read int|null $active_participants_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Scorecard\\ActivityScorecardRuleTrigger> $activityScorecardRuleTriggers\n * @property-read int|null $activity_scorecard_rule_triggers_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Scorecard\\ActivityScorecardRule> $activityScorecardRules\n * @property-read int|null $activity_scorecard_rules_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, AvailabilityNotification> $availabilityNotifications\n * @property-read int|null $availability_notifications_count\n * @property-read \\Jiminny\\Models\\PlaybookCategory|null $category\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, CoachRequest> $coachRequests\n * @property-read int|null $coach_requests_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\CoachingFeedback> $coachingFeedbacks\n * @property-read int|null $coaching_feedbacks_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Message> $coachingMessages\n * @property-read int|null $coaching_messages_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Comment> $comments\n * @property-read int|null $comments_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Connection> $connections\n * @property-read int|null $connections_count\n * @property-read Configuration|null $crm\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, FieldData> $data\n * @property-read int|null $data_count\n * @property-read \\Jiminny\\Models\\Device|null $device\n * @property-read \\Kalnoy\\Nestedset\\Collection<int, \\Jiminny\\Models\\Playlist> $favoritePlaylists\n * @property-read int|null $favorite_playlists_count\n * @property-read \\Jiminny\\Models\\Participant|null $from\n * @property-read string|null $activity_title\n * @property-read mixed $comment_count\n * @property-read mixed $duration_for_humans\n * @property-read string $duration_for_humans_short\n * @property-read int $favorite_count\n * @property-read mixed $favorites_count\n * @property-read mixed $formatted_value\n * @property-read string $id_string\n * @property-read \\Jiminny\\Models\\Participant|null $organizer\n * @property-read mixed $play_count\n * @property-read int|null $plays_count\n * @property-read ?ProspectInterface $prospect\n * @property-read string|null $prospect_name\n * @property-read mixed $prospect_type\n * @property-read mixed $share_count\n * @property-read int|null $shares_count\n * @property-read int|null $tracks_with_telephony_count\n * @property-read int|null $visible_comments_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\CoachingFeedback> $latestCoachingFeedbacks\n * @property-read int|null $latest_coaching_feedbacks_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Log> $logs\n * @property-read int|null $logs_count\n * @property-read \\Jiminny\\Models\\Track|null $masterTrack\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Message> $messages\n * @property-read int|null $messages_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Moment> $moments\n * @property-read int|null $moments_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Note> $notes\n * @property-read int|null $notes_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant\\Share> $participantShares\n * @property-read int|null $participant_shares_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, ParticipantSpeech> $participantSpeeches\n * @property-read int|null $participant_speeches_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant\\ParticipantStats> $participantStats\n * @property-read int|null $participant_stats_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Participant> $participants\n * @property-read int|null $participants_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, PlaylistActivity> $playlistActivities\n * @property-read int|null $playlist_activities_count\n * @property-read \\Kalnoy\\Nestedset\\Collection<int, \\Jiminny\\Models\\Playlist> $playlists\n * @property-read int|null $playlists_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Play> $plays\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Question> $questions\n * @property-read int|null $questions_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Session> $sessions\n * @property-read int|null $sessions_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Share> $shares\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Snapshot> $snapshots\n * @property-read int|null $snapshots_count\n * @property-read Stats|null $stats\n * @property-read \\Jiminny\\Models\\Participant|null $to\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, TopicTrigger> $topicTriggers\n * @property-read int|null $topic_triggers_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Track> $tracks\n * @property-read int|null $tracks_count\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, \\Jiminny\\Models\\Track> $tracksWithTelephony\n * @property-read Transcription|null $transcription\n * @property-read \\Jiminny\\Models\\User $user\n * @property-read \\Illuminate\\Database\\Eloquent\\Collection<int, Comment> $visibleComments\n *\n * @method static \\Illuminate\\Database\\Eloquent\\Collection<int, static> all($columns = ['*'])\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity chunkByIdDesc($count, callable $callback, $column = null, $alias = null)\n * @method static \\Database\\Factories\\ActivityFactory factory(...$parameters)\n * @method static \\Illuminate\\Database\\Eloquent\\Collection<int, static> get($columns = ['*'])\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity heldBetween(\\Carbon\\Carbon $start, \\Carbon\\Carbon $end)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity idOrUuId($idOrUuid, bool $first = true)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity newModelQuery()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity newQuery()\n * @method static Builder|Activity onlyTrashed()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity query()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity scheduledBetween(\\Carbon\\Carbon $start, \\Carbon\\Carbon $end)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity inOpenDeals()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity notInOpenDeals()\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity forTeam(int $teamId)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity search(callable $searchQuery, $key = null, $sortByResults = true)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity uuid(string $uuid, bool $first = true)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereAccountId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereActualEndTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereActualStartTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereAverageScore($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCalendarEventId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereContactId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCreatedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCrmConfigurationId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereCrmProviderId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDeletedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDescription($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDeviceId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereDuration($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereFromParticipantId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereHasRecordingPrompt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsInstantInvite($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsInternal($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsLocked($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsPrivate($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsProcessed($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereIsRecording($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLanguage($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLeadId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLocation($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereLogReminderSentAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereOnAir($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereOpportunityId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereOrganizerNotifiedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity wherePlaybookCategoryId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity wherePosterPath($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereProvider($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereRecordingPreference($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereRecordingReasonCode($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereRecordingState($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereScheduledEndTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereScheduledStartTime($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereSource($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereExternalId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereStageId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereStatus($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereSummary($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereSummaryReminderSent($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereTelephonyProviderId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereTitle($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereToParticipantId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereTranscriptionId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereType($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUpdatedAt($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUploadedBy($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUserId($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereUuid($value)\n * @method static \\Jiminny\\Component\\Eloquent\\Builder|Activity whereValue($value)\n * @method static Builder|Activity withTrashed()\n * @method static Builder|Activity withoutTrashed()\n *\n * @mixin \\Eloquent\n */\nclass Activity extends Model implements\n ElasticSearch\\Contract\\Searchable,\n Workflow\\Workflow\\WorkflowAwareInterface,\n Models\\Contracts\\ActivityContract,\n Contracts\\Model\\ActivityInterface,\n UuidAwareInterface\n{\n use HasFactory;\n\n use Enums;\n use SoftDeletes;\n use RequiresUUID;\n use BitwiseFlagTrait;\n use ElasticSearch\\Model\\Searchable;\n use ActivityElasticSearchTrait;\n\n use Workflow\\Workflow\\WorkflowAware {\n transitionTo as traitTransitionTo;\n }\n\n public const int FLAG_RECORDING_REASON_DEFAULT = 0;\n\n // Recording Prompted but never started\n public const int FLAG_RECORDING_REASON_COMPLIANCE_PROMPT = 1;\n public const int FLAG_RECORDING_REASON_COMPLIANCE_RESUMED = 2;\n public const int FLAG_RECORDING_REASON_NO_AUDIO = 3;\n\n // Recording Disabled by Organization\n public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT = 4;\n\n // Recording was restricted to one-side recordings only\n public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT_ONE_SIDE = 8;\n\n // Recording was not started because it was internal and team setting disabled that.\n public const int FLAG_RECORDING_REASON_TEAM_INTERNAL_DISABLED = 16;\n\n // Recording was not started because it was internal and user setting disabled that.\n public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED = 32;\n\n // Recording was not started because user setting disabled automatic recording.\n public const int FLAG_RECORDING_REASON_USER_AUTOMATIC_DISABLED = 64;\n\n // Recording was not started because team setting disabled automatic recording.\n public const int FLAG_RECORDING_REASON_TEAM_AUTOMATIC_DISABLED = 128;\n\n // Recording was not started because user has overriden default.\n public const int FLAG_RECORDING_REASON_PREFERENCE_OVERRIDE = 256;\n\n // Recording was not started because they don't want internal, and this meeting was not scheduled/imported in time.\n public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED_UNSCHEDULED = 512;\n\n // Recording was not started because their team setting does excludes the meeting type.\n public const int FLAG_RECORDING_REASON_UNSUPPORTED_TYPE = 1024;\n\n // Recording was not started because the external provider disabled it (or recording is missing etc).\n public const int FLAG_RECORDING_REASON_EXTERNALLY_DISABLED = 2048;\n\n // Recording was stopped externally (\"exit-meeting\" Pusher event)\n public const int FLAG_RECORDING_REASON_STOPPED_EXTERNALLY = 384;\n\n // Recording couldn't be started due to Zoom hosting conflict error\n public const int FLAG_RECORDING_REASON_HOSTING_CONFLICT = 448;\n\n // meeting.failed event with reason code BOT_DENIED_FROM_LOBBY\n public const int FLAG_RECORDING_REASON_MEETING_BOT_DENIED_FROM_LOBBY = 4096;\n\n // meeting.failed event with reason code LOBBY_TIMEOUT\n public const int FLAG_RECORDING_REASON_MEETING_BOT_LOBBY_TIMEOUT = 8192;\n\n // meeting.failed event with reason code BOT_KICKED\n public const int FLAG_RECORDING_REASON_MEETING_BOT_KICKED = 16384;\n\n // meeting.failed event with reason code UNKNOWN\n public const int FLAG_RECORDING_REASON_MEETING_BOT_UNKNOWN = 32768;\n\n public const int FLAG_RECORDING_REASON_CONSENT_DENIED = 65536;\n\n // Invalid meeting (e.g. URL is invalid, or the meeting is not found)\n public const int FLAG_RECORDING_REASON_MEETING_BOT_INVALID = 131072;\n\n // The host stopped the recording.\n public const int FLAG_RECORDING_REASON_USER_STOPPED = 262144;\n\n // Recording was not started because an alternative vendor disabled it (or overrode it).\n public const int FLAG_RECORDING_REASON_VENDOR_OVERRIDE = 1048576;\n\n // Login required meeting.failed code\n public const int FLAG_RECORDING_REASON_LOGIN_REQUIRED = 524288;\n\n // Password for meeting was not provided - meeting.failed code\n public const int FLAG_RECORDING_REASON_MEETING_PASSWORD_NOT_PROVIDED = 2097152;\n\n // meeting.failed - when the meeting is locked\n public const int FLAG_RECORDING_REASON_MEETING_IS_LOCKED = 4194304;\n\n // max recording duration reached\n public const int FLAG_RECORDING_REASON_MAX_DURATION_REACHED = 8388608;\n\n // recording size is too small\n public const int FLAG_RECORDING_REASON_EMPTY_RECORDING = 16777216;\n\n // meeting.failed - when bot is redirected to sign in page multiple times\n public const int FLAG_RECORDING_REASON_MAX_RESTART_COUNT_IS_REACHED = 33554432;\n\n // meeting.failed event with reason code CONNECTION_LOST\n public const int FLAG_RECORDING_REASON_MEETING_BOT_CONNECTION_LOST = 67108864;\n\n // recording is corrupted.\n public const int FLAG_RECORDING_REASON_MEDIA_FILE_UNSUPPORTED_MIME_TYPE = 134217728;\n\n // meeting ended in lobby\n public const int FLAG_RECORDING_REASON_MEETING_ENDED_IN_LOBBY = 268435456;\n\n // meeting not started\n public const int FLAG_RECORDING_REASON_REASON_MEETING_NOT_STARTED = 536870912;\n\n // unfinished zoom custom disclaimer\n public const int FLAG_RECORDING_REASON_FEATURE_RULE_NOT_FOUND_ERROR = 1073741824;\n\n // recording download failed - server error\n public const int FLAG_RECORDING_REASON_SERVER_ERROR = 2147483648;\n\n // recording download failed - client code 404\n public const int FLAG_RECORDING_REASON_NOT_FOUND = 2147483649;\n\n // recording download failed - client code 401, 403\n public const int FLAG_RECORDING_REASON_ACCESS_DENIED = 2147483650;\n\n // recording download failed - client code 429\n public const int FLAG_RECORDING_REASON_TOO_MANY_REQUESTS = 2147483651;\n\n // recording download failed - unknown client error\n public const int FLAG_RECORDING_REASON_CLIENT_ERROR = 2147483652;\n\n // recording download failed - unknown error\n public const int FLAG_RECORDING_REASON_UNKNOWN_ERROR = 2147483653;\n\n // It has been setup ahead of time through calendar\n public const string STATUS_SCHEDULED = 'scheduled';\n\n // It is awaiting audio.\n public const string STATUS_PENDING = 'pending';\n\n // Participant(s) dialed in, awaiting organizer.\n public const string STATUS_RINGING = 'ringing';\n\n // Call is in progress.\n public const string STATUS_IN_PROGRESS = 'in-progress';\n\n // It has ended.\n public const string STATUS_COMPLETED = 'completed';\n\n // Cancelled prior to starting.\n public const string STATUS_CANCELLED = 'canceled';\n\n public const string STATUS_DUPLICATED = 'duplicated'; // duplicated conference\n\n public const string STATUS_STARTING_SOON = 'starting-soon';\n\n public const string STATUS_BOT_CREATE_SENT = 'bot-create-sent';\n\n public const string STATUS_BOT_INSTANCE_WORKER_ASSIGNED = 'worker-assigned';\n\n public const string STATUS_BOT_INSTANCE_STARTED = 'bot-started';\n\n // When bot instance is waiting in lobby\n public const string STATUS_BOT_INSTANCE_WAITING_LOBBY = 'bot-waiting';\n\n public const string STATUS_BUSY = 'busy';\n public const string STATUS_NO_ANSWER = 'no-answer';\n public const string STATUS_FAILED = 'failed'; // Used by SMS too\n\n // SMS related\n public const string STATUS_ACCEPTED = 'accepted';\n public const string STATUS_QUEUED = 'queued';\n public const string STATUS_SENDING = 'sending';\n public const string STATUS_SENT = 'sent';\n public const string STATUS_DELIVERED = 'delivered';\n public const string STATUS_UNDELIVERED = 'undelivered';\n public const string STATUS_RECEIVING = 'receiving';\n public const string STATUS_RECEIVED = 'received';\n public const string STATUS_RESENT = 'resent';\n\n public const array SMS_STATUSES = [\n Activity::STATUS_RECEIVED,\n Activity::STATUS_SENT,\n Activity::STATUS_DELIVERED,\n ];\n\n public const array SOFT_PHONE_CONFERENCE_STATUSES = [\n Activity::STATUS_IN_PROGRESS,\n Activity::STATUS_COMPLETED,\n ];\n\n // @todo refactor prefix from `TYPE_` to `CHANNEL_`\n public const string TYPE_SOFTPHONE = 'softphone';\n public const string TYPE_SOFTPHONE_INBOUND = 'softphone-inbound';\n public const string TYPE_CONFERENCE = 'conference';\n public const string TYPE_SMS_INBOUND = 'sms-inbound';\n public const string TYPE_SMS_OUTBOUND = 'sms-outbound';\n public const string TYPE_EMAIL_INBOUND = 'email-inbound';\n public const string TYPE_EMAIL_OUTBOUND = 'email-outbound';\n\n public const array CHANNELS = [\n self::TYPE_SOFTPHONE,\n self::TYPE_SOFTPHONE_INBOUND,\n self::TYPE_CONFERENCE,\n self::TYPE_SMS_INBOUND,\n self::TYPE_SMS_OUTBOUND,\n self::TYPE_EMAIL_INBOUND,\n self::TYPE_EMAIL_OUTBOUND,\n ];\n\n public const array PLAYABLE_CHANNELS = [\n self::TYPE_SOFTPHONE,\n self::TYPE_SOFTPHONE_INBOUND,\n self::TYPE_CONFERENCE,\n ];\n\n // Recording States\n public const string RECORDING_OFF = 'off'; // Default state\n public const string RECORDING_IN_PROGRESS = 'in-progress';\n public const string RECORDING_PAUSED = 'paused';\n public const string RECORDING_STOPPED = 'stopped'; // To never be resumed.\n public const string RECORDING_RECORDED = 'recorded'; // At least some portion of it was recorded.\n public const string RECORDING_FAILED = 'failed'; // Recording was attempted but failed for some reason.\n\n // Live Stream States\n public const int ON_AIR_DEFAULT = 0;\n public const int ON_AIR_READY = 1;\n public const int ON_AIR_PREPARING = 2;\n public const int ON_AIR_STREAMING = 3;\n public const int ON_AIR_FINISHED = 4;\n public const int ON_AIR_NOT_STREAMED = 5;\n public const int ON_AIR_ERROR = -1;\n\n public const string SOURCE_GONG = 'gong';\n public const string SOURCE_CHORUS = 'chorus';\n public const string SOURCE_OUTLOOK = 'outlook';\n public const string SOURCE_GOOGLE = 'google';\n\n // Activity Providers\n public const string PROVIDER_TWILIO = 'twilio'; // XXX: This is run via the Jiminny Provider.\n public const string PROVIDER_OUTREACH = 'outreach';\n public const string PROVIDER_ZOOM_BOT = 'zoom-bot';\n public const string PROVIDER_SALESLOFT = 'salesloft';\n public const string PROVIDER_GOOGLE = 'google';\n public const string PROVIDER_AIRCALL = 'aircall';\n public const string PROVIDER_JUSTCALL = 'justcall';\n public const string PROVIDER_GOOGLE_MEET = 'google-meet';\n public const string PROVIDER_GONG = 'gong';\n public const string PROVIDER_HUBSPOT = 'hubspot';\n public const string PROVIDER_CLOSE = 'close';\n public const string PROVIDER_TEAMS = 'ms-teams';\n public const string PROVIDER_SALESFORCE = 'salesforce';\n public const string PROVIDER_GROOVE = 'groove';\n public const string PROVIDER_XANT = 'xant';\n public const string PROVIDER_OFFICE = 'office';\n public const string PROVIDER_NATTERBOX = 'natterbox';\n public const string PROVIDER_RINGCENTRAL = 'ringcentral';\n public const string PROVIDER_RINGCENTRAL_VIDEO = 'ringcentral-video';\n public const string PROVIDER_GOTOMEETING = 'go-to-meeting';\n public const string PROVIDER_DEMODESK = 'demo-desk';\n public const string PROVIDER_DIALPAD = 'dialpad';\n public const string PROVIDER_ZOOM_PHONE = 'zoom-phone';\n public const string PROVIDER_CLOUDCALL = 'cloudcall';\n public const string PROVIDER_CLOUDCALL_US = 'cloudcall-us';\n public const string PROVIDER_EIGHT_BY_EIGHT = 'eight-by-eight'; // \"8x8\" UK\n public const string PROVIDER_EIGHT_BY_EIGHT_CA = 'eight-by-eight-ca'; // \"8x8\" Canada\n public const string PROVIDER_EIGHT_BY_EIGHT_AP = 'eight-by-eight-ap'; // \"8x8\" Australia\n public const string PROVIDER_EIGHT_BY_EIGHT_US_EAST = 'eight-by-eight-use'; // \"8x8\" US East\n public const string PROVIDER_EIGHT_BY_EIGHT_US_WEST = 'eight-by-eight-usw'; // \"8x8\" US West\n public const string PROVIDER_CONNECT_AND_SELL = 'connect-and-sell';\n public const string PROVIDER_CLOUD_TALK = 'cloud-talk';\n public const string PROVIDER_AMAZON_CONNECT = 'amazon-connect';\n public const string PROVIDER_VONAGE = 'vonage';\n public const string PROVIDER_MIGRATOR = 'migrator';\n public const string PROVIDER_UPLOADER = 'uploader';\n public const string PROVIDER_TALKDESK = 'talkdesk';\n public const string PROVIDER_TWILIO_FLEX = 'twilio-flex';\n public const string PROVIDER_TWILIO_FLEX_DIRECT = 'twilio-flex-direct';\n public const string PROVIDER_TWILIO_VIDEO = 'twilio-video';\n public const string PROVIDER_AVAYA = 'avaya';\n public const string PROVIDER_TELUS = 'telus';\n public const string PROVIDER_FIVE_NINE = 'five-nine';\n public const string PROVIDER_APOLLO = 'apollo';\n public const string PROVIDER_ORUM = 'orum';\n public const string PROVIDER_BLOOBIRDS = 'bloobirds';\n\n /**\n * @const API_PROVIDERS\n * A list of integrations that import calls via API instead of webhooks\n */\n public const array API_PROVIDERS = [\n self::PROVIDER_OUTREACH,\n self::PROVIDER_SALESLOFT,\n self::PROVIDER_HUBSPOT,\n self::PROVIDER_GROOVE,\n self::PROVIDER_XANT,\n self::PROVIDER_NATTERBOX,\n self::PROVIDER_CLOUDCALL,\n self::PROVIDER_CLOUDCALL_US,\n self::PROVIDER_EIGHT_BY_EIGHT,\n self::PROVIDER_EIGHT_BY_EIGHT_CA,\n self::PROVIDER_EIGHT_BY_EIGHT_AP,\n self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,\n self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,\n self::PROVIDER_CONNECT_AND_SELL,\n self::PROVIDER_CLOUD_TALK,\n self::PROVIDER_AMAZON_CONNECT,\n self::PROVIDER_VONAGE,\n self::PROVIDER_TALKDESK,\n self::PROVIDER_TWILIO_VIDEO,\n self::PROVIDER_TWILIO_FLEX,\n self::PROVIDER_TWILIO_FLEX_DIRECT,\n self::PROVIDER_FIVE_NINE,\n self::PROVIDER_APOLLO,\n self::PROVIDER_ORUM,\n self::PROVIDER_BLOOBIRDS,\n self::PROVIDER_RINGCENTRAL,\n self::PROVIDER_AVAYA,\n self::PROVIDER_TELUS,\n ];\n\n public const array FINITE_STATES = [\n self::TYPE_SOFTPHONE => [\n self::STATUS_COMPLETED,\n self::STATUS_FAILED,\n self::STATUS_NO_ANSWER,\n self::STATUS_BUSY,\n ],\n self::TYPE_SOFTPHONE_INBOUND => [\n self::STATUS_COMPLETED,\n self::STATUS_FAILED,\n self::STATUS_NO_ANSWER,\n self::STATUS_BUSY,\n ],\n self::TYPE_CONFERENCE => self::FINITE_STATES_CONFERENCE,\n ];\n\n public const array FINITE_STATES_CONFERENCE = [\n self::STATUS_COMPLETED,\n self::STATUS_FAILED,\n self::STATUS_CANCELLED,\n ];\n\n public const array MEETING_BOT_JOIN_ATTEMPTED = [\n self::STATUS_BOT_INSTANCE_WAITING_LOBBY,\n self::STATUS_BOT_INSTANCE_STARTED,\n ];\n\n public static array $enumStatuses = [\n self::STATUS_SCHEDULED,\n self::STATUS_PENDING,\n self::STATUS_RINGING,\n self::STATUS_IN_PROGRESS,\n self::STATUS_COMPLETED,\n self::STATUS_CANCELLED,\n self::STATUS_BUSY,\n self::STATUS_NO_ANSWER,\n self::STATUS_FAILED,\n self::STATUS_ACCEPTED,\n self::STATUS_QUEUED,\n self::STATUS_SENDING,\n self::STATUS_SENT,\n self::STATUS_RESENT,\n self::STATUS_DELIVERED,\n self::STATUS_UNDELIVERED,\n self::STATUS_RECEIVING,\n self::STATUS_RECEIVED,\n self::STATUS_BOT_INSTANCE_WAITING_LOBBY,\n self::STATUS_STARTING_SOON,\n self::STATUS_BOT_INSTANCE_WORKER_ASSIGNED,\n self::STATUS_BOT_INSTANCE_STARTED,\n self::STATUS_DUPLICATED,\n ];\n\n public static array $enumProviders = [\n self::PROVIDER_TWILIO,\n self::PROVIDER_OUTREACH,\n self::PROVIDER_ZOOM_BOT,\n self::PROVIDER_SALESLOFT,\n self::PROVIDER_AIRCALL,\n self::PROVIDER_JUSTCALL,\n self::PROVIDER_GOOGLE_MEET,\n self::PROVIDER_GONG,\n self::PROVIDER_HUBSPOT,\n self::PROVIDER_CLOSE,\n self::PROVIDER_TEAMS,\n self::PROVIDER_SALESFORCE,\n self::PROVIDER_GROOVE,\n self::PROVIDER_XANT,\n self::PROVIDER_GOOGLE,\n self::PROVIDER_OFFICE,\n self::PROVIDER_NATTERBOX,\n self::PROVIDER_RINGCENTRAL,\n self::PROVIDER_RINGCENTRAL_VIDEO,\n self::PROVIDER_GOTOMEETING,\n self::PROVIDER_DEMODESK,\n self::PROVIDER_DIALPAD,\n self::PROVIDER_ZOOM_PHONE,\n self::PROVIDER_CLOUDCALL,\n self::PROVIDER_CLOUDCALL_US,\n self::PROVIDER_EIGHT_BY_EIGHT,\n self::PROVIDER_EIGHT_BY_EIGHT_CA,\n self::PROVIDER_EIGHT_BY_EIGHT_AP,\n self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,\n self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,\n self::PROVIDER_CONNECT_AND_SELL,\n self::PROVIDER_CLOUD_TALK,\n self::PROVIDER_AMAZON_CONNECT,\n self::PROVIDER_VONAGE,\n self::PROVIDER_TALKDESK,\n self::PROVIDER_TWILIO_FLEX,\n self::PROVIDER_TWILIO_FLEX_DIRECT,\n self::PROVIDER_TWILIO_VIDEO,\n self::PROVIDER_AVAYA,\n self::PROVIDER_TELUS,\n self::PROVIDER_FIVE_NINE,\n self::PROVIDER_APOLLO,\n self::PROVIDER_ORUM,\n self::PROVIDER_BLOOBIRDS,\n ];\n\n public static $enumRecordingStates = [\n self::RECORDING_OFF, // Default state\n self::RECORDING_IN_PROGRESS,\n self::RECORDING_PAUSED,\n self::RECORDING_STOPPED,\n self::RECORDING_RECORDED,\n self::RECORDING_FAILED,\n ];\n\n // @Important:\n // This collection is not used anywhere, and is fully duplicated by the Channels const.\n // Validate if it is referred somehow via the enum trait, and if not, remove it entirely.\n // An even better strategy will be to move all those constants to a dedicated class\n protected array $enumTypes = [\n self::TYPE_SOFTPHONE,\n self::TYPE_SOFTPHONE_INBOUND,\n self::TYPE_CONFERENCE,\n self::TYPE_SMS_INBOUND,\n self::TYPE_SMS_OUTBOUND,\n self::TYPE_EMAIL_INBOUND,\n self::TYPE_EMAIL_OUTBOUND,\n ];\n\n protected static $enumFailedStatuses = [\n self::STATUS_NO_ANSWER,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n self::STATUS_CANCELLED,\n ];\n\n protected $table = 'activities';\n\n protected $fillable = [\n // Type of activity.\n 'type', // @todo refactor to `channel`\n // The activity type.\n 'playbook_category_id',\n // User who hosts the activity.\n 'user_id',\n // Related Lead record (if applicable)\n 'lead_id',\n // Related Account record (if applicable)\n 'account_id',\n // Related Contact record (if applicable)\n 'contact_id',\n // Related Opportunity record (if applicable)\n 'opportunity_id',\n // Stage of activity.\n 'stage_id',\n // Value of opportunity.\n 'value',\n // If the activity relates to a CRM task.\n 'crm_provider_id',\n // If the activity was created through an external device.\n 'device_id',\n // the activity's language code\n 'language',\n // transcription id\n 'transcription_id',\n // Duration of the call, with microseconds precision.\n 'duration',\n // One of enumStatuses above.\n 'status',\n // Have we reminded them to log the call?\n 'log_reminder_sent_at',\n // If activity is private or inter-org, flagged here.\n 'is_internal',\n // Managers and above can mark a call as private, to exclude it from other team members\n 'is_private',\n 'is_processed',\n // Boolean for this activity being instant invite handled.\n 'is_instant_invite',\n // If activity is in recording state, flagged here.\n 'recording_state',\n // If activity recording is overidden from default.\n 'recording_preference',\n // if recording did (not) happen, why that is\n 'recording_reason_code',\n // Average score, updated during\n 'average_score',\n // Summary that the organizer has taken after the call.\n 'summary',\n // Subject of the activity, usually taken from calendar event.\n 'title',\n // Description of the activity, usually taken from calendar event.\n 'description',\n // Start time, usually taken from calendar event.\n 'scheduled_start_time',\n // End time, usually taken from calendar event.\n 'scheduled_end_time',\n // When the call actually started.\n 'actual_start_time',\n // When the call actually ended.\n 'actual_end_time',\n // SMS: Message reference\n 'telephony_provider_id',\n // SMS: Participant who sent message\n 'from_participant_id',\n // SMS: Participant who should receive the message\n 'to_participant_id',\n // When an external guest joins an organizers meeting room and the organizer is not present,\n // send them an SMS notification that someone has joined.\n 'organizer_notified_at',\n // where was the activity imported from\n 'source',\n // The id in the source system (e.g. the bot id in Recall.ai)\n 'external_id',\n // The provider, by default it is twilio.\n 'provider',\n // Meeting location url\n 'location',\n // The snapshot for displaying a poster image.\n 'poster_path',\n 'crm_configuration_id',\n // If there is an automated message that the conversation is being recorded\n 'has_recording_prompt',\n // If the activity is being live-streamed\n 'on_air',\n 'calendar_event_id',\n ];\n\n protected $appends = [\n 'id_string',\n 'organizer',\n ];\n\n protected $hidden = [\n 'uuid',\n ];\n\n protected $visible = [\n 'id_string',\n 'type',\n 'duration',\n 'average_score',\n 'status',\n 'log_reminder_sent_at',\n 'title',\n 'description',\n 'is_internal',\n 'scheduled_start_time',\n 'scheduled_end_time',\n 'actual_start_time',\n 'actual_end_time',\n 'user',\n 'category',\n 'account',\n 'contact',\n 'opportunity',\n 'lead',\n 'stage',\n 'stats',\n 'participants',\n 'playlists',\n 'tracks',\n 'comments',\n 'plays',\n 'coachingFeedbacks',\n 'shares',\n 'favorites',\n 'language',\n 'transcription',\n 'is_private',\n 'is_instant_invite',\n 'on_air',\n 'calendar_event_id',\n ];\n\n protected function casts(): array\n {\n return [\n 'scheduled_start_time' => 'datetime',\n 'scheduled_end_time' => 'datetime',\n 'actual_start_time' => 'datetime',\n 'actual_end_time' => 'datetime',\n 'organizer_notified_at' => 'datetime',\n 'log_reminder_sent_at' => 'datetime',\n 'is_internal' => 'boolean',\n 'duration' => 'integer',\n 'average_score' => 'decimal:2',\n 'is_private' => 'boolean',\n 'is_processed' => 'boolean',\n 'is_instant_invite' => 'boolean',\n 'value' => 'decimal:2',\n 'recording_preference' => 'boolean',\n 'recording_reason_code' => 'integer',\n 'has_recording_prompt' => 'boolean',\n 'on_air' => 'integer',\n ];\n }\n\n protected static function boot()\n {\n parent::boot();\n\n static::updated(static function (Activity $activity) {\n // If activity is about to start (pending, ringing, in-progress) or event is scheduled in less than 1 week\n if (in_array($activity->status, [Activity::STATUS_PENDING, Activity::STATUS_RINGING, Activity::STATUS_IN_PROGRESS], true) ||\n ($activity->scheduled_start_time && (int) $activity->scheduled_start_time->diffInWeeks(new Carbon(), true) < 1)) {\n if ($activity->isDirty('status')) {\n event(new StatusUpdated($activity));\n }\n\n if ($activity->isDirty('stage_id')) {\n event(new StageUpdated($activity));\n }\n\n if ($activity->isDirty(['lead_id', 'account_id', 'contact_id'])) {\n event(new ProspectUpdated($activity));\n }\n\n if ($activity->isDirty('opportunity_id')) {\n event(new ActivityUpdated($activity, 'activity.opportunity-updated', Auth::user()));\n }\n\n if ($activity->isDirty('title')) {\n event(new TitleUpdated($activity));\n }\n }\n\n if ($activity->isDirty('playbook_category_id')) {\n event(new ActivityTypeUpdated($activity));\n }\n });\n\n static::deleted(static function (Activity $activity) {\n // Hard delete associated playlistActivities\n $activity->playlistActivities()->delete();\n });\n }\n\n public function getOrganizerAttribute(): ?Participant\n {\n $participant = $this->participants()->where('user_id', $this->user_id)->first();\n\n if (! $participant instanceof Participant && $participant !== null) {\n throw new RuntimeException(sprintf('$participant must be an instance of \"%s\" or null', Participant::class));\n }\n\n return $participant;\n }\n\n public function getFormattedValueAttribute()\n {\n $currencyCode = 'USD';\n if ($this->opportunity) {\n $currencyCode = $this->opportunity->getCurrencyCode();\n }\n\n $formatter = new CurrencyFormatter();\n $formatter->setTextAttribute(NumberFormatter::CURRENCY_CODE, $currencyCode);\n $formatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 0);\n\n return $formatter->format($this->value, $currencyCode);\n }\n\n public function getProspectNameAttribute(): ?string\n {\n $prospectName = null;\n\n if ($this->lead_id) {\n $prospectName = $this->lead->name;\n } elseif ($this->contact_id) {\n $prospectName = $this->contact->name;\n } elseif ($this->account_id) {\n $prospectName = $this->account->name;\n }\n\n return $prospectName;\n }\n\n public function getProspectName(): ?string\n {\n /** @var string|null */\n return $this->getAttribute('prospect_name');\n }\n\n /**\n * Get activity title depending on prospect or title\n */\n public function getActivityTitleAttribute(): ?string\n {\n $activityTitle = null;\n if ($this->prospect && $this->prospect->getName()) {\n if ($this->account_id) {\n $activityTitle = $this->account->name;\n } elseif ($this->lead_id) {\n $activityTitle = $this->lead->company;\n } elseif ($this->contact_id) {\n $activityTitle = $this->contact->account ? $this->contact->account->name : $this->contact->name;\n }\n } elseif ($this->title) {\n $activityTitle = $this->title;\n }\n\n return $activityTitle;\n }\n\n public function wasRecentlyCreated(): bool\n {\n return $this->wasRecentlyCreated;\n }\n\n public function getProspectTypeAttribute()\n {\n $prospectType = null;\n\n if ($this->lead_id) {\n $prospectType = 'Lead';\n } elseif ($this->contact_id) {\n $prospectType = 'Contact';\n } elseif ($this->account_id) {\n $prospectType = 'Account';\n }\n\n return $prospectType;\n }\n\n /**\n * Return the best match for prospect. Results are in the following order of priority:\n * 1. Lead\n * 2. Contact\n * 3. Account\n * 4. NULL\n */\n public function getProspectAttribute(): ?ProspectInterface\n {\n if ($this->hasLead()) {\n return $this->getLead();\n }\n\n if ($this->hasContact()) {\n return $this->getContact();\n }\n\n if ($this->hasAccount()) {\n return $this->getAccount();\n }\n\n return null;\n }\n\n public function getTitleAttribute($value): ?string\n {\n return \\getActivityTitleAttribute(\n $this->user->name,\n $this->getType(),\n $value,\n $this->prospect->name ?? null,\n $this->from->national_phone_number ?? null\n );\n }\n\n public function getTitle(): ?string\n {\n return $this->getAttribute('title');\n }\n\n public function getSummary(): ?string\n {\n return $this->getAttribute('summary');\n }\n\n public function isInternal(): bool\n {\n return $this->getAttribute('is_internal');\n }\n\n public function getIsPrivate(): bool\n {\n return $this->getAttribute('is_private');\n }\n\n public function getDescription(): ?string\n {\n return $this->getAttribute('description');\n }\n\n public function hasTitle(): bool\n {\n return $this->getOriginal('title') !== null;\n }\n\n public function getPlayCountAttribute()\n {\n return $this->getPlaysCountAttribute();\n }\n\n public function getPlaysCountAttribute()\n {\n if (! isset($this->attributes['plays_count'])) {\n $this->loadCount('plays');\n }\n\n return $this->attributes['plays_count'];\n }\n\n public function getCommentCountAttribute()\n {\n return $this->getCommentsCountAttribute();\n }\n\n public function getCommentsCountAttribute()\n {\n if (! isset($this->attributes['comments_count'])) {\n $this->loadCount('comments');\n }\n\n return $this->attributes['comments_count'];\n }\n\n public function getVisibleCommentsCountAttribute()\n {\n if (! isset($this->attributes['visible_comments_count'])) {\n $activityCommentsService = app(ActivityCommentService::class);\n $user = Auth::user() instanceof User ? Auth::user() : null;\n $this->attributes['visible_comments_count'] = $activityCommentsService\n ->getVisibleCommentsCount($this, $user);\n }\n\n return $this->attributes['visible_comments_count'];\n }\n\n public function getShareCountAttribute()\n {\n return $this->getSharesCountAttribute();\n }\n\n public function getSharesCountAttribute()\n {\n if (! isset($this->attributes['shares_count'])) {\n $this->loadCount('shares');\n }\n\n return $this->attributes['shares_count'];\n }\n\n\n /**\n * Get the count of favorites playlists this activity appears in\n */\n public function getFavoriteCountAttribute(): int\n {\n return $this->getFavoritesCountAttribute();\n }\n\n public function getFavoritesCountAttribute()\n {\n if (! isset($this->attributes['favorites_count'])) {\n $this->loadCount('favorites');\n }\n\n return $this->attributes['favorites_count'];\n }\n\n public function getActiveParticipantsCountAttribute()\n {\n if (! isset($this->attributes['active_participants_count'])) {\n $this->loadCount('activeParticipants');\n }\n\n return $this->attributes['active_participants_count'];\n }\n\n public function getTracksWithTelephonyCountAttribute()\n {\n if (! isset($this->attributes['tracks_with_telephony_count'])) {\n $this->loadCount('tracksWithTelephony');\n }\n\n return $this->attributes['tracks_with_telephony_count'];\n }\n\n /**\n * @TEMP\n * $this->loadCount('tracksWithTelephony') throws null pointer exception\n */\n public function countTracksWithTelephony(): int\n {\n return $this->tracks()->whereNotNull('telephony_provider_id')->count();\n }\n\n public function getDuration(): float\n {\n return $this->getAttribute('duration');\n }\n\n public function getDurationForHumansAttribute()\n {\n return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true);\n }\n\n public function getDurationForHumansShortAttribute(): string\n {\n return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true, true);\n }\n\n public function hasRecordingPreference(): bool\n {\n return $this->getAttribute('recording_preference') !== null;\n }\n\n public function getRecordingPreference()\n {\n return $this->getAttribute('recording_preference');\n }\n\n /** @return BelongsTo<User, self> */\n public function user(): BelongsTo\n {\n return $this->belongsTo(User::class)->with('group');\n }\n\n public function device()\n {\n return $this->belongsTo(Device::class);\n }\n\n public function category()\n {\n return $this->belongsTo(PlaybookCategory::class, 'playbook_category_id');\n }\n\n public function getCategory(): ?PlaybookCategory\n {\n return $this->getAttribute('category');\n }\n\n public function getPlaybookCategoryId(): ?int\n {\n return $this->getAttribute('playbook_category_id');\n }\n\n public function hasStats(): bool\n {\n return $this->getAttribute('stats') !== null;\n }\n\n public function getStats(): ?Stats\n {\n return $this->getAttribute('stats');\n }\n\n public function stats(): HasOne\n {\n return $this->hasOne(Stats::class);\n }\n\n public function participantStats(): Eloquent\\Relations\\HasManyThrough\n {\n return $this->hasManyThrough(\n Models\\Participant\\ParticipantStats::class,\n Participant::class,\n 'activity_id',\n 'participant_id'\n );\n }\n\n public function getParticipantStats(): Eloquent\\Collection\n {\n return $this->getAttribute('participantStats');\n }\n\n public function account()\n {\n return $this->belongsTo(Account::class);\n }\n\n public function contact()\n {\n return $this->belongsTo(Contact::class)->with(['account']);\n }\n\n public function lead()\n {\n return $this->belongsTo(Lead::class)->with(['stage', 'recordType']);\n }\n\n /**\n * @return BelongsTo<Opportunity, self>\n */\n public function opportunity(): BelongsTo\n {\n /** @var BelongsTo<Opportunity, self> */\n return $this->belongsTo(Opportunity::class);\n }\n\n public function stage()\n {\n return $this->belongsTo(Stage::class);\n }\n\n /**\n * @return HasMany<Session>\n */\n public function sessions(): HasMany\n {\n return $this->hasMany(Session::class);\n }\n\n /**\n * @return HasMany|ParticipantSpeech[]|Eloquent\\Collection\n */\n public function participantSpeeches()\n {\n return $this->hasMany(ParticipantSpeech::class);\n }\n\n public function getParticipantSpeeches(): Eloquent\\Collection\n {\n return $this->getAttribute('participantSpeeches');\n }\n\n /**\n * @return HasMany|Log[]|Eloquent\\Collection\n */\n public function logs()\n {\n return $this->hasMany(Log::class);\n }\n\n /**\n * @return HasMany|Moment[]|Eloquent\\Collection\n */\n public function moments()\n {\n return $this->hasMany(Moment::class);\n }\n\n /**\n * @return HasMany|Note[]|Eloquent\\Collection\n */\n public function notes()\n {\n return $this->hasMany(Note::class);\n }\n\n /**\n * @return Eloquent\\Collection|Note[]\n */\n public function getNotes(): Eloquent\\Collection\n {\n return $this->getAttribute('notes');\n }\n\n /**\n * @return HasMany|Message[]|Eloquent\\Collection\n */\n public function messages()\n {\n return $this->hasMany(Message::class);\n }\n\n public function coachingMessages(): HasMany\n {\n return $this->hasMany(Message::class)\n ->where('is_private', 1);\n }\n\n public function getCoachingMessages(): Eloquent\\Collection\n {\n return $this->getAttribute('coachingMessages');\n }\n\n public function participants(): HasMany\n {\n return $this->hasMany(Participant::class);\n }\n\n public function getSnapshots(): Eloquent\\Collection\n {\n return $this->getAttribute('snapshots');\n }\n\n /** @return HasMany<Track> */\n public function tracks(): HasMany\n {\n return $this->hasMany(Track::class);\n }\n\n public function tracksWithTelephony(): HasMany\n {\n return $this->hasMany(Track::class)->whereNotNull('telephony_provider_id');\n }\n\n public function getTracksWithTelephony(): Eloquent\\Collection\n {\n return $this->getAttribute('tracksWithTelephony');\n }\n\n /** @return Collection|Track[] */\n public function getTracks(): Eloquent\\Collection\n {\n return $this->getAttribute('tracks');\n }\n\n public function masterTrack(): HasOne\n {\n return $this->hasOne(Track::class)->where('is_master', 1)\n ->whereIn('format', [Track::FORMAT_WAV, Track::FORMAT_M3U8])\n ->latest();\n }\n\n public function getMasterTrack(): ?Track\n {\n /** @var Track|null */\n return $this->getAttribute('masterTrack');\n }\n\n public function transcription(): Eloquent\\Relations\\BelongsTo\n {\n return $this->belongsTo(Transcription::class, 'transcription_id');\n }\n\n public function findTranscriptionPromptSummaries(): Collection\n {\n $transcriptionId = $this->getTranscriptionId();\n if (is_null($transcriptionId)) {\n return new Collection();\n }\n\n return Models\\AiPrompt::query()\n ->where('transcription_id', $transcriptionId)\n ->get();\n }\n\n public function getTranscription(): Transcription\n {\n return $this->getAttribute('transcription');\n }\n\n public function hasTranscription(): bool\n {\n return $this->getAttribute('transcription') !== null;\n }\n\n public function setTranscriptionId(int $transcriptionId): Activity\n {\n $this->setAttribute('transcription_id', $transcriptionId);\n\n return $this;\n }\n\n public function unsetTranscriptionId(): self\n {\n $this->setAttribute('transcription_id', null);\n\n return $this;\n }\n\n public function getTranscriptionId(): ?int\n {\n return $this->getAttribute('transcription_id');\n }\n\n /** @deprecated */\n public function hasTranscriptionId(): bool\n {\n return $this->getAttribute('transcription_id') !== null;\n }\n\n public function coachRequests()\n {\n return $this->hasMany(CoachRequest::class);\n }\n\n public function availabilityNotifications()\n {\n return $this->hasMany(AvailabilityNotification::class);\n }\n\n public function processingStates()\n {\n return $this->hasMany(Models\\Activity\\ActivityProcessingState::class);\n }\n\n public function uploadSettings()\n {\n return $this->hasMany(ActivityUploadSetting::class);\n }\n\n public function comments()\n {\n return $this->hasMany(Comment::class);\n }\n\n public function getComments(): Eloquent\\Collection\n {\n return $this->getAttribute('comments');\n }\n\n public function visibleComments()\n {\n $rel = $this->hasMany(Comment::class);\n // Doesn't have auth()->user() in some tests, breaks the build\n if ($user = auth()->user()) {\n return $rel->visibleThreads($user->id);\n }\n\n return $rel;\n }\n\n public function snapshots(): HasMany\n {\n return $this->hasMany(Snapshot::class);\n }\n\n public function calendarEvent()\n {\n return $this->belongsTo(CalendarEvent::class);\n }\n\n public function getCalendarEvent(): ?CalendarEvent\n {\n return $this->getAttribute('calendarEvent');\n }\n\n public function latestCoachingFeedbacks(): HasMany\n {\n return $this->hasMany(CoachingFeedback::class)->latest();\n }\n\n public function playlists(): BelongsToMany\n {\n return $this->belongsToMany(Playlist::class, 'playlist_activities')\n ->withPivot('id', 'uuid', 'user_id', 'start_time', 'end_time')\n ->using(PlaylistActivity::class)\n ->withTimestamps();\n }\n\n public function coachingFeedbacks(): HasMany\n {\n return $this->hasMany(CoachingFeedback::class);\n }\n\n /**\n * @return Eloquent\\Collection|CoachingFeedback[]\n */\n public function getCoachingFeedback(): Eloquent\\Collection\n {\n return $this->getAttribute('coachingFeedbacks');\n }\n\n /** @return Eloquent\\Collection<int, PlaylistActivity> */\n public function favoritedBy(User $user): Eloquent\\Collection\n {\n return $this->favorites()->where('user_id', $user->getId())->get();\n }\n\n /**\n * Checks whether consumer has added this activity to their favorites playlist\n * In addition a default playlist gets created if not already present\n */\n public function wasFavoritedBy(User $user): bool\n {\n $playlist = $user->favoritePlaylist();\n\n return $playlist\n ->activities()\n ->where('activity_id', '=', $this->getId())\n ->exists();\n }\n\n /**\n * @return HasMany<PlaylistActivity>\n */\n public function playlistActivities(): HasMany\n {\n return $this->hasMany(PlaylistActivity::class);\n }\n\n /**\n * @return HasManyThrough<Playlist>\n */\n public function favoritePlaylists(): HasManyThrough\n {\n return $this->hasManyThrough(\n Playlist::class,\n PlaylistActivity::class,\n 'activity_id',\n 'id',\n 'id',\n 'playlist_id'\n )->where('is_default', 1);\n }\n\n /**\n * @return Eloquent\\Collection<int, Playlist>\n */\n public function getFavoritePlaylists(): Eloquent\\Collection\n {\n return $this->getAttribute('favoritePlaylists');\n }\n\n /**\n * Get activities from the default/favorite playlist\n *\n * @return Eloquent\\Builder|static\n */\n public function favorites()\n {\n return $this->playlistActivities()->whereHas('playlist', function ($query) {\n $query->where('is_default', 1);\n });\n }\n\n /**\n * @return Model|SubscriptionSet|null|object\n */\n public function subscribedBy(User $user)\n {\n if ($this->prospect === null) {\n return null;\n }\n\n return SubscriptionSet::select('activity_subscription_sets.*')\n ->where('user_id', $user->id)\n ->join('activity_subscriptions', function ($join) {\n $join\n ->on('subscription_set_id', '=', 'activity_subscription_sets.id');\n\n if ($this->account_id) {\n if ($this->opportunity_id) {\n $join\n ->where('followable_type', 'opportunity')\n ->where('followable_id', $this->opportunity_id);\n } else {\n $join\n ->where('followable_type', 'account')\n ->where('followable_id', $this->account_id);\n }\n } elseif ($this->contact_id) {\n $join\n ->where('followable_type', 'contact')\n ->where('followable_id', $this->contact_id);\n } elseif ($this->lead_id) {\n $join\n ->where('followable_type', 'lead')\n ->where('followable_id', $this->lead_id);\n }\n })\n ->first();\n }\n\n /**\n * @return array|Eloquent\\Builder[]|Eloquent\\Collection|SubscriptionSet[]\n */\n public function subscribers()\n {\n if ($this->prospect === null) {\n return [];\n }\n\n return SubscriptionSet::with(['subscriptions', 'user'])\n ->whereHas('subscriptions', function ($query) {\n if ($this->account_id) {\n if ($this->opportunity_id) {\n $query\n ->where('followable_type', 'opportunity')\n ->where('followable_id', $this->opportunity_id);\n } else {\n $query\n ->where('followable_type', 'account')\n ->where('followable_id', $this->account_id);\n }\n } elseif ($this->contact_id) {\n $query\n ->where('followable_type', 'contact')\n ->where('followable_id', $this->contact_id);\n } elseif ($this->lead_id) {\n $query\n ->where('followable_type', 'lead')\n ->where('followable_id', $this->lead_id);\n } else {\n // Nothing to join on?\n // refactor - use Jiminny specific exception\n throw new InvalidArgumentException('Cannot join on a specific customer filter.');\n }\n })\n ->whereHas('user', function ($query) {\n $query\n ->where('team_id', $this->user->team_id)\n ->where('status', User::STATUS_ACTIVE);\n })\n ->get();\n }\n\n /**\n * @return HasMany|Builder|Eloquent\\Collection|Play[]\n */\n public function plays()\n {\n return $this->hasMany(Play::class);\n }\n\n public function getPlays(): Eloquent\\Collection\n {\n return $this->getAttribute('plays');\n }\n\n public function playsBy(User $user)\n {\n /** @var Builder $builder */\n $builder = $this->plays()->where('user_id', $user->id);\n\n return $builder->get();\n }\n\n /**\n * Check if activity was played by a user\n */\n public function wasPlayedBy(User $user): bool\n {\n return $this->plays()->where('user_id', $user->id)->exists();\n }\n\n public function shares()\n {\n return $this->hasMany(Share::class);\n }\n\n /** @return BelongsTo<Participant, self> */\n public function from(): BelongsTo\n {\n return $this->belongsTo(Participant::class, 'from_participant_id');\n }\n\n /** @return BelongsTo<Participant, self> */\n public function to(): BelongsTo\n {\n return $this->belongsTo(Participant::class, 'to_participant_id');\n }\n\n /**\n * Get all of the connections through the participants.\n */\n public function connections()\n {\n return $this->hasManyThrough(\n Connection::class,\n Participant::class,\n 'activity_id',\n 'participant_id'\n );\n }\n\n public function getConnections(): Eloquent\\Collection\n {\n return $this->getAttribute('connections');\n }\n\n /**\n * Get all of the shares through the participants.\n */\n public function participantShares()\n {\n return $this->hasManyThrough(\n Participant\\Share::class,\n Participant::class,\n 'activity_id',\n 'participant_id'\n );\n }\n\n public function getParticipantShares(): Eloquent\\Collection\n {\n return $this->getAttribute('participantShares');\n }\n\n public function topicTriggers(): HasMany\n {\n return $this->hasMany(TopicTrigger::class);\n }\n\n public function activityScorecardRuleTriggers(): HasMany\n {\n return $this->hasMany(Models\\Scorecard\\ActivityScorecardRuleTrigger::class);\n }\n\n public function activityScorecardRules(): HasMany\n {\n return $this->hasMany(Models\\Scorecard\\ActivityScorecardRule::class);\n }\n\n public function questions(): HasMany\n {\n return $this->hasMany(Question::class);\n }\n\n /**\n * Get all the custom data attached to it.\n */\n public function data(): HasMany\n {\n return $this->hasMany(FieldData::class);\n }\n\n public function getData(): Eloquent\\Collection\n {\n /** @var Eloquent\\Collection */\n return $this->getAttribute('data');\n }\n\n #[Scope]\n protected function heldBetween($query, Carbon $start, Carbon $end)\n {\n // Sanity check.\n $from = min($start, $end);\n $until = max($start, $end);\n\n return $query\n ->where('actual_start_date', '>=', $from)\n ->where('actual_end_date', '<=', $until);\n }\n\n #[Scope]\n protected function scheduledBetween($query, Carbon $start, Carbon $end)\n {\n // Sanity check.\n $from = min($start, $end);\n $until = max($start, $end);\n\n return $query\n ->where('scheduled_start_date', '>=', $from)\n ->where('scheduled_end_date', '<=', $until);\n }\n\n /**\n * @param Builder<self> $query\n *\n * @return Builder<self>\n */\n #[Scope]\n protected function forTeam(Builder $query, int $teamId): Builder\n {\n /** @var Builder<self> */\n return $query->whereHas('user', static function (Builder $query) use ($teamId): void {\n $query->where('team_id', $teamId);\n });\n }\n\n /**\n * @param Builder<self> $query\n *\n * @return Builder<self>\n */\n #[Scope]\n protected function inOpenDeals(Builder $query): Builder\n {\n /** @var Builder<self> */\n return $query->whereHas(\n 'opportunity',\n static fn (Builder $query): Builder => $query\n ->where('is_closed', false)\n ->where('deleted_at', '=', null),\n );\n }\n\n /**\n * @param Builder<self> $query\n *\n * @return Builder<self>\n */\n #[Scope]\n protected function notInOpenDeals(Builder $query): Builder\n {\n /** @var Builder<self> */\n return $query->where(\n static fn (Builder $query): Builder => $query->whereNull('opportunity_id')\n ->orWhereHas(\n 'opportunity',\n static fn (Builder $query): Builder => $query->where('is_closed', true),\n )\n ->orWhereHas(\n 'opportunity',\n static fn (Builder $query): Builder => $query->withTrashed()->where('deleted_at', '!=', null),\n ),\n );\n }\n\n /**\n * Finds a participant and updates it with data. If participant doesn't exist creates a new participant from data.\n *\n * @param array $data participant data used to identify the participant and update it\n * @param bool $enterRoom true if participant is entering the room. false if we just want to update some participant data\n * @param Carbon|null $enterTime if $enterNow is true then this is the join time when the actual enter has occurred\n */\n public function updateOrCreateParticipant(\n array $data,\n bool $enterRoom = true,\n ?Carbon $enterTime = null,\n bool $nameMatching = false,\n ): Participant {\n $search = [];\n $participant = null;\n\n if (isset($data['user_id'])) {\n // Check if they already exist based on their ID.\n $search['user_id'] = $data['user_id'];\n } elseif (isset($data['provider_id'])) {\n $search['provider_id'] = $data['provider_id'];\n } elseif ($nameMatching && isset($data['name'])) {\n $search['name'] = $data['name'];\n }\n\n if (! empty($data['email'])) {\n $search['email'] = $data['email'];\n\n // If we have their email, this should be unique enough to lookup (e.g. calendar event based participant).\n unset($search['provider_id']);\n }\n\n // Search by phone number only in case nothing else is available to search by.\n if (array_key_exists('phone_number', $data) && empty($search)) {\n $search['phone_number'] = $data['phone_number'];\n }\n\n if (! empty($search)) {\n // Do a lookup now to see if we have a match on the provided data.\n $lookup = array_map(static function ($key, $value): array {\n return [$key, $value];\n }, array_keys($search), $search);\n\n $participant = $this->participants()->withTrashed()->where($lookup)->first();\n }\n\n // Do a partial match on the name and search in the team members.\n if (! $participant instanceof Participant && $nameMatching && ! empty($data['name'])) {\n $participantMatcher = app(MeetingBot\\Service\\ParticipantMatcher::class);\n\n if (! $participantMatcher instanceof MeetingBot\\Service\\ParticipantMatcher) {\n throw new LogicException('Expecting ParticipantMatcher service instance');\n }\n\n $participant = $participantMatcher->match($this, $data['name']);\n\n // If we've found good participant, avoid data overwrite in `$participant->fill($data)` below.\n if ($participant instanceof Models\\Participant && $participant->hasName()) {\n unset($data['name']); // Thoughts: should we unset also $data['user_id'] and $data['email'] ?\n }\n }\n\n if (! $participant instanceof Participant) {\n // If no match, create a new participant.\n if (empty($search)) {\n $participant = $this->participants()->create();\n } else {\n // If no match, create a new participant but avoid creating duplicates\n $participant = $this->participants()->withTrashed()->firstOrNew($search);\n }\n }\n\n // If we have just recycled a deleted participant\n if ($participant->trashed()) {\n $participant->deleted_at = null;\n }\n\n // Deal with the case when calendar syncs the event while it's in progress.\n // We should prevent change of the participant name, because speeches mapping will fail.\n if ($enterRoom === false\n && $this->isInProgress()\n && $participant->hasName()\n && isset($data['name'])\n && $data['name'] !== $participant->getName()\n ) {\n unset($data['name']);\n }\n\n // Upsert with new data.\n $participant->fill($data);\n\n if ($enterRoom) {\n if ($enterTime === null) {\n $enterTime = now();\n }\n\n // Participant enters room for the first time\n if ($participant->enter_time === null) {\n $participant->enter_time = $enterTime;\n }\n\n // If there is an exit time and it's prior to new enter_time\n if ($participant->exit_time && $participant->exit_time->lt($enterTime)) {\n // Participant has re-joined\n $participant->exit_time = null;\n }\n }\n\n $participant->save();\n\n return $participant;\n }\n\n /**\n * Updates participant CRM data\n *\n * @param array{\n * Lead|null,\n * Account|null,\n * Opportunity|null,\n * Contact|null,\n * Stage|null,\n * string|null\n *} $records\n * @param Participant $participant participant the CRM data is associated with\n */\n public function updateParticipantCrmData(array $records, Participant $participant): void\n {\n // Extract the records.\n [$lead, , , $contact] = $records;\n\n $resolver = $this->getUpdateCrmDataResolver();\n $strategy = $resolver->resolveForParticipant($lead, $contact);\n\n if ($strategy == UpdateCrmDataByStrategy::Lead) {\n if (! $participant->hasName()) {\n $participant->name = $lead->name;\n }\n\n if (! $participant->hasEmailAddress()) {\n $participant->email = $lead->email;\n }\n\n if (! $participant->hasPhoneNumber()) {\n $participant->phone_number = $lead->phone;\n }\n\n $participant->lead_id = $lead->id;\n $participant->save();\n } elseif ($strategy == UpdateCrmDataByStrategy::Contact) {\n if (! $participant->hasName()) {\n $participant->name = $contact->name;\n }\n\n if (! $participant->hasEmailAddress()) {\n $participant->email = $contact->email;\n }\n\n if (! $participant->hasPhoneNumber()) {\n $participant->phone_number = $contact->phone;\n }\n\n $participant->contact_id = $contact->id;\n $participant->save();\n }\n }\n\n /**\n * Updates activity CRM data\n *\n * @param array{\n * Lead|null,\n * Account|null,\n * Opportunity|null,\n * Contact|null,\n * Stage|null,\n * string|null\n *} $records\n */\n public function updateActivityCrmData(array $records): void\n {\n // Extract the records.\n [$lead, $account, $opportunity, $contact, $stage] = $records;\n\n $resolver = $this->getUpdateCrmDataResolver();\n $strategy = $resolver->resolveForActivity($lead, $contact, $account);\n\n if ($strategy == UpdateCrmDataByStrategy::Lead) {\n // Also update the parent activity if required, checking we don't create a mixed lead/account record.\n if ($this->account_id === null && $this->contact_id === null && $this->lead_id === null) {\n $this->lead_id = $lead->id;\n\n if ($this->stage_id === null && $stage) {\n $this->stage_id = $stage->id;\n }\n\n $this->save();\n }\n } elseif ($strategy == UpdateCrmDataByStrategy::Contact) {\n // Also update the parent activity if required, checking we don't create a mixed lead/account record.\n $this->lead_id = null;\n if ($this->stage && $this->stage->getType() === Stage::TYPE_LEAD) {\n $this->stage_id = null;\n }\n\n // Don't trust previous matched account_id as it might have been changed in the CRM\n if ($account && $account->id !== $this->account_id) {\n $this->account_id = $account->id;\n }\n\n if ($this->stage_id === null && $stage) {\n $this->stage_id = $stage->id;\n }\n\n if ($opportunity && $this->opportunity_id !== $opportunity->id) {\n $this->opportunity_id = $opportunity->id;\n }\n\n if ($opportunity && $this->value !== $opportunity->value) {\n $this->value = $opportunity->value;\n }\n\n // Always set contact_id when available, regardless of account_id status\n if ($this->contact_id === null && $contact) {\n $this->contact_id = $contact->id;\n }\n\n $this->save();\n } elseif ($strategy == UpdateCrmDataByStrategy::Account && $this->account_id === null) {\n // Also update the parent activity if required, checking we don't create a mixed lead/account record.\n $this->lead_id = null;\n if ($this->stage && $this->stage->getType() === Stage::TYPE_LEAD) {\n $this->stage_id = null;\n }\n\n // Update the account and opportunity on the activity record if possible.\n $this->account_id = $account->id;\n\n if ($this->stage_id === null && $stage) {\n $this->stage_id = $stage->id;\n }\n\n if ($this->opportunity_id === null && $opportunity) {\n $this->opportunity_id = $opportunity->id;\n $this->value = $opportunity->value;\n }\n\n $this->save();\n }\n }\n\n public function getActivityProspectData(): array\n {\n return [\n 'lead' => $this->lead_id,\n 'contact' => $this->contact_id,\n 'account' => $this->account_id,\n 'opportunity' => $this->opportunity_id,\n 'stage' => $this->stage_id,\n ];\n }\n\n public function isOrganizer(User $user): bool\n {\n return $this->user_id && $this->user_id === $user->id;\n }\n\n public function isJoinable(): bool\n {\n return \\in_array($this->status, [\n self::STATUS_SCHEDULED,\n self::STATUS_PENDING,\n self::STATUS_RINGING,\n self::STATUS_IN_PROGRESS,\n ], true);\n }\n\n public function isAttemptedForBotJoin(): bool\n {\n return in_array($this->getAttribute('status'), self::MEETING_BOT_JOIN_ATTEMPTED, true);\n }\n\n /**\n * Check if the activity can be saved to CRM (manual or autolog)\n */\n public function isLoggable(): bool\n {\n if ($this->getUser()->getTeam()->hasFeature(FeatureEnum::SIDEKICK_SETTINGS)) {\n $sidekickService = app(SidekickService::class);\n\n if (! $sidekickService->isSidekickEnabledForUser($this->getUser())) {\n return false;\n }\n }\n\n // If we don't know the activity type, don't try to log.\n if ($this->playbook_category_id === null) {\n return false;\n }\n\n if ($this->user->crm_required === false) {\n return false;\n }\n\n // Don't prompt for internal meetings.\n if ($this->is_internal) {\n return false;\n }\n\n // If we don't know who we are trying to log to, don't try to log.\n if ($this->prospect === null) {\n return false;\n }\n\n $validStatus = false;\n switch ($this->type) {\n case self::TYPE_SOFTPHONE:\n case self::TYPE_SOFTPHONE_INBOUND:\n $validStatus = true;\n\n break;\n case self::TYPE_CONFERENCE:\n $validStatus = in_array($this->status, [\n self::STATUS_BUSY,\n self::STATUS_NO_ANSWER,\n self::STATUS_COMPLETED,\n self::STATUS_CANCELLED,\n ], true);\n\n break;\n case self::TYPE_SMS_INBOUND:\n case self::TYPE_SMS_OUTBOUND:\n $validStatus = in_array($this->status, [\n self::STATUS_QUEUED,\n self::STATUS_SENT,\n self::STATUS_UNDELIVERED,\n self::STATUS_DELIVERED,\n self::STATUS_RECEIVED,\n ], true);\n\n break;\n }\n\n // Depending on the activity channel, we should not try to log.\n return $validStatus;\n }\n\n public function isScheduled(): bool\n {\n return $this->status === self::STATUS_SCHEDULED;\n }\n\n public function scheduledDuration(): int\n {\n if ($this->scheduled_start_time && $this->scheduled_end_time) {\n return $this->scheduled_end_time->timestamp - $this->scheduled_start_time->timestamp;\n }\n\n return 0;\n }\n\n public function isPending(): bool\n {\n return $this->status === self::STATUS_PENDING;\n }\n\n public function isCompleted(): bool\n {\n return $this->status === self::STATUS_COMPLETED;\n }\n\n public function isRinging(): bool\n {\n return $this->status === self::STATUS_RINGING;\n }\n\n public function isInProgress(): bool\n {\n return $this->status === self::STATUS_IN_PROGRESS;\n }\n\n public function isBusy(): bool\n {\n return $this->status === self::STATUS_BUSY;\n }\n\n public function isNoAnswer(): bool\n {\n return $this->status === self::STATUS_NO_ANSWER;\n }\n\n public function isFailed(): bool\n {\n return $this->status === self::STATUS_FAILED;\n }\n\n public function isCancelled(): bool\n {\n return $this->status === self::STATUS_CANCELLED;\n }\n\n public function hasEnded(int $gracePeriodMinutes = 15): bool\n {\n if ($this->isCompleted()) {\n return true;\n }\n\n if (($this->isFailed() || $this->isCancelled()) && $this->hasScheduledEndTime()) {\n return $this->getScheduledEndTime()->addMinutes($gracePeriodMinutes)->isPast();\n }\n\n return false;\n }\n\n public function hasStarted(): bool\n {\n return $this->hasActualStartTime();\n }\n\n public function isOngoing(): bool\n {\n return $this->hasActualStartTime() && ! $this->hasActualEndTime();\n }\n\n public function isTypeSmsInbound(): bool\n {\n return $this->getType() === self::TYPE_SMS_INBOUND;\n }\n\n public function isTypeSmsOutbound(): bool\n {\n return $this->getType() === self::TYPE_SMS_OUTBOUND;\n }\n\n public function isTypeSoftPhone(): bool\n {\n return $this->getType() === self::TYPE_SOFTPHONE;\n }\n\n public function isTypeSoftphoneInbound(): bool\n {\n return $this->getType() === self::TYPE_SOFTPHONE_INBOUND;\n }\n\n public function isTypeConference(): bool\n {\n return $this->getType() === self::TYPE_CONFERENCE;\n }\n\n /**\n * Get a conference elapsed time in seconds.\n *\n * @return int seconds count\n */\n public function secondsTimeElapsed(): int\n {\n if (empty($this->actual_start_time)) {\n return 0;\n }\n\n // Get number of seconds since conference actual start time\n return (int) abs(Carbon::now()->diffInRealSeconds($this->actual_start_time));\n }\n\n /**\n * Get a conference elapsed time formatted as \"1:30:20\" if more than 1 hour or \"30:20\" otherwise.\n */\n public function formattedTimeElapsed(): string\n {\n // Get number of seconds since conference actual start time.\n $elapsedSeconds = $this->secondsTimeElapsed();\n $elapsedTime = Carbon::createFromTimestampUTC($elapsedSeconds);\n\n // Format conference start time.\n return $elapsedTime->format($elapsedSeconds < 3600 ? 'i:s' : 'G:i:s');\n }\n\n public function wasScheduled(): bool\n {\n return $this->calendarEvent !== null || in_array($this->getSource(), [self::SOURCE_OUTLOOK, self::SOURCE_GOOGLE]);\n }\n\n public function isInstant(): bool\n {\n return ! $this->wasScheduled();\n }\n\n /**\n * GETTERS AND SETTERS FOLLOW BELOW\n */\n\n public function getUuid(): string\n {\n return $this->getAttribute('id_string');\n }\n\n public function getId(): int\n {\n return $this->getAttribute('id');\n }\n\n public function getFromParticipantId(): ?int\n {\n return $this->getAttribute('from_participant_id');\n }\n\n public function getFromParticipant(): ?Participant\n {\n return $this->getAttribute('from');\n }\n\n public function getToParticipantId(): ?int\n {\n return $this->getAttribute('to_participant_id');\n }\n\n public function getToParticipant(): ?Participant\n {\n return $this->getAttribute('to');\n }\n\n public function hasScheduledStartTime(): bool\n {\n return $this->getAttribute('scheduled_start_time') !== null;\n }\n\n public function getScheduledStartTime(): ?Carbon\n {\n return $this->getAttribute('scheduled_start_time');\n }\n\n public function setScheduledStartTime(DateTimeInterface $dateTime): self\n {\n $this->setAttribute('scheduled_start_time', $dateTime);\n\n return $this;\n }\n\n public function getScheduledEndTime(): ?DateTimeInterface\n {\n return $this->getAttribute('scheduled_end_time');\n }\n\n public function hasScheduledEndTime(): bool\n {\n return $this->getAttribute('scheduled_end_time') !== null;\n }\n\n public function setScheduledEndTime(DateTimeInterface $dateTime): self\n {\n $this->setAttribute('scheduled_end_time', $dateTime);\n\n return $this;\n }\n\n public function getActualStartTime(): ?Carbon\n {\n return $this->getAttribute('actual_start_time');\n }\n\n public function hasActualStartTime(): bool\n {\n return $this->getAttribute('actual_start_time') !== null;\n }\n\n public function getActualEndTime(): ?Carbon\n {\n return $this->getAttribute('actual_end_time');\n }\n\n public function hasActualEndTime(): bool\n {\n return $this->getAttribute('actual_end_time') !== null;\n }\n\n public function getType(): ?string\n {\n return $this->getAttribute('type');\n }\n\n public function getStatus(): string\n {\n return $this->getAttribute('status');\n }\n\n public function setStatus(string $status): self\n {\n $this->setAttribute('status', $status);\n\n return $this;\n }\n\n public function setActualStartTime(DateTimeInterface $dateTime): self\n {\n $this->setAttribute('actual_start_time', $dateTime);\n\n return $this;\n }\n\n public function setActualEndTime(DateTimeInterface $dateTime, bool $shouldUpdateDuration = true): self\n {\n $this->setAttribute('actual_end_time', $dateTime);\n\n if (! $shouldUpdateDuration) {\n return $this;\n }\n\n return $this->updateDuration();\n }\n\n public function updateDuration(): self\n {\n if (! $this->hasActualStartTime() || ! $this->hasActualEndTime()) {\n return $this;\n }\n\n return $this->setDuration(\n (int) abs($this->getActualStartTime()->diffInRealSeconds($this->getActualEndTime()))\n );\n }\n\n public function setDuration(int $duration): self\n {\n $this->setAttribute('duration', $duration);\n\n return $this;\n }\n\n public function getRecordingState(): string\n {\n return $this->getAttribute('recording_state');\n }\n\n public function isRecordingState(string $recordingState): bool\n {\n return $this->getRecordingState() === $recordingState;\n }\n\n public function setRecordingState(string $recordingState): self\n {\n $this->setAttribute('recording_state', $recordingState);\n\n return $this;\n }\n\n public function hasActivityType(): bool\n {\n return $this->getAttribute('category') !== null;\n }\n\n public function getActivityType(): PlaybookCategory\n {\n return $this->getAttribute('category');\n }\n\n public function setActivityType(int $playbookCategoryId): self\n {\n $this->setAttribute('playbook_category_id', $playbookCategoryId);\n\n return $this;\n }\n\n public function hasStage(): bool\n {\n return $this->getAttribute('stage') !== null;\n }\n\n public function getStage(): ?Stage\n {\n return $this->getAttribute('stage');\n }\n\n public function getStageId(): ?int\n {\n return $this->getAttribute('stage_id');\n }\n\n public function setStageId(?int $stageId): void\n {\n $this->setAttribute('stage_id', $stageId);\n }\n\n public function hasOpportunity(): bool\n {\n return $this->getAttribute('opportunity') !== null;\n }\n\n public function getOpportunity(): ?Opportunity\n {\n return $this->getAttribute('opportunity');\n }\n\n public function hasContact(): bool\n {\n return $this->getAttribute('contact') !== null;\n }\n\n public function getContact(): ?Contact\n {\n return $this->getAttribute('contact');\n }\n\n public function getContactId(): ?int\n {\n return $this->getAttribute('contact_id');\n }\n\n public function setContactId(?int $contactId): void\n {\n $this->setAttribute('contact_id', $contactId);\n }\n\n public function hasLead(): bool\n {\n return $this->getAttribute('lead') !== null;\n }\n\n public function getLead(): ?Lead\n {\n return $this->getAttribute('lead');\n }\n\n public function getLeadId(): ?int\n {\n return $this->getAttribute('lead_id');\n }\n\n public function setLeadId(?int $leadId): void\n {\n $this->setAttribute('lead_id', $leadId);\n }\n\n public function hasAccount(): bool\n {\n return $this->getAttribute('account') !== null;\n }\n\n public function getAccount(): ?Account\n {\n return $this->getAttribute('account');\n }\n\n public function getAccountId(): ?int\n {\n return $this->getAttribute('account_id');\n }\n\n public function setAccountId(?int $accountId): void\n {\n $this->setAttribute('account_id', $accountId);\n }\n\n /**\n * This method exists to avoid confusion using ->participants() or ->participants. Use the getter instead.\n *\n * @return Collection<int, Participant>|Participant[]\n */\n public function getParticipants(): Collection\n {\n return $this->participants;\n }\n\n /**\n * @deprecated use ParticipantRepository::findParticipantRoomOwner() instead\n */\n public function findParticipantRoomOwner(): ?Participant\n {\n $roomOwnerId = $this->getUserId();\n\n return $this->getParticipants()\n ->filter(static fn (Participant $participant): bool => $participant->isSameUserId($roomOwnerId))\n ->first();\n }\n\n public function hasCrmProviderId(): bool\n {\n return $this->getAttribute('crm_provider_id') !== null;\n }\n\n public function getCrmProviderId(): ?string\n {\n return $this->getAttribute('crm_provider_id');\n }\n\n public function getUserId(): ?int\n {\n return $this->getAttribute('user_id');\n }\n\n public function hasUser(): bool\n {\n return $this->user()->exists();\n }\n\n public function getUser(): User\n {\n return $this->getAttribute('user');\n }\n\n public function getCreatedAt(): Carbon\n {\n return $this->getAttribute('created_at');\n }\n\n public function isInFiniteState(): bool\n {\n return $this->isFiniteState($this->getStatus());\n }\n\n public function isFiniteState(string $status): bool\n {\n $finiteStates = self::FINITE_STATES[$this->getType()] ?? [];\n\n return in_array($status, $finiteStates, true);\n }\n\n public function getParticipant(Authenticatable $user): Participant\n {\n return $this->findParticipant($user);\n }\n\n public function findParticipant(Authenticatable $user): ?Participant\n {\n if ($user instanceof User) {\n /** @var User $user */\n return $this->participants()->where('user_id', '=', $user->getId())->first();\n }\n\n throw new LogicException(sprintf('Unsupported Authenticatable implementation %s', get_class($user)));\n }\n\n public function hasLanguageCode(): bool\n {\n return $this->getAttribute('language') !== null;\n }\n\n public function getLanguageCode(): ?string\n {\n /** @var string|null */\n return $this->getAttribute('language');\n }\n\n public function getLanguageCodeHyphenated(): string\n {\n return str_replace('_', '-', $this->getLanguageCode() ?? '');\n }\n\n public function getLanguageCodeLocale(): string\n {\n [ $language ] = explode('_', $this->getLanguageCode() ?? '');\n\n return $language;\n }\n\n public function setLanguageCode(string $value): self\n {\n return $this->setAttribute('language', $value);\n }\n\n public function hasSource(): bool\n {\n return $this->getAttribute('source') !== null;\n }\n\n public function setSource(?string $source): self\n {\n return $this->setAttribute('source', $source);\n }\n\n public function isSource(string $source): bool\n {\n return $this->getAttribute('source') === $source;\n }\n\n public function getSource(): ?string\n {\n return $this->getAttribute('source');\n }\n\n public function isSourceGong(): bool\n {\n return $this->isSource(self::SOURCE_GONG);\n }\n\n public function getExternalId(): ?string\n {\n return $this->getAttribute('external_id');\n }\n\n public function setExternalId(?string $externalId): self\n {\n return $this->setAttribute('external_id', $externalId);\n }\n\n public function hasExternalId(): bool\n {\n return $this->getAttribute('external_id') !== null;\n }\n\n public function getProvider(): string\n {\n return $this->getAttribute('provider');\n }\n\n public function hasTelephonyProviderId(): bool\n {\n return $this->getAttribute('telephony_provider_id') !== null;\n }\n\n public function getTelephonyProviderId(): ?string\n {\n return $this->getAttribute('telephony_provider_id');\n }\n\n public function setTelephonyProviderId(?string $telephonyProviderId): self\n {\n return $this->setAttribute('telephony_provider_id', $telephonyProviderId);\n }\n\n public function getLocation(): ?string\n {\n return $this->getAttribute('location');\n }\n\n public function setLocation(?string $location): self\n {\n return $this->setAttribute('location', $location);\n }\n\n public function isDeleted(): bool\n {\n return $this->getAttribute('deleted_at') !== null;\n }\n\n /**\n * Check if activity recording is on and activity status is not one of the failed statuses.\n */\n public function canReviewActivity(): bool\n {\n $failedStatuses = self::$enumFailedStatuses;\n\n return (! in_array($this->recording_state, [self::RECORDING_OFF, self::RECORDING_STOPPED], true) &&\n ! in_array($this->status, $failedStatuses, true));\n }\n\n public function hasReasonCodeBotKicked(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_MEETING_BOT_KICKED);\n }\n\n public function hasReasonCodeNotCompliant(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_CONSENT_DENIED);\n }\n\n public function hasTopicTriggers(): bool\n {\n return $this->topicTriggers()->count() !== 0;\n }\n\n public function getTopicTriggers(): Collection\n {\n return $this->topicTriggers;\n }\n\n public function getTopicTriggersSorted(): Collection\n {\n $this->loadMissing([\n 'topicTriggers.participant',\n 'topicTriggers.playbackThemeTopicTrigger',\n 'topicTriggers.playbackThemeTopicTrigger',\n 'topicTriggers.playbackThemeTopicTrigger.playbackThemeTopic',\n 'topicTriggers.playbackThemeTopicTrigger.playbackThemeTopic.playbackTheme',\n ]);\n\n return $this->topicTriggers\n ->sortBy([\n 'playbackThemeTopicTrigger.playbackThemeTopic.playbackTheme.sort',\n 'playbackThemeTopicTrigger.playbackThemeTopic.sort',\n 'playbackThemeTopicTrigger.sort',\n ]);\n }\n\n public function hasQuestions(): bool\n {\n return $this->questions()->exists();\n }\n\n public function getQuestions(): Collection\n {\n return $this->questions;\n }\n\n public function hasValue(): bool\n {\n return $this->getAttribute('value') !== null;\n }\n\n public function getValue(): ?float\n {\n return $this->getAttribute('value');\n }\n\n public function transitionTo(string $newState, callable $callback, ?int $timeout = null): self\n {\n $newState = $this->getWorkflowStateFor(\n $this->getType(),\n $newState\n );\n\n return $this->traitTransitionTo($newState, $callback, $timeout);\n }\n\n public function getWorkflowState(): string\n {\n return $this->getWorkflowStateFor(\n $this->getType(),\n $this->getStatus()\n );\n }\n\n public function getActivityProviderDisplayName(): string\n {\n return \\Cache::remember('activity_provider_display_name-' . $this->getProvider(), 60 * 60 * 24, function () {\n $activityProviderRegistry = app()->make(ActivityProviderRegistry::class);\n\n try {\n return $activityProviderRegistry->get($this->getProvider())->getDisplayName();\n } catch (Exception $exception) {\n return ucfirst($this->getProvider());\n }\n });\n }\n\n private function getWorkflowStateFor(string $activityChannel, string $activityStatus): string\n {\n return sprintf(\n '%s::%s',\n $activityChannel,\n $activityStatus\n );\n }\n\n public function getWorkflow(): array\n {\n $map = [\n self::TYPE_SOFTPHONE => [\n self::STATUS_SCHEDULED => [\n self::STATUS_PENDING,\n self::STATUS_IN_PROGRESS,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n ],\n self::STATUS_PENDING => [\n self::STATUS_IN_PROGRESS,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n ],\n self::STATUS_RINGING => [\n self::STATUS_CANCELLED,\n self::STATUS_FAILED,\n self::STATUS_IN_PROGRESS,\n self::STATUS_BUSY,\n ],\n self::STATUS_IN_PROGRESS => [\n self::STATUS_COMPLETED,\n ],\n ],\n self::TYPE_SOFTPHONE_INBOUND => [\n self::STATUS_RINGING => [\n self::STATUS_IN_PROGRESS,\n self::STATUS_NO_ANSWER,\n self::STATUS_CANCELLED,\n self::STATUS_FAILED,\n self::STATUS_BUSY,\n ],\n self::STATUS_IN_PROGRESS => [\n self::STATUS_COMPLETED,\n ],\n ],\n ];\n\n return collect($map)\n ->mapWithKeys(function (array $currentStates, string $activityChannel): array {\n return [\n $activityChannel => collect($currentStates)\n ->mapWithKeys(function (array $possibleStates, $currentState) use ($activityChannel): array {\n $transitionName = $this->getWorkflowStateFor($activityChannel, $currentState);\n\n return [\n $transitionName => array_map(function (string $newState) use ($activityChannel) {\n return $this->getWorkflowStateFor($activityChannel, $newState);\n }, $possibleStates),\n ];\n }),\n ];\n })\n ->reduce(static function (array $carry, Collection $item): array {\n return array_merge($carry, $item->all());\n }, []);\n }\n\n public function hasPosterPath(): bool\n {\n return $this->getAttribute('poster_path') !== null;\n }\n\n public function getPosterPath(): ?string\n {\n return $this->getAttribute('poster_path');\n }\n\n /**\n * Take into account all recording settings and determine if we need to record this activity or not.\n */\n public function shouldRecord(): bool\n {\n return $this->determineRecordingReasonCode() === null;\n }\n\n public function determineRecordingReasonCode(): ?int\n {\n // Conference specific decisions.\n if ($this->isTypeConference()) {\n // If they have manually overridden the recording setting to not record.\n if ($this->hasRecordingPreference() && $this->getRecordingPreference() === false) {\n return self::FLAG_RECORDING_REASON_PREFERENCE_OVERRIDE;\n }\n\n // If they have manually overridden the recording setting to record.\n if ($this->hasRecordingPreference() && $this->getRecordingPreference() === true) {\n return null;\n }\n\n // If their team has disabled recording meetings, don't record.\n if ($this->user->team->isConferenceRecordPreferenceDisabled()) {\n return self::FLAG_RECORDING_REASON_TEAM_AUTOMATIC_DISABLED;\n }\n\n // If the host has disabled recording meetings, don't record.\n if ($this->user->checkConferenceRecordPreference() === false) {\n return self::FLAG_RECORDING_REASON_USER_AUTOMATIC_DISABLED;\n }\n\n // If it was marked internal...\n if ($this->is_internal) {\n // and their team has disabled recording internal meetings, don't record.\n if (\n $this->user->team->isConferenceRecordPreferenceEnabled()\n && ! $this->user->team->isConferenceRecordInternalPreferenceEnabled()\n ) {\n return self::FLAG_RECORDING_REASON_TEAM_INTERNAL_DISABLED;\n }\n\n // and the host has disabled recording internal meetings, don't record.\n if ($this->user->checkConferenceRecordInternalPreference() === false) {\n return self::FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED;\n }\n }\n\n // If it was not scheduled and they disabled internal meetings, we cannot determine if it was internal.\n if ($this->wasScheduled() === false && $this->user->checkConferenceRecordInternalPreference() === false) {\n return self::FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED_UNSCHEDULED;\n }\n }\n\n return null;\n }\n\n public function getRecordingReasonCode(): int\n {\n return $this->getAttribute('recording_reason_code');\n }\n\n public function setRecordingReasonCode(int $recordingReasonCode): self\n {\n $this->setAttribute('recording_reason_code', $recordingReasonCode);\n\n return $this;\n }\n\n // Not used today.\n public function getRecordingReasonString(): ?string\n {\n if ($this->hasRecordingReasonCompliancePrompted()) {\n return Team::COMPLIANCE_MODE_RECORDING_PROMPT;\n }\n\n if ($this->hasRecordingReasonComplianceRestricted()) {\n return Team::COMPLIANCE_MODE_RECORDING_RESTRICT;\n }\n\n if ($this->hasRecordingReasonComplianceRestrictedToOneSideRecording()) {\n return Team::COMPLIANCE_MODE_RECORDING_RESTRICT_ONE_SIDE;\n }\n\n return null;\n }\n\n public function hasRecordingReasonComplianceRestricted(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT);\n }\n\n public function hasRecordingReasonCompliancePrompted(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_COMPLIANCE_PROMPT);\n }\n\n public function hasRecordingReasonComplianceRestrictedToOneSideRecording(): bool\n {\n return $this->getFlag('recording_reason_code', self::FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT_ONE_SIDE);\n }\n\n public function getAudioTrack(): ?Track\n {\n /** @var Track|null */\n return $this->tracks()\n ->where('type', '=', Track::TYPE_AUDIO)\n ->first();\n }\n\n public function activeParticipants(): HasMany\n {\n return $this->hasMany(Participant::class)->active();\n }\n\n public function getActiveParticipants(): Eloquent\\Collection\n {\n return $this->getAttribute('activeParticipants');\n }\n\n public function crm(): Eloquent\\Relations\\BelongsTo\n {\n return $this->belongsTo(Configuration::class, 'crm_configuration_id');\n }\n\n public function activitySummaryLogs(): HasMany\n {\n return $this->hasMany(ActivitySummaryLog::class);\n }\n\n public function getCrm(): ?Configuration\n {\n return $this->getAttribute('crm');\n }\n\n public function hasCrmConfiguration(): bool\n {\n return $this->getAttribute('crm') !== null;\n }\n\n public function isProcessed(): ?bool\n {\n return $this->getAttribute('is_processed');\n }\n\n public function hasRecordingPrompt(): bool\n {\n return $this->getAttribute('has_recording_prompt') === true;\n }\n\n public function recalculateAverageScore(): Activity\n {\n $coachingFeedbacksAll = $this->coachingFeedbacks->where('visibility', CoachingFeedback::VISIBLE_TO_ALL);\n\n // Sum scores\n $scoreSum = $coachingFeedbacksAll->pluck('average_score')->sum();\n\n // Calculate average score\n if ($coachingFeedbacksAll->count() > 0) {\n $this->update(['average_score' => $scoreSum / $coachingFeedbacksAll->count()]);\n $this->documentUpdate();\n }\n\n return $this;\n }\n\n public function isOnAir(): bool\n {\n return $this->getAttribute('on_air') === self::ON_AIR_READY || $this->getAttribute('on_air') === self::ON_AIR_STREAMING;\n }\n\n public function setOnAir(int $onAir): self\n {\n $this->setAttribute('on_air', $onAir);\n\n return $this;\n }\n\n public function getOnAir(): ?int\n {\n return $this->getAttribute('on_air');\n }\n\n public function setTitleFromCallData(Call $call): void\n {\n $direction = $call->isOutbound() ? 'to' : 'from';\n\n $party = $this->prospect_name\n ?? $call->getContactName()\n ?? $call->getOtherPartyPhoneNumber()\n ;\n\n $this->update(['title' => sprintf('Call %s %s', $direction, $party)]);\n }\n\n /**\n * @param array{}|array{channels:string|null, format:string|null, type:string|null, status:string|null} $audioParams\n */\n public function createAudioTrack(\n string $telephonyProviderId,\n string $recordingUrl,\n array $audioParams = []\n ): Track {\n return $this->tracks()->updateOrCreate([\n 'telephony_provider_id' => $telephonyProviderId,\n ], [\n 'type' => $audioParams['type'] ?? Track::TYPE_AUDIO,\n 'status' => $audioParams['status'] ?? Track::STATUS_PENDING,\n 'format' => $audioParams['format'] ?? Track::FORMAT_WAV,\n 'provider_content_url' => $recordingUrl,\n 'start_time' => $this->actual_start_time,\n 'end_time' => $this->actual_end_time,\n ]);\n }\n\n public function createTrack(string $telephonyProviderId, array $params): Track\n {\n return $this->tracks()->updateOrCreate(\n [\n 'telephony_provider_id' => $telephonyProviderId,\n ],\n $params\n );\n }\n\n public function createOrganiserParticipant(Call $call): Participant\n {\n $user = $this->getUser();\n\n return $this->updateOrCreateParticipant([\n 'is_ghost' => 0,\n 'name' => $user->name,\n 'email' => $user->email,\n 'phone_number' => phone_e164(null, $call->getUserPhoneNumber()),\n 'enter_time' => $this->actual_start_time,\n 'exit_time' => $this->actual_end_time,\n 'user_id' => $user->id,\n ], false);\n }\n\n public function createProspectParticipant(Call $call): Participant\n {\n // not null 'name' is mandatory here to create a separate participant with 'nameMatching'\n // in case of the same phone_number with the Organiser\n $useNameMatching = $call->getUserPhoneNumber() === $call->getOtherPartyPhoneNumber();\n $defaultName = $useNameMatching ? '' : null;\n\n return $this->updateOrCreateParticipant(data: [\n 'is_ghost' => 0,\n 'name' => $this->prospect->name ?? $defaultName,\n 'email' => $this->prospect->email ?? null,\n 'phone_number' => phone_e164(null, $call->getOtherPartyPhoneNumber()),\n 'enter_time' => $this->actual_start_time,\n 'exit_time' => $this->actual_end_time,\n 'contact_id' => $this->contact_id ?? null,\n 'lead_id' => $this->lead_id ?? null,\n ], enterRoom: false, nameMatching: $useNameMatching);\n }\n\n public function updateParticipants(Participant $organiserParticipant, Participant $prospectParticipant): void\n {\n $this->update([\n 'from_participant_id' => $this->isTypeSoftPhone() ? $organiserParticipant->id : $prospectParticipant->id,\n 'to_participant_id' => $this->isTypeSoftPhone() ? $prospectParticipant->id : $organiserParticipant->id,\n ]);\n }\n\n public function hasProspect(): bool\n {\n return $this->getProspectAttribute() !== null;\n }\n\n public function isPrivate(): bool\n {\n return $this->getAttribute('is_private');\n }\n\n /** Create a new factory instance for the model. */\n protected static function newFactory(): Factory\n {\n return ActivityFactory::new();\n }\n\n public function getUpdatedAt(): Carbon\n {\n return $this->getAttribute('updated_at');\n }\n\n public function getActivitySummaryLogs(): Eloquent\\Collection\n {\n return $this->getAttribute('activitySummaryLogs');\n }\n\n public function hasProspectActivitySummaryLog(): bool\n {\n return $this->getActivitySummaryLogs()->contains(\n 'relation_type',\n ActivitySummaryLog::RELATION_OBJECT_TYPE_PROSPECT\n );\n }\n\n public function getTeam(): Team\n {\n return $this->getUser()->getTeam();\n }\n\n private function getUpdateCrmDataResolver(): UpdateCrmDataResolverInterface\n {\n $factory = app(UpdateCrmDataResolverFactory::class);\n\n return $factory->create($this);\n }\n\n public function getMeetingTrackProviderId(string $type): string\n {\n $label = match ($type) {\n Track::TYPE_VIDEO => 'v',\n Track::TYPE_AUDIO => 'a',\n default => throw new InvalidArgumentJiminnyException('Invalid track type'),\n };\n\n $startTimestamp = $this->getScheduledStartTime()?->getTimestamp();\n $teamId = $this->getTeam()->getId();\n\n return $this->getTelephonyProviderId() . ':' . $label . ':' . $startTimestamp . ':' . $teamId;\n }\n\n /**\n * Get all consent records associated with this activity\n *\n * @return \\Illuminate\\Database\\Eloquent\\Relations\\HasMany\n */\n public function participantConsents(): HasMany\n {\n return $this->hasMany(Participant\\Consent::class);\n }\n\n public function isDiallerCall(): bool\n {\n if ($this->getProvider() === Activity::PROVIDER_UPLOADER) {\n return false;\n }\n\n if (! in_array($this->getType(), [self::TYPE_SOFTPHONE, self::TYPE_SOFTPHONE_INBOUND])) {\n return false;\n }\n\n return $this->getProvider() !== self::PROVIDER_TWILIO;\n }\n\n public function getActivityDateWithFallback(): Carbon\n {\n if ($this->getActualStartTime() !== null) {\n return $this->getActualStartTime();\n }\n\n if ($this->getScheduledStartTime() !== null) {\n return $this->getScheduledStartTime();\n }\n\n return $this->getCreatedAt();\n }\n\n public function getCrmType(): ?string\n {\n // Treat uploader activities as conferences\n if ($this->getProvider() === Activity::PROVIDER_UPLOADER) {\n return Activity::TYPE_CONFERENCE;\n }\n\n return $this->getType();\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":"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":"21","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"2","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":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 67;\nSELECT * FROM automated_reports where id = 42;\nSELECT * FROM users WHERE id = 143; # group 28\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","depth":4,"value":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 67;\nSELECT * FROM automated_reports where id = 42;\nSELECT * FROM users WHERE id = 143; # group 28\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","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}]...
|
5750528661339806640
|
8179532969745786684
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
167
4
102
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Models;
use Carbon\Carbon;
use Database\Factories\ActivityFactory;
use DateTimeInterface;
use Exception;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent;
use Illuminate\Database\Eloquent\Attributes\Scope;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use InvalidArgumentException;
use Jiminny\Component\ElasticSearch;
use Jiminny\Component\MeetingBot;
use Jiminny\Component\Model\BitwiseFlagTrait;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Sidekick\SidekickService;
use Jiminny\Component\Uuid\UuidAwareInterface;
use Jiminny\Component\Workflow;
use Jiminny\Contracts;
use Jiminny\Contracts\Crm\ProspectInterface;
use Jiminny\DTO\ImportCall\Call;
use Jiminny\Events\Activities\ActivityTypeUpdated;
use Jiminny\Events\Activities\ActivityUpdated;
use Jiminny\Events\Activities\ProspectUpdated;
use Jiminny\Events\Activities\StageUpdated;
use Jiminny\Events\Activities\StatusUpdated;
use Jiminny\Events\Activities\TitleUpdated;
use Jiminny\Exceptions\InvalidArgumentException as InvalidArgumentJiminnyException;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\RuntimeException;
use Jiminny\Models;
use Jiminny\Models\Activity\ActivitySummaryLog;
use Jiminny\Models\Activity\ActivityUploadSetting;
use Jiminny\Models\Activity\AvailabilityNotification;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Log;
use Jiminny\Models\Activity\Message;
use Jiminny\Models\Activity\Moment;
use Jiminny\Models\Activity\Note;
use Jiminny\Models\Activity\ParticipantSpeech;
use Jiminny\Models\Activity\Play;
use Jiminny\Models\Activity\Question;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\Activity\Snapshot;
use Jiminny\Models\Activity\Stats;
use Jiminny\Models\Activity\SubscriptionSet;
use Jiminny\Models\Activity\TopicTrigger;
use Jiminny\Models\Activity\Transcription;
use Jiminny\Models\Calendar\CalendarEvent;
use Jiminny\Models\Crm\Configuration;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\ElasticSearch\ActivityElasticSearchTrait;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Participant\Connection;
use Jiminny\Models\Playlist\Activity as PlaylistActivity;
use Jiminny\Services\Activity\ActivityProviderRegistry;
use Jiminny\Services\Activity\Import\DataResolvers\UpdateCrmDataByStrategy;
use Jiminny\Services\Activity\Import\DataResolvers\UpdateCrmDataResolverFactory;
use Jiminny\Services\Activity\Import\DataResolvers\UpdateCrmDataResolverInterface;
use Jiminny\Traits\Enums;
use Jiminny\Traits\RequiresUUID;
use Jiminny\Utils\CurrencyFormatter;
use NumberFormatter;
use function in_array;
/**
* Jiminny\Models\Activity
*
* @property null|int $auto_score filled from ES hydrator, not in DB!
* @property-read Account|null $account
* @property-read CalendarEvent|null $calendarEvent
* @property-read Contact|null $contact
* @property-read Lead|null $lead
* @property-read Opportunity|null $opportunity
* @property-read Stage|null $stage
* @property int $id
* @property mixed|null $uuid
* @property string|null $source
* @property string|null $external_id
* @property string $provider
* @property string|null $location
* @property string|null $telephony_provider_id
* @property int|null $from_participant_id
* @property int|null $to_participant_id
* @property int|null $device_id
* @property string|null $type
* @property int|null $playbook_category_id
* @property int $user_id
* @property int|null $lead_id
* @property int|null $account_id
* @property int|null $contact_id
* @property int|null $opportunity_id
* @property int|null $stage_id
* @property string|null $value
* @property int|null $crm_configuration_id
* @property string|null $crm_provider_id
* @property string|null $language
* @property int|null $transcription_id
* @property int $duration
* @property string $status
* @property int|null $on_air
* @property int|null $calendar_event_id
* @property string $recording_state
* @property bool|null $recording_preference
* @property int $recording_reason_code
* @property int $summary_reminder_sent
* @property \Illuminate\Support\Carbon|null $log_reminder_sent_at
* @property \Illuminate\Support\Carbon|null $organizer_notified_at
* @property bool|null $has_recording_prompt
* @property bool $is_internal
* @property int $is_locked
* @property int $is_recording
* @property bool|null $is_processed
* @property bool $is_private
* @property bool $is_instant_invite
* @property string|null $poster_path
* @property string|null $summary
* @property string|null $title
* @property string|null $description
* @property \Illuminate\Support\Carbon|null $scheduled_start_time
* @property \Illuminate\Support\Carbon|null $scheduled_end_time
* @property \Illuminate\Support\Carbon|null $actual_start_time
* @property \Illuminate\Support\Carbon|null $actual_end_time
* @property int|null $uploaded_by
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property string|null $average_score
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant> $activeParticipants
* @property-read int|null $active_participants_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Scorecard\ActivityScorecardRuleTrigger> $activityScorecardRuleTriggers
* @property-read int|null $activity_scorecard_rule_triggers_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Scorecard\ActivityScorecardRule> $activityScorecardRules
* @property-read int|null $activity_scorecard_rules_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, AvailabilityNotification> $availabilityNotifications
* @property-read int|null $availability_notifications_count
* @property-read \Jiminny\Models\PlaybookCategory|null $category
* @property-read \Illuminate\Database\Eloquent\Collection<int, CoachRequest> $coachRequests
* @property-read int|null $coach_requests_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\CoachingFeedback> $coachingFeedbacks
* @property-read int|null $coaching_feedbacks_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Message> $coachingMessages
* @property-read int|null $coaching_messages_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Comment> $comments
* @property-read int|null $comments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Connection> $connections
* @property-read int|null $connections_count
* @property-read Configuration|null $crm
* @property-read \Illuminate\Database\Eloquent\Collection<int, FieldData> $data
* @property-read int|null $data_count
* @property-read \Jiminny\Models\Device|null $device
* @property-read \Kalnoy\Nestedset\Collection<int, \Jiminny\Models\Playlist> $favoritePlaylists
* @property-read int|null $favorite_playlists_count
* @property-read \Jiminny\Models\Participant|null $from
* @property-read string|null $activity_title
* @property-read mixed $comment_count
* @property-read mixed $duration_for_humans
* @property-read string $duration_for_humans_short
* @property-read int $favorite_count
* @property-read mixed $favorites_count
* @property-read mixed $formatted_value
* @property-read string $id_string
* @property-read \Jiminny\Models\Participant|null $organizer
* @property-read mixed $play_count
* @property-read int|null $plays_count
* @property-read ?ProspectInterface $prospect
* @property-read string|null $prospect_name
* @property-read mixed $prospect_type
* @property-read mixed $share_count
* @property-read int|null $shares_count
* @property-read int|null $tracks_with_telephony_count
* @property-read int|null $visible_comments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\CoachingFeedback> $latestCoachingFeedbacks
* @property-read int|null $latest_coaching_feedbacks_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Log> $logs
* @property-read int|null $logs_count
* @property-read \Jiminny\Models\Track|null $masterTrack
* @property-read \Illuminate\Database\Eloquent\Collection<int, Message> $messages
* @property-read int|null $messages_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Moment> $moments
* @property-read int|null $moments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Note> $notes
* @property-read int|null $notes_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant\Share> $participantShares
* @property-read int|null $participant_shares_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, ParticipantSpeech> $participantSpeeches
* @property-read int|null $participant_speeches_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant\ParticipantStats> $participantStats
* @property-read int|null $participant_stats_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Participant> $participants
* @property-read int|null $participants_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, PlaylistActivity> $playlistActivities
* @property-read int|null $playlist_activities_count
* @property-read \Kalnoy\Nestedset\Collection<int, \Jiminny\Models\Playlist> $playlists
* @property-read int|null $playlists_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Play> $plays
* @property-read \Illuminate\Database\Eloquent\Collection<int, Question> $questions
* @property-read int|null $questions_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Session> $sessions
* @property-read int|null $sessions_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, Share> $shares
* @property-read \Illuminate\Database\Eloquent\Collection<int, Snapshot> $snapshots
* @property-read int|null $snapshots_count
* @property-read Stats|null $stats
* @property-read \Jiminny\Models\Participant|null $to
* @property-read \Illuminate\Database\Eloquent\Collection<int, TopicTrigger> $topicTriggers
* @property-read int|null $topic_triggers_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Track> $tracks
* @property-read int|null $tracks_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Jiminny\Models\Track> $tracksWithTelephony
* @property-read Transcription|null $transcription
* @property-read \Jiminny\Models\User $user
* @property-read \Illuminate\Database\Eloquent\Collection<int, Comment> $visibleComments
*
* @method static \Illuminate\Database\Eloquent\Collection<int, static> all($columns = ['*'])
* @method static \Jiminny\Component\Eloquent\Builder|Activity chunkByIdDesc($count, callable $callback, $column = null, $alias = null)
* @method static \Database\Factories\ActivityFactory factory(...$parameters)
* @method static \Illuminate\Database\Eloquent\Collection<int, static> get($columns = ['*'])
* @method static \Jiminny\Component\Eloquent\Builder|Activity heldBetween(\Carbon\Carbon $start, \Carbon\Carbon $end)
* @method static \Jiminny\Component\Eloquent\Builder|Activity idOrUuId($idOrUuid, bool $first = true)
* @method static \Jiminny\Component\Eloquent\Builder|Activity newModelQuery()
* @method static \Jiminny\Component\Eloquent\Builder|Activity newQuery()
* @method static Builder|Activity onlyTrashed()
* @method static \Jiminny\Component\Eloquent\Builder|Activity query()
* @method static \Jiminny\Component\Eloquent\Builder|Activity scheduledBetween(\Carbon\Carbon $start, \Carbon\Carbon $end)
* @method static \Jiminny\Component\Eloquent\Builder|Activity inOpenDeals()
* @method static \Jiminny\Component\Eloquent\Builder|Activity notInOpenDeals()
* @method static \Jiminny\Component\Eloquent\Builder|Activity forTeam(int $teamId)
* @method static \Jiminny\Component\Eloquent\Builder|Activity search(callable $searchQuery, $key = null, $sortByResults = true)
* @method static \Jiminny\Component\Eloquent\Builder|Activity uuid(string $uuid, bool $first = true)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereAccountId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereActualEndTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereActualStartTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereAverageScore($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCalendarEventId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereContactId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCreatedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCrmConfigurationId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereCrmProviderId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDeletedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDescription($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDeviceId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereDuration($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereFromParticipantId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereHasRecordingPrompt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsInstantInvite($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsInternal($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsLocked($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsPrivate($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsProcessed($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereIsRecording($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLanguage($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLeadId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLocation($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereLogReminderSentAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereOnAir($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereOpportunityId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereOrganizerNotifiedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity wherePlaybookCategoryId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity wherePosterPath($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereProvider($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereRecordingPreference($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereRecordingReasonCode($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereRecordingState($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereScheduledEndTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereScheduledStartTime($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereSource($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereExternalId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereStageId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereStatus($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereSummary($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereSummaryReminderSent($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereTelephonyProviderId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereTitle($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereToParticipantId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereTranscriptionId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereType($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUpdatedAt($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUploadedBy($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUserId($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereUuid($value)
* @method static \Jiminny\Component\Eloquent\Builder|Activity whereValue($value)
* @method static Builder|Activity withTrashed()
* @method static Builder|Activity withoutTrashed()
*
* @mixin \Eloquent
*/
class Activity extends Model implements
ElasticSearch\Contract\Searchable,
Workflow\Workflow\WorkflowAwareInterface,
Models\Contracts\ActivityContract,
Contracts\Model\ActivityInterface,
UuidAwareInterface
{
use HasFactory;
use Enums;
use SoftDeletes;
use RequiresUUID;
use BitwiseFlagTrait;
use ElasticSearch\Model\Searchable;
use ActivityElasticSearchTrait;
use Workflow\Workflow\WorkflowAware {
transitionTo as traitTransitionTo;
}
public const int FLAG_RECORDING_REASON_DEFAULT = 0;
// Recording Prompted but never started
public const int FLAG_RECORDING_REASON_COMPLIANCE_PROMPT = 1;
public const int FLAG_RECORDING_REASON_COMPLIANCE_RESUMED = 2;
public const int FLAG_RECORDING_REASON_NO_AUDIO = 3;
// Recording Disabled by Organization
public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT = 4;
// Recording was restricted to one-side recordings only
public const int FLAG_RECORDING_REASON_COMPLIANCE_RESTRICT_ONE_SIDE = 8;
// Recording was not started because it was internal and team setting disabled that.
public const int FLAG_RECORDING_REASON_TEAM_INTERNAL_DISABLED = 16;
// Recording was not started because it was internal and user setting disabled that.
public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED = 32;
// Recording was not started because user setting disabled automatic recording.
public const int FLAG_RECORDING_REASON_USER_AUTOMATIC_DISABLED = 64;
// Recording was not started because team setting disabled automatic recording.
public const int FLAG_RECORDING_REASON_TEAM_AUTOMATIC_DISABLED = 128;
// Recording was not started because user has overriden default.
public const int FLAG_RECORDING_REASON_PREFERENCE_OVERRIDE = 256;
// Recording was not started because they don't want internal, and this meeting was not scheduled/imported in time.
public const int FLAG_RECORDING_REASON_USER_INTERNAL_DISABLED_UNSCHEDULED = 512;
// Recording was not started because their team setting does excludes the meeting type.
public const int FLAG_RECORDING_REASON_UNSUPPORTED_TYPE = 1024;
// Recording was not started because the external provider disabled it (or recording is missing etc).
public const int FLAG_RECORDING_REASON_EXTERNALLY_DISABLED = 2048;
// Recording was stopped externally ("exit-meeting" Pusher event)
public const int FLAG_RECORDING_REASON_STOPPED_EXTERNALLY = 384;
// Recording couldn't be started due to Zoom hosting conflict error
public const int FLAG_RECORDING_REASON_HOSTING_CONFLICT = 448;
// meeting.failed event with reason code BOT_DENIED_FROM_LOBBY
public const int FLAG_RECORDING_REASON_MEETING_BOT_DENIED_FROM_LOBBY = 4096;
// meeting.failed event with reason code LOBBY_TIMEOUT
public const int FLAG_RECORDING_REASON_MEETING_BOT_LOBBY_TIMEOUT = 8192;
// meeting.failed event with reason code BOT_KICKED
public const int FLAG_RECORDING_REASON_MEETING_BOT_KICKED = 16384;
// meeting.failed event with reason code UNKNOWN
public const int FLAG_RECORDING_REASON_MEETING_BOT_UNKNOWN = 32768;
public const int FLAG_RECORDING_REASON_CONSENT_DENIED = 65536;
// Invalid meeting (e.g. URL is invalid, or the meeting is not found)
public const int FLAG_RECORDING_REASON_MEETING_BOT_INVALID = 131072;
// The host stopped the recording.
public const int FLAG_RECORDING_REASON_USER_STOPPED = 262144;
// Recording was not started because an alternative vendor disabled it (or overrode it).
public const int FLAG_RECORDING_REASON_VENDOR_OVERRIDE = 1048576;
// Login required meeting.failed code
public const int FLAG_RECORDING_REASON_LOGIN_REQUIRED = 524288;
// Password for meeting was not provided - meeting.failed code
public const int FLAG_RECORDING_REASON_MEETING_PASSWORD_NOT_PROVIDED = 2097152;
// meeting.failed - when the meeting is locked
public const int FLAG_RECORDING_REASON_MEETING_IS_LOCKED = 4194304;
// max recording duration reached
public const int FLAG_RECORDING_REASON_MAX_DURATION_REACHED = 8388608;
// recording size is too small
public const int FLAG_RECORDING_REASON_EMPTY_RECORDING = 16777216;
// meeting.failed - when bot is redirected to sign in page multiple times
public const int FLAG_RECORDING_REASON_MAX_RESTART_COUNT_IS_REACHED = 33554432;
// meeting.failed event with reason code CONNECTION_LOST
public const int FLAG_RECORDING_REASON_MEETING_BOT_CONNECTION_LOST = 67108864;
// recording is corrupted.
public const int FLAG_RECORDING_REASON_MEDIA_FILE_UNSUPPORTED_MIME_TYPE = 134217728;
// meeting ended in lobby
public const int FLAG_RECORDING_REASON_MEETING_ENDED_IN_LOBBY = 268435456;
// meeting not started
public const int FLAG_RECORDING_REASON_REASON_MEETING_NOT_STARTED = 536870912;
// unfinished zoom custom disclaimer
public const int FLAG_RECORDING_REASON_FEATURE_RULE_NOT_FOUND_ERROR = 1073741824;
// recording download failed - server error
public const int FLAG_RECORDING_REASON_SERVER_ERROR = 2147483648;
// recording download failed - client code 404
public const int FLAG_RECORDING_REASON_NOT_FOUND = 2147483649;
// recording download failed - client code 401, 403
public const int FLAG_RECORDING_REASON_ACCESS_DENIED = 2147483650;
// recording download failed - client code 429
public const int FLAG_RECORDING_REASON_TOO_MANY_REQUESTS = 2147483651;
// recording download failed - unknown client error
public const int FLAG_RECORDING_REASON_CLIENT_ERROR = 2147483652;
// recording download failed - unknown error
public const int FLAG_RECORDING_REASON_UNKNOWN_ERROR = 2147483653;
// It has been setup ahead of time through calendar
public const string STATUS_SCHEDULED = 'scheduled';
// It is awaiting audio.
public const string STATUS_PENDING = 'pending';
// Participant(s) dialed in, awaiting organizer.
public const string STATUS_RINGING = 'ringing';
// Call is in progress.
public const string STATUS_IN_PROGRESS = 'in-progress';
// It has ended.
public const string STATUS_COMPLETED = 'completed';
// Cancelled prior to starting.
public const string STATUS_CANCELLED = 'canceled';
public const string STATUS_DUPLICATED = 'duplicated'; // duplicated conference
public const string STATUS_STARTING_SOON = 'starting-soon';
public const string STATUS_BOT_CREATE_SENT = 'bot-create-sent';
public const string STATUS_BOT_INSTANCE_WORKER_ASSIGNED = 'worker-assigned';
public const string STATUS_BOT_INSTANCE_STARTED = 'bot-started';
// When bot instance is waiting in lobby
public const string STATUS_BOT_INSTANCE_WAITING_LOBBY = 'bot-waiting';
public const string STATUS_BUSY = 'busy';
public const string STATUS_NO_ANSWER = 'no-answer';
public const string STATUS_FAILED = 'failed'; // Used by SMS too
// SMS related
public const string STATUS_ACCEPTED = 'accepted';
public const string STATUS_QUEUED = 'queued';
public const string STATUS_SENDING = 'sending';
public const string STATUS_SENT = 'sent';
public const string STATUS_DELIVERED = 'delivered';
public const string STATUS_UNDELIVERED = 'undelivered';
public const string STATUS_RECEIVING = 'receiving';
public const string STATUS_RECEIVED = 'received';
public const string STATUS_RESENT = 'resent';
public const array SMS_STATUSES = [
Activity::STATUS_RECEIVED,
Activity::STATUS_SENT,
Activity::STATUS_DELIVERED,
];
public const array SOFT_PHONE_CONFERENCE_STATUSES = [
Activity::STATUS_IN_PROGRESS,
Activity::STATUS_COMPLETED,
];
// @todo refactor prefix from `TYPE_` to `CHANNEL_`
public const string TYPE_SOFTPHONE = 'softphone';
public const string TYPE_SOFTPHONE_INBOUND = 'softphone-inbound';
public const string TYPE_CONFERENCE = 'conference';
public const string TYPE_SMS_INBOUND = 'sms-inbound';
public const string TYPE_SMS_OUTBOUND = 'sms-outbound';
public const string TYPE_EMAIL_INBOUND = 'email-inbound';
public const string TYPE_EMAIL_OUTBOUND = 'email-outbound';
public const array CHANNELS = [
self::TYPE_SOFTPHONE,
self::TYPE_SOFTPHONE_INBOUND,
self::TYPE_CONFERENCE,
self::TYPE_SMS_INBOUND,
self::TYPE_SMS_OUTBOUND,
self::TYPE_EMAIL_INBOUND,
self::TYPE_EMAIL_OUTBOUND,
];
public const array PLAYABLE_CHANNELS = [
self::TYPE_SOFTPHONE,
self::TYPE_SOFTPHONE_INBOUND,
self::TYPE_CONFERENCE,
];
// Recording States
public const string RECORDING_OFF = 'off'; // Default state
public const string RECORDING_IN_PROGRESS = 'in-progress';
public const string RECORDING_PAUSED = 'paused';
public const string RECORDING_STOPPED = 'stopped'; // To never be resumed.
public const string RECORDING_RECORDED = 'recorded'; // At least some portion of it was recorded.
public const string RECORDING_FAILED = 'failed'; // Recording was attempted but failed for some reason.
// Live Stream States
public const int ON_AIR_DEFAULT = 0;
public const int ON_AIR_READY = 1;
public const int ON_AIR_PREPARING = 2;
public const int ON_AIR_STREAMING = 3;
public const int ON_AIR_FINISHED = 4;
public const int ON_AIR_NOT_STREAMED = 5;
public const int ON_AIR_ERROR = -1;
public const string SOURCE_GONG = 'gong';
public const string SOURCE_CHORUS = 'chorus';
public const string SOURCE_OUTLOOK = 'outlook';
public const string SOURCE_GOOGLE = 'google';
// Activity Providers
public const string PROVIDER_TWILIO = 'twilio'; // XXX: This is run via the Jiminny Provider.
public const string PROVIDER_OUTREACH = 'outreach';
public const string PROVIDER_ZOOM_BOT = 'zoom-bot';
public const string PROVIDER_SALESLOFT = 'salesloft';
public const string PROVIDER_GOOGLE = 'google';
public const string PROVIDER_AIRCALL = 'aircall';
public const string PROVIDER_JUSTCALL = 'justcall';
public const string PROVIDER_GOOGLE_MEET = 'google-meet';
public const string PROVIDER_GONG = 'gong';
public const string PROVIDER_HUBSPOT = 'hubspot';
public const string PROVIDER_CLOSE = 'close';
public const string PROVIDER_TEAMS = 'ms-teams';
public const string PROVIDER_SALESFORCE = 'salesforce';
public const string PROVIDER_GROOVE = 'groove';
public const string PROVIDER_XANT = 'xant';
public const string PROVIDER_OFFICE = 'office';
public const string PROVIDER_NATTERBOX = 'natterbox';
public const string PROVIDER_RINGCENTRAL = 'ringcentral';
public const string PROVIDER_RINGCENTRAL_VIDEO = 'ringcentral-video';
public const string PROVIDER_GOTOMEETING = 'go-to-meeting';
public const string PROVIDER_DEMODESK = 'demo-desk';
public const string PROVIDER_DIALPAD = 'dialpad';
public const string PROVIDER_ZOOM_PHONE = 'zoom-phone';
public const string PROVIDER_CLOUDCALL = 'cloudcall';
public const string PROVIDER_CLOUDCALL_US = 'cloudcall-us';
public const string PROVIDER_EIGHT_BY_EIGHT = 'eight-by-eight'; // "8x8" UK
public const string PROVIDER_EIGHT_BY_EIGHT_CA = 'eight-by-eight-ca'; // "8x8" Canada
public const string PROVIDER_EIGHT_BY_EIGHT_AP = 'eight-by-eight-ap'; // "8x8" Australia
public const string PROVIDER_EIGHT_BY_EIGHT_US_EAST = 'eight-by-eight-use'; // "8x8" US East
public const string PROVIDER_EIGHT_BY_EIGHT_US_WEST = 'eight-by-eight-usw'; // "8x8" US West
public const string PROVIDER_CONNECT_AND_SELL = 'connect-and-sell';
public const string PROVIDER_CLOUD_TALK = 'cloud-talk';
public const string PROVIDER_AMAZON_CONNECT = 'amazon-connect';
public const string PROVIDER_VONAGE = 'vonage';
public const string PROVIDER_MIGRATOR = 'migrator';
public const string PROVIDER_UPLOADER = 'uploader';
public const string PROVIDER_TALKDESK = 'talkdesk';
public const string PROVIDER_TWILIO_FLEX = 'twilio-flex';
public const string PROVIDER_TWILIO_FLEX_DIRECT = 'twilio-flex-direct';
public const string PROVIDER_TWILIO_VIDEO = 'twilio-video';
public const string PROVIDER_AVAYA = 'avaya';
public const string PROVIDER_TELUS = 'telus';
public const string PROVIDER_FIVE_NINE = 'five-nine';
public const string PROVIDER_APOLLO = 'apollo';
public const string PROVIDER_ORUM = 'orum';
public const string PROVIDER_BLOOBIRDS = 'bloobirds';
/**
* @const API_PROVIDERS
* A list of integrations that import calls via API instead of webhooks
*/
public const array API_PROVIDERS = [
self::PROVIDER_OUTREACH,
self::PROVIDER_SALESLOFT,
self::PROVIDER_HUBSPOT,
self::PROVIDER_GROOVE,
self::PROVIDER_XANT,
self::PROVIDER_NATTERBOX,
self::PROVIDER_CLOUDCALL,
self::PROVIDER_CLOUDCALL_US,
self::PROVIDER_EIGHT_BY_EIGHT,
self::PROVIDER_EIGHT_BY_EIGHT_CA,
self::PROVIDER_EIGHT_BY_EIGHT_AP,
self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,
self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,
self::PROVIDER_CONNECT_AND_SELL,
self::PROVIDER_CLOUD_TALK,
self::PROVIDER_AMAZON_CONNECT,
self::PROVIDER_VONAGE,
self::PROVIDER_TALKDESK,
self::PROVIDER_TWILIO_VIDEO,
self::PROVIDER_TWILIO_FLEX,
self::PROVIDER_TWILIO_FLEX_DIRECT,
self::PROVIDER_FIVE_NINE,
self::PROVIDER_APOLLO,
self::PROVIDER_ORUM,
self::PROVIDER_BLOOBIRDS,
self::PROVIDER_RINGCENTRAL,
self::PROVIDER_AVAYA,
self::PROVIDER_TELUS,
];
public const array FINITE_STATES = [
self::TYPE_SOFTPHONE => [
self::STATUS_COMPLETED,
self::STATUS_FAILED,
self::STATUS_NO_ANSWER,
self::STATUS_BUSY,
],
self::TYPE_SOFTPHONE_INBOUND => [
self::STATUS_COMPLETED,
self::STATUS_FAILED,
self::STATUS_NO_ANSWER,
self::STATUS_BUSY,
],
self::TYPE_CONFERENCE => self::FINITE_STATES_CONFERENCE,
];
public const array FINITE_STATES_CONFERENCE = [
self::STATUS_COMPLETED,
self::STATUS_FAILED,
self::STATUS_CANCELLED,
];
public const array MEETING_BOT_JOIN_ATTEMPTED = [
self::STATUS_BOT_INSTANCE_WAITING_LOBBY,
self::STATUS_BOT_INSTANCE_STARTED,
];
public static array $enumStatuses = [
self::STATUS_SCHEDULED,
self::STATUS_PENDING,
self::STATUS_RINGING,
self::STATUS_IN_PROGRESS,
self::STATUS_COMPLETED,
self::STATUS_CANCELLED,
self::STATUS_BUSY,
self::STATUS_NO_ANSWER,
self::STATUS_FAILED,
self::STATUS_ACCEPTED,
self::STATUS_QUEUED,
self::STATUS_SENDING,
self::STATUS_SENT,
self::STATUS_RESENT,
self::STATUS_DELIVERED,
self::STATUS_UNDELIVERED,
self::STATUS_RECEIVING,
self::STATUS_RECEIVED,
self::STATUS_BOT_INSTANCE_WAITING_LOBBY,
self::STATUS_STARTING_SOON,
self::STATUS_BOT_INSTANCE_WORKER_ASSIGNED,
self::STATUS_BOT_INSTANCE_STARTED,
self::STATUS_DUPLICATED,
];
public static array $enumProviders = [
self::PROVIDER_TWILIO,
self::PROVIDER_OUTREACH,
self::PROVIDER_ZOOM_BOT,
self::PROVIDER_SALESLOFT,
self::PROVIDER_AIRCALL,
self::PROVIDER_JUSTCALL,
self::PROVIDER_GOOGLE_MEET,
self::PROVIDER_GONG,
self::PROVIDER_HUBSPOT,
self::PROVIDER_CLOSE,
self::PROVIDER_TEAMS,
self::PROVIDER_SALESFORCE,
self::PROVIDER_GROOVE,
self::PROVIDER_XANT,
self::PROVIDER_GOOGLE,
self::PROVIDER_OFFICE,
self::PROVIDER_NATTERBOX,
self::PROVIDER_RINGCENTRAL,
self::PROVIDER_RINGCENTRAL_VIDEO,
self::PROVIDER_GOTOMEETING,
self::PROVIDER_DEMODESK,
self::PROVIDER_DIALPAD,
self::PROVIDER_ZOOM_PHONE,
self::PROVIDER_CLOUDCALL,
self::PROVIDER_CLOUDCALL_US,
self::PROVIDER_EIGHT_BY_EIGHT,
self::PROVIDER_EIGHT_BY_EIGHT_CA,
self::PROVIDER_EIGHT_BY_EIGHT_AP,
self::PROVIDER_EIGHT_BY_EIGHT_US_EAST,
self::PROVIDER_EIGHT_BY_EIGHT_US_WEST,
self::PROVIDER_CONNECT_AND_SELL,
self::PROVIDER_CLOUD_TALK,
self::PROVIDER_AMAZON_CONNECT,
self::PROVIDER_VONAGE,
self::PROVIDER_TALKDESK,
self::PROVIDER_TWILIO_FLEX,
self::PROVIDER_TWILIO_FLEX_DIRECT,
self::PROVIDER_TWILIO_VIDEO,
self::PROVIDER_AVAYA,
self::PROVIDER_TELUS,
self::PROVIDER_FIVE_NINE,
self::PROVIDER_APOLLO,
self::PROVIDER_ORUM,
self::PROVIDER_BLOOBIRDS,
];
public static $enumRecordingStates = [
self::RECORDING_OFF, // Default state
self::RECORDING_IN_PROGRESS,
self::RECORDING_PAUSED,
self::RECORDING_STOPPED,
self::RECORDING_RECORDED,
self::RECORDING_FAILED,
];
// @Important:
// This collection is not used anywhere, and is fully duplicated by the Channels const.
// Validate if it is referred somehow via the enum trait, and if not, remove it entirely.
// An even better strategy will be to move all those constants to a dedicated class
protected array $enumTypes = [
self::TYPE_SOFTPHONE,
self::TYPE_SOFTPHONE_INBOUND,
self::TYPE_CONFERENCE,
self::TYPE_SMS_INBOUND,
self::TYPE_SMS_OUTBOUND,
self::TYPE_EMAIL_INBOUND,
self::TYPE_EMAIL_OUTBOUND,
];
protected static $enumFailedStatuses = [
self::STATUS_NO_ANSWER,
self::STATUS_FAILED,
self::STATUS_BUSY,
self::STATUS_CANCELLED,
];
protected $table = 'activities';
protected $fillable = [
// Type of activity.
'type', // @todo refactor to `channel`
// The activity type.
'playbook_category_id',
// User who hosts the activity.
'user_id',
// Related Lead record (if applicable)
'lead_id',
// Related Account record (if applicable)
'account_id',
// Related Contact record (if applicable)
'contact_id',
// Related Opportunity record (if applicable)
'opportunity_id',
// Stage of activity.
'stage_id',
// Value of opportunity.
'value',
// If the activity relates to a CRM task.
'crm_provider_id',
// If the activity was created through an external device.
'device_id',
// the activity's language code
'language',
// transcription id
'transcription_id',
// Duration of the call, with microseconds precision.
'duration',
// One of enumStatuses above.
'status',
// Have we reminded them to log the call?
'log_reminder_sent_at',
// If activity is private or inter-org, flagged here.
'is_internal',
// Managers and above can mark a call as private, to exclude it from other team members
'is_private',
'is_processed',
// Boolean for this activity being instant invite handled.
'is_instant_invite',
// If activity is in recording state, flagged here.
'recording_state',
// If activity recording is overidden from default.
'recording_preference',
// if recording did (not) happen, why that is
'recording_reason_code',
// Average score, updated during
'average_score',
// Summary that the organizer has taken after the call.
'summary',
// Subject of the activity, usually taken from calendar event.
'title',
// Description of the activity, usually taken from calendar event.
'description',
// Start time, usually taken from calendar event.
'scheduled_start_time',
// End time, usually taken from calendar event.
'scheduled_end_time',
// When the call actually started.
'actual_start_time',
// When the call actually ended.
'actual_end_time',
// SMS: Message reference
'telephony_provider_id',
// SMS: Participant who sent message
'from_participant_id',
// SMS: Participant who should receive the message
'to_participant_id',
// When an external guest joins an organizers meeting room and the organizer is not present,
// send them an SMS notification that someone has joined.
'organizer_notified_at',
// where was the activity imported from
'source',
// The id in the source system (e.g. the bot id in Recall.ai)
'external_id',
// The provider, by default it is twilio.
'provider',
// Meeting location url
'location',
// The snapshot for displaying a poster image.
'poster_path',
'crm_configuration_id',
// If there is an automated message that the conversation is being recorded
'has_recording_prompt',
// If the activity is being live-streamed
'on_air',
'calendar_event_id',
];
protected $appends = [
'id_string',
'organizer',
];
protected $hidden = [
'uuid',
];
protected $visible = [
'id_string',
'type',
'duration',
'average_score',
'status',
'log_reminder_sent_at',
'title',
'description',
'is_internal',
'scheduled_start_time',
'scheduled_end_time',
'actual_start_time',
'actual_end_time',
'user',
'category',
'account',
'contact',
'opportunity',
'lead',
'stage',
'stats',
'participants',
'playlists',
'tracks',
'comments',
'plays',
'coachingFeedbacks',
'shares',
'favorites',
'language',
'transcription',
'is_private',
'is_instant_invite',
'on_air',
'calendar_event_id',
];
protected function casts(): array
{
return [
'scheduled_start_time' => 'datetime',
'scheduled_end_time' => 'datetime',
'actual_start_time' => 'datetime',
'actual_end_time' => 'datetime',
'organizer_notified_at' => 'datetime',
'log_reminder_sent_at' => 'datetime',
'is_internal' => 'boolean',
'duration' => 'integer',
'average_score' => 'decimal:2',
'is_private' => 'boolean',
'is_processed' => 'boolean',
'is_instant_invite' => 'boolean',
'value' => 'decimal:2',
'recording_preference' => 'boolean',
'recording_reason_code' => 'integer',
'has_recording_prompt' => 'boolean',
'on_air' => 'integer',
];
}
protected static function boot()
{
parent::boot();
static::updated(static function (Activity $activity) {
// If activity is about to start (pending, ringing, in-progress) or event is scheduled in less than 1 week
if (in_array($activity->status, [Activity::STATUS_PENDING, Activity::STATUS_RINGING, Activity::STATUS_IN_PROGRESS], true) ||
($activity->scheduled_start_time && (int) $activity->scheduled_start_time->diffInWeeks(new Carbon(), true) < 1)) {
if ($activity->isDirty('status')) {
event(new StatusUpdated($activity));
}
if ($activity->isDirty('stage_id')) {
event(new StageUpdated($activity));
}
if ($activity->isDirty(['lead_id', 'account_id', 'contact_id'])) {
event(new ProspectUpdated($activity));
}
if ($activity->isDirty('opportunity_id')) {
event(new ActivityUpdated($activity, 'activity.opportunity-updated', Auth::user()));
}
if ($activity->isDirty('title')) {
event(new TitleUpdated($activity));
}
}
if ($activity->isDirty('playbook_category_id')) {
event(new ActivityTypeUpdated($activity));
}
});
static::deleted(static function (Activity $activity) {
// Hard delete associated playlistActivities
$activity->playlistActivities()->delete();
});
}
public function getOrganizerAttribute(): ?Participant
{
$participant = $this->participants()->where('user_id', $this->user_id)->first();
if (! $participant instanceof Participant && $participant !== null) {
throw new RuntimeException(sprintf('$participant must be an instance of "%s" or null', Participant::class));
}
return $participant;
}
public function getFormattedValueAttribute()
{
$currencyCode = 'USD';
if ($this->opportunity) {
$currencyCode = $this->opportunity->getCurrencyCode();
}
$formatter = new CurrencyFormatter();
$formatter->setTextAttribute(NumberFormatter::CURRENCY_CODE, $currencyCode);
$formatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 0);
return $formatter->format($this->value, $currencyCode);
}
public function getProspectNameAttribute(): ?string
{
$prospectName = null;
if ($this->lead_id) {
$prospectName = $this->lead->name;
} elseif ($this->contact_id) {
$prospectName = $this->contact->name;
} elseif ($this->account_id) {
$prospectName = $this->account->name;
}
return $prospectName;
}
public function getProspectName(): ?string
{
/** @var string|null */
return $this->getAttribute('prospect_name');
}
/**
* Get activity title depending on prospect or title
*/
public function getActivityTitleAttribute(): ?string
{
$activityTitle = null;
if ($this->prospect && $this->prospect->getName()) {
if ($this->account_id) {
$activityTitle = $this->account->name;
} elseif ($this->lead_id) {
$activityTitle = $this->lead->company;
} elseif ($this->contact_id) {
$activityTitle = $this->contact->account ? $this->contact->account->name : $this->contact->name;
}
} elseif ($this->title) {
$activityTitle = $this->title;
}
return $activityTitle;
}
public function wasRecentlyCreated(): bool
{
return $this->wasRecentlyCreated;
}
public function getProspectTypeAttribute()
{
$prospectType = null;
if ($this->lead_id) {
$prospectType = 'Lead';
} elseif ($this->contact_id) {
$prospectType = 'Contact';
} elseif ($this->account_id) {
$prospectType = 'Account';
}
return $prospectType;
}
/**
* Return the best match for prospect. Results are in the following order of priority:
* 1. Lead
* 2. Contact
* 3. Account
* 4. NULL
*/
public function getProspectAttribute(): ?ProspectInterface
{
if ($this->hasLead()) {
return $this->getLead();
}
if ($this->hasContact()) {
return $this->getContact();
}
if ($this->hasAccount()) {
return $this->getAccount();
}
return null;
}
public function getTitleAttribute($value): ?string
{
return \getActivityTitleAttribute(
$this->user->name,
$this->getType(),
$value,
$this->prospect->name ?? null,
$this->from->national_phone_number ?? null
);
}
public function getTitle(): ?string
{
return $this->getAttribute('title');
}
public function getSummary(): ?string
{
return $this->getAttribute('summary');
}
public function isInternal(): bool
{
return $this->getAttribute('is_internal');
}
public function getIsPrivate(): bool
{
return $this->getAttribute('is_private');
}
public function getDescription(): ?string
{
return $this->getAttribute('description');
}
public function hasTitle(): bool
{
return $this->getOriginal('title') !== null;
}
public function getPlayCountAttribute()
{
return $this->getPlaysCountAttribute();
}
public function getPlaysCountAttribute()
{
if (! isset($this->attributes['plays_count'])) {
$this->loadCount('plays');
}
return $this->attributes['plays_count'];
}
public function getCommentCountAttribute()
{
return $this->getCommentsCountAttribute();
}
public function getCommentsCountAttribute()
{
if (! isset($this->attributes['comments_count'])) {
$this->loadCount('comments');
}
return $this->attributes['comments_count'];
}
public function getVisibleCommentsCountAttribute()
{
if (! isset($this->attributes['visible_comments_count'])) {
$activityCommentsService = app(ActivityCommentService::class);
$user = Auth::user() instanceof User ? Auth::user() : null;
$this->attributes['visible_comments_count'] = $activityCommentsService
->getVisibleCommentsCount($this, $user);
}
return $this->attributes['visible_comments_count'];
}
public function getShareCountAttribute()
{
return $this->getSharesCountAttribute();
}
public function getSharesCountAttribute()
{
if (! isset($this->attributes['shares_count'])) {
$this->loadCount('shares');
}
return $this->attributes['shares_count'];
}
/**
* Get the count of favorites playlists this activity appears in
*/
public function getFavoriteCountAttribute(): int
{
return $this->getFavoritesCountAttribute();
}
public function getFavoritesCountAttribute()
{
if (! isset($this->attributes['favorites_count'])) {
$this->loadCount('favorites');
}
return $this->attributes['favorites_count'];
}
public function getActiveParticipantsCountAttribute()
{
if (! isset($this->attributes['active_participants_count'])) {
$this->loadCount('activeParticipants');
}
return $this->attributes['active_participants_count'];
}
public function getTracksWithTelephonyCountAttribute()
{
if (! isset($this->attributes['tracks_with_telephony_count'])) {
$this->loadCount('tracksWithTelephony');
}
return $this->attributes['tracks_with_telephony_count'];
}
/**
* @TEMP
* $this->loadCount('tracksWithTelephony') throws null pointer exception
*/
public function countTracksWithTelephony(): int
{
return $this->tracks()->whereNotNull('telephony_provider_id')->count();
}
public function getDuration(): float
{
return $this->getAttribute('duration');
}
public function getDurationForHumansAttribute()
{
return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true);
}
public function getDurationForHumansShortAttribute(): string
{
return Carbon::now()->subSeconds($this->duration)->diffForHumans(now(), true, true);
}
public function hasRec...
|
NULL
|
|
74695
|
NULL
|
0
|
2026-04-23T10:11:24.873972+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776939084873_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DMSActivityslackcalVIewJiminny ...# platform-ticke DMSActivityslackcalVIewJiminny ...# platform-tickets# product_launchesc random# releases# sofia-office# support# thank-yous# the_people_of jimi...•? Direct messagesG. Vasil VasilevR. Adelina Petrova E3 Aneliva Angelova…8. Stoyan TomovFR. Nikolay Yankov. Petko KashinskiA. Aneliya AngelovaNikolav Nikolov&i. Mario GeorgievSe: Todor Stamatovf. Gabriela DurevaP. Galya Dimitrova EFf. Stefka Stoyanova2. Stoyan Tanev Ei AppsG Jira CloudToastMistonWindowHelp@ Describe what you are looking forToastHomeAboutTodayAdded by Toast for GitHubReview Toast APP 10-58 AM#491J1-20726. Identity particrpants tare-langAztre Grok by @Steliyan Georgievmerged by @Stelivan Georgiev (author) after approvalby stefka-liminnyReview loast APP 12:33 PM#12008 Jv 20541 extract common traitsPR review requested by@Vasil Vasilev#12008 Jv 20541 extracticommon traits by @VasilVasilev28 commits - 19 fileschangedJRA: 1Y-20541Deployment notes:•NoneDescrintion:jiminny/appAdded by Toast for GitHubMessage Toast+ Aa €<40 1 Support Daily • in 1h 49m 0 (57100% C42 & Thu 23 Apr 13:11:24fil://Users/lukas/Downloads/27022026_0000000026574472_SWIFT_OB72702260049200.pdfDate ModitiedToday at 11:16Today at 9:41Today at 9:41Today at 11:16Today at 10:02loday at 70:0zToday at 10:02Today at 10:02Today at 9:17Today at 9:77Today at 13:08Today at 13:08loday at 9.33Today at 9:331OT1v Kind3,8 MB JPEG image3,8 MBJPEG image3,7 MBJPEG image3,7 MBJPEG image1,8 Mb1.7 MBIJPEG imagJPEG image1,7 MB115 KBPDF Document114 KBPDF Document92 KB PDF Document92 KB/o KbPDF Document75 KBPDF DocumentС банкадскИЗДАДЕН ПРЕВОД BISERA EUR EURСтатус: ОсчетоводенУних 202 02277001 5151 15 номор27.02.2026на - Име на получателяЧЦДГ Мила5ВА3UввS&5К1007780гучателяunated Bulgarian Bank Jsca на получателяЯВИЗО ЗА ИзДРОДИТИЕ ПРОНО НАРЕЖДАНЕзод - информация за получателяДАНИЕЛ КОВАЛИК МАРТUвсsна баххата на получателяВид валута СумаEUR410.00 EUR801.89 BGN**Hanonuno.LUKAS KOVALIKBC0Y 13 4300026374472влзте в системактакси20260227029981107871•Та си: сиоаи чкананатедижуо:2 -с д. 953:3 лесака а опрателя1вт за ванката на наредителяРазмер на такса0.00 BUR17.02 гбоговодаване0.00 BGN**0872702260043200Подпис и Печат Банка ДСК:1 of 14 selected, 2 TB available...
|
NULL
|
1401794114950801687
|
NULL
|
idle
|
ocr
|
NULL
|
DMSActivityslackcalVIewJiminny ...# platform-ticke DMSActivityslackcalVIewJiminny ...# platform-tickets# product_launchesc random# releases# sofia-office# support# thank-yous# the_people_of jimi...•? Direct messagesG. Vasil VasilevR. Adelina Petrova E3 Aneliva Angelova…8. Stoyan TomovFR. Nikolay Yankov. Petko KashinskiA. Aneliya AngelovaNikolav Nikolov&i. Mario GeorgievSe: Todor Stamatovf. Gabriela DurevaP. Galya Dimitrova EFf. Stefka Stoyanova2. Stoyan Tanev Ei AppsG Jira CloudToastMistonWindowHelp@ Describe what you are looking forToastHomeAboutTodayAdded by Toast for GitHubReview Toast APP 10-58 AM#491J1-20726. Identity particrpants tare-langAztre Grok by @Steliyan Georgievmerged by @Stelivan Georgiev (author) after approvalby stefka-liminnyReview loast APP 12:33 PM#12008 Jv 20541 extract common traitsPR review requested by@Vasil Vasilev#12008 Jv 20541 extracticommon traits by @VasilVasilev28 commits - 19 fileschangedJRA: 1Y-20541Deployment notes:•NoneDescrintion:jiminny/appAdded by Toast for GitHubMessage Toast+ Aa €<40 1 Support Daily • in 1h 49m 0 (57100% C42 & Thu 23 Apr 13:11:24fil://Users/lukas/Downloads/27022026_0000000026574472_SWIFT_OB72702260049200.pdfDate ModitiedToday at 11:16Today at 9:41Today at 9:41Today at 11:16Today at 10:02loday at 70:0zToday at 10:02Today at 10:02Today at 9:17Today at 9:77Today at 13:08Today at 13:08loday at 9.33Today at 9:331OT1v Kind3,8 MB JPEG image3,8 MBJPEG image3,7 MBJPEG image3,7 MBJPEG image1,8 Mb1.7 MBIJPEG imagJPEG image1,7 MB115 KBPDF Document114 KBPDF Document92 KB PDF Document92 KB/o KbPDF Document75 KBPDF DocumentС банкадскИЗДАДЕН ПРЕВОД BISERA EUR EURСтатус: ОсчетоводенУних 202 02277001 5151 15 номор27.02.2026на - Име на получателяЧЦДГ Мила5ВА3UввS&5К1007780гучателяunated Bulgarian Bank Jsca на получателяЯВИЗО ЗА ИзДРОДИТИЕ ПРОНО НАРЕЖДАНЕзод - информация за получателяДАНИЕЛ КОВАЛИК МАРТUвсsна баххата на получателяВид валута СумаEUR410.00 EUR801.89 BGN**Hanonuno.LUKAS KOVALIKBC0Y 13 4300026374472влзте в системактакси20260227029981107871•Та си: сиоаи чкананатедижуо:2 -с д. 953:3 лесака а опрателя1вт за ванката на наредителяРазмер на такса0.00 BUR17.02 гбоговодаване0.00 BGN**0872702260043200Подпис и Печат Банка ДСК:1 of 14 selected, 2 TB available...
|
74693
|
|
74694
|
NULL
|
0
|
2026-04-23T10:11:15.153222+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776939075153_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
PreviewFileEditViewGoToolsWindowHelpSupport Daily PreviewFileEditViewGoToolsWindowHelpSupport Daily - in 1h 49 mБг)100% <478Thu 23 Apr 13:11:14DOCKER (docker-compose)APP (-zsh)T81DOCKER181DEV (-zsh)O $8211DOCKER (docker-compose)docker_lamp_1fd/1'• '/usr/local/bin/php' 'artisan'meeting-bot:schedule-bot > */proc/1/2>81docker_lamp_12026-04-23 10:01:03 Running ['artisan'dialers:monitor-activities].1S DONEdocker_lamp_11/fd/1'l '/usr/local/bin/php' 'artisan' dialers:monitor-activities › '/proc/2>&1docker_lamp_12026-04-23 10:01:05 Running ['artisan'jiminny:monitor-social-accounts]1sDONEdocker_lamp_1-• '/usr/local/bin/php' 'artisan'jiminny:monitor-social-accounts > '/proc/1/fd/1'2>&1docker_lamp_1-2026-04-23 10:01:06 Running ['artisan' mailbox:skip-lists:refresh].1sDONEdocker_lamp_1l '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > */proc/1/fd/1'2>&1docker_lamp_1-2026-04-23 10:01:08 Running ['artisan' mailbox:batch:process --max-batches=15]1sDONEdocker_1amp_1-• '/usr/local/bin/php' 'artisan' mailbox:batch:process--max-batches=15 > */proc/1/fd/1' 2>&1docker_lamp_1 |2026-04-23 10:01:10 Running ['artisan' crm:sync-hubspot-objects]Spot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 09:56:11 (delay: 0s)docker_lamp_11 Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...docker_1amp_1I Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assignedan owner. skipping...docker_lamp_11 [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: Os)docker_lamp_1I Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...docker_1amp_11 [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)docker_lamp_11 [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)docker_lamp_1I Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assignedanownerskipping...docker_lamp_11 Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514)yet assigned an owner. skipping.docker_lamp_11 Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yetowner. skipping...docker_lamp_1I Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assignedowner. skipping...docker_lamp_11 Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635)is not yet assign*3screenpipe"Y2PROD (-zsh)Last login:Thu Apr 23 12:12:54 on consoleO $4-zshPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |13EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetrycould not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-JiminnyXIT5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX T6FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003*5PRODSTAGEPoetrycould not find a pyproject.toml file in /Users/lukas or its parentsFRONTENDPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IEXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|...
|
NULL
|
-7224783128921429678
|
NULL
|
idle
|
ocr
|
NULL
|
PreviewFileEditViewGoToolsWindowHelpSupport Daily PreviewFileEditViewGoToolsWindowHelpSupport Daily - in 1h 49 mБг)100% <478Thu 23 Apr 13:11:14DOCKER (docker-compose)APP (-zsh)T81DOCKER181DEV (-zsh)O $8211DOCKER (docker-compose)docker_lamp_1fd/1'• '/usr/local/bin/php' 'artisan'meeting-bot:schedule-bot > */proc/1/2>81docker_lamp_12026-04-23 10:01:03 Running ['artisan'dialers:monitor-activities].1S DONEdocker_lamp_11/fd/1'l '/usr/local/bin/php' 'artisan' dialers:monitor-activities › '/proc/2>&1docker_lamp_12026-04-23 10:01:05 Running ['artisan'jiminny:monitor-social-accounts]1sDONEdocker_lamp_1-• '/usr/local/bin/php' 'artisan'jiminny:monitor-social-accounts > '/proc/1/fd/1'2>&1docker_lamp_1-2026-04-23 10:01:06 Running ['artisan' mailbox:skip-lists:refresh].1sDONEdocker_lamp_1l '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > */proc/1/fd/1'2>&1docker_lamp_1-2026-04-23 10:01:08 Running ['artisan' mailbox:batch:process --max-batches=15]1sDONEdocker_1amp_1-• '/usr/local/bin/php' 'artisan' mailbox:batch:process--max-batches=15 > */proc/1/fd/1' 2>&1docker_lamp_1 |2026-04-23 10:01:10 Running ['artisan' crm:sync-hubspot-objects]Spot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 09:56:11 (delay: 0s)docker_lamp_11 Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...docker_1amp_1I Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assignedan owner. skipping...docker_lamp_11 [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: Os)docker_lamp_1I Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...docker_1amp_11 [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)docker_lamp_11 [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)docker_lamp_1I Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assignedanownerskipping...docker_lamp_11 Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514)yet assigned an owner. skipping.docker_lamp_11 Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yetowner. skipping...docker_lamp_1I Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assignedowner. skipping...docker_lamp_11 Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635)is not yet assign*3screenpipe"Y2PROD (-zsh)Last login:Thu Apr 23 12:12:54 on consoleO $4-zshPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |13EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetrycould not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-JiminnyXIT5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX T6FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003*5PRODSTAGEPoetrycould not find a pyproject.toml file in /Users/lukas or its parentsFRONTENDPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IEXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|...
|
74692
|
|
74612
|
NULL
|
0
|
2026-04-23T10:06:20.515050+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776938780515_m2.jpg...
|
Firefox
|
Електронно банкиране ДСК Директ от Банка ДСК — Per Електронно банкиране ДСК Директ от Банка ДСК — Personal...
|
True
|
www.dskdirect.bg/Page/default.aspx?user_id=1130906 www.dskdirect.bg/Page/default.aspx?user_id=11309067&session_id=0973061e3efc11f19bf8005056b65de5bp2HCYiDVMhiuG0pFA3unS5zBcmpaar5u4gwYCWqs9kJwvV9AN4ruaVY3n-b-NwdnNy4C0L3jqFoKiovSC3ZYA==U&xml_id=/bg-BG/01Individuals/05Transfers/09Landing/...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox (71) - [EMAIL] - Gmail
West DXP4800PLUS-B5F8
Inbox (71) - [EMAIL] - Gmail
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
install screenpipe - screenpipe docs
install screenpipe - screenpipe docs
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
how would I use screenpipe effectively - Google Search
how would I use screenpipe effectively - Google Search
Електронно банкиране ДСК Директ от Банка ДСК
Електронно банкиране ДСК Директ от Банка ДСК
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
LUKAS KOVALIK
1 Входяща поща
1
Входяща поща
Обратна връзка
Обратна връзка
English
English
Изход
Изход
СРЕДСТВА
СРЕДСТВА
КРЕДИТИ
КРЕДИТИ
КАРТИ
КАРТИ
БИТОВИ СМЕТКИ
БИТОВИ СМЕТКИ
ПРЕВОДИ
ПРЕВОДИ
СПЕСТЯВАНЕ
СПЕСТЯВАНЕ
ФОНДОВЕ
ФОНДОВЕ
ЗАЯВКИ
ЗАЯВКИ
ИЗВЕСТИЯ
ИЗВЕСТИЯ
СМАРТ ПРИЛОЖЕНИЯ
СМАРТ ПРИЛОЖЕНИЯ
НАСТРОЙКИ
НАСТРОЙКИ
Нов превод
Нов превод
Неизпратени
Неизпратени
Архив
Архив
PDF Авиза
PDF Авиза
Автоматични
Автоматични
Получатели
Получатели
Готови бланки
Готови бланки
Валутни курсове
Валутни курсове
Договорени курсове
Договорени курсове
Нов превод
Нов превод
Управление на бърз достъп до менюта.
Между мои сметки
Между мои сметки
Създай нов превод
Създай нов превод
Превод между свои сметки в Банка ДСК.
Не се изисква допълнително средство за подписване и потвърждаване на превода.
За суми над 5000 EUR може да се договори курс с дилър на Банката.
Възможно е изпълнение на превода с бъдеща дата или като периодичен превод.
Възможност за запазване на данните от платежното нареждане, като Готова бланка.
Междубанков
Междубанков
Създай нов превод
Създай нов превод
Превод по сметка в друга банка в България или чужбина.
Изисква потвърждение с валиден инструмент за подписване.
Възможен е избор на платежна система в зависимост от валутата на превода, срок на изпълнение и направлението на превода:
-
SWIFT
- преводи във валута към други банки извън ЕИП и преводи във валути, различни от евро към други банки в ЕИП. Може да бъде обикновен или експресен.
-
SEPA
- превод в EUR към други банки в ЕИП. Таксува се като обикновен кредитен превод в евро за държави от ЕИП.
-
TARGET2
- експресни преводи в реално време в EUR към банки участници в TARGET2 в страната и чужбина.
За суми над 5000 EUR е възможно да се договори курс с дилър на Банката.
Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.
По сметка в Банка ДСК
По сметка в Банка ДСК
Създай нов превод
Създай нов превод
Превод по сметка на друг клиент в Банка ДСК.
Изисква потвърждение с валиден инструмент за подписване.
За суми над 5000 EUR е възможно да се договори курс с дилър на Банката.
Възможно е изпълнение на превода с бъдеща дата или като периодичен превод.
Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.
Към бюджета
Към бюджета
Създай нов превод
Създай нов превод
Превод в евро към бюджетни сметки (за преводи към НАП, НОИ и др).
Изисква потвърждение с валиден инструмент за подписване.
Налична е опция за нареждане и изпълнение на превода с бъдеща дата или като периодичен превод.
Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.
Други
Други
Университетски такси
Университетски такси
Глоби КАТ
Глоби КАТ
Min наличност
Min наличност
Дарения
Дарения
За дистрибутори на търговци
За дистрибутори на търговци
e-Faktura
e-Faktura
Плащане на сейф
Плащане на сейф
*Фиксиран курс за целите на двойно обозначение 1 EUR = 1.95583 BGN
Потребителско ръководство - граждани
Потребителско ръководство - граждани
Общи условия за граждани
Общи условия за граждани
Тарифа за граждани
Тарифа за граждани
Call center:
*2375
0700 10 375
Потребителско ръководство - фирми
Потребителско ръководство - фирми
Общи условия за фирми
Общи условия за фирми
Тарифа за фирми
Тарифа за фирми
BIC/SWIFT на Банка ДСК: STSABGSF ©
2026 on DAIS eBank .NET
www.dskdirect.bg/Page/default.aspx?user_id=11309067&session_id=0973061e3efc11f19bf8005056b65de5bp2HCYiDVMhiuG0pFA3unS5zBcmpaar5u4gwYCWqs9kJwvV9AN4ruaVY3n-b-NwdnNy4C0L3jqFoKiovSC3ZYA==U&xml_id=/bg-BG/01Individuals/05Transfers/06Archive/...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.14478059,"top":0.0518755,"width":0.05501995,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (71) - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.19980054,"top":0.0518755,"width":0.05501995,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"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.14295213,"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":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":5,"bounds":{"left":0.15625,"top":0.10614525,"width":0.26263297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Today's Deals","depth":4,"bounds":{"left":0.14295213,"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":"Today's Deals","depth":5,"bounds":{"left":0.15625,"top":0.13886672,"width":0.024102394,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"install screenpipe - screenpipe docs","depth":4,"bounds":{"left":0.14295213,"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":"install screenpipe - screenpipe docs","depth":5,"bounds":{"left":0.15625,"top":0.17158818,"width":0.0631649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.14295213,"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":"New Tab","depth":5,"bounds":{"left":0.15625,"top":0.20430966,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.14295213,"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":"Screenpipe — Archive","depth":5,"bounds":{"left":0.15625,"top":0.23703113,"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.14295213,"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":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.15625,"top":0.2697526,"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.14295213,"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: db.sqlite","depth":5,"bounds":{"left":0.15625,"top":0.30247405,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Platform","depth":4,"bounds":{"left":0.14295213,"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":"Claude Platform","depth":5,"bounds":{"left":0.15625,"top":0.33519554,"width":0.027925532,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"rescue time detailed overview - Google Search","depth":4,"bounds":{"left":0.14295213,"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":"rescue time detailed overview - Google Search","depth":5,"bounds":{"left":0.15625,"top":0.367917,"width":0.08128324,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"how would I use screenpipe effectively - Google Search","depth":4,"bounds":{"left":0.14295213,"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":"how would I use screenpipe effectively - Google Search","depth":5,"bounds":{"left":0.15625,"top":0.40063846,"width":0.0965758,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Електронно банкиране ДСК Директ от Банка ДСК","depth":4,"bounds":{"left":0.14295213,"top":0.42218676,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Електронно банкиране ДСК Директ от Банка ДСК","depth":5,"bounds":{"left":0.15625,"top":0.43335995,"width":0.09059176,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.2443484,"top":0.4293695,"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.14577793,"top":0.45650437,"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.14577793,"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.15674867,"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.16788563,"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.17902261,"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.19015957,"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":"LUKAS KOVALIK","depth":14,"bounds":{"left":0.63547206,"top":0.06743815,"width":0.02825798,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1 Входяща поща","depth":12,"bounds":{"left":0.66638964,"top":0.0518755,"width":0.051695477,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":14,"bounds":{"left":0.68068486,"top":0.06943336,"width":0.0023271276,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Входяща поща","depth":13,"bounds":{"left":0.68766624,"top":0.06743815,"width":0.027759308,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Обратна връзка","depth":12,"bounds":{"left":0.7180851,"top":0.0518755,"width":0.04537899,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Обратна връзка","depth":14,"bounds":{"left":0.73038566,"top":0.06743815,"width":0.030418882,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"English","depth":12,"bounds":{"left":0.7634641,"top":0.0518755,"width":0.028091755,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"English","depth":14,"bounds":{"left":0.77576464,"top":0.06743815,"width":0.013131649,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Изход","depth":12,"bounds":{"left":0.7915558,"top":0.0518755,"width":0.026263298,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Изход","depth":14,"bounds":{"left":0.8038564,"top":0.06743815,"width":0.011303191,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"СРЕДСТВА","depth":14,"bounds":{"left":0.49800533,"top":0.096568234,"width":0.026263298,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"СРЕДСТВА","depth":15,"bounds":{"left":0.5006649,"top":0.11173184,"width":0.020944148,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"КРЕДИТИ","depth":14,"bounds":{"left":0.5255984,"top":0.096568234,"width":0.024767287,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"КРЕДИТИ","depth":15,"bounds":{"left":0.52825797,"top":0.11173184,"width":0.019448139,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"КАРТИ","depth":14,"bounds":{"left":0.55169547,"top":0.096568234,"width":0.01861702,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"КАРТИ","depth":15,"bounds":{"left":0.554355,"top":0.11173184,"width":0.013297873,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"БИТОВИ СМЕТКИ","depth":14,"bounds":{"left":0.5716423,"top":0.096568234,"width":0.039893616,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"БИТОВИ СМЕТКИ","depth":15,"bounds":{"left":0.57430184,"top":0.11173184,"width":0.034574468,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ПРЕВОДИ","depth":14,"bounds":{"left":0.6128657,"top":0.08858739,"width":0.025930852,"height":0.054269753},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ПРЕВОДИ","depth":15,"bounds":{"left":0.61552525,"top":0.10853951,"width":0.020611702,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"СПЕСТЯВАНЕ","depth":14,"bounds":{"left":0.64012635,"top":0.096568234,"width":0.031914894,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"СПЕСТЯВАНЕ","depth":15,"bounds":{"left":0.6427859,"top":0.11173184,"width":0.026595745,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ФОНДОВЕ","depth":14,"bounds":{"left":0.673371,"top":0.096568234,"width":0.026097074,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ФОНДОВЕ","depth":15,"bounds":{"left":0.6760306,"top":0.11173184,"width":0.020777926,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ЗАЯВКИ","depth":14,"bounds":{"left":0.70079786,"top":0.096568234,"width":0.021609042,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ЗАЯВКИ","depth":15,"bounds":{"left":0.7034575,"top":0.11173184,"width":0.016289894,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ИЗВЕСТИЯ","depth":14,"bounds":{"left":0.7237367,"top":0.096568234,"width":0.026928192,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ИЗВЕСТИЯ","depth":15,"bounds":{"left":0.72639626,"top":0.11173184,"width":0.021609042,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"СМАРТ ПРИЛОЖЕНИЯ","depth":14,"bounds":{"left":0.75199467,"top":0.096568234,"width":0.049534574,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"СМАРТ ПРИЛОЖЕНИЯ","depth":15,"bounds":{"left":0.7546542,"top":0.11173184,"width":0.044215426,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"НАСТРОЙКИ","depth":14,"bounds":{"left":0.80285907,"top":0.096568234,"width":0.030418882,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"НАСТРОЙКИ","depth":15,"bounds":{"left":0.8055186,"top":0.11173184,"width":0.025099734,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Нов превод","depth":14,"bounds":{"left":0.43882978,"top":0.15722266,"width":0.03174867,"height":0.03431764},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Нов превод","depth":15,"bounds":{"left":0.44281915,"top":0.16919394,"width":0.023769947,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Неизпратени","depth":14,"bounds":{"left":0.47257313,"top":0.16121309,"width":0.03507314,"height":0.030327214},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Неизпратени","depth":15,"bounds":{"left":0.4765625,"top":0.16919394,"width":0.027094414,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Архив","depth":14,"bounds":{"left":0.50964093,"top":0.16121309,"width":0.019946808,"height":0.030327214},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Архив","depth":15,"bounds":{"left":0.51363033,"top":0.16919394,"width":0.011968086,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"PDF Авиза","depth":14,"bounds":{"left":0.5315825,"top":0.16121309,"width":0.028756648,"height":0.030327214},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PDF Авиза","depth":15,"bounds":{"left":0.5355718,"top":0.16919394,"width":0.020777926,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Автоматични","depth":14,"bounds":{"left":0.56233376,"top":0.16121309,"width":0.03507314,"height":0.030327214},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Автоматични","depth":15,"bounds":{"left":0.56632316,"top":0.16919394,"width":0.027094414,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Получатели","depth":14,"bounds":{"left":0.5994016,"top":0.16121309,"width":0.032247342,"height":0.030327214},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Получатели","depth":15,"bounds":{"left":0.60339093,"top":0.16919394,"width":0.024268618,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Готови бланки","depth":14,"bounds":{"left":0.6336436,"top":0.16121309,"width":0.03756649,"height":0.030327214},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Готови бланки","depth":15,"bounds":{"left":0.63763297,"top":0.16919394,"width":0.029587766,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Валутни курсове","depth":14,"bounds":{"left":0.6732048,"top":0.16121309,"width":0.042386968,"height":0.030327214},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Валутни курсове","depth":15,"bounds":{"left":0.6771942,"top":0.16919394,"width":0.034408245,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Договорени курсове","depth":14,"bounds":{"left":0.71758646,"top":0.16121309,"width":0.049867023,"height":0.030327214},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Договорени курсове","depth":15,"bounds":{"left":0.7215758,"top":0.16919394,"width":0.041888297,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Нов превод","depth":12,"bounds":{"left":0.43882978,"top":0.21548285,"width":0.031083776,"height":0.031923383},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Нов превод","depth":13,"bounds":{"left":0.43882978,"top":0.22226655,"width":0.031083776,"height":0.018355945},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Управление на бърз достъп до менюта.","depth":13,"bounds":{"left":0.46991357,"top":0.21548285,"width":0.021276595,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Между мои сметки","depth":12,"bounds":{"left":0.44913563,"top":0.37270552,"width":0.10239362,"height":0.020351157},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Между мои сметки","depth":13,"bounds":{"left":0.47240692,"top":0.37270552,"width":0.055851065,"height":0.020351157},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Създай нов превод","depth":12,"bounds":{"left":0.47057846,"top":0.39704707,"width":0.059507977,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Създай нов превод","depth":13,"bounds":{"left":0.47789228,"top":0.4066241,"width":0.04488032,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Превод между свои сметки в Банка ДСК.","depth":13,"bounds":{"left":0.44913563,"top":0.4385475,"width":0.08211436,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Не се изисква допълнително средство за подписване и потвърждаване на превода.","depth":15,"bounds":{"left":0.45445478,"top":0.4592977,"width":0.09690824,"height":0.024740623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"За суми над 5000 EUR може да се договори курс с дилър на Банката.","depth":15,"bounds":{"left":0.45445478,"top":0.4840383,"width":0.0852726,"height":0.024740623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Възможно е изпълнение на превода с бъдеща дата или като периодичен превод.","depth":15,"bounds":{"left":0.45445478,"top":0.5087789,"width":0.09690824,"height":0.024740623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Възможност за запазване на данните от платежното нареждане, като Готова бланка.","depth":15,"bounds":{"left":0.45445478,"top":0.53351957,"width":0.09242021,"height":0.024740623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Междубанков","depth":12,"bounds":{"left":0.44913563,"top":0.6260974,"width":0.10239362,"height":0.020351157},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Междубанков","depth":13,"bounds":{"left":0.47955453,"top":0.6260974,"width":0.04155585,"height":0.020351157},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Създай нов превод","depth":12,"bounds":{"left":0.47057846,"top":0.65043896,"width":0.059507977,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Създай нов превод","depth":13,"bounds":{"left":0.47789228,"top":0.66001594,"width":0.04488032,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Превод по сметка в друга банка в България или чужбина.","depth":13,"bounds":{"left":0.44913563,"top":0.69193935,"width":0.09740692,"height":0.028731046},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Изисква потвърждение с валиден инструмент за подписване.","depth":15,"bounds":{"left":0.45445478,"top":0.7270551,"width":0.08577128,"height":0.024740623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Възможен е избор на платежна система в зависимост от валутата на превода, срок на изпълнение и направлението на превода:","depth":15,"bounds":{"left":0.45445478,"top":0.7517957,"width":0.094082445,"height":0.037110932},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":16,"bounds":{"left":0.45445478,"top":0.78890663,"width":0.003656915,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SWIFT","depth":17,"bounds":{"left":0.4581117,"top":0.78890663,"width":0.010970744,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"- преводи във валута към други банки извън ЕИП и преводи във валути, различни от евро към други банки в ЕИП. Може да бъде обикновен или експресен.","depth":16,"bounds":{"left":0.45445478,"top":0.78890663,"width":0.093417555,"height":0.049481247},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":16,"bounds":{"left":0.45445478,"top":0.83838785,"width":0.003656915,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SEPA","depth":17,"bounds":{"left":0.4581117,"top":0.83838785,"width":0.00880984,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"- превод в EUR към други банки в ЕИП. Таксува се като обикновен кредитен превод в евро за държави от ЕИП.","depth":16,"bounds":{"left":0.45445478,"top":0.83838785,"width":0.09624335,"height":0.037110932},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":16,"bounds":{"left":0.45445478,"top":0.87549883,"width":0.003656915,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"TARGET2","depth":17,"bounds":{"left":0.4581117,"top":0.87549883,"width":0.015791224,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"- експресни преводи в реално време в EUR към банки участници в TARGET2 в страната и чужбина.","depth":16,"bounds":{"left":0.45445478,"top":0.87549883,"width":0.095744684,"height":0.024740623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"За суми над 5000 EUR е възможно да се договори курс с дилър на Банката.","depth":15,"bounds":{"left":0.45445478,"top":0.9002394,"width":0.0965758,"height":0.024740623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.","depth":15,"bounds":{"left":0.45445478,"top":0.92498004,"width":0.09242021,"height":0.037110932},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"По сметка в Банка ДСК","depth":12,"bounds":{"left":0.57712764,"top":0.37270552,"width":0.10239362,"height":0.020351157},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"По сметка в Банка ДСК","depth":13,"bounds":{"left":0.5945811,"top":0.37270552,"width":0.0674867,"height":0.020351157},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Създай нов превод","depth":12,"bounds":{"left":0.59857047,"top":0.39704707,"width":0.059507977,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Създай нов превод","depth":13,"bounds":{"left":0.6058843,"top":0.4066241,"width":0.04488032,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Превод по сметка на друг клиент в Банка ДСК.","depth":13,"bounds":{"left":0.57712764,"top":0.4385475,"width":0.09458112,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Изисква потвърждение с валиден инструмент за подписване.","depth":15,"bounds":{"left":0.5824468,"top":0.4592977,"width":0.08577128,"height":0.024740623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"За суми над 5000 EUR е възможно да се договори курс с дилър на Банката.","depth":15,"bounds":{"left":0.5824468,"top":0.4840383,"width":0.0965758,"height":0.024740623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Възможно е изпълнение на превода с бъдеща дата или като периодичен превод.","depth":15,"bounds":{"left":0.5824468,"top":0.5087789,"width":0.09690824,"height":0.024740623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.","depth":15,"bounds":{"left":0.5824468,"top":0.53351957,"width":0.09242021,"height":0.037110932},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Към бюджета","depth":12,"bounds":{"left":0.57712764,"top":0.6260974,"width":0.10239362,"height":0.020351157},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Към бюджета","depth":13,"bounds":{"left":0.60821146,"top":0.6260974,"width":0.040226065,"height":0.020351157},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Създай нов превод","depth":12,"bounds":{"left":0.59857047,"top":0.65043896,"width":0.059507977,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Създай нов превод","depth":13,"bounds":{"left":0.6058843,"top":0.66001594,"width":0.04488032,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Превод в евро към бюджетни сметки (за преводи към НАП, НОИ и др).","depth":13,"bounds":{"left":0.57712764,"top":0.69193935,"width":0.1008976,"height":0.028731046},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Изисква потвърждение с валиден инструмент за подписване.","depth":15,"bounds":{"left":0.5824468,"top":0.7270551,"width":0.08577128,"height":0.024740623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Налична е опция за нареждане и изпълнение на превода с бъдеща дата или като периодичен превод.","depth":15,"bounds":{"left":0.5824468,"top":0.7517957,"width":0.09325133,"height":0.024740623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.","depth":15,"bounds":{"left":0.5824468,"top":0.7765363,"width":0.09242021,"height":0.037110932},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Други","depth":11,"bounds":{"left":0.70511967,"top":0.30207503,"width":0.10239362,"height":0.020351157},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Други","depth":12,"bounds":{"left":0.70511967,"top":0.30207503,"width":0.018118352,"height":0.020351157},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Университетски такси","depth":13,"bounds":{"left":0.70511967,"top":0.3264166,"width":0.053025264,"height":0.016360734},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Университетски такси","depth":14,"bounds":{"left":0.70511967,"top":0.3264166,"width":0.051695477,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Глоби КАТ","depth":13,"bounds":{"left":0.70511967,"top":0.349162,"width":0.024601065,"height":0.016360734},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Глоби КАТ","depth":14,"bounds":{"left":0.70511967,"top":0.349162,"width":0.023271276,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Min наличност","depth":13,"bounds":{"left":0.70511967,"top":0.3719074,"width":0.035405584,"height":0.016360734},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Min наличност","depth":14,"bounds":{"left":0.70511967,"top":0.3719074,"width":0.034075797,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Дарения","depth":13,"bounds":{"left":0.70511967,"top":0.39465284,"width":0.021775266,"height":0.016360734},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Дарения","depth":14,"bounds":{"left":0.70511967,"top":0.39465284,"width":0.02044548,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"За дистрибутори на търговци","depth":13,"bounds":{"left":0.70511967,"top":0.41739824,"width":0.0709774,"height":0.016360734},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"За дистрибутори на търговци","depth":14,"bounds":{"left":0.70511967,"top":0.41739824,"width":0.0696476,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"e-Faktura","depth":13,"bounds":{"left":0.70511967,"top":0.44014364,"width":0.02244016,"height":0.016360734},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"e-Faktura","depth":14,"bounds":{"left":0.70511967,"top":0.44014364,"width":0.021110373,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Плащане на сейф","depth":13,"bounds":{"left":0.70511967,"top":0.46288908,"width":0.042220745,"height":0.016360734},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Плащане на сейф","depth":14,"bounds":{"left":0.70511967,"top":0.46288908,"width":0.04089096,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*Фиксиран курс за целите на двойно обозначение 1 EUR = 1.95583 BGN","depth":12,"bounds":{"left":0.44614363,"top":0.8156425,"width":0.16456117,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Потребителско ръководство - граждани","depth":13,"bounds":{"left":0.45329124,"top":0.96847564,"width":0.09391622,"height":0.016360734},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Потребителско ръководство - граждани","depth":14,"bounds":{"left":0.45329124,"top":0.96847564,"width":0.09391622,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Общи условия за граждани","depth":13,"bounds":{"left":0.46825132,"top":0.9912211,"width":0.06382979,"height":0.00877893},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Общи условия за граждани","depth":14,"bounds":{"left":0.46825132,"top":0.9912211,"width":0.06382979,"height":0.00877893},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Тарифа за граждани","depth":13,"bounds":{"left":0.47623006,"top":1.0,"width":0.047872342,"height":-0.013966441},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Тарифа за граждани","depth":14,"bounds":{"left":0.47623006,"top":1.0,"width":0.047872342,"height":-0.013966441},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Call center:","depth":13,"bounds":{"left":0.5900931,"top":0.96847564,"width":0.025930852,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*2375","depth":13,"bounds":{"left":0.6203458,"top":0.96847564,"width":0.014960106,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0700 10 375","depth":13,"bounds":{"left":0.63962764,"top":0.96847564,"width":0.027094414,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Потребителско ръководство - фирми","depth":13,"bounds":{"left":0.71276593,"top":0.96847564,"width":0.08726729,"height":0.016360734},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Потребителско ръководство - фирми","depth":14,"bounds":{"left":0.71276593,"top":0.96847564,"width":0.08726729,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Общи условия за фирми","depth":13,"bounds":{"left":0.7278923,"top":0.9912211,"width":0.05701463,"height":0.00877893},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Общи условия за фирми","depth":14,"bounds":{"left":0.7278923,"top":0.9912211,"width":0.05701463,"height":0.00877893},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Тарифа за фирми","depth":13,"bounds":{"left":0.735871,"top":1.0,"width":0.04105718,"height":-0.013966441},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Тарифа за фирми","depth":14,"bounds":{"left":0.735871,"top":1.0,"width":0.04105718,"height":-0.013966441},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"BIC/SWIFT на Банка ДСК: STSABGSF ©","depth":12,"bounds":{"left":0.57413566,"top":1.0,"width":0.066821806,"height":-0.04549086},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026 on DAIS eBank .NET","depth":12,"bounds":{"left":0.6409575,"top":1.0,"width":0.04155585,"height":-0.04549086},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"www.dskdirect.bg/Page/default.aspx?user_id=11309067&session_id=0973061e3efc11f19bf8005056b65de5bp2HCYiDVMhiuG0pFA3unS5zBcmpaar5u4gwYCWqs9kJwvV9AN4ruaVY3n-b-NwdnNy4C0L3jqFoKiovSC3ZYA==U&xml_id=/bg-BG/01Individuals/05Transfers/06Archive/","depth":5,"bounds":{"left":0.25797874,"top":0.9876297,"width":0.48404256,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
6615211309799800147
|
-3027388656482242287
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox (71) - [EMAIL] - Gmail
West DXP4800PLUS-B5F8
Inbox (71) - [EMAIL] - Gmail
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
install screenpipe - screenpipe docs
install screenpipe - screenpipe docs
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
how would I use screenpipe effectively - Google Search
how would I use screenpipe effectively - Google Search
Електронно банкиране ДСК Директ от Банка ДСК
Електронно банкиране ДСК Директ от Банка ДСК
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
LUKAS KOVALIK
1 Входяща поща
1
Входяща поща
Обратна връзка
Обратна връзка
English
English
Изход
Изход
СРЕДСТВА
СРЕДСТВА
КРЕДИТИ
КРЕДИТИ
КАРТИ
КАРТИ
БИТОВИ СМЕТКИ
БИТОВИ СМЕТКИ
ПРЕВОДИ
ПРЕВОДИ
СПЕСТЯВАНЕ
СПЕСТЯВАНЕ
ФОНДОВЕ
ФОНДОВЕ
ЗАЯВКИ
ЗАЯВКИ
ИЗВЕСТИЯ
ИЗВЕСТИЯ
СМАРТ ПРИЛОЖЕНИЯ
СМАРТ ПРИЛОЖЕНИЯ
НАСТРОЙКИ
НАСТРОЙКИ
Нов превод
Нов превод
Неизпратени
Неизпратени
Архив
Архив
PDF Авиза
PDF Авиза
Автоматични
Автоматични
Получатели
Получатели
Готови бланки
Готови бланки
Валутни курсове
Валутни курсове
Договорени курсове
Договорени курсове
Нов превод
Нов превод
Управление на бърз достъп до менюта.
Между мои сметки
Между мои сметки
Създай нов превод
Създай нов превод
Превод между свои сметки в Банка ДСК.
Не се изисква допълнително средство за подписване и потвърждаване на превода.
За суми над 5000 EUR може да се договори курс с дилър на Банката.
Възможно е изпълнение на превода с бъдеща дата или като периодичен превод.
Възможност за запазване на данните от платежното нареждане, като Готова бланка.
Междубанков
Междубанков
Създай нов превод
Създай нов превод
Превод по сметка в друга банка в България или чужбина.
Изисква потвърждение с валиден инструмент за подписване.
Възможен е избор на платежна система в зависимост от валутата на превода, срок на изпълнение и направлението на превода:
-
SWIFT
- преводи във валута към други банки извън ЕИП и преводи във валути, различни от евро към други банки в ЕИП. Може да бъде обикновен или експресен.
-
SEPA
- превод в EUR към други банки в ЕИП. Таксува се като обикновен кредитен превод в евро за държави от ЕИП.
-
TARGET2
- експресни преводи в реално време в EUR към банки участници в TARGET2 в страната и чужбина.
За суми над 5000 EUR е възможно да се договори курс с дилър на Банката.
Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.
По сметка в Банка ДСК
По сметка в Банка ДСК
Създай нов превод
Създай нов превод
Превод по сметка на друг клиент в Банка ДСК.
Изисква потвърждение с валиден инструмент за подписване.
За суми над 5000 EUR е възможно да се договори курс с дилър на Банката.
Възможно е изпълнение на превода с бъдеща дата или като периодичен превод.
Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.
Към бюджета
Към бюджета
Създай нов превод
Създай нов превод
Превод в евро към бюджетни сметки (за преводи към НАП, НОИ и др).
Изисква потвърждение с валиден инструмент за подписване.
Налична е опция за нареждане и изпълнение на превода с бъдеща дата или като периодичен превод.
Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.
Други
Други
Университетски такси
Университетски такси
Глоби КАТ
Глоби КАТ
Min наличност
Min наличност
Дарения
Дарения
За дистрибутори на търговци
За дистрибутори на търговци
e-Faktura
e-Faktura
Плащане на сейф
Плащане на сейф
*Фиксиран курс за целите на двойно обозначение 1 EUR = 1.95583 BGN
Потребителско ръководство - граждани
Потребителско ръководство - граждани
Общи условия за граждани
Общи условия за граждани
Тарифа за граждани
Тарифа за граждани
Call center:
*2375
0700 10 375
Потребителско ръководство - фирми
Потребителско ръководство - фирми
Общи условия за фирми
Общи условия за фирми
Тарифа за фирми
Тарифа за фирми
BIC/SWIFT на Банка ДСК: STSABGSF ©
2026 on DAIS eBank .NET
www.dskdirect.bg/Page/default.aspx?user_id=11309067&session_id=0973061e3efc11f19bf8005056b65de5bp2HCYiDVMhiuG0pFA3unS5zBcmpaar5u4gwYCWqs9kJwvV9AN4ruaVY3n-b-NwdnNy4C0L3jqFoKiovSC3ZYA==U&xml_id=/bg-BG/01Individuals/05Transfers/06Archive/...
|
NULL
|
|
74611
|
NULL
|
0
|
2026-04-23T10:06:20.583662+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776938780583_m1.jpg...
|
Firefox
|
Електронно банкиране ДСК Директ от Банка ДСК — Per Електронно банкиране ДСК Директ от Банка ДСК — Personal...
|
True
|
www.dskdirect.bg/Page/default.aspx?user_id=1130906 www.dskdirect.bg/Page/default.aspx?user_id=11309067&session_id=0973061e3efc11f19bf8005056b65de5bp2HCYiDVMhiuG0pFA3unS5zBcmpaar5u4gwYCWqs9kJwvV9AN4ruaVY3n-b-NwdnNy4C0L3jqFoKiovSC3ZYA==U&xml_id=/bg-BG/01Individuals/05Transfers/09Landing/...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox (71) - [EMAIL] - Gmail
West DXP4800PLUS-B5F8
Inbox (71) - [EMAIL] - Gmail
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
install screenpipe - screenpipe docs
install screenpipe - screenpipe docs
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
how would I use screenpipe effectively - Google Search
how would I use screenpipe effectively - Google Search
Електронно банкиране ДСК Директ от Банка ДСК
Електронно банкиране ДСК Директ от Банка ДСК
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
LUKAS KOVALIK
1 Входяща поща
1
Входяща поща
Обратна връзка
Обратна връзка
English
English
Изход
Изход
СРЕДСТВА
СРЕДСТВА
КРЕДИТИ
КРЕДИТИ
КАРТИ
КАРТИ
БИТОВИ СМЕТКИ
БИТОВИ СМЕТКИ
ПРЕВОДИ
ПРЕВОДИ
СПЕСТЯВАНЕ
СПЕСТЯВАНЕ
ФОНДОВЕ
ФОНДОВЕ
ЗАЯВКИ
ЗАЯВКИ
ИЗВЕСТИЯ
ИЗВЕСТИЯ
СМАРТ ПРИЛОЖЕНИЯ
СМАРТ ПРИЛОЖЕНИЯ
НАСТРОЙКИ
НАСТРОЙКИ
Нов превод
Нов превод
Неизпратени
Неизпратени
Архив
Архив
PDF Авиза
PDF Авиза
Автоматични
Автоматични
Получатели
Получатели
Готови бланки
Готови бланки
Валутни курсове
Валутни курсове
Договорени курсове
Договорени курсове
Нов превод
Нов превод
Управление на бърз достъп до менюта.
Между мои сметки
Между мои сметки
Създай нов превод
Създай нов превод
Превод между свои сметки в Банка ДСК.
Не се изисква допълнително средство за подписване и потвърждаване на превода.
За суми над 5000 EUR може да се договори курс с дилър на Банката.
Възможно е изпълнение на превода с бъдеща дата или като периодичен превод.
Възможност за запазване на данните от платежното нареждане, като Готова бланка.
Междубанков
Междубанков
Създай нов превод
Създай нов превод
Превод по сметка в друга банка в България или чужбина.
Изисква потвърждение с валиден инструмент за подписване.
Възможен е избор на платежна система в зависимост от валутата на превода, срок на изпълнение и направлението на превода:
-
SWIFT
- преводи във валута към други банки извън ЕИП и преводи във валути, различни от евро към други банки в ЕИП. Може да бъде обикновен или експресен.
-
SEPA
- превод в EUR към други банки в ЕИП. Таксува се като обикновен кредитен превод в евро за държави от ЕИП.
-
TARGET2
- експресни преводи в реално време в EUR към банки участници в TARGET2 в страната и чужбина.
За суми над 5000 EUR е възможно да се договори курс с дилър на Банката.
Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.
По сметка в Банка ДСК
По сметка в Банка ДСК
Създай нов превод
Създай нов превод
Превод по сметка на друг клиент в Банка ДСК.
Изисква потвърждение с валиден инструмент за подписване.
За суми над 5000 EUR е възможно да се договори курс с дилър на Банката.
Възможно е изпълнение на превода с бъдеща дата или като периодичен превод.
Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.
Към бюджета
Към бюджета
Създай нов превод
Създай нов превод
Превод в евро към бюджетни сметки (за преводи към НАП, НОИ и др).
Изисква потвърждение с валиден инструмент за подписване.
Налична е опция за нареждане и изпълнение на превода с бъдеща дата или като периодичен превод.
Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.
Други
Други
Университетски такси
Университетски такси
Глоби КАТ
Глоби КАТ
Min наличност
Min наличност
Дарения
Дарения
За дистрибутори на търговци
За дистрибутори на търговци
e-Faktura
e-Faktura
Плащане на сейф
Плащане на сейф
*Фиксиран курс за целите на двойно обозначение 1 EUR = 1.95583 BGN
Потребителско ръководство - граждани
Потребителско ръководство - граждани
Общи условия за граждани
Общи условия за граждани
Тарифа за граждани
Тарифа за граждани
Call center:
*2375
0700 10 375
Потребителско ръководство - фирми
Потребителско ръководство - фирми
Общи условия за фирми
Общи условия за фирми
Тарифа за фирми
Тарифа за фирми
BIC/SWIFT на Банка ДСК: STSABGSF ©
2026 on DAIS eBank .NET
www.dskdirect.bg/Page/default.aspx?user_id=11309067&session_id=0973061e3efc11f19bf8005056b65de5bp2HCYiDVMhiuG0pFA3unS5zBcmpaar5u4gwYCWqs9kJwvV9AN4ruaVY3n-b-NwdnNy4C0L3jqFoKiovSC3ZYA==U&xml_id=/bg-BG/01Individuals/05Transfers/06Archive/...
|
[{"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":false},{"role":"AXRadioButton","text":"Inbox (71) - 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":"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":"install screenpipe - screenpipe docs","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"install screenpipe - screenpipe docs","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":"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":"rescue time detailed overview - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"rescue time detailed overview - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"how would I use screenpipe effectively - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"how would I use screenpipe effectively - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Електронно банкиране ДСК Директ от Банка ДСК","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Електронно банкиране ДСК Директ от Банка ДСК","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,"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":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"LUKAS KOVALIK","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1 Входяща поща","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Входяща поща","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Обратна връзка","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Обратна връзка","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"English","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"English","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Изход","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Изход","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"СРЕДСТВА","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"СРЕДСТВА","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"КРЕДИТИ","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"КРЕДИТИ","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"КАРТИ","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"КАРТИ","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"БИТОВИ СМЕТКИ","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"БИТОВИ СМЕТКИ","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ПРЕВОДИ","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ПРЕВОДИ","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"СПЕСТЯВАНЕ","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"СПЕСТЯВАНЕ","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ФОНДОВЕ","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ФОНДОВЕ","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ЗАЯВКИ","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ЗАЯВКИ","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ИЗВЕСТИЯ","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ИЗВЕСТИЯ","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"СМАРТ ПРИЛОЖЕНИЯ","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"СМАРТ ПРИЛОЖЕНИЯ","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"НАСТРОЙКИ","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"НАСТРОЙКИ","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Нов превод","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Нов превод","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Неизпратени","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Неизпратени","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Архив","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Архив","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"PDF Авиза","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PDF Авиза","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Автоматични","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Автоматични","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Получатели","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Получатели","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Готови бланки","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Готови бланки","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Валутни курсове","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Валутни курсове","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Договорени курсове","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Договорени курсове","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Нов превод","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Нов превод","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Управление на бърз достъп до менюта.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Между мои сметки","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Между мои сметки","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Създай нов превод","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Създай нов превод","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Превод между свои сметки в Банка ДСК.","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Не се изисква допълнително средство за подписване и потвърждаване на превода.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"За суми над 5000 EUR може да се договори курс с дилър на Банката.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Възможно е изпълнение на превода с бъдеща дата или като периодичен превод.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Възможност за запазване на данните от платежното нареждане, като Готова бланка.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Междубанков","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Междубанков","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Създай нов превод","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Създай нов превод","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Превод по сметка в друга банка в България или чужбина.","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Изисква потвърждение с валиден инструмент за подписване.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Възможен е избор на платежна система в зависимост от валутата на превода, срок на изпълнение и направлението на превода:","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SWIFT","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"- преводи във валута към други банки извън ЕИП и преводи във валути, различни от евро към други банки в ЕИП. Може да бъде обикновен или експресен.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SEPA","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"- превод в EUR към други банки в ЕИП. Таксува се като обикновен кредитен превод в евро за държави от ЕИП.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"TARGET2","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"- експресни преводи в реално време в EUR към банки участници в TARGET2 в страната и чужбина.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"За суми над 5000 EUR е възможно да се договори курс с дилър на Банката.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"По сметка в Банка ДСК","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"По сметка в Банка ДСК","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Създай нов превод","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Създай нов превод","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Превод по сметка на друг клиент в Банка ДСК.","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Изисква потвърждение с валиден инструмент за подписване.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"За суми над 5000 EUR е възможно да се договори курс с дилър на Банката.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Възможно е изпълнение на превода с бъдеща дата или като периодичен превод.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Към бюджета","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Към бюджета","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Създай нов превод","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Създай нов превод","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Превод в евро към бюджетни сметки (за преводи към НАП, НОИ и др).","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Изисква потвърждение с валиден инструмент за подписване.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Налична е опция за нареждане и изпълнение на превода с бъдеща дата или като периодичен превод.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Други","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Други","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Университетски такси","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Университетски такси","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Глоби КАТ","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Глоби КАТ","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Min наличност","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Min наличност","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Дарения","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Дарения","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"За дистрибутори на търговци","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"За дистрибутори на търговци","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"e-Faktura","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"e-Faktura","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Плащане на сейф","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Плащане на сейф","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*Фиксиран курс за целите на двойно обозначение 1 EUR = 1.95583 BGN","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Потребителско ръководство - граждани","depth":13,"bounds":{"left":0.38229167,"top":0.0,"width":0.19618055,"height":0.022777777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Потребителско ръководство - граждани","depth":14,"bounds":{"left":0.38229167,"top":0.0,"width":0.19618055,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Общи условия за граждани","depth":13,"bounds":{"left":0.41354167,"top":0.0,"width":0.13333334,"height":0.022777777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Общи условия за граждани","depth":14,"bounds":{"left":0.41354167,"top":0.0,"width":0.13333334,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Тарифа за граждани","depth":13,"bounds":{"left":0.43020833,"top":0.019444445,"width":0.1,"height":0.022777777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Тарифа за граждани","depth":14,"bounds":{"left":0.43020833,"top":0.019444445,"width":0.1,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Call center:","depth":13,"bounds":{"left":0.66805553,"top":0.0,"width":0.054166667,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*2375","depth":13,"bounds":{"left":0.73125,"top":0.0,"width":0.03125,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0700 10 375","depth":13,"bounds":{"left":0.77152777,"top":0.0,"width":0.05659722,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Потребителско ръководство - фирми","depth":13,"bounds":{"left":0.92430556,"top":0.0,"width":0.07569444,"height":0.022777777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Потребителско ръководство - фирми","depth":14,"bounds":{"left":0.92430556,"top":0.0,"width":0.07569444,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Общи условия за фирми","depth":13,"bounds":{"left":0.95590276,"top":0.0,"width":0.044097245,"height":0.022777777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Общи условия за фирми","depth":14,"bounds":{"left":0.95590276,"top":0.0,"width":0.044097245,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Тарифа за фирми","depth":13,"bounds":{"left":0.97256947,"top":0.019444445,"width":0.027430534,"height":0.022777777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Тарифа за фирми","depth":14,"bounds":{"left":0.97256947,"top":0.019444445,"width":0.027430534,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"BIC/SWIFT на Банка ДСК: STSABGSF ©","depth":12,"bounds":{"left":0.63472223,"top":0.06333333,"width":0.13958333,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026 on DAIS eBank .NET","depth":12,"bounds":{"left":0.7743056,"top":0.06333333,"width":0.08680555,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"www.dskdirect.bg/Page/default.aspx?user_id=11309067&session_id=0973061e3efc11f19bf8005056b65de5bp2HCYiDVMhiuG0pFA3unS5zBcmpaar5u4gwYCWqs9kJwvV9AN4ruaVY3n-b-NwdnNy4C0L3jqFoKiovSC3ZYA==U&xml_id=/bg-BG/01Individuals/05Transfers/06Archive/","depth":5,"bounds":{"left":0.0,"top":0.0,"width":1.0,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
6615211309799800147
|
-3027388656482242287
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox (71) - [EMAIL] - Gmail
West DXP4800PLUS-B5F8
Inbox (71) - [EMAIL] - Gmail
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
install screenpipe - screenpipe docs
install screenpipe - screenpipe docs
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
how would I use screenpipe effectively - Google Search
how would I use screenpipe effectively - Google Search
Електронно банкиране ДСК Директ от Банка ДСК
Електронно банкиране ДСК Директ от Банка ДСК
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
LUKAS KOVALIK
1 Входяща поща
1
Входяща поща
Обратна връзка
Обратна връзка
English
English
Изход
Изход
СРЕДСТВА
СРЕДСТВА
КРЕДИТИ
КРЕДИТИ
КАРТИ
КАРТИ
БИТОВИ СМЕТКИ
БИТОВИ СМЕТКИ
ПРЕВОДИ
ПРЕВОДИ
СПЕСТЯВАНЕ
СПЕСТЯВАНЕ
ФОНДОВЕ
ФОНДОВЕ
ЗАЯВКИ
ЗАЯВКИ
ИЗВЕСТИЯ
ИЗВЕСТИЯ
СМАРТ ПРИЛОЖЕНИЯ
СМАРТ ПРИЛОЖЕНИЯ
НАСТРОЙКИ
НАСТРОЙКИ
Нов превод
Нов превод
Неизпратени
Неизпратени
Архив
Архив
PDF Авиза
PDF Авиза
Автоматични
Автоматични
Получатели
Получатели
Готови бланки
Готови бланки
Валутни курсове
Валутни курсове
Договорени курсове
Договорени курсове
Нов превод
Нов превод
Управление на бърз достъп до менюта.
Между мои сметки
Между мои сметки
Създай нов превод
Създай нов превод
Превод между свои сметки в Банка ДСК.
Не се изисква допълнително средство за подписване и потвърждаване на превода.
За суми над 5000 EUR може да се договори курс с дилър на Банката.
Възможно е изпълнение на превода с бъдеща дата или като периодичен превод.
Възможност за запазване на данните от платежното нареждане, като Готова бланка.
Междубанков
Междубанков
Създай нов превод
Създай нов превод
Превод по сметка в друга банка в България или чужбина.
Изисква потвърждение с валиден инструмент за подписване.
Възможен е избор на платежна система в зависимост от валутата на превода, срок на изпълнение и направлението на превода:
-
SWIFT
- преводи във валута към други банки извън ЕИП и преводи във валути, различни от евро към други банки в ЕИП. Може да бъде обикновен или експресен.
-
SEPA
- превод в EUR към други банки в ЕИП. Таксува се като обикновен кредитен превод в евро за държави от ЕИП.
-
TARGET2
- експресни преводи в реално време в EUR към банки участници в TARGET2 в страната и чужбина.
За суми над 5000 EUR е възможно да се договори курс с дилър на Банката.
Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.
По сметка в Банка ДСК
По сметка в Банка ДСК
Създай нов превод
Създай нов превод
Превод по сметка на друг клиент в Банка ДСК.
Изисква потвърждение с валиден инструмент за подписване.
За суми над 5000 EUR е възможно да се договори курс с дилър на Банката.
Възможно е изпълнение на превода с бъдеща дата или като периодичен превод.
Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.
Към бюджета
Към бюджета
Създай нов превод
Създай нов превод
Превод в евро към бюджетни сметки (за преводи към НАП, НОИ и др).
Изисква потвърждение с валиден инструмент за подписване.
Налична е опция за нареждане и изпълнение на превода с бъдеща дата или като периодичен превод.
Възможност за запазване на данните от платежното нареждане, като Готова бланка или данни за Получател.
Други
Други
Университетски такси
Университетски такси
Глоби КАТ
Глоби КАТ
Min наличност
Min наличност
Дарения
Дарения
За дистрибутори на търговци
За дистрибутори на търговци
e-Faktura
e-Faktura
Плащане на сейф
Плащане на сейф
*Фиксиран курс за целите на двойно обозначение 1 EUR = 1.95583 BGN
Потребителско ръководство - граждани
Потребителско ръководство - граждани
Общи условия за граждани
Общи условия за граждани
Тарифа за граждани
Тарифа за граждани
Call center:
*2375
0700 10 375
Потребителско ръководство - фирми
Потребителско ръководство - фирми
Общи условия за фирми
Общи условия за фирми
Тарифа за фирми
Тарифа за фирми
BIC/SWIFT на Банка ДСК: STSABGSF ©
2026 on DAIS eBank .NET
www.dskdirect.bg/Page/default.aspx?user_id=11309067&session_id=0973061e3efc11f19bf8005056b65de5bp2HCYiDVMhiuG0pFA3unS5zBcmpaar5u4gwYCWqs9kJwvV9AN4ruaVY3n-b-NwdnNy4C0L3jqFoKiovSC3ZYA==U&xml_id=/bg-BG/01Individuals/05Transfers/06Archive/...
|
74609
|
|
74471
|
NULL
|
0
|
2026-04-23T10:01:11.662934+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776938471662_m1.jpg...
|
Firefox
|
MAZANOKE | Online Image Optimizer That Runs Privat MAZANOKE | Online Image Optimizer That Runs Privately in Your Browser — Personal...
|
True
|
images.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox (71) - [EMAIL] - Gmail
West DXP4800PLUS-B5F8
Inbox (71) - [EMAIL] - Gmail
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
install screenpipe - screenpipe docs
install screenpipe - screenpipe docs
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
how would I use screenpipe effectively - Google Search
how would I use screenpipe effectively - Google Search
MAZANOKE | Online Image Optimizer That Runs Privately in Your Browser
MAZANOKE | Online Image Optimizer That Runs Privately in Your Browser
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
MAZANOKE
MAZANOKE
Drop or paste images
jpg
png
webp
heic
avif
tiff
gif
svg
ico
Browse
Browse
Settings
Images
0
Settings
Settings
Images are processed locally on your device, ensuring privacy.
Optimization method
Set image quality
Higher values retain more detail, while lower values result in smaller file sizes.
Limit file size
Try to compress the image to a target file size.
Quality
80
%
Dimensions
Keep original dimensions
Do not alter the width and height of the image.
Limit dimensions
Limit the width and height of the image.
Convert to
Default
• JPG, PNG, WebP, ICO → Unchanged.
• HEIC, AVIF, TIFF, GIF, SVG → PNG.
JPG
Effective at reducing file size of large photos and images, with some quality loss.
PNG
Preserves image sharpness, colors, and transparency, but may result in large files.
WebP
Retains good details and transparency, may affect colors slightly at low quality settings.
ICO
Mainly used for website favicons and Windows file icons
Images
Images
Optimized images ready for review and download.
Delete all
Delete all
Download all
Download all
No image optimized yet
No image optimized yet
Upload images above to optimize them. Once compressed, they'll appear here.
created by civilblur • v1.1.5
created by civilblur
•
v1.1.5...
|
[{"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":false},{"role":"AXRadioButton","text":"Inbox (71) - 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":"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":"install screenpipe - screenpipe docs","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"install screenpipe - screenpipe docs","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":"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":"rescue time detailed overview - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"rescue time detailed overview - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"how would I use screenpipe effectively - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"how would I use screenpipe effectively - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"MAZANOKE | Online Image Optimizer That Runs Privately in Your Browser","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"MAZANOKE | Online Image Optimizer That Runs Privately in Your Browser","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,"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":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"MAZANOKE","depth":7,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MAZANOKE","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Drop or paste images","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"jpg","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"png","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"webp","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"heic","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"avif","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tiff","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"gif","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"svg","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ico","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Browse","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browse","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Settings","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Images","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Settings","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Settings","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Images are processed locally on your device, ensuring privacy.","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Optimization method","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Set image quality","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Higher values retain more detail, while lower values result in smaller file sizes.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Limit file size","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Try to compress the image to a target file size.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Quality","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"80","depth":11,"bounds":{"left":0.525,"top":0.0,"width":0.014236111,"height":0.02388889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"%","depth":11,"bounds":{"left":0.6017361,"top":0.0,"width":0.009027778,"height":0.02388889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Dimensions","depth":9,"bounds":{"left":0.37986112,"top":0.045555554,"width":0.083333336,"height":0.029444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Keep original dimensions","depth":11,"bounds":{"left":0.525,"top":0.045555554,"width":0.1579861,"height":0.029444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Do not alter the width and height of the image.","depth":11,"bounds":{"left":0.525,"top":0.07833333,"width":0.2361111,"height":0.02388889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Limit dimensions","depth":11,"bounds":{"left":0.83263886,"top":0.045555554,"width":0.10729167,"height":0.029444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Limit the width and height of the image.","depth":11,"bounds":{"left":0.83263886,"top":0.07833333,"width":0.16736114,"height":0.02388889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Convert to","depth":10,"bounds":{"left":0.37986112,"top":0.19388889,"width":0.083333336,"height":0.029444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Default","depth":11,"bounds":{"left":0.525,"top":0.19388889,"width":0.046527777,"height":0.029444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"• JPG, PNG, WebP, ICO → Unchanged.","depth":12,"bounds":{"left":0.525,"top":0.22611111,"width":0.18784723,"height":0.02388889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"• HEIC, AVIF, TIFF, GIF, SVG → PNG.","depth":12,"bounds":{"left":0.525,"top":0.25277779,"width":0.17118056,"height":0.02388889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JPG","depth":11,"bounds":{"left":0.525,"top":0.32444444,"width":0.027083334,"height":0.029444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Effective at reducing file size of large photos and images, with some quality loss.","depth":11,"bounds":{"left":0.525,"top":0.35666665,"width":0.24722221,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PNG","depth":11,"bounds":{"left":0.83263886,"top":0.32444444,"width":0.028472222,"height":0.029444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Preserves image sharpness, colors, and transparency, but may result in large files.","depth":11,"bounds":{"left":0.83263886,"top":0.35666665,"width":0.16736114,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"WebP","depth":11,"bounds":{"left":0.525,"top":0.4488889,"width":0.0375,"height":0.029444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Retains good details and transparency, may affect colors slightly at low quality settings.","depth":11,"bounds":{"left":0.525,"top":0.48166665,"width":0.25277779,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ICO","depth":11,"bounds":{"left":0.83263886,"top":0.4488889,"width":0.023611112,"height":0.029444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Mainly used for website favicons and Windows file icons","depth":11,"bounds":{"left":0.83263886,"top":0.48166665,"width":0.16736114,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Images","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Images","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Optimized images ready for review and download.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Delete all","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Delete all","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Download all","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Download all","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"No image optimized yet","depth":11,"bounds":{"left":0.6333333,"top":0.018333333,"width":0.22916667,"height":0.033333335},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"No image optimized yet","depth":12,"bounds":{"left":0.6333333,"top":0.016666668,"width":0.22916667,"height":0.036666665},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Upload images above to optimize them. Once compressed, they'll appear here.","depth":12,"bounds":{"left":0.6475694,"top":0.065,"width":0.20069444,"height":0.05277778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"created by civilblur • v1.1.5","depth":7,"bounds":{"left":0.6510417,"top":0.8922222,"width":0.19375,"height":0.02111111},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"created by civilblur","depth":9,"bounds":{"left":0.6510417,"top":0.89055556,"width":0.13333334,"height":0.02388889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"•","depth":9,"bounds":{"left":0.79131943,"top":0.89055556,"width":0.0065972223,"height":0.02388889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"v1.1.5","depth":9,"bounds":{"left":0.8048611,"top":0.89055556,"width":0.039930556,"height":0.02388889},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
2917744775635106198
|
6583169742849501201
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox (71) - [EMAIL] - Gmail
West DXP4800PLUS-B5F8
Inbox (71) - [EMAIL] - Gmail
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
install screenpipe - screenpipe docs
install screenpipe - screenpipe docs
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
how would I use screenpipe effectively - Google Search
how would I use screenpipe effectively - Google Search
MAZANOKE | Online Image Optimizer That Runs Privately in Your Browser
MAZANOKE | Online Image Optimizer That Runs Privately in Your Browser
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
MAZANOKE
MAZANOKE
Drop or paste images
jpg
png
webp
heic
avif
tiff
gif
svg
ico
Browse
Browse
Settings
Images
0
Settings
Settings
Images are processed locally on your device, ensuring privacy.
Optimization method
Set image quality
Higher values retain more detail, while lower values result in smaller file sizes.
Limit file size
Try to compress the image to a target file size.
Quality
80
%
Dimensions
Keep original dimensions
Do not alter the width and height of the image.
Limit dimensions
Limit the width and height of the image.
Convert to
Default
• JPG, PNG, WebP, ICO → Unchanged.
• HEIC, AVIF, TIFF, GIF, SVG → PNG.
JPG
Effective at reducing file size of large photos and images, with some quality loss.
PNG
Preserves image sharpness, colors, and transparency, but may result in large files.
WebP
Retains good details and transparency, may affect colors slightly at low quality settings.
ICO
Mainly used for website favicons and Windows file icons
Images
Images
Optimized images ready for review and download.
Delete all
Delete all
Download all
Download all
No image optimized yet
No image optimized yet
Upload images above to optimize them. Once compressed, they'll appear here.
created by civilblur • v1.1.5
created by civilblur
•
v1.1.5...
|
74469
|
|
74470
|
NULL
|
0
|
2026-04-23T10:01:11.106132+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776938471106_m2.jpg...
|
Finder
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FinderWindowmelp"suppont Dally • In th o3m100% FinderWindowmelp"suppont Dally • In th o3m100% 152Inu Z3 Ao 13.01:10ActivityJiminny….."TMore unreads# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...6? Direct messagesP. Adelina Petrova E3 Aneliya Angelova, ...8. Stoyan TomovPP. Nikolay Yankov&. Petko Kashinski. Aneliya Angelovaf. Nikolay Nikolov8. Mario GeorgievI. Todor Stamatovf. Gabriela DurevaC. Vasil VasilevP. Galya Dimitrova E8. Stefka Stoyanova2. Stoyan Tanev E## Apps® Toastf Jira Cloudì Gooele Cale...& Q. Adelin• MessagesAdelina Pe9 Джеймс пкScreenshotlmaces.lakylak.xyzI\ MAZANOKEWestern Diaital Red Plus 3.5 6TB 5400rom 256MB SAa Today's Dealsinstall screenpipe - screenpipe docsNew Tabl) Screenpipe — Archive(SQLite Web: archive.de@ SQLite Web: db.sqliteG rescue time detailed overview - Google Search© how would l yus screenpipe effetively - Google s x/) MAZANOKE | Online Image Optimizer That Runs Pr X— New Tabдали не трLukas Kovaда и аз го піщe rо noр:delina Deaa me нannlekeweheuukas KovalAdelina Peмомент дакоя планетLukas Kov.няма значMessage Adelina+ Aa ©Drop or paste imagesonaweopgifheicavif tiffSVoicoA Browse= SettingsA Images 0Settingsmaoes are orocessed localv on vour cevice, ensurino orivacv.OptimizationmethodSet image qualityeidher vallues rerain more detal. whille lower valles.result in smaller file sizes.Quality80Limit file size...
|
NULL
|
915673981745263334
|
NULL
|
visual_change
|
ocr
|
NULL
|
FinderWindowmelp"suppont Dally • In th o3m100% FinderWindowmelp"suppont Dally • In th o3m100% 152Inu Z3 Ao 13.01:10ActivityJiminny….."TMore unreads# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...6? Direct messagesP. Adelina Petrova E3 Aneliya Angelova, ...8. Stoyan TomovPP. Nikolay Yankov&. Petko Kashinski. Aneliya Angelovaf. Nikolay Nikolov8. Mario GeorgievI. Todor Stamatovf. Gabriela DurevaC. Vasil VasilevP. Galya Dimitrova E8. Stefka Stoyanova2. Stoyan Tanev E## Apps® Toastf Jira Cloudì Gooele Cale...& Q. Adelin• MessagesAdelina Pe9 Джеймс пкScreenshotlmaces.lakylak.xyzI\ MAZANOKEWestern Diaital Red Plus 3.5 6TB 5400rom 256MB SAa Today's Dealsinstall screenpipe - screenpipe docsNew Tabl) Screenpipe — Archive(SQLite Web: archive.de@ SQLite Web: db.sqliteG rescue time detailed overview - Google Search© how would l yus screenpipe effetively - Google s x/) MAZANOKE | Online Image Optimizer That Runs Pr X— New Tabдали не трLukas Kovaда и аз го піщe rо noр:delina Deaa me нannlekeweheuukas KovalAdelina Peмомент дакоя планетLukas Kov.няма значMessage Adelina+ Aa ©Drop or paste imagesonaweopgifheicavif tiffSVoicoA Browse= SettingsA Images 0Settingsmaoes are orocessed localv on vour cevice, ensurino orivacv.OptimizationmethodSet image qualityeidher vallues rerain more detal. whille lower valles.result in smaller file sizes.Quality80Limit file size...
|
74468
|
|
74432
|
NULL
|
0
|
2026-04-23T09:56:01.926914+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776938161926_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Home1889FllesLateMoreSlackcalVIewMistonJiminny... Home1889FllesLateMoreSlackcalVIewMistonJiminny... v# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...6? Direct messagesP. Adelina Petrova C(3) Aneliva Angelova. ...Stoyan Tomov. Nikolay YankovP Petko Kashinskif Aneliva Angelovae Nikolay Nikolov# Mario GeoreievSe: Todor StamatovA Gabriela DurevaeVacil Vaciler.©. Galva Dimitrova2 Stefka Stoyanova* Stoyan Tanev#: Apps• ToastSi Jira GloudWindowheltAdelina PetrovaMessagest Add canvasUr FilesAdelina PetrovToday v PMДжеймс преди е ползвал userPilotService:Screenshot 2026-04-23 at 12.40.22,png vдали не трябва така да се праща?Lukas Kovalik 12:41 PMда и аз го ползвам такаще го порверяAdelina Petrova 12:42 PMаз ще направя един репорт да вида дали щепокаже нещоukas Kovalllk 12.42 PMпросто искам да си сравня и тествам товакоетоо ипва вече от планета сьє това кеото.HannaruxAdelina Detrova M 42:47 DMмомент ла виля ка ле бешекоя планета ще ползваш.Lukas Kovalik 12.51 PNНяма значение която е своболнаMessage Adelina PetrovaFV faVsco.js°9 JY-20157-AJ-report-not-send-notificaticProiectvC) Ask.liminnvReportActivityservice.ongC BaseService.php© CachedCrmServiceDecorator.f© CountryCodeResolver.php% CrmActivityProviderintegratedAutomateakeportsserwice.ongC) AutomatedReportsCommana lest.onpy keporcontroller.onp(C) AutomatedReportGenerated.pnpOurmacuvilyservice.onp© CrmConfigurationSettingsServ© CrmObjectsResolver.php©DefaultProspectSearchStrateg© EmailHelper.php© FindsProspectinterface.php© LayoutManager.php• MatchDomainByEmailInterface© OpportunityActivitvMatcher.pr• OpportunitySvncStrateavinteri© OpportunitvSvncStrateayReso© ProspectCache.phr° ProspectSearchScope.php© ProspectSearchStrategyFactol© ProspectSearchStrategyInterfa€ ProviderRegistrv.ohn@ RecordSelector.ohn() ResolveCompanvNameBvEmaill© TimePeriodlterator.ohn> M imoort• M Internalv mKiockv M AutomatedRenorts© ActivityTypeService.php©AskJiminnyReportActivitySt(C) AutomatedPenortsCallhack©AutomatedReportsService.1© DealStagesService.php© RecipientsService.php€ ReportSort.php€ ReportSortDirection.php© KioskService.php> 0 Maili> • MeetingGenerator> C Notification> C7 OAuth2> M RecallAll> MSecurity>MStrateav> MStreamina.> MTeam> M Telephonvv MUserPilotreport-not-generated.blade.phgclass Userpilotillent107(c) SvncllserPilotComnanvl ictongC) UcerDilotclient nhnM WehhoolC. AbstractService nhnprivate const APT.ENDPOLNT = 'https:Wapi.userpilot.io/v1/';3 usaaesprivate const AnALyIncs.ENDPOINt ='https:/analytex.userpilot.1o/y1/';ousagesprivate function createRequest: PendingRequest(...}public function track(User Suser, string $event, array $payload = []): voidif (Sthis->shouldRequest(Suser->getTeam) === false) {recurn,Sthis->createRequest->post( url: self::ANALYTICS ENDPOINT . 'track'. ['event name' = Sevent'user id' => Suser-›qetUuido.public function unsertUser(User Suser): voidf...}public function unsertCompany(Team Steam): voidk...}nrivate function detcomnanvMetadatadTeam Steam)• arnav-...?nublie function deletellsen(llsen Suser): void!...}public function deleteCompany(Team $team): void(...}public function shouldRequest(Team $team): boolreturn config( key: 'services.userpilot.key') !== null && $team->getPartnerId === Partner::PARTNER DEFAULT:Support Daily - in 2h 4 mБГ100% 152Thu 23 Apr 12:56:01= custom.log= laravel.log4 SF [jiminny@localhost] XA console [pronl© DatabaseActivities.php© DealsRepository.phpA console [EU]console SlAGiNg Tx: AutoPlaygroundDecect a trul gruups y suin pLayuuono paaselect * trom qroups where 1d = 28dojiminny vОг д1 417 22 2Äжselect * from plavbooks where id = 179:select * from users where 1d = 143:select * from crm_profiles where user_id = 143;select * from activities where erm confiquration id = 39 and tvpe = 'confe'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003: # 00U0400000086f0MACSELECT ar.id, ar.uuid, ar.media type, ar.status, a.typeFROM automated_report_results arJOIN automated_reports a ON a.id = ar.report idWHERE a.tyRe = 'ask_jiminnx'I TMTT 10÷CSISATautomated_report_results*.* FROMINNER JOINWHERE 1=1AND'automated report results'.'report id' = 'automated reports'.'idautomated_report_results'.'generated_at' IS NOT NULLAND 'automated_ report_results'.'sent_at' IS NOT NULLSELECT * FROM automated_reports where id = 67;SELECT * FROM automated reponts where id = 42:SELECT * FROM users WHERE id = 143: # aroup 28select * from teams where id = 3143;select * from con confiqurations where id = 500:select * from users where name = 'Integration Account'; # 1695SELECT * EROM social accounts WHFREsociable id = 1695.select * fron activities where erm confiauration id = 30and recording_state = 'recorded' and duration › 60and status = 'completed' and actual_start_time >= '2025-12-01';|sEiEeT + EPOM antivitioc WHEDE nuid +o hinf:458cf015-h014-4000-h092-5/97h2...
|
NULL
|
-8895619286648255668
|
NULL
|
idle
|
ocr
|
NULL
|
Home1889FllesLateMoreSlackcalVIewMistonJiminny... Home1889FllesLateMoreSlackcalVIewMistonJiminny... v# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...6? Direct messagesP. Adelina Petrova C(3) Aneliva Angelova. ...Stoyan Tomov. Nikolay YankovP Petko Kashinskif Aneliva Angelovae Nikolay Nikolov# Mario GeoreievSe: Todor StamatovA Gabriela DurevaeVacil Vaciler.©. Galva Dimitrova2 Stefka Stoyanova* Stoyan Tanev#: Apps• ToastSi Jira GloudWindowheltAdelina PetrovaMessagest Add canvasUr FilesAdelina PetrovToday v PMДжеймс преди е ползвал userPilotService:Screenshot 2026-04-23 at 12.40.22,png vдали не трябва така да се праща?Lukas Kovalik 12:41 PMда и аз го ползвам такаще го порверяAdelina Petrova 12:42 PMаз ще направя един репорт да вида дали щепокаже нещоukas Kovalllk 12.42 PMпросто искам да си сравня и тествам товакоетоо ипва вече от планета сьє това кеото.HannaruxAdelina Detrova M 42:47 DMмомент ла виля ка ле бешекоя планета ще ползваш.Lukas Kovalik 12.51 PNНяма значение която е своболнаMessage Adelina PetrovaFV faVsco.js°9 JY-20157-AJ-report-not-send-notificaticProiectvC) Ask.liminnvReportActivityservice.ongC BaseService.php© CachedCrmServiceDecorator.f© CountryCodeResolver.php% CrmActivityProviderintegratedAutomateakeportsserwice.ongC) AutomatedReportsCommana lest.onpy keporcontroller.onp(C) AutomatedReportGenerated.pnpOurmacuvilyservice.onp© CrmConfigurationSettingsServ© CrmObjectsResolver.php©DefaultProspectSearchStrateg© EmailHelper.php© FindsProspectinterface.php© LayoutManager.php• MatchDomainByEmailInterface© OpportunityActivitvMatcher.pr• OpportunitySvncStrateavinteri© OpportunitvSvncStrateayReso© ProspectCache.phr° ProspectSearchScope.php© ProspectSearchStrategyFactol© ProspectSearchStrategyInterfa€ ProviderRegistrv.ohn@ RecordSelector.ohn() ResolveCompanvNameBvEmaill© TimePeriodlterator.ohn> M imoort• M Internalv mKiockv M AutomatedRenorts© ActivityTypeService.php©AskJiminnyReportActivitySt(C) AutomatedPenortsCallhack©AutomatedReportsService.1© DealStagesService.php© RecipientsService.php€ ReportSort.php€ ReportSortDirection.php© KioskService.php> 0 Maili> • MeetingGenerator> C Notification> C7 OAuth2> M RecallAll> MSecurity>MStrateav> MStreamina.> MTeam> M Telephonvv MUserPilotreport-not-generated.blade.phgclass Userpilotillent107(c) SvncllserPilotComnanvl ictongC) UcerDilotclient nhnM WehhoolC. AbstractService nhnprivate const APT.ENDPOLNT = 'https:Wapi.userpilot.io/v1/';3 usaaesprivate const AnALyIncs.ENDPOINt ='https:/analytex.userpilot.1o/y1/';ousagesprivate function createRequest: PendingRequest(...}public function track(User Suser, string $event, array $payload = []): voidif (Sthis->shouldRequest(Suser->getTeam) === false) {recurn,Sthis->createRequest->post( url: self::ANALYTICS ENDPOINT . 'track'. ['event name' = Sevent'user id' => Suser-›qetUuido.public function unsertUser(User Suser): voidf...}public function unsertCompany(Team Steam): voidk...}nrivate function detcomnanvMetadatadTeam Steam)• arnav-...?nublie function deletellsen(llsen Suser): void!...}public function deleteCompany(Team $team): void(...}public function shouldRequest(Team $team): boolreturn config( key: 'services.userpilot.key') !== null && $team->getPartnerId === Partner::PARTNER DEFAULT:Support Daily - in 2h 4 mБГ100% 152Thu 23 Apr 12:56:01= custom.log= laravel.log4 SF [jiminny@localhost] XA console [pronl© DatabaseActivities.php© DealsRepository.phpA console [EU]console SlAGiNg Tx: AutoPlaygroundDecect a trul gruups y suin pLayuuono paaselect * trom qroups where 1d = 28dojiminny vОг д1 417 22 2Äжselect * from plavbooks where id = 179:select * from users where 1d = 143:select * from crm_profiles where user_id = 143;select * from activities where erm confiquration id = 39 and tvpe = 'confe'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003: # 00U0400000086f0MACSELECT ar.id, ar.uuid, ar.media type, ar.status, a.typeFROM automated_report_results arJOIN automated_reports a ON a.id = ar.report idWHERE a.tyRe = 'ask_jiminnx'I TMTT 10÷CSISATautomated_report_results*.* FROMINNER JOINWHERE 1=1AND'automated report results'.'report id' = 'automated reports'.'idautomated_report_results'.'generated_at' IS NOT NULLAND 'automated_ report_results'.'sent_at' IS NOT NULLSELECT * FROM automated_reports where id = 67;SELECT * FROM automated reponts where id = 42:SELECT * FROM users WHERE id = 143: # aroup 28select * from teams where id = 3143;select * from con confiqurations where id = 500:select * from users where name = 'Integration Account'; # 1695SELECT * EROM social accounts WHFREsociable id = 1695.select * fron activities where erm confiauration id = 30and recording_state = 'recorded' and duration › 60and status = 'completed' and actual_start_time >= '2025-12-01';|sEiEeT + EPOM antivitioc WHEDE nuid +o hinf:458cf015-h014-4000-h092-5/97h2...
|
NULL
|
|
74431
|
NULL
|
0
|
2026-04-23T09:55:33.769529+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776938133769_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDOCKER181DEV (-zsh)O $82docker_lamp_1docker_lamp_1docker_1amp_1• '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync › */proc/1/f2026-04-23 09:55:10 Running ['artisan'conference: pre-meeting-notificdocker_lamp_1'/proc/1/fd/1'docker_lamp_1l '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification2026-04-23 09:55:11 Running ['artisan'conference:monitor:startl• '/usr/local/bin/php' 'artisan'conference:monitor: start›docker_1amp_12026-04-23 09:55:13 Running ['artisan'conference:monitor:end]docker_lamp_11 '/usr/local/bin/php' 'artisan'conference:monitor:end > */proc/1/fddocker_lamp_1|2026-04-23 09:55:14 Running ['artisan' jiminny:fix-hubspot-tokens].docker_lamp_11 t '/usr/local/bin/php' 'artisan'jiminny:fix-hubspot-tokens › */proc/docker_lamp_12026-04-23 09:55:16 Running ['artisan' conference:pre-meeting-reminder] in background 1.42ms DONEdocker_lamp_1• ('/usr/local/bin/php' 'artisan'/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan'conference:pre-meeting-reminder>'schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "S?") › '/dev/null' 2>&1 &docker_1amp_12026-04-23 09:55:16 Running ['artisan'hubspot:journal-poll --start]in background1.04ms DONEdocker_1amp_1• ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start › '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php'schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "§?") > '/dev/null' 2>&1 &docker_lamp_12026-04-23 09:55:16 Running ['artisan' crm:bullhorn:ping --heartbeat]2 Starting HubSpot journal polling service...docker_1amp_11 0 social account(s) to be processeddocker_lamp_1docker_lamp_1docker_1amp_1docker_lamp_1l '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1docker_lamp_1docker_lamp_1I run_artisan_schedule: Done waiting for schedule:run> 0# Support Daily - in 2 h 5 m100% <478DOCKER (docker-compose)APP (-zsh)*3screenpipe"Y2PROD (-zsh)Last login:Thu Apr 23 12:12:54 on consoleO $4-zshPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |Y3EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetrycould not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-JiminnyT5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX 16FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I17EXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|Thu 23 Apr 12:55:33181*5PRODSTAGEFRONTENDEXTENSIONView in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
-2577076583540323400
|
NULL
|
idle
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDOCKER181DEV (-zsh)O $82docker_lamp_1docker_lamp_1docker_1amp_1• '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync › */proc/1/f2026-04-23 09:55:10 Running ['artisan'conference: pre-meeting-notificdocker_lamp_1'/proc/1/fd/1'docker_lamp_1l '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification2026-04-23 09:55:11 Running ['artisan'conference:monitor:startl• '/usr/local/bin/php' 'artisan'conference:monitor: start›docker_1amp_12026-04-23 09:55:13 Running ['artisan'conference:monitor:end]docker_lamp_11 '/usr/local/bin/php' 'artisan'conference:monitor:end > */proc/1/fddocker_lamp_1|2026-04-23 09:55:14 Running ['artisan' jiminny:fix-hubspot-tokens].docker_lamp_11 t '/usr/local/bin/php' 'artisan'jiminny:fix-hubspot-tokens › */proc/docker_lamp_12026-04-23 09:55:16 Running ['artisan' conference:pre-meeting-reminder] in background 1.42ms DONEdocker_lamp_1• ('/usr/local/bin/php' 'artisan'/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan'conference:pre-meeting-reminder>'schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "S?") › '/dev/null' 2>&1 &docker_1amp_12026-04-23 09:55:16 Running ['artisan'hubspot:journal-poll --start]in background1.04ms DONEdocker_1amp_1• ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start › '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php'schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "§?") > '/dev/null' 2>&1 &docker_lamp_12026-04-23 09:55:16 Running ['artisan' crm:bullhorn:ping --heartbeat]2 Starting HubSpot journal polling service...docker_1amp_11 0 social account(s) to be processeddocker_lamp_1docker_lamp_1docker_1amp_1docker_lamp_1l '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1docker_lamp_1docker_lamp_1I run_artisan_schedule: Done waiting for schedule:run> 0# Support Daily - in 2 h 5 m100% <478DOCKER (docker-compose)APP (-zsh)*3screenpipe"Y2PROD (-zsh)Last login:Thu Apr 23 12:12:54 on consoleO $4-zshPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |Y3EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetrycould not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-JiminnyT5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX 16FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I17EXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|Thu 23 Apr 12:55:33181*5PRODSTAGEFRONTENDEXTENSIONView in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
|
74410
|
NULL
|
0
|
2026-04-23T09:50:24.481593+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776937824481_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0.• Support Daily - in 2 h 10 m100% <478DOCKER (docker-compose)APP (-zsh)DOCKER181DEV (-zsh)O $82DOCKER (docker-compose)docker_lamp_12026-04-23 09:50:13 Running ['artisan'conference:monitor:start]..1S DONEdocker_lamp_1l '/usr/local/bin/php' 'artisan' conference:monitor:start › */proc/1/fd/1'2>&1docker_lamp_12026-04-23 09:50:14 Running ['artisan' conference:monitor:end]1s DONEdocker_lamp_1/1'l '/usr/local/bin/php' 'artisan' conference:monitor:end › '/proc/1/fd2>81docker_lamp_12026-04-23 09:50:15 Running ['artisan' jiminny:fix-hubspot-tokens].2S DONEdocker_lamp_11/fd/1'l '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens> '/proc/docker_lamp_12026-04-23 09:50:18 Running ['artisan' conference:pre-meeting-reminder] in background 1.42msdocker_lamp_1• ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1; '/usr/local/bin/php' 'artisan'schedule:finish"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") ›'/dev/null'docker_lamp_12026-04-23 09:50:18 Running ['artisan' hubspot: journal-poll --start]docker_lamp_1" ('/usr/local/bin/php' 'artisan' hubspot: journal-poll--start > '/proc/1/fd/1' 2>&1; '/usr/local/bin/php'schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null'docker_lamp_12026-04-23 09:50:18 Running ['artisan' jiminny:transcription:retry-fatranscriptions found.1 8 Starting HubSpot journal polling service...docker_lamp_1docker_lamp_1docker_1amp_1'/proc/1/fd/1' 2>&1docker_lamp_1• '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed›2026-04-23 09:50:19 Running ['artisan'crm:reset-governor].......docker_lamp_1 |" '/usr/local/bin/php' 'artisan' crm:reset-governor> '/proc/1/fd/1'docker_lamp_12026-04-23 09:50:21 Running ['artisan'crm:bullhorn:ping --heartbeat]• socialaccount(s) to be processeddocker_lamp_1docker_lamp_1I Done!docker_1amp_1docker_lamp_1l '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1'2>&1docker_lamp_1docker_lamp_1I run_artisan_schedule: Done waiting for schedule:run*3screenpipe"Y2PROD (-zsh)Last login:Thu Apr 23 12:12:54 on consoleO $4-zshPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |X 13EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|X T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetrycould not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-JiminnyT5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX 16 FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IEXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|Thu 23 Apr 12:50:24181*5PRODSTAGEFRONTENDEXTENSIONView in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
6514976115142401335
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0.• Support Daily - in 2 h 10 m100% <478DOCKER (docker-compose)APP (-zsh)DOCKER181DEV (-zsh)O $82DOCKER (docker-compose)docker_lamp_12026-04-23 09:50:13 Running ['artisan'conference:monitor:start]..1S DONEdocker_lamp_1l '/usr/local/bin/php' 'artisan' conference:monitor:start › */proc/1/fd/1'2>&1docker_lamp_12026-04-23 09:50:14 Running ['artisan' conference:monitor:end]1s DONEdocker_lamp_1/1'l '/usr/local/bin/php' 'artisan' conference:monitor:end › '/proc/1/fd2>81docker_lamp_12026-04-23 09:50:15 Running ['artisan' jiminny:fix-hubspot-tokens].2S DONEdocker_lamp_11/fd/1'l '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens> '/proc/docker_lamp_12026-04-23 09:50:18 Running ['artisan' conference:pre-meeting-reminder] in background 1.42msdocker_lamp_1• ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1; '/usr/local/bin/php' 'artisan'schedule:finish"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") ›'/dev/null'docker_lamp_12026-04-23 09:50:18 Running ['artisan' hubspot: journal-poll --start]docker_lamp_1" ('/usr/local/bin/php' 'artisan' hubspot: journal-poll--start > '/proc/1/fd/1' 2>&1; '/usr/local/bin/php'schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null'docker_lamp_12026-04-23 09:50:18 Running ['artisan' jiminny:transcription:retry-fatranscriptions found.1 8 Starting HubSpot journal polling service...docker_lamp_1docker_lamp_1docker_1amp_1'/proc/1/fd/1' 2>&1docker_lamp_1• '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed›2026-04-23 09:50:19 Running ['artisan'crm:reset-governor].......docker_lamp_1 |" '/usr/local/bin/php' 'artisan' crm:reset-governor> '/proc/1/fd/1'docker_lamp_12026-04-23 09:50:21 Running ['artisan'crm:bullhorn:ping --heartbeat]• socialaccount(s) to be processeddocker_lamp_1docker_lamp_1I Done!docker_1amp_1docker_lamp_1l '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1'2>&1docker_lamp_1docker_lamp_1I run_artisan_schedule: Done waiting for schedule:run*3screenpipe"Y2PROD (-zsh)Last login:Thu Apr 23 12:12:54 on consoleO $4-zshPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |X 13EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|X T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetrycould not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-JiminnyT5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX 16 FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IEXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|Thu 23 Apr 12:50:24181*5PRODSTAGEFRONTENDEXTENSIONView in Docker Desktop@ View ConfigEnable Watch...
|
74408
|
|
74409
|
NULL
|
0
|
2026-04-23T09:50:23.422229+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776937823422_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
HomeMoreSlackcalVIewMistonJiminny... v# platform-t HomeMoreSlackcalVIewMistonJiminny... v# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...6? Direct messagesAdelina Petrova(3) Aneliva Angelova. ...Stoyan Tomov. Nikolay YankovP Petko Kashinskif Aneliva Angelovae Nikolay Nikolov# Mario GeoreievSe: Todor StamatovA Gabriela DurevaeVacil Vaciler.. Galva Dimitrova2 Stefka Stoyanova*% Stoyan Tanev:: Apps• Toast$i Jira CGloudWindowheltAdelina PetrovaMessagesAdd canvaUr Filesда го тествамможе ли да ми кажеш само накой евенткойто може да видим на планетитеAdellina Petrova 12:40 PMI• жеймс поели е ползвал userPilotService:Screenshot 2026-04-23 at 12.40.22.ongдали не трябва така да се праща?uukas Kovallik 12-41 pMда и аз го ползвам такаще го порверяAdelina Petrova 12:42 PMlаз ще направя един репорт да вида дали щеLukas Kovalik 12:43 PMпросто искам ла си спавня и тествам товакоетоо илва вече от планета сьс това кеото.HanbaвuxAdelina Petrova 12:47 PMмомент ла виля кьле бешеMessage Adelina Petrova+ Aa IFV faVsco.js°9 JY-20157-AJ-report-not-send-notificaticProiectv©) Ask .JiminnvReportActivityService.phgC BaseService.phpC) CachedermserviceDecoratoro© CountryCodeResolver.php% CrmActivityProviderintegratedAutomateakeportsserwice.ongC) AutomatedReportsCommana lest.onpy keporcontroller.onp(C) AutomatedReportGenerated.pnpOcrmacuvilyserwice.onp© CrmConfigurationSettingsServ© CrmObjectsResolver.php© DefaultProspectSearchStrateg© EmailHelper.php© FindsProspectinterface.php© LayoutManager.php• MatchDomainByEmailInterface© OpportunityActivitvMatcher.pr• OpportunitySvncStrateavinteri© OpportunitvSvncStrateayReso© ProspectCache.phr° ProspectSearchScope.php© ProspectSearchStrategyFactol© ProspectSearchStrategyInterfaC) ProviderRedistrv.oho@ RecordSelector.ohnT ResolveComoanvNameBv=mail© TimePeriodlterator.ohn> Mimoort)• M Internalv mKiockv M AutomatedRenorts© ActivityTypeService.php©AskJiminnyReportActivitySt(C) AutomatedPenortsCallhack©AutomatedReportsService.1© DealStagesService.php© RecipientsService.php€ ReportSort.php€ ReportSortDirection.php© KioskService.php> 0 Maili> C MeetingGenerator> C Notification> MoAuth2|> & RecallAll> MSecurityreport-not-generated.blade.phgclass Userpilotillent107> M Strateav> D Streaming> M Team> D Telephonyv M UserPilot(c) SvncllserPilotComnanvllictongC) UcerDilotclient nhoM WehhookC. AbstractService nhnprivate const APT.ENDPOLNT ='https:Wapi.userpilot.1o/v1/';3 usaaesprivate const AnALyIncs.ENDPOINt ='https:/analytex.userpilot.1o/y1/';ousagesprivate function createRequest: PendingRequest(...}public function track(User Suser, string $event, array $payload = []): voidif (Sthis->shouldRequest(Suser->getTeam) === false) {recurn,Sthis->createRequest->post( url: self::ANALYTICS ENDPOINT . 'track'. ['event name' = Sevent'user id' => Suser-›qetUuido.public function unsertUser(User Suser): voidf...}public function unsertCompany(Team Steam): voidk...}nrivate function detcomnanvMetadatadTeam Steam)• arnav-...?nublie function deletellsen(llsen Suser): void!...}public function deleteCompany(Team $team): void(...}public function shouldRequest(Team $team): boolreturn config( key: 'services.userpilot.key') !== null && $team->getPartnerId === Partner::PARTNER DEFAULT:Support Daily - in 2h 10 nБГ100% 152Thu 23 Apr 12:50:23= custom.log= laravel.log4 SF [jiminny@localhost] XA console [PROD]© DatabaseActivities.php© DealsRepository.phpA console [EU]console SlAGiNg Tx: AutoPlaygroundDecect a trul gruups y suin pLayuuono paaselect * trom qroups where 1d = 28dojiminnyОг д1 417 22 2Äжselect * from plavbooks where id = 179:select * from users where 1d = 143:select * from crm_profiles where user_id = 143;select * from activities where erm confiquration id = 39 and tvpe = 'confe'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003: # 00U0400000086f0MACSELECT ar.id, ar.uuid, ar.media type, ar.status, a.typeFROM automated_report_results arJOIN automated_reports a ON a.id = ar.report idWHERE a.type = 'ask_jiminny'I TMTT 10÷CSISATautomated_report_results*.* FROM 'automated_report_resultsINNER JOINWHERE 1=1AND'automated report results'.'report id' = 'automated_reports'.'idautomated_report_results'.'generated_at' IS NOT NULLAND 'automated_ report_results'.'sent_at' IS NOT NULLSELEC * FROM automated reports where 1d = 671SELECT * FROM automated reports where id = 42SELECT * FROM users WHERE id = 143: # aroup 28select * from teams where id = 3143;select * from con confiqurations where id = 500:select * from users where name = 'Integration Account'; # 1695SELECT * EROM social accounts WHFREsociable id = 1695.select * fron activities where erm confiaunation id = 30and recording_state = 'recorded' and duration › 60and status = 'completed' and actual_start_time >= '2025-12-01';|sEiEeT + EPOM antivitioc WHEDE nuid +o hinf:458cf015-h014-4000-h092-5/97h2...
|
NULL
|
2781580488928359429
|
NULL
|
idle
|
ocr
|
NULL
|
HomeMoreSlackcalVIewMistonJiminny... v# platform-t HomeMoreSlackcalVIewMistonJiminny... v# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...6? Direct messagesAdelina Petrova(3) Aneliva Angelova. ...Stoyan Tomov. Nikolay YankovP Petko Kashinskif Aneliva Angelovae Nikolay Nikolov# Mario GeoreievSe: Todor StamatovA Gabriela DurevaeVacil Vaciler.. Galva Dimitrova2 Stefka Stoyanova*% Stoyan Tanev:: Apps• Toast$i Jira CGloudWindowheltAdelina PetrovaMessagesAdd canvaUr Filesда го тествамможе ли да ми кажеш само накой евенткойто може да видим на планетитеAdellina Petrova 12:40 PMI• жеймс поели е ползвал userPilotService:Screenshot 2026-04-23 at 12.40.22.ongдали не трябва така да се праща?uukas Kovallik 12-41 pMда и аз го ползвам такаще го порверяAdelina Petrova 12:42 PMlаз ще направя един репорт да вида дали щеLukas Kovalik 12:43 PMпросто искам ла си спавня и тествам товакоетоо илва вече от планета сьс това кеото.HanbaвuxAdelina Petrova 12:47 PMмомент ла виля кьле бешеMessage Adelina Petrova+ Aa IFV faVsco.js°9 JY-20157-AJ-report-not-send-notificaticProiectv©) Ask .JiminnvReportActivityService.phgC BaseService.phpC) CachedermserviceDecoratoro© CountryCodeResolver.php% CrmActivityProviderintegratedAutomateakeportsserwice.ongC) AutomatedReportsCommana lest.onpy keporcontroller.onp(C) AutomatedReportGenerated.pnpOcrmacuvilyserwice.onp© CrmConfigurationSettingsServ© CrmObjectsResolver.php© DefaultProspectSearchStrateg© EmailHelper.php© FindsProspectinterface.php© LayoutManager.php• MatchDomainByEmailInterface© OpportunityActivitvMatcher.pr• OpportunitySvncStrateavinteri© OpportunitvSvncStrateayReso© ProspectCache.phr° ProspectSearchScope.php© ProspectSearchStrategyFactol© ProspectSearchStrategyInterfaC) ProviderRedistrv.oho@ RecordSelector.ohnT ResolveComoanvNameBv=mail© TimePeriodlterator.ohn> Mimoort)• M Internalv mKiockv M AutomatedRenorts© ActivityTypeService.php©AskJiminnyReportActivitySt(C) AutomatedPenortsCallhack©AutomatedReportsService.1© DealStagesService.php© RecipientsService.php€ ReportSort.php€ ReportSortDirection.php© KioskService.php> 0 Maili> C MeetingGenerator> C Notification> MoAuth2|> & RecallAll> MSecurityreport-not-generated.blade.phgclass Userpilotillent107> M Strateav> D Streaming> M Team> D Telephonyv M UserPilot(c) SvncllserPilotComnanvllictongC) UcerDilotclient nhoM WehhookC. AbstractService nhnprivate const APT.ENDPOLNT ='https:Wapi.userpilot.1o/v1/';3 usaaesprivate const AnALyIncs.ENDPOINt ='https:/analytex.userpilot.1o/y1/';ousagesprivate function createRequest: PendingRequest(...}public function track(User Suser, string $event, array $payload = []): voidif (Sthis->shouldRequest(Suser->getTeam) === false) {recurn,Sthis->createRequest->post( url: self::ANALYTICS ENDPOINT . 'track'. ['event name' = Sevent'user id' => Suser-›qetUuido.public function unsertUser(User Suser): voidf...}public function unsertCompany(Team Steam): voidk...}nrivate function detcomnanvMetadatadTeam Steam)• arnav-...?nublie function deletellsen(llsen Suser): void!...}public function deleteCompany(Team $team): void(...}public function shouldRequest(Team $team): boolreturn config( key: 'services.userpilot.key') !== null && $team->getPartnerId === Partner::PARTNER DEFAULT:Support Daily - in 2h 10 nБГ100% 152Thu 23 Apr 12:50:23= custom.log= laravel.log4 SF [jiminny@localhost] XA console [PROD]© DatabaseActivities.php© DealsRepository.phpA console [EU]console SlAGiNg Tx: AutoPlaygroundDecect a trul gruups y suin pLayuuono paaselect * trom qroups where 1d = 28dojiminnyОг д1 417 22 2Äжselect * from plavbooks where id = 179:select * from users where 1d = 143:select * from crm_profiles where user_id = 143;select * from activities where erm confiquration id = 39 and tvpe = 'confe'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003: # 00U0400000086f0MACSELECT ar.id, ar.uuid, ar.media type, ar.status, a.typeFROM automated_report_results arJOIN automated_reports a ON a.id = ar.report idWHERE a.type = 'ask_jiminny'I TMTT 10÷CSISATautomated_report_results*.* FROM 'automated_report_resultsINNER JOINWHERE 1=1AND'automated report results'.'report id' = 'automated_reports'.'idautomated_report_results'.'generated_at' IS NOT NULLAND 'automated_ report_results'.'sent_at' IS NOT NULLSELEC * FROM automated reports where 1d = 671SELECT * FROM automated reports where id = 42SELECT * FROM users WHERE id = 143: # aroup 28select * from teams where id = 3143;select * from con confiqurations where id = 500:select * from users where name = 'Integration Account'; # 1695SELECT * EROM social accounts WHFREsociable id = 1695.select * fron activities where erm confiaunation id = 30and recording_state = 'recorded' and duration › 60and status = 'completed' and actual_start_time >= '2025-12-01';|sEiEeT + EPOM antivitioc WHEDE nuid +o hinf:458cf015-h014-4000-h092-5/97h2...
|
74407
|
|
74391
|
NULL
|
0
|
2026-04-23T09:45:46.470623+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776937546470_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Home1889FllesLateMoreSlackcalMistonJiminny... v# p Home1889FllesLateMoreSlackcalMistonJiminny... v# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...6? Direct messagesAdelina Petrova(3) Aneliva Angelova. ...Stoyan Tomov. Nikolay YankovP Petko Kashinskif Aneliva Angelovae Nikolay Nikolov# Mario GeoreievSe: Todor StamatovA Gabriela DurevaeVacil Vaciler.. Galva Dimitrova2 Stefka Stoyanova*% Stoyan Tanev:: Apps• ToastIJira CloudWindowheltAdelina Petrova• Messagest Add canvas@ Filesами ше лобавіToday ~ ли не е нешо посамия event. пуснах го на сляпо нямаше какда го тествамможе ли ла ми кажеш само накой евенткойто може да видим на планетитеAdellina Petrova 12:40 PMлжеймс прели е ползвал userPilotService:Screenshot 2026-04-23 at 12.40.22.pngдали не трябва така да се праща?Lukas Kovallk 12.41 pMlда и аз го ползвам такаще го порверяAdelina Petrova 12:42 PMаз ше направя елин пепорт ла вила лали шепокаже нещоLukas Kovalik 12:43 PNпросто искам ла си соавня и тествам товакоетоо илва вече от планета сьс това кеото.Message Adelina Petrova+ Aa IFV faVsco.js°9 JY-20157-AJ-report-not-send-notificaticProject©) Ask .JiminnvReportActivityService.phgC BaseService.phpC) CachedermserviceDecoratoro© CountryCodeResolver.php% CrmActivityProviderintegratedAutomateakeportsserwice.ongC) AutomatedReportsCommana lest.onpy keporcontroller.onp(C) AutomatedReportGenerated.pnpOcrmacuvilyserwice.onp© CrmConfigurationSettingsServ© CrmObjectsResolver.php© DefaultProspectSearchStrateg©) EmailHelper.php© FindsProspectinterface.php© LayoutManager.php• MatchDomainByEmailInterface© OpportunityActivitvMatcher.pr• OpportunitySvncStrateavinteri© OpportunitvSvncStrateayReso© ProspectCache.phr° ProspectSearchScope.php© ProspectSearchStrategyFactol© ProspectSearchStrategyInterfaC) ProviderRedistrv.oho@ RecordSelector.ohnT ResolveComoanvNameßv=mail© TimePeriodlterator.ohn,Mimoor• M Internalv mKiockv M AutomatedRenorts© ActivityTypeService.php©AskJiminnyReportActivitySt(C) AutomatedPenortsCallhack©AutomatedReportsService.1© DealStagesService.php© RecipientsService.php€ ReportSort.php€ ReportSortDirection.php© KioskService.php> 0 Maili> C MeetingGenerator> C Notification> C7 OAuth2> M RecallAil> MSecurityreport-not-generated.blade.phgclass Userpilotillent107> M Strateav> MStreamina.> M Team> D Telephonyv M UserPilot(c) SvncllserPilotComnanvllictongc) UcerDilotclient nhnMWehhookC. AbstractService nhnprivate const APT.ENDPOLNT ='https:Wapi.userpilot.1o/v1/';3 usaaesprivate const AnALyIncs.ENDPOINt ='https:/analytex.userpilot.1o/y1/';ousagesprivate function createRequest: PendingRequest(...}public function track(User Suser, string $event, array $payload = []): voidif (Sthis->shouldRequest(Suser->getTeam) === false) {recurn,Sthis->createRequest->post( url: self::ANALYTICS ENDPOINT . 'track'. ['event name' = Sevent'user id' => Suser-›qetUuido.public function unsertUser(User Suser): voidf...}public function unsertCompany(Team Steam): voidk...}nrivate function detcomnanvMetadatadTeam Steam)• arnav-...?nublie function deletellsen(llsen Suser): void!...}public function deleteCompany(Team $team): void(...}public function shouldRequest(Team $team): boolreturn config( key: 'services.userpilot.key') !== null && $team->getPartnerId === Partner::PARTNER DEFAULT:Support Daily - in 2h 15 mБГ100% 152Thu 23 Apr 12:45:46= custom.log= laravel.log4 SF [jiminny@localhost] XA console [PROD]© DatabaseActivities.php© DealsRepository.phpA console [EU]console SlAGiNg Tx: AutoPlayground vDecect a trul gruups y suin pLayuuono paaselect * trom qroups where 1d = 28dojiminny vОг д1 417 22 2Äжselect * from plavbooks where id = 179:select * from users where 1d = 143:select * from crm_profiles where user_id = 143;select * from activities where erm confiquration id = 39 and tvpe = 'confe'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003: # 00U0400000086f0MACSELECT ar.id, ar.uuid, ar.media type, ar.status, a.typeFROM automated_report_results arJOIN automated_reports a ON a.id = ar.report idWHERE a.tyRe = 'ask_jiminnx'I TMTT 10÷CSISATautomated_report_results*.* FROMINNER JOINWHERE 1=1AND'automated report results'.'report id' = 'automated_reports'.'idautomated_report_results'.'qenerated_at' IS NOT NULLAND 'automated_ report_results'.'sent_at' IS NOT NULLSELEC * FROM automated reports where 1d = 671SELECT * FROM automated reports where id = 42SELECT * FROM users WHERE id = 143: # aroup 28select * from teams where id = 3143;select * from con confiqurations where id = 500:select * from users where name = 'Integration Account'; # 1695SELECT * EROM social accounts WHFREsociable id = 1695.select * fron activities where erm confiaunation id = 30and recording_state = 'recorded' and duration › 60and status = 'completed' and actual_start_time >= '2025-12-01';|sEiEeT + EPOM antivitioc WHEDE nuid +o hinf:458cf015-h014-4000-h092-5/97h2...
|
NULL
|
6218062705825993628
|
NULL
|
idle
|
ocr
|
NULL
|
Home1889FllesLateMoreSlackcalMistonJiminny... v# p Home1889FllesLateMoreSlackcalMistonJiminny... v# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...6? Direct messagesAdelina Petrova(3) Aneliva Angelova. ...Stoyan Tomov. Nikolay YankovP Petko Kashinskif Aneliva Angelovae Nikolay Nikolov# Mario GeoreievSe: Todor StamatovA Gabriela DurevaeVacil Vaciler.. Galva Dimitrova2 Stefka Stoyanova*% Stoyan Tanev:: Apps• ToastIJira CloudWindowheltAdelina Petrova• Messagest Add canvas@ Filesами ше лобавіToday ~ ли не е нешо посамия event. пуснах го на сляпо нямаше какда го тествамможе ли ла ми кажеш само накой евенткойто може да видим на планетитеAdellina Petrova 12:40 PMлжеймс прели е ползвал userPilotService:Screenshot 2026-04-23 at 12.40.22.pngдали не трябва така да се праща?Lukas Kovallk 12.41 pMlда и аз го ползвам такаще го порверяAdelina Petrova 12:42 PMаз ше направя елин пепорт ла вила лали шепокаже нещоLukas Kovalik 12:43 PNпросто искам ла си соавня и тествам товакоетоо илва вече от планета сьс това кеото.Message Adelina Petrova+ Aa IFV faVsco.js°9 JY-20157-AJ-report-not-send-notificaticProject©) Ask .JiminnvReportActivityService.phgC BaseService.phpC) CachedermserviceDecoratoro© CountryCodeResolver.php% CrmActivityProviderintegratedAutomateakeportsserwice.ongC) AutomatedReportsCommana lest.onpy keporcontroller.onp(C) AutomatedReportGenerated.pnpOcrmacuvilyserwice.onp© CrmConfigurationSettingsServ© CrmObjectsResolver.php© DefaultProspectSearchStrateg©) EmailHelper.php© FindsProspectinterface.php© LayoutManager.php• MatchDomainByEmailInterface© OpportunityActivitvMatcher.pr• OpportunitySvncStrateavinteri© OpportunitvSvncStrateayReso© ProspectCache.phr° ProspectSearchScope.php© ProspectSearchStrategyFactol© ProspectSearchStrategyInterfaC) ProviderRedistrv.oho@ RecordSelector.ohnT ResolveComoanvNameßv=mail© TimePeriodlterator.ohn,Mimoor• M Internalv mKiockv M AutomatedRenorts© ActivityTypeService.php©AskJiminnyReportActivitySt(C) AutomatedPenortsCallhack©AutomatedReportsService.1© DealStagesService.php© RecipientsService.php€ ReportSort.php€ ReportSortDirection.php© KioskService.php> 0 Maili> C MeetingGenerator> C Notification> C7 OAuth2> M RecallAil> MSecurityreport-not-generated.blade.phgclass Userpilotillent107> M Strateav> MStreamina.> M Team> D Telephonyv M UserPilot(c) SvncllserPilotComnanvllictongc) UcerDilotclient nhnMWehhookC. AbstractService nhnprivate const APT.ENDPOLNT ='https:Wapi.userpilot.1o/v1/';3 usaaesprivate const AnALyIncs.ENDPOINt ='https:/analytex.userpilot.1o/y1/';ousagesprivate function createRequest: PendingRequest(...}public function track(User Suser, string $event, array $payload = []): voidif (Sthis->shouldRequest(Suser->getTeam) === false) {recurn,Sthis->createRequest->post( url: self::ANALYTICS ENDPOINT . 'track'. ['event name' = Sevent'user id' => Suser-›qetUuido.public function unsertUser(User Suser): voidf...}public function unsertCompany(Team Steam): voidk...}nrivate function detcomnanvMetadatadTeam Steam)• arnav-...?nublie function deletellsen(llsen Suser): void!...}public function deleteCompany(Team $team): void(...}public function shouldRequest(Team $team): boolreturn config( key: 'services.userpilot.key') !== null && $team->getPartnerId === Partner::PARTNER DEFAULT:Support Daily - in 2h 15 mБГ100% 152Thu 23 Apr 12:45:46= custom.log= laravel.log4 SF [jiminny@localhost] XA console [PROD]© DatabaseActivities.php© DealsRepository.phpA console [EU]console SlAGiNg Tx: AutoPlayground vDecect a trul gruups y suin pLayuuono paaselect * trom qroups where 1d = 28dojiminny vОг д1 417 22 2Äжselect * from plavbooks where id = 179:select * from users where 1d = 143:select * from crm_profiles where user_id = 143;select * from activities where erm confiquration id = 39 and tvpe = 'confe'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003: # 00U0400000086f0MACSELECT ar.id, ar.uuid, ar.media type, ar.status, a.typeFROM automated_report_results arJOIN automated_reports a ON a.id = ar.report idWHERE a.tyRe = 'ask_jiminnx'I TMTT 10÷CSISATautomated_report_results*.* FROMINNER JOINWHERE 1=1AND'automated report results'.'report id' = 'automated_reports'.'idautomated_report_results'.'qenerated_at' IS NOT NULLAND 'automated_ report_results'.'sent_at' IS NOT NULLSELEC * FROM automated reports where 1d = 671SELECT * FROM automated reports where id = 42SELECT * FROM users WHERE id = 143: # aroup 28select * from teams where id = 3143;select * from con confiqurations where id = 500:select * from users where name = 'Integration Account'; # 1695SELECT * EROM social accounts WHFREsociable id = 1695.select * fron activities where erm confiaunation id = 30and recording_state = 'recorded' and duration › 60and status = 'completed' and actual_start_time >= '2025-12-01';|sEiEeT + EPOM antivitioc WHEDE nuid +o hinf:458cf015-h014-4000-h092-5/97h2...
|
NULL
|
|
74390
|
NULL
|
0
|
2026-04-23T09:45:33.381184+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776937533381_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0# Support Daily - in 2 h 15 m100% <478DOCKER (docker-compose)DOCKER181DEV (-zsh)O $82APP (-zsh)DOCKER (docker-compose)--to='2026-04-23 09:45:00'--skipProviders='telus'--skipProviders='ringcentral'--skipProviders='talkdesk'--skipProviders='avaya'> '/proc/1/fd/1' 2>&1docker_lamp_12026-04-23 09:45:20 Running ['artisan'crm:bullhorn:ping --heartbeat]2026-04-2309:45:20 Jiminny\Jobs\Activity\SyncActivitydocker_lamp_12026-04-23 09:45:20 Jiminny\Jobs\Activity\SyncActivity ...docker_lamp_12026-04-23 09:45:20 Jiminny\Jobs\Activity\SyncActivityRUNNINGdocker_lamp_12026-04-2309:45:21 Jiminny\Jobs\Activity\SyncActivity514.33msDONEdocker_lamp_12026-04-2309:45:21 Jiminny\Jobs\Activity\SyncActivityRUNNINGdocker_lamp_12026-04-23 09:45:21 Jiminny\Jobs\Activity|SyncActivity485.98ms DONEdocker_lamp_12026-04-23 09:45:21 Jiminny\Jobs\Activity\SyncActivityRUNNINGdocker_1amp_10 social account(s)to be processeddocker_lamp_1docker_lamp_1docker_lamp_1Done!1S DONEdocker_lamp_1l '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1docker_lamp_12026-04-23 09:45:22 Running ['artisan' nudges:send --silent]2026-04-23 09:45:22docker_lamp_1Jiminny\Jobs\Activity\SyncActivity523.24ms DONE12026-04-23 09:45:22 Jiminny\Jobs\Activity\SyncActivityRUNNINGdocker_lamp_12026-04-23 09:45:23 Jiminny\Jobs\Activity\SyncActivity479.15ms DONEdocker_lamp_12026-04-23 09:45:23 Jiminny\Jobs\Activity\SyncActivityRUNNINGdocker_lamp_12026-04-23 09:45:23 Jiminny\Jobs\Activity\SyncActivitymsDONE269.13docker_lamp_11s DONEdocker_1amp_1'/usr/local/bin/php' 'artisan' nudges:send --silent > '/proc/1/fd/1' 2>&1docker_lamp_12026-04-23 09:45:23 Running ['artisan' jiminny:playlists:normalize-sort]1S DONEdocker_lamp_11 '/usr/local/bin/php' 'artisan' jiminny:playlists:normalize-sort>'/proc/1/fd/1'2>&1docker_lamp_1docker_lamp_1I run_artisan_schedule: Done waiting for schedule:run*3screenpipe"Y2PROD (-zsh)Last login:Thu Apr 23 12:12:54 on consoleO ₴4-zshPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |X 13EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-JiminnyT5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX T6 FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IX t7 Ext(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|Thu 23 Apr 12:45:33181*5PRODSTAGEFRONTENDEXTENSIONView in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
1464273063522872940
|
NULL
|
idle
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0# Support Daily - in 2 h 15 m100% <478DOCKER (docker-compose)DOCKER181DEV (-zsh)O $82APP (-zsh)DOCKER (docker-compose)--to='2026-04-23 09:45:00'--skipProviders='telus'--skipProviders='ringcentral'--skipProviders='talkdesk'--skipProviders='avaya'> '/proc/1/fd/1' 2>&1docker_lamp_12026-04-23 09:45:20 Running ['artisan'crm:bullhorn:ping --heartbeat]2026-04-2309:45:20 Jiminny\Jobs\Activity\SyncActivitydocker_lamp_12026-04-23 09:45:20 Jiminny\Jobs\Activity\SyncActivity ...docker_lamp_12026-04-23 09:45:20 Jiminny\Jobs\Activity\SyncActivityRUNNINGdocker_lamp_12026-04-2309:45:21 Jiminny\Jobs\Activity\SyncActivity514.33msDONEdocker_lamp_12026-04-2309:45:21 Jiminny\Jobs\Activity\SyncActivityRUNNINGdocker_lamp_12026-04-23 09:45:21 Jiminny\Jobs\Activity|SyncActivity485.98ms DONEdocker_lamp_12026-04-23 09:45:21 Jiminny\Jobs\Activity\SyncActivityRUNNINGdocker_1amp_10 social account(s)to be processeddocker_lamp_1docker_lamp_1docker_lamp_1Done!1S DONEdocker_lamp_1l '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1docker_lamp_12026-04-23 09:45:22 Running ['artisan' nudges:send --silent]2026-04-23 09:45:22docker_lamp_1Jiminny\Jobs\Activity\SyncActivity523.24ms DONE12026-04-23 09:45:22 Jiminny\Jobs\Activity\SyncActivityRUNNINGdocker_lamp_12026-04-23 09:45:23 Jiminny\Jobs\Activity\SyncActivity479.15ms DONEdocker_lamp_12026-04-23 09:45:23 Jiminny\Jobs\Activity\SyncActivityRUNNINGdocker_lamp_12026-04-23 09:45:23 Jiminny\Jobs\Activity\SyncActivitymsDONE269.13docker_lamp_11s DONEdocker_1amp_1'/usr/local/bin/php' 'artisan' nudges:send --silent > '/proc/1/fd/1' 2>&1docker_lamp_12026-04-23 09:45:23 Running ['artisan' jiminny:playlists:normalize-sort]1S DONEdocker_lamp_11 '/usr/local/bin/php' 'artisan' jiminny:playlists:normalize-sort>'/proc/1/fd/1'2>&1docker_lamp_1docker_lamp_1I run_artisan_schedule: Done waiting for schedule:run*3screenpipe"Y2PROD (-zsh)Last login:Thu Apr 23 12:12:54 on consoleO ₴4-zshPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |X 13EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-JiminnyT5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX T6 FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IX t7 Ext(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|Thu 23 Apr 12:45:33181*5PRODSTAGEFRONTENDEXTENSIONView in Docker Desktop@ View ConfigEnable Watch...
|
74388
|
|
74346
|
NULL
|
0
|
2026-04-23T09:40:37.710972+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776937237710_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
slackcalVIewJiminny... vHomeActivityMore# platform slackcalVIewJiminny... vHomeActivityMore# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...6? Direct messagesP. Adelina Petrova3 Aneliya Angelova, ...8P. Stoyan TomovRP. Nikolay Yankov&. Petko Kashinski. Aneliya Angelovaf. Nikolay Nikolov&. Mario GeorgievI. Todor Stamatovf. Gabriela Dureva€. Vasil Vasilev. Galya Dimitrova Ef8. Stefka Stoyanova8. Stoyan Tanev#: Apps® ToastJira CloudGoogle Cale...MistonWindowhelp@ Describe what you are looking for@. Adelina PetrovaMessagesAdd canvasur FilesTimkac Kovalik 14.44 лL/oт bчeраAdelina Petrova 12:30 PMа те не са ли 2 евентаїLukas Kovallk 12:30 PMn ZodidAdelina Petrova 12:31 PMсега ше поглелнаLukas Kovalik 12:32 PMами ако не се праща правилно тогава ще мулобавя логове ла виля какво се случва и.тогава трябва на някаква планетаAdelina Petrova 12:36 PMа ние в кола как го поашаме кьм кюп?Lukas Kovalik 12•38 PMами като пои лоугитеSthis->userPilotClient->track(Suser,ами ше лобавя логове лали не е нешо по.самия event. пуснах го на сляпо нямаше как.ла го тествамможе ли да ми кажеш само накой евенткойто може ла вилим на планетитеMessage Adelina Petrova+ Aa €Adelina Petrova is typins•• ШNew TabAl reports promotion pages by nik• Jy-9712 | Nuges to expire after on8 Jiminny8 Jiminny• New TabO run.userpilot.io/reports/create/trendUntitled Analysis Add descriptionTrends FunnelsPathsRetentionI& Usersal Companies~ MetricsEvents → PH-TI-DealsTotal event countA Event properties → URLequals app.staging.jiminny.com/dashboard+ Add filter+ Add Metric^ Filters+ Select Filter^ BreakdownAll metricsSpecific metrics+ Select BreakdownTodavYesterdayBreakdown Q Search…Metric• 1 A. PH-TI-Deals - Total CountRun QueryMar 25. 2026B 40 0 1 Support Daily- in 2h 20m 0100% C4a ® Thu 23 Apr 12:40:37Give FeedbackX CloseCompare previous periodDwM… LineMar 26, 2026We couldn't find any data for this query— Last 30 days-- Comparative PeriodMar 27, 2026Mar 28. 2026Mar 29. 2026Mar 30.2026Mar 31. 2026Apr 01, 2026Average...
|
NULL
|
-7020287771156655876
|
NULL
|
visual_change
|
ocr
|
NULL
|
slackcalVIewJiminny... vHomeActivityMore# platform slackcalVIewJiminny... vHomeActivityMore# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...6? Direct messagesP. Adelina Petrova3 Aneliya Angelova, ...8P. Stoyan TomovRP. Nikolay Yankov&. Petko Kashinski. Aneliya Angelovaf. Nikolay Nikolov&. Mario GeorgievI. Todor Stamatovf. Gabriela Dureva€. Vasil Vasilev. Galya Dimitrova Ef8. Stefka Stoyanova8. Stoyan Tanev#: Apps® ToastJira CloudGoogle Cale...MistonWindowhelp@ Describe what you are looking for@. Adelina PetrovaMessagesAdd canvasur FilesTimkac Kovalik 14.44 лL/oт bчeраAdelina Petrova 12:30 PMа те не са ли 2 евентаїLukas Kovallk 12:30 PMn ZodidAdelina Petrova 12:31 PMсега ше поглелнаLukas Kovalik 12:32 PMами ако не се праща правилно тогава ще мулобавя логове ла виля какво се случва и.тогава трябва на някаква планетаAdelina Petrova 12:36 PMа ние в кола как го поашаме кьм кюп?Lukas Kovalik 12•38 PMами като пои лоугитеSthis->userPilotClient->track(Suser,ами ше лобавя логове лали не е нешо по.самия event. пуснах го на сляпо нямаше как.ла го тествамможе ли да ми кажеш само накой евенткойто може ла вилим на планетитеMessage Adelina Petrova+ Aa €Adelina Petrova is typins•• ШNew TabAl reports promotion pages by nik• Jy-9712 | Nuges to expire after on8 Jiminny8 Jiminny• New TabO run.userpilot.io/reports/create/trendUntitled Analysis Add descriptionTrends FunnelsPathsRetentionI& Usersal Companies~ MetricsEvents → PH-TI-DealsTotal event countA Event properties → URLequals app.staging.jiminny.com/dashboard+ Add filter+ Add Metric^ Filters+ Select Filter^ BreakdownAll metricsSpecific metrics+ Select BreakdownTodavYesterdayBreakdown Q Search…Metric• 1 A. PH-TI-Deals - Total CountRun QueryMar 25. 2026B 40 0 1 Support Daily- in 2h 20m 0100% C4a ® Thu 23 Apr 12:40:37Give FeedbackX CloseCompare previous periodDwM… LineMar 26, 2026We couldn't find any data for this query— Last 30 days-- Comparative PeriodMar 27, 2026Mar 28. 2026Mar 29. 2026Mar 30.2026Mar 31. 2026Apr 01, 2026Average...
|
NULL
|
|
74344
|
NULL
|
0
|
2026-04-23T09:40:35.451613+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776937235451_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDOCKER181DEV (-zsh)O $82T1DOCKER (docker-compose)1/fd/1'2>&1docker_lamp_12026-04-23 09:40:04 Running ['artisan'jiminny:monitor-social-account1s DONEdocker_1amp_1• '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1docker_lamp_12026-04-23 09:40:05 Running ['artisan'mailbox:skip-lists:refresh] .1s DONEdocker_lamp_1• '/usr/local/bin/php' 'artisan'mailbox:skip-lists:refresh › '/proc/1/fd/1'docker_lamp_12026-04-23 09:40:07 Running ['artisan'mailbox:batch:process--max-batches=15]1s DONEdocker_lamp_1• '/usr/local/bin/php' 'artisan'15 >'/proc/1/fd/1'mailbox:batch:process --max-batches=docker_1amp_12026-04-23 09:40:08 Running ['artisan'conference:monitor:count]1sDONEdocker_lamp_11 '/usr/local/bin/php' 'artisan'conference:monitor: count > '/proc/1/fd/1'2>&1docker_lamp_1 |2026-04-23 09:40:10 Running ['artisan' activity:purge-stale]1s DONEdocker_lamp_1l '/usr/local/bin/php' 'artisan' activity:purge-stale › */proc/1/fd/12>81docker_lamp_1docker_lamp_1docker_1amp_12026-04-23 09:40:11 Running ['artisan'"error":"invalid_request"mailbox:text-relay:sync] {"error_description": "Invalid impersonation \u0026quot;sub\u0026quot;field:docker_lamp_11}docker_lamp_1docker_lamp_1.... 4s DONE• '/usr/local/bin/php' 'artisan'mailbox:text-relay:sync > */proc/1/fd/1'2>&1docker_lamp_12026-04-23 09:40:15 Running ['artisan'conference:pre-meeting-notification]5s DONEdocker_lamp_1• '/usr/local/bin/php' 'artisan'conference:pre-meeting-notification> '/proc/1/fd/1'docker_1amp_112026-04-23 09:40:21 Running ['artisan'conference:monitor:start]...5sDONEdocker_lamp_11 '/usr/local/bin/php' 'artisan'conference:monitor:start › '/proc/1/fd/1'2>&1docker_lamp_12026-04-23 09:40:26 Running ['artisan' conference:monitor:end]8S DONEdocker_lamp_1l '/usr/local/bin/php' 'artisan' conference:monitor:end > */proc/1/fd/1' 2>81V View in Docker Desktop@ View ConfigEnable Watch• Support Daily - in 2h 20 mБг)100% <478DOCKER (docker-compose)APP (-zsh)*3ffmpegY2PROD (-zsh)Last login:Thu Apr 23 12:12:54 on console884-zshPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |Y3EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsfile in /Users/lukas or its parentsPoetry could not find a pyproject. tom file in Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|X T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetrycould not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-JiminnyT5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX T6 FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IEXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|Thu 23 Apr 12:40:35181*5PRODSTAGEFRONTENDEXTENSION...
|
NULL
|
3772109725977593571
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDOCKER181DEV (-zsh)O $82T1DOCKER (docker-compose)1/fd/1'2>&1docker_lamp_12026-04-23 09:40:04 Running ['artisan'jiminny:monitor-social-account1s DONEdocker_1amp_1• '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1docker_lamp_12026-04-23 09:40:05 Running ['artisan'mailbox:skip-lists:refresh] .1s DONEdocker_lamp_1• '/usr/local/bin/php' 'artisan'mailbox:skip-lists:refresh › '/proc/1/fd/1'docker_lamp_12026-04-23 09:40:07 Running ['artisan'mailbox:batch:process--max-batches=15]1s DONEdocker_lamp_1• '/usr/local/bin/php' 'artisan'15 >'/proc/1/fd/1'mailbox:batch:process --max-batches=docker_1amp_12026-04-23 09:40:08 Running ['artisan'conference:monitor:count]1sDONEdocker_lamp_11 '/usr/local/bin/php' 'artisan'conference:monitor: count > '/proc/1/fd/1'2>&1docker_lamp_1 |2026-04-23 09:40:10 Running ['artisan' activity:purge-stale]1s DONEdocker_lamp_1l '/usr/local/bin/php' 'artisan' activity:purge-stale › */proc/1/fd/12>81docker_lamp_1docker_lamp_1docker_1amp_12026-04-23 09:40:11 Running ['artisan'"error":"invalid_request"mailbox:text-relay:sync] {"error_description": "Invalid impersonation \u0026quot;sub\u0026quot;field:docker_lamp_11}docker_lamp_1docker_lamp_1.... 4s DONE• '/usr/local/bin/php' 'artisan'mailbox:text-relay:sync > */proc/1/fd/1'2>&1docker_lamp_12026-04-23 09:40:15 Running ['artisan'conference:pre-meeting-notification]5s DONEdocker_lamp_1• '/usr/local/bin/php' 'artisan'conference:pre-meeting-notification> '/proc/1/fd/1'docker_1amp_112026-04-23 09:40:21 Running ['artisan'conference:monitor:start]...5sDONEdocker_lamp_11 '/usr/local/bin/php' 'artisan'conference:monitor:start › '/proc/1/fd/1'2>&1docker_lamp_12026-04-23 09:40:26 Running ['artisan' conference:monitor:end]8S DONEdocker_lamp_1l '/usr/local/bin/php' 'artisan' conference:monitor:end > */proc/1/fd/1' 2>81V View in Docker Desktop@ View ConfigEnable Watch• Support Daily - in 2h 20 mБг)100% <478DOCKER (docker-compose)APP (-zsh)*3ffmpegY2PROD (-zsh)Last login:Thu Apr 23 12:12:54 on console884-zshPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |Y3EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsfile in /Users/lukas or its parentsPoetry could not find a pyproject. tom file in Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|X T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetrycould not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-JiminnyT5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX T6 FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IEXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|Thu 23 Apr 12:40:35181*5PRODSTAGEFRONTENDEXTENSION...
|
NULL
|
|
74290
|
NULL
|
0
|
2026-04-23T09:35:23.842293+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776936923842_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDOCKER181DEV (-zsh)O $8211DOCKER (docker-compose)tches=15]1s DONEdocker_lamp_1• '/usr/local/bin/php' 'artisan'mailbox:batch:process --max-batches=15 >*/proc/1/fd/1' 2>&1docker_1amp_112026-04-23 09:35:08 Running ['artisan'activity:purge-stale]1s DONEdocker_lamp_11 '/usr/local/bin/php' 'artisan'activity:purge-stale › */proc/1/fd/12>&1docker_lamp_1docker_lamp_1docker_lamp_12026-04-23 09:35:09 Running ['artisan'"error":"invalid_request"mailbox:text-relay:sync]{"error_description": "Invalid impersonation \u0026quot;sub\u0026quot;field: @"docker_lamp_113docker_lamp_1docker_1amp_1.... 1s DONE• '/usr/local/bin/php' 'artisan'mailbox:text-relay:sync > */proc/1/fd/1'2>81-docker_lamp_12026-04-23 09:35:10 Running ['artisan'conference:pre-meeting-notification]1s DONEdocker_lamp_11l '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification> '/proc/1/fd/1' 2>&1docker_lamp_12026-04-23 09:35:11 Running ['artisan'conference:monitor:start]...docker_lamp_1" '/usr/local/bin/php' 'artisan'conference:monitor:start > */proc/1/docker_1amp_12026-04-23 09:35:13 Running ['artisan' conference:monitor:end]docker_lamp_1l '/usr/local/bin/php' 'artisan' conference:monitor:end › */proc/1/fddocker_lamp_12026-04-23 09:35:15 Running ['artisan' jiminny:fix-hubspot-tokens] .docker_lamp_1" '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens> */proc/docker_lamp_12026-04-23 09:35:19 Running ['artisan' conference:pre-meeting-reminder] in background4.78ms DONEdocker_1amp_1• ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder>/proc/1/fd/1'2>&1 ; '/usr/local/bin/php' 'artisan'schedule:finish"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") › '/dev/null'docker_1amp_12026-04-23 09:35:19 Running ['artisan' hubspot:journal-poll --start]3.18ms DONEdocker_1amp_1" ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php'schedule: finish"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "§?") > '/dev/null' 2>&1 &# Support Daily • in 2h 25 mБг)100% <78DOCKER (docker-compose)APP (-zsh)*3ffmpegY2PROD (-zsh)Last login:Thu Apr 23 12:12:54 on console₴4-zshPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |X L3EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|X T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetrycould not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-JiminnyT5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX 16FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I17 EXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|Thu 23 Apr 12:35:23181*5PRODSTAGEFRONTENDEXTENSIONV View in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
-5230902131765986839
|
NULL
|
idle
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDOCKER181DEV (-zsh)O $8211DOCKER (docker-compose)tches=15]1s DONEdocker_lamp_1• '/usr/local/bin/php' 'artisan'mailbox:batch:process --max-batches=15 >*/proc/1/fd/1' 2>&1docker_1amp_112026-04-23 09:35:08 Running ['artisan'activity:purge-stale]1s DONEdocker_lamp_11 '/usr/local/bin/php' 'artisan'activity:purge-stale › */proc/1/fd/12>&1docker_lamp_1docker_lamp_1docker_lamp_12026-04-23 09:35:09 Running ['artisan'"error":"invalid_request"mailbox:text-relay:sync]{"error_description": "Invalid impersonation \u0026quot;sub\u0026quot;field: @"docker_lamp_113docker_lamp_1docker_1amp_1.... 1s DONE• '/usr/local/bin/php' 'artisan'mailbox:text-relay:sync > */proc/1/fd/1'2>81-docker_lamp_12026-04-23 09:35:10 Running ['artisan'conference:pre-meeting-notification]1s DONEdocker_lamp_11l '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification> '/proc/1/fd/1' 2>&1docker_lamp_12026-04-23 09:35:11 Running ['artisan'conference:monitor:start]...docker_lamp_1" '/usr/local/bin/php' 'artisan'conference:monitor:start > */proc/1/docker_1amp_12026-04-23 09:35:13 Running ['artisan' conference:monitor:end]docker_lamp_1l '/usr/local/bin/php' 'artisan' conference:monitor:end › */proc/1/fddocker_lamp_12026-04-23 09:35:15 Running ['artisan' jiminny:fix-hubspot-tokens] .docker_lamp_1" '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens> */proc/docker_lamp_12026-04-23 09:35:19 Running ['artisan' conference:pre-meeting-reminder] in background4.78ms DONEdocker_1amp_1• ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder>/proc/1/fd/1'2>&1 ; '/usr/local/bin/php' 'artisan'schedule:finish"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") › '/dev/null'docker_1amp_12026-04-23 09:35:19 Running ['artisan' hubspot:journal-poll --start]3.18ms DONEdocker_1amp_1" ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php'schedule: finish"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "§?") > '/dev/null' 2>&1 &# Support Daily • in 2h 25 mБг)100% <78DOCKER (docker-compose)APP (-zsh)*3ffmpegY2PROD (-zsh)Last login:Thu Apr 23 12:12:54 on console₴4-zshPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |X L3EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|X T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetrycould not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-JiminnyT5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX 16FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I17 EXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|Thu 23 Apr 12:35:23181*5PRODSTAGEFRONTENDEXTENSIONV View in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
|
74289
|
NULL
|
0
|
2026-04-23T09:35:23.420506+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776936923420_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
ActivityMoreSlackcalVIewMistonJiminny... v# platfo ActivityMoreSlackcalVIewMistonJiminny... v# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...6? Direct messagesAdelina Petrova(3) Aneliva Angelova. .... Stoyan Tomov. Nikolay YankovP Petko Kashinskif Aneliva Angelovae Nikolay Nikolov8 Mario GeorgievSe: Todor StamatovA Gabriela Dureva• Vasil Vasilev. Galva Dimitrova2 Stefka Stoyanova*% Stoyan Tanev::: Apps• ToastSi Jira GloudConolo CalelWindowhelpAdelina Petrova• MessagesAdd canvaUr Filesи коле на nоол.нито за stagine поез metrics не вижлам нешоне тояова ли да се пусне нешодопьлнителноили пак не се праша правилноAdelina Petrova 12:30 PM• ами по принцип ако се праша правилно итряовало автоматично да започне да сето на прод ли е качено?luknc Koualk 42.20 0Mот вчераAdelina Petrova 12:30 PMа те не са ли 2 евентаLukas Kovallik 12.30 PMи лватаAdelina Petrova 12:31 PMсега ше поглелнаLukas Kovalik 12:32 PMами ако не се поаша поавилно тогава ше мулобавя логове ла виля какво се случва и.Message Adelina Petrova+ Aa IFV faVsco.js°9 JY-20157-AJ-report-not-send-notificaProiectvv @ AutomatedReportsAutomatedReportsService.phpv D UserPilot© EventServiceProvider.php© TrackAutomatedReportGer> @ CalendarsC) senakeportNotcenerateamallJob.pngvGCrmAutomatedkeporscommana.pnpC) AutomatedReportsCommana lest.onpy keporcontroller.onp©) AskJimC) Requreport-not-generated.blade.phg) PlannatActivityListener.phpboorstrapintearationaoo.ond© ImportActivityTypes.php->trackecw"TJY:C) ImportMetadata.php© InitProfiles.phpc) LavoutModitiedListener.pho© LayoutUpdatedListener.phpRematchActivitvoncrmobiectl© RemoteCrmRecordDeletedListC) Reso veowner.ono© SyncOpportunity.php• SvncProfileLeads.oho40C) [EMAIL]› M DealRisks> M slacticSearch>O Groups> D Import> M Mailhoyv D Nudges> MUcerPilot© CreateNudgeCreatedEvent.ph> • Opportunitiesv D Playbooks© AttachLayout.php© ChangeSidekickSettings.php© CreatePlaybookCreatedEvent.v 0 Playlists> @ Activitiesv → PlanhatC CreateActivity AddedToPlay 59>MUserPilot@ ImportGroupPlavlistSharesList._Teams> O Transcriptionv Users@ ActivitvProviderDisconnectedl@ ActivitvProviderintearated.ohrC CreateDefaultPlaylist.php@ CreateDefaultSavedSearches, 66©CreateGroupCreatedEvent.phfC) DeleteScheduledl|serActivitiesФ NotifvCrmOwnerDisconnectedC) NotifvCrmlJserDisconnectedl.il© SetDefaultAvatarListener.php© SetupCalendarSync.php(e) CotunMailSune nhn© Syncintercom.phpclass TrackAutomatedReportGeneratedEvent implements ShouldQueuepublic function handle(AutomatedReportGenerated $event): voidrecurn.spayload = schis->bu1lorayloadlsaucomacedkeporc)"SeventName = sth1s->resolvezventNameSautomatedReport)foreach ($this->resolveUsers($automatedReport) as $user) {$this->userPilotClient->track($user, $eventName, $payload);•catch CGuzzileExcention Se) <Sthis->release( delav: 3600)* @return array<UserContract>lusageprivate function resolveUsers(AutomatedReport SautomatedReport): arrayif ($automatedReport->isAskJiminnyReportO){$creator = SautomatedReport->getCreator®return Screator !== null? [Screator]: []:return sthis->automatedreportsServ1ce->qetRec1p1entuser0bnectsSautomatedReport:orivate function butldPavloadl AutomatedRevort sautomatedRenort*arravreturn f'renort tvnel => SautomatedRenort->aettivne0..l' frequencv=SautomatedRenort->aet=requencvor1 usagennivate function nesolveFventName(AutomatedRenon+ SautomatedRenont• strinal© AskJiminnyReportActivityService.phpAutomatedReportGenerated.phppnp apLvz.php© AutomatedReportResult.php# Support Daily - in 2h 25 mБГ100% 152Thu 23 Apr 12:35:23= custom.log= laravel.log4 SF [jiminny@localhost] Xf ho_local Uiminny@localnostA console [PROD]© DatabaseActivities.php© DealsRepository.phpA console [EU)A console (STAGING] Tx: AutoPlaygroundDecect a trul gruups y suin pLayuuono paaselect * trom qroups where 1d = 28dojiminny021 A1 A17 X2 X4 лselect * from plavbooks where id = 179:select * from users where 1d = 143:select * from crm_profiles where user_id = 143;select * from activities where erm confiquration id = 39 and tvpe = 'confe'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003: # 00U0400000086F0MACFROM automated_report_results arWHERE a.type = 'ask_jiminny'I TMTT 10÷CSISAT"automatod nonont noculte' * CP0M "automatod nonont nocultaINNER JOINWHERE 1=1ANDautomated_report_results'.'report id' =automated_reports'.'idAND'automated_report_results'.'sent_at' IS NOT NULLSELECT * FROM automated_reports where id = 67;SELECT * FROM automated reponts where id = 42:SELECT * FROM users WHERE id = 143: # aroup 28sellect * from teams whene 1d= 3145select * from con confiqurations where id = 500:select * from users where name = 'Integration Account'; # 1695SELECT * EROM social accounts WHERE sociable id = 1695÷select * fron activities where erm confiauration id = 30and recording state = 'recorded' and duration > 60and status = 'completed' and actual_start_time >= '2025-12-01';|SELECT + EPOM ectivitioc WHEDE nuid +o hinf1459c£015-h014-4000-h092-5/97h2...
|
NULL
|
8184052401010912829
|
NULL
|
idle
|
ocr
|
NULL
|
ActivityMoreSlackcalVIewMistonJiminny... v# platfo ActivityMoreSlackcalVIewMistonJiminny... v# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...6? Direct messagesAdelina Petrova(3) Aneliva Angelova. .... Stoyan Tomov. Nikolay YankovP Petko Kashinskif Aneliva Angelovae Nikolay Nikolov8 Mario GeorgievSe: Todor StamatovA Gabriela Dureva• Vasil Vasilev. Galva Dimitrova2 Stefka Stoyanova*% Stoyan Tanev::: Apps• ToastSi Jira GloudConolo CalelWindowhelpAdelina Petrova• MessagesAdd canvaUr Filesи коле на nоол.нито за stagine поез metrics не вижлам нешоне тояова ли да се пусне нешодопьлнителноили пак не се праша правилноAdelina Petrova 12:30 PM• ами по принцип ако се праша правилно итряовало автоматично да започне да сето на прод ли е качено?luknc Koualk 42.20 0Mот вчераAdelina Petrova 12:30 PMа те не са ли 2 евентаLukas Kovallik 12.30 PMи лватаAdelina Petrova 12:31 PMсега ше поглелнаLukas Kovalik 12:32 PMами ако не се поаша поавилно тогава ше мулобавя логове ла виля какво се случва и.Message Adelina Petrova+ Aa IFV faVsco.js°9 JY-20157-AJ-report-not-send-notificaProiectvv @ AutomatedReportsAutomatedReportsService.phpv D UserPilot© EventServiceProvider.php© TrackAutomatedReportGer> @ CalendarsC) senakeportNotcenerateamallJob.pngvGCrmAutomatedkeporscommana.pnpC) AutomatedReportsCommana lest.onpy keporcontroller.onp©) AskJimC) Requreport-not-generated.blade.phg) PlannatActivityListener.phpboorstrapintearationaoo.ond© ImportActivityTypes.php->trackecw"TJY:C) ImportMetadata.php© InitProfiles.phpc) LavoutModitiedListener.pho© LayoutUpdatedListener.phpRematchActivitvoncrmobiectl© RemoteCrmRecordDeletedListC) Reso veowner.ono© SyncOpportunity.php• SvncProfileLeads.oho40C) [EMAIL]› M DealRisks> M slacticSearch>O Groups> D Import> M Mailhoyv D Nudges> MUcerPilot© CreateNudgeCreatedEvent.ph> • Opportunitiesv D Playbooks© AttachLayout.php© ChangeSidekickSettings.php© CreatePlaybookCreatedEvent.v 0 Playlists> @ Activitiesv → PlanhatC CreateActivity AddedToPlay 59>MUserPilot@ ImportGroupPlavlistSharesList._Teams> O Transcriptionv Users@ ActivitvProviderDisconnectedl@ ActivitvProviderintearated.ohrC CreateDefaultPlaylist.php@ CreateDefaultSavedSearches, 66©CreateGroupCreatedEvent.phfC) DeleteScheduledl|serActivitiesФ NotifvCrmOwnerDisconnectedC) NotifvCrmlJserDisconnectedl.il© SetDefaultAvatarListener.php© SetupCalendarSync.php(e) CotunMailSune nhn© Syncintercom.phpclass TrackAutomatedReportGeneratedEvent implements ShouldQueuepublic function handle(AutomatedReportGenerated $event): voidrecurn.spayload = schis->bu1lorayloadlsaucomacedkeporc)"SeventName = sth1s->resolvezventNameSautomatedReport)foreach ($this->resolveUsers($automatedReport) as $user) {$this->userPilotClient->track($user, $eventName, $payload);•catch CGuzzileExcention Se) <Sthis->release( delav: 3600)* @return array<UserContract>lusageprivate function resolveUsers(AutomatedReport SautomatedReport): arrayif ($automatedReport->isAskJiminnyReportO){$creator = SautomatedReport->getCreator®return Screator !== null? [Screator]: []:return sthis->automatedreportsServ1ce->qetRec1p1entuser0bnectsSautomatedReport:orivate function butldPavloadl AutomatedRevort sautomatedRenort*arravreturn f'renort tvnel => SautomatedRenort->aettivne0..l' frequencv=SautomatedRenort->aet=requencvor1 usagennivate function nesolveFventName(AutomatedRenon+ SautomatedRenont• strinal© AskJiminnyReportActivityService.phpAutomatedReportGenerated.phppnp apLvz.php© AutomatedReportResult.php# Support Daily - in 2h 25 mБГ100% 152Thu 23 Apr 12:35:23= custom.log= laravel.log4 SF [jiminny@localhost] Xf ho_local Uiminny@localnostA console [PROD]© DatabaseActivities.php© DealsRepository.phpA console [EU)A console (STAGING] Tx: AutoPlaygroundDecect a trul gruups y suin pLayuuono paaselect * trom qroups where 1d = 28dojiminny021 A1 A17 X2 X4 лselect * from plavbooks where id = 179:select * from users where 1d = 143:select * from crm_profiles where user_id = 143;select * from activities where erm confiquration id = 39 and tvpe = 'confe'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003: # 00U0400000086F0MACFROM automated_report_results arWHERE a.type = 'ask_jiminny'I TMTT 10÷CSISAT"automatod nonont noculte' * CP0M "automatod nonont nocultaINNER JOINWHERE 1=1ANDautomated_report_results'.'report id' =automated_reports'.'idAND'automated_report_results'.'sent_at' IS NOT NULLSELECT * FROM automated_reports where id = 67;SELECT * FROM automated reponts where id = 42:SELECT * FROM users WHERE id = 143: # aroup 28sellect * from teams whene 1d= 3145select * from con confiqurations where id = 500:select * from users where name = 'Integration Account'; # 1695SELECT * EROM social accounts WHERE sociable id = 1695÷select * fron activities where erm confiauration id = 30and recording state = 'recorded' and duration > 60and status = 'completed' and actual_start_time >= '2025-12-01';|SELECT + EPOM ectivitioc WHEDE nuid +o hinf1459c£015-h014-4000-h092-5/97h2...
|
NULL
|
|
74243
|
NULL
|
0
|
2026-04-23T09:30:21.166531+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776936621166_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionProfilesWindowHelpDOCKER iTerm2ShellEditViewSessionProfilesWindowHelpDOCKER11DOCKER (docker-compose)181DEV (-zsh)O $8298docker_lamp_1docker_lamp_12026-04-2309:29:58,324 INFOspawned:'worker-emails_00' with pid 135992026-04-2309:29:58,332 INFO spawned:*worker-es-update_00'with pid 13600docker_lamp_12026-04-2309:29:58,333INFOspawned:'worker-nudges_00'with pid13601docker_lamp_12026-04-2309:29:59,338 INFOsuccess: artisan-schedule_00 enteredRUNNINGstate,process hasstayedupforthanseconds (startsecs)docker_lamp_11 2026-04-2309:29:59,342INFOsuccess: jiminny-worker-processing-1_00enteredRUNNINGdocker_lamp_1state,processhasstayedupforthan 1seconds (startsecs)| 2026-04-2309:29:59,342 INFOsuccess:jiminny-worker-processing-2_00enteredRUNNINGstate, processhasstayedupfor >than 1seconds (startsecs)docker__Lamp_11 2026-04-2309:29:59,342INFOsuccess: jiminny-worker-processing-3_00enteredRUNNINGstate, processhasstayedupforthan 1seconds (startsecs)docker__Lamp_2026-04-2309:29:59,342INFOsuccess:teredRUNNINGstate,processhasstayedupforjiminny-worker-processing-4_00enthan 1seconds (startsecs)dockerlamp_12026-04-2309:29:59,342 INFOsuccess:jiminny-worker-processing-5_00entered RUNNINGdocker_lamp_1state, process hasstayedup for>than 1seconds (startsecs)1 2026-04-23 09:29:59,343 INFO success: jiminny-worker-processing-delayed-00 entered RUNNING state, process has stayed up for › than 1 seconds (startsecs)docker_lamp_1 | 2026-04-23 09:29:59,343 INFO success: worker_00 entered RUNNING state,process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,343 INFO success: worker-analytics_00 entered RUNNING state, process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,343 INFO success: worker-audio_00entered RUNNING State, process has stayedup for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,343 INFO success: worker-calendar_00 entered RUNNING state, process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,344 INFO success: worker-conferences_00 entered RUNNING state, process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,344 INFO success: worker-crm-sync_00 entered RUNNING state, process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,345 INFO success: worker-crm-update_00 entered RUNNING state, process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,345 INFO success: worker-download_00entered RUNNING state, process has stayed up for › than 1seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,345 INFO success: worker-emails_00entered RUNNINGstate, process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,346 INFO success: worker-es-update_00entered RUNNINGstate, process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,346 INFO success: worker-nudges_00entered RUNNINGstate, process has stayed up for › than 1 seconds (startsecs)Support Daily - in 2h 30 m100% <478DOCKER (docker-compose)APP (-zsh)*3screenpipe"PROD (-zsh)Last login: Thu Apr 23 12:12:54 on consoleO ₴4-zshPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could notfind a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |X 13EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-JiminnyX T5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX T6FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IX W7 ExT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|Thu 23 Apr 12:30:21181*5PRODSTAGEFRONTENDEXTENSIONView in Docker Desktop• View ConfigEnable Watch...
|
NULL
|
2577586027459672722
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionProfilesWindowHelpDOCKER iTerm2ShellEditViewSessionProfilesWindowHelpDOCKER11DOCKER (docker-compose)181DEV (-zsh)O $8298docker_lamp_1docker_lamp_12026-04-2309:29:58,324 INFOspawned:'worker-emails_00' with pid 135992026-04-2309:29:58,332 INFO spawned:*worker-es-update_00'with pid 13600docker_lamp_12026-04-2309:29:58,333INFOspawned:'worker-nudges_00'with pid13601docker_lamp_12026-04-2309:29:59,338 INFOsuccess: artisan-schedule_00 enteredRUNNINGstate,process hasstayedupforthanseconds (startsecs)docker_lamp_11 2026-04-2309:29:59,342INFOsuccess: jiminny-worker-processing-1_00enteredRUNNINGdocker_lamp_1state,processhasstayedupforthan 1seconds (startsecs)| 2026-04-2309:29:59,342 INFOsuccess:jiminny-worker-processing-2_00enteredRUNNINGstate, processhasstayedupfor >than 1seconds (startsecs)docker__Lamp_11 2026-04-2309:29:59,342INFOsuccess: jiminny-worker-processing-3_00enteredRUNNINGstate, processhasstayedupforthan 1seconds (startsecs)docker__Lamp_2026-04-2309:29:59,342INFOsuccess:teredRUNNINGstate,processhasstayedupforjiminny-worker-processing-4_00enthan 1seconds (startsecs)dockerlamp_12026-04-2309:29:59,342 INFOsuccess:jiminny-worker-processing-5_00entered RUNNINGdocker_lamp_1state, process hasstayedup for>than 1seconds (startsecs)1 2026-04-23 09:29:59,343 INFO success: jiminny-worker-processing-delayed-00 entered RUNNING state, process has stayed up for › than 1 seconds (startsecs)docker_lamp_1 | 2026-04-23 09:29:59,343 INFO success: worker_00 entered RUNNING state,process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,343 INFO success: worker-analytics_00 entered RUNNING state, process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,343 INFO success: worker-audio_00entered RUNNING State, process has stayedup for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,343 INFO success: worker-calendar_00 entered RUNNING state, process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,344 INFO success: worker-conferences_00 entered RUNNING state, process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,344 INFO success: worker-crm-sync_00 entered RUNNING state, process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,345 INFO success: worker-crm-update_00 entered RUNNING state, process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,345 INFO success: worker-download_00entered RUNNING state, process has stayed up for › than 1seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,345 INFO success: worker-emails_00entered RUNNINGstate, process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,346 INFO success: worker-es-update_00entered RUNNINGstate, process has stayed up for › than 1 seconds (startsecs)docker_lamp_11 2026-04-23 09:29:59,346 INFO success: worker-nudges_00entered RUNNINGstate, process has stayed up for › than 1 seconds (startsecs)Support Daily - in 2h 30 m100% <478DOCKER (docker-compose)APP (-zsh)*3screenpipe"PROD (-zsh)Last login: Thu Apr 23 12:12:54 on consoleO ₴4-zshPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could notfind a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ |X 13EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-JiminnyX T5QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX T6FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IX W7 ExT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|Thu 23 Apr 12:30:21181*5PRODSTAGEFRONTENDEXTENSIONView in Docker Desktop• View ConfigEnable Watch...
|
74240
|
|
74242
|
NULL
|
0
|
2026-04-23T09:30:20.945584+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776936620945_m2.jpg...
|
PhpStorm
|
faVsco.js – TrackAutomatedReportGeneratedEvent.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
->track(
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
2
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
try {
foreach ($this->resolveUsers($automatedReport) as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Code changed:
Hide
Sync Changes
Hide This Notification...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"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":"JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.10139628,"height":0.025538707},"help_text":"Git Branch: JY-20157-AJ-report-not-send-notification","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.8171542,"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":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.8324468,"top":0.019952115,"width":0.0831117,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.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 'AutomatedReportsCommandTest'","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.35239363,"top":0.32801276,"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.3650266,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"->track(","depth":4,"bounds":{"left":0.37599733,"top":0.3272147,"width":0.043882977,"height":0.015961692},"value":"->track(","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.42885637,"top":0.3272147,"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.43882978,"top":0.3272147,"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.4474734,"top":0.3272147,"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.45611703,"top":0.3272147,"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":"1/1","depth":4,"bounds":{"left":0.46974733,"top":0.3264166,"width":0.025598405,"height":0.017557861},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.49534574,"top":0.3256185,"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.50398934,"top":0.3256185,"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,"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.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.484375,"top":0.3567438,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.49368352,"top":0.3567438,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.5036569,"top":0.3567438,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51263297,"top":0.35514766,"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.5199468,"top":0.35514766,"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\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n try {\n foreach ($this->resolveUsers($automatedReport) as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n try {\n foreach ($this->resolveUsers($automatedReport) as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"bounds":{"left":0.52859044,"top":0.123703115,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"bounds":{"left":0.53723407,"top":0.123703115,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"bounds":{"left":0.5482048,"top":0.123703115,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"bounds":{"left":0.5568484,"top":0.123703115,"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 Query Execution Settings…","depth":4,"bounds":{"left":0.56549203,"top":0.123703115,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"bounds":{"left":0.57646275,"top":0.123703115,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.5874335,"top":0.123703115,"width":0.024268618,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.6140292,"top":0.123703115,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"bounds":{"left":0.625,"top":0.123703115,"width":0.029587766,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"bounds":{"left":0.69647604,"top":0.123703115,"width":0.02825798,"height":0.01915403},"role_description":"button","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,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
1302914717131493518
|
-3034132554561397946
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
->track(
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
2
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
try {
foreach ($this->resolveUsers($automatedReport) as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Code changed:
Hide
Sync Changes
Hide This Notification...
|
NULL
|
|
74175
|
NULL
|
0
|
2026-04-23T09:24:53.226193+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776936293226_m2.jpg...
|
PhpStorm
|
faVsco.js – TrackAutomatedReportGeneratedEvent.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
1
2
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
try {
foreach ($this->resolveUsers($automatedReport) as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Code changed:
Hide
Sync Changes
Hide This Notification
21
1
17
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id
where u.team_id = 1;
SELECT * FROM social_accounts WHERE sociable_id = 1635;
SELECT * FROM users WHERE id = 1635;
select * from teams where id = 1;
select * from users where team_id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;
SELECT * FROM automated_reports where id = 71;
SELECT * FROM automated_report_results where report_id = 71;
UPDATE automated_reports set playbook_categories = NULL where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
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 = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
SELECT `automated_report_results`.* FROM `automated_report_results`
INNER JOIN `automated_reports`
ON `automated_report_results`.`report_id` = `automated_reports`.`id`
WHERE 1=1
AND `automated_report_results`.`generated_at` IS NOT NULL
# AND `automated_report_results`.`sent_at` IS NOT NULL
AND `automated_reports`.`team_id` = 1
AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$."users"')
;
SELECT * FROM automated_reports where id = 67;
SELECT * FROM automated_reports where id = 42;
SELECT * FROM users WHERE id = 143; # group 28
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded' and duration > 60
and status = 'completed' and actual_start_time >= '2025-12-01';
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;
select * from leads;
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.25731382,"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":"JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.10139628,"height":0.025538707},"help_text":"Git Branch: JY-20157-AJ-report-not-send-notification","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.8171542,"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":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.8324468,"top":0.019952115,"width":0.0831117,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.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 'AutomatedReportsCommandTest'","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.60837764,"top":0.22426178,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.61768615,"top":0.22426178,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.62765956,"top":0.22426178,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.63663566,"top":0.22266561,"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.64394945,"top":0.22266561,"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\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n try {\n foreach ($this->resolveUsers($automatedReport) as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n try {\n foreach ($this->resolveUsers($automatedReport) as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"bounds":{"left":0.6525931,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"bounds":{"left":0.6612367,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"bounds":{"left":0.6722075,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"bounds":{"left":0.68085104,"top":0.09896249,"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 Query Execution Settings…","depth":4,"bounds":{"left":0.68949467,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"bounds":{"left":0.70046544,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.71143615,"top":0.09896249,"width":0.024268618,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.7380319,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"bounds":{"left":0.74900264,"top":0.09896249,"width":0.029587766,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"bounds":{"left":0.9587766,"top":0.09896249,"width":0.02825798,"height":0.01915403},"role_description":"button","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":"21","depth":4,"bounds":{"left":0.9222075,"top":0.123703115,"width":0.009640957,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.9338431,"top":0.123703115,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"bounds":{"left":0.9431516,"top":0.123703115,"width":0.00930851,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.9544548,"top":0.123703115,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.9644282,"top":0.123703115,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9740692,"top":0.12210695,"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.98138297,"top":0.12210695,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 67;\nSELECT * FROM automated_reports where id = 42;\nSELECT * FROM users WHERE id = 143; # group 28\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","depth":4,"value":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 67;\nSELECT * FROM automated_reports where id = 42;\nSELECT * FROM users WHERE id = 143; # group 28\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","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.24335106,"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}]...
|
3369653195412822020
|
6902502615756707405
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
1
2
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
try {
foreach ($this->resolveUsers($automatedReport) as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Code changed:
Hide
Sync Changes
Hide This Notification
21
1
17
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id
where u.team_id = 1;
SELECT * FROM social_accounts WHERE sociable_id = 1635;
SELECT * FROM users WHERE id = 1635;
select * from teams where id = 1;
select * from users where team_id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;
SELECT * FROM automated_reports where id = 71;
SELECT * FROM automated_report_results where report_id = 71;
UPDATE automated_reports set playbook_categories = NULL where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
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 = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
SELECT `automated_report_results`.* FROM `automated_report_results`
INNER JOIN `automated_reports`
ON `automated_report_results`.`report_id` = `automated_reports`.`id`
WHERE 1=1
AND `automated_report_results`.`generated_at` IS NOT NULL
# AND `automated_report_results`.`sent_at` IS NOT NULL
AND `automated_reports`.`team_id` = 1
AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$."users"')
;
SELECT * FROM automated_reports where id = 67;
SELECT * FROM automated_reports where id = 42;
SELECT * FROM users WHERE id = 143; # group 28
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded' and duration > 60
and status = 'completed' and actual_start_time >= '2025-12-01';
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;
select * from leads;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
74173
|
|
74174
|
NULL
|
0
|
2026-04-23T09:24:53.226267+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776936293226_m1.jpg...
|
PhpStorm
|
faVsco.js – TrackAutomatedReportGeneratedEvent.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
1
2
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
try {
foreach ($this->resolveUsers($automatedReport) as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Code changed:
Hide
Sync Changes
Hide This Notification
21
1
17
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id
where u.team_id = 1;
SELECT * FROM social_accounts WHERE sociable_id = 1635;
SELECT * FROM users WHERE id = 1635;
select * from teams where id = 1;
select * from users where team_id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;
SELECT * FROM automated_reports where id = 71;
SELECT * FROM automated_report_results where report_id = 71;
UPDATE automated_reports set playbook_categories = NULL where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
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 = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
SELECT `automated_report_results`.* FROM `automated_report_results`
INNER JOIN `automated_reports`
ON `automated_report_results`.`report_id` = `automated_reports`.`id`
WHERE 1=1
AND `automated_report_results`.`generated_at` IS NOT NULL
# AND `automated_report_results`.`sent_at` IS NOT NULL
AND `automated_reports`.`team_id` = 1
AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$."users"')
;
SELECT * FROM automated_reports where id = 67;
SELECT * FROM automated_reports where id = 42;
SELECT * FROM users WHERE id = 143; # group 28
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded' and duration > 60
and status = 'completed' and actual_start_time >= '2025-12-01';
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;
select * from leads;
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":"JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Git Branch: JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"2","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\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n try {\n foreach ($this->resolveUsers($automatedReport) as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n try {\n foreach ($this->resolveUsers($automatedReport) as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"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":"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":"21","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"2","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":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 67;\nSELECT * FROM automated_reports where id = 42;\nSELECT * FROM users WHERE id = 143; # group 28\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","depth":4,"value":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 67;\nSELECT * FROM automated_reports where id = 42;\nSELECT * FROM users WHERE id = 143; # group 28\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","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}]...
|
3369653195412822020
|
6902502615756707405
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
1
2
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
try {
foreach ($this->resolveUsers($automatedReport) as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Code changed:
Hide
Sync Changes
Hide This Notification
21
1
17
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id
where u.team_id = 1;
SELECT * FROM social_accounts WHERE sociable_id = 1635;
SELECT * FROM users WHERE id = 1635;
select * from teams where id = 1;
select * from users where team_id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;
SELECT * FROM automated_reports where id = 71;
SELECT * FROM automated_report_results where report_id = 71;
UPDATE automated_reports set playbook_categories = NULL where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
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 = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
SELECT `automated_report_results`.* FROM `automated_report_results`
INNER JOIN `automated_reports`
ON `automated_report_results`.`report_id` = `automated_reports`.`id`
WHERE 1=1
AND `automated_report_results`.`generated_at` IS NOT NULL
# AND `automated_report_results`.`sent_at` IS NOT NULL
AND `automated_reports`.`team_id` = 1
AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$."users"')
;
SELECT * FROM automated_reports where id = 67;
SELECT * FROM automated_reports where id = 42;
SELECT * FROM users WHERE id = 143; # group 28
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded' and duration > 60
and status = 'completed' and actual_start_time >= '2025-12-01';
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;
select * from leads;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
74142
|
NULL
|
0
|
2026-04-23T09:04:52.712643+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776935092712_m2.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 -rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll
total 899512
drwxr-xr-x 306 lukas staff 9792 21 Apr 20:18 .
drwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:05 1776791134169_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:05 1776791134429_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791165816_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791166383_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791196587_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791197102_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791227416_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791227779_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791258183_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791258594_m1.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791287670_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791287761_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791292727_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791293784_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791300420_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791301542_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791305234_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791306590_m2.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791314840_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791316155_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791347790_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791348817_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791380412_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791381822_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791412322_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791413781_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791443689_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791446344_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791474900_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791479169_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791507841_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791511806_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791539947_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791543728_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791572066_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791576889_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791604264_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:13 1776791609516_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791635686_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791641549_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791667683_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791672264_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791699168_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791703546_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:15 1776791729923_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791734502_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791762742_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791767091_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791794955_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791799940_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791828207_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791832582_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791860643_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791864973_m1.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791886556_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791887551_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791892443_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791893875_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791895925_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791897732_m2.jpg
-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4
-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4
-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4
-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4
-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4
-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4
-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4
-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4
-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4
-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4
-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4
-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4
-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4
-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4
-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4
-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4
-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4
-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4
-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4
-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4
-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4
-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4
-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4
-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4
-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4
-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4
-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4
-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4
-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4
-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4
-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4
-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4
-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4
-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4
-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4
-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4
-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4
-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4
-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4
-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4
-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4
-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4
-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4
-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4
-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4
-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4
-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4
-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4
-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4
-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4
-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4
-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4
-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4
-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4
-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4
-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4
-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4
-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4
-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4
-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4
-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4
-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4
-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4
-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4
-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4
-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4
-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4
-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4
-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4
-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4
-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4
-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4
-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4
-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4
-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4
-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4
-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4
-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4
-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4
-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4
-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4
-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4
-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4
-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4
-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4
-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4
-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4
-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4
-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4
-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4
-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4
-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4
-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4
-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4
-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4
-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4
-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4
-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4
-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4
-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4
-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4
-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4
-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4
-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4
-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4
-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4
-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4
-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4
-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4
-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4
-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4
-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4
-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4
-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4
-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4
-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4
-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4
-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4
-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4
-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4
-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4
-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4
-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4
-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4
-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4
-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4
-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4
-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4
-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4
-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4
-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4
-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4
-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4
-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4
-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4
-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4
-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4
-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4
-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4
-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4
-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4
-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4
-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4
-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4
-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4
-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4
-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4
-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4
-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4
-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4
-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4
-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4
-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4
-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4
-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4
-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4
-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4
-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4
-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4
-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4
-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4
-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4
-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4
-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4
-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4
-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4
-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4
-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4
-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4
-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4
-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4
-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4
-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4
-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4
-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4
-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4
-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4
-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4
-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4
-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4
-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4
-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4
-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4
-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4
-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4
-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4
-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4
-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4
-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4
-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4
-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4
-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4
-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4
-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4
-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4
-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4
-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4
-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4
-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4
-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4
-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4
-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4
-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4
-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4
-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4
-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4
-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4
-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4
-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4
-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4
-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4
-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4
-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4
-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4
-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4
-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4
-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4
-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4
-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4
-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4
-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4
-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4
-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4
-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4
-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4
-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4
-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4
-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4
-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4
-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4
-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4
-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4
-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4
-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4
-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4
-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4
-rw-r--r-- 1 lukas staff 5461430 21 Apr 19:38 compact_monitor_2_1776789493765.mp4
-rw-r--r-- 1 lukas staff 4057709 21 Apr 19:43 compact_monitor_2_1776789819462.mp4
-rw-r--r-- 1 lukas staff 2596450 21 Apr 19:49 compact_monitor_2_1776790138746.mp4
-rw-r--r-- 1 lukas staff 3792786 21 Apr 19:54 compact_monitor_2_1776790456362.mp4
-rw-r--r-- 1 lukas staff 1534504 21 Apr 19:59 compact_monitor_2_1776790775836.mp4
-rw-r--r-- 1 lukas staff 3246894 21 Apr 20:04 compact_monitor_2_1776791089868.mp4
-rw-r--r-- 1 lukas staff 678653 21 Apr 20:10 compact_monitor_2_1776791400917.mp4
-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ cd /Volumes/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll
total 32
drwxr-xr-x 4 root wheel 128 22 Apr 10:24 .
drwxr-xr-x 20 root wheel 640 4 Aug 2024 ..
lrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /
drwx------ 1 lukas staff 16384 22 Apr 10:24 Work
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll
total 96
drwxr-xr-x 6 root wheel 192 22 Apr 18:17 .
drwxr-xr-x 20 root wheel 640 4 Aug 2024 ..
lrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /
drwx------ 1 lukas staff 16384 11 Apr 15:46 Test
drwx------ 1 lukas staff 16384 22 Apr 10:24 Work
drwx------ 1 lukas staff 16384 19 Apr 18:36 screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ cd Test/screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ ll
total 10687944
drwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 .
drwx------ 1 lukas staff 16384 11 Apr 15:46 ..
-rwxrwxrwx@ 1 lukas staff 6148 21 Apr 10:48 .DS_Store
-rwxrwxrwx@ 1 lukas staff 4055343104 21 Apr 10:47 archive.db
drwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 data
-rwxrwxrwx 1 lukas staff 1416806400 14 Apr 20:49 db.sqlite
drwxrwxrwx 1 lukas staff 16384 11 Apr 16:51 pipes
-rwxrwxrwx@ 1 lukas staff 3250 11 Apr 17:00 screenpipe-day.sh
-rwxrwxrwx 1 lukas staff 0 13 Apr 17:21 screenpipe.db
-rwxrwxrwx 1 lukas staff 0 11 Apr 17:26 test_write
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ cd data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ ll
total 240
drwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 .
drwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 ..
-rwxrwxrwx@ 1 lukas staff 6148 22 Apr 18:17 .DS_Store
drwxrwxrwx@ 1 lukas staff 16384 15 Apr 09:59 2026-04-14
drwxrwxrwx@ 1 lukas staff 16384 16 Apr 09:13 2026-04-15
drwxrwxrwx@ 1 lukas staff 16384 17 Apr 08:57 2026-04-16
drwxrwxrwx@ 1 lukas staff 16384 18 Apr 13:35 2026-04-17
drwxrwxrwx@ 1 lukas staff 16384 21 Apr 09:10 2026-04-20
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ cd ~/.screenpipe/data/data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll
total 40
drwxr-xr-x 15 lukas staff 480 22 Apr 09:15 .
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 264 lukas staff 8448 22 Apr 18:18 2026-04-22
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-21
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll
total 881488
drwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 .
drwxr-xr-x 15 lukas staff 480 22 Apr 09:15 ..
-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4
-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4
-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4
-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4
-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4
-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4
-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4
-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4
-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4
-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4
-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4
-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4
-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4
-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4
-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4
-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4
-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4
-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4
-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4
-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4
-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4
-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4
-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4
-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4
-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4
-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4
-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4
-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4
-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4
-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4
-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4
-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4
-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4
-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4
-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4
-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4
-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4
-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4
-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4
-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4
-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4
-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4
-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4
-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4
-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4
-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4
-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4
-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4
-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4
-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4
-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4
-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4
-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4
-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4
-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4
-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4
-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4
-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4
-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4
-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4
-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4
-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4
-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4
-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4
-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4
-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4
-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4
-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4
-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4
-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4
-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4
-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4
-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4
-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4
-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4
-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4
-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4
-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4
-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4
-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4
-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4
-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4
-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4
-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4
-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4
-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4
-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4
-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4
-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4
-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4
-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4
-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4
-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4
-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4
-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4
-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4
-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4
-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4
-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4
-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4
-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4
-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4
-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4
-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4
-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4
-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4
-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4
-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4
-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4
-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4
-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4
-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4
-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4
-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4
-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4
-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4
-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4
-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4
-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4
-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4
-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4
-rw-r--r-- 1 lukas staff 252921 22 Apr 09:16 compact_monitor_1_1776838586240.mp4
-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4
-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4
-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4
-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4
-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4
-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4
-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4
-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4
-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4
-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4
-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4
-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4
-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4
-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4
-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4
-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4
-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4
-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4
-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4
-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4
-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4
-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4
-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4
-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4
-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4
-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4
-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4
-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4
-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4
-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4
-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4
-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4
-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4
-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4
-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4
-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4
-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4
-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4
-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4
-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4
-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4
-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4
-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4
-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4
-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4
-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4
-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4
-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4
-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4
-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4
-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4
-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4
-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4
-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4
-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4
-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4
-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4
-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4
-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4
-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4
-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4
-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4
-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4
-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4
-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4
-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4
-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4
-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4
-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4
-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4
-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4
-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4
-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4
-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4
-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4
-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4
-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4
-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4
-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4
-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4
-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4
-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4
-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4
-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4
-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4
-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4
-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4
-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4
-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4
-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4
-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4
-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4
-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4
-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4
-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4
-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4
-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4
-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4
-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4
-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4
-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4
-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4
-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4
-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4
-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4
-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4
-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4
-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4
-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4
-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4
-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4
-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4
-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4
-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4
-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4
-rw-r--r-- 1 lukas staff 546143...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll\ntotal 899512\ndrwxr-xr-x 306 lukas staff 9792 21 Apr 20:18 .\ndrwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:05 1776791134169_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:05 1776791134429_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791165816_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791166383_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791196587_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791197102_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791227416_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791227779_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791258183_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791258594_m1.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791287670_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791287761_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791292727_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791293784_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791300420_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791301542_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791305234_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791306590_m2.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791314840_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791316155_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791347790_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791348817_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791380412_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791381822_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791412322_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791413781_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791443689_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791446344_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791474900_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791479169_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791507841_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791511806_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791539947_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791543728_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791572066_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791576889_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791604264_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:13 1776791609516_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791635686_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791641549_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791667683_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791672264_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791699168_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791703546_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:15 1776791729923_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791734502_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791762742_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791767091_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791794955_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791799940_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791828207_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791832582_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791860643_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791864973_m1.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791886556_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791887551_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791892443_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791893875_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791895925_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791897732_m2.jpg\n-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4\n-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4\n-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4\n-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4\n-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4\n-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4\n-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4\n-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4\n-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4\n-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4\n-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4\n-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4\n-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4\n-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4\n-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4\n-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4\n-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4\n-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4\n-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4\n-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4\n-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4\n-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4\n-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4\n-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4\n-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4\n-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4\n-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4\n-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4\n-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4\n-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4\n-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4\n-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4\n-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4\n-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4\n-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4\n-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4\n-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4\n-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4\n-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4\n-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4\n-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4\n-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4\n-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4\n-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4\n-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4\n-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4\n-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4\n-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4\n-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4\n-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4\n-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4\n-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4\n-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4\n-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4\n-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4\n-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4\n-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4\n-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4\n-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4\n-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4\n-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4\n-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4\n-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4\n-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4\n-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4\n-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4\n-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4\n-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4\n-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4\n-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4\n-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4\n-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4\n-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4\n-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4\n-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4\n-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4\n-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4\n-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4\n-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4\n-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4\n-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4\n-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4\n-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4\n-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4\n-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4\n-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4\n-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4\n-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4\n-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4\n-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4\n-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4\n-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4\n-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4\n-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4\n-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4\n-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4\n-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4\n-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4\n-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4\n-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4\n-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4\n-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4\n-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4\n-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4\n-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4\n-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4\n-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4\n-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4\n-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4\n-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4\n-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4\n-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4\n-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4\n-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4\n-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4\n-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4\n-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4\n-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4\n-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4\n-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4\n-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4\n-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4\n-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4\n-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4\n-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4\n-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4\n-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4\n-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4\n-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4\n-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4\n-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4\n-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4\n-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4\n-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4\n-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4\n-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4\n-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4\n-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4\n-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4\n-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4\n-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4\n-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4\n-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4\n-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4\n-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4\n-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4\n-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4\n-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4\n-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4\n-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4\n-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4\n-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4\n-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4\n-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4\n-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4\n-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4\n-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4\n-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4\n-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4\n-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4\n-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4\n-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4\n-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4\n-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4\n-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4\n-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4\n-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4\n-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4\n-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4\n-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4\n-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4\n-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4\n-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4\n-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4\n-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4\n-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4\n-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4\n-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4\n-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4\n-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4\n-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4\n-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4\n-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4\n-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4\n-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4\n-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4\n-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4\n-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4\n-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4\n-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4\n-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4\n-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4\n-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4\n-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4\n-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4\n-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4\n-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4\n-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4\n-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4\n-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4\n-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4\n-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4\n-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4\n-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4\n-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4\n-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4\n-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4\n-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4\n-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4\n-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4\n-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4\n-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4\n-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4\n-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4\n-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4\n-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4\n-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4\n-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4\n-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4\n-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4\n-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4\n-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4\n-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4\n-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4\n-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4\n-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4\n-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4\n-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4\n-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4\n-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4\n-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4\n-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4\n-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4\n-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4\n-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4\n-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4\n-rw-r--r-- 1 lukas staff 5461430 21 Apr 19:38 compact_monitor_2_1776789493765.mp4\n-rw-r--r-- 1 lukas staff 4057709 21 Apr 19:43 compact_monitor_2_1776789819462.mp4\n-rw-r--r-- 1 lukas staff 2596450 21 Apr 19:49 compact_monitor_2_1776790138746.mp4\n-rw-r--r-- 1 lukas staff 3792786 21 Apr 19:54 compact_monitor_2_1776790456362.mp4\n-rw-r--r-- 1 lukas staff 1534504 21 Apr 19:59 compact_monitor_2_1776790775836.mp4\n-rw-r--r-- 1 lukas staff 3246894 21 Apr 20:04 compact_monitor_2_1776791089868.mp4\n-rw-r--r-- 1 lukas staff 678653 21 Apr 20:10 compact_monitor_2_1776791400917.mp4\n-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ cd /Volumes/ \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll\ntotal 32\ndrwxr-xr-x 4 root wheel 128 22 Apr 10:24 .\ndrwxr-xr-x 20 root wheel 640 4 Aug 2024 ..\nlrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /\ndrwx------ 1 lukas staff 16384 22 Apr 10:24 Work\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll\ntotal 96\ndrwxr-xr-x 6 root wheel 192 22 Apr 18:17 .\ndrwxr-xr-x 20 root wheel 640 4 Aug 2024 ..\nlrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /\ndrwx------ 1 lukas staff 16384 11 Apr 15:46 Test\ndrwx------ 1 lukas staff 16384 22 Apr 10:24 Work\ndrwx------ 1 lukas staff 16384 19 Apr 18:36 screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ cd Test/screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ ll\ntotal 10687944\ndrwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 .\ndrwx------ 1 lukas staff 16384 11 Apr 15:46 ..\n-rwxrwxrwx@ 1 lukas staff 6148 21 Apr 10:48 .DS_Store\n-rwxrwxrwx@ 1 lukas staff 4055343104 21 Apr 10:47 archive.db\ndrwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 data\n-rwxrwxrwx 1 lukas staff 1416806400 14 Apr 20:49 db.sqlite\ndrwxrwxrwx 1 lukas staff 16384 11 Apr 16:51 pipes\n-rwxrwxrwx@ 1 lukas staff 3250 11 Apr 17:00 screenpipe-day.sh\n-rwxrwxrwx 1 lukas staff 0 13 Apr 17:21 screenpipe.db\n-rwxrwxrwx 1 lukas staff 0 11 Apr 17:26 test_write\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ ll\ntotal 240\ndrwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 .\ndrwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 ..\n-rwxrwxrwx@ 1 lukas staff 6148 22 Apr 18:17 .DS_Store\ndrwxrwxrwx@ 1 lukas staff 16384 15 Apr 09:59 2026-04-14\ndrwxrwxrwx@ 1 lukas staff 16384 16 Apr 09:13 2026-04-15\ndrwxrwxrwx@ 1 lukas staff 16384 17 Apr 08:57 2026-04-16\ndrwxrwxrwx@ 1 lukas staff 16384 18 Apr 13:35 2026-04-17\ndrwxrwxrwx@ 1 lukas staff 16384 21 Apr 09:10 2026-04-20\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ cd ~/.screenpipe/data/data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll\ntotal 40\ndrwxr-xr-x 15 lukas staff 480 22 Apr 09:15 .\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 264 lukas staff 8448 22 Apr 18:18 2026-04-22\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-21\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll\ntotal 881488\ndrwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 .\ndrwxr-xr-x 15 lukas staff 480 22 Apr 09:15 ..\n-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4\n-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4\n-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4\n-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4\n-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4\n-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4\n-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4\n-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4\n-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4\n-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4\n-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4\n-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4\n-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4\n-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4\n-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4\n-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4\n-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4\n-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4\n-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4\n-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4\n-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4\n-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4\n-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4\n-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4\n-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4\n-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4\n-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4\n-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4\n-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4\n-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4\n-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4\n-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4\n-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4\n-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4\n-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4\n-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4\n-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4\n-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4\n-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4\n-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4\n-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4\n-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4\n-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4\n-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4\n-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4\n-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4\n-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4\n-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4\n-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4\n-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4\n-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4\n-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4\n-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4\n-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4\n-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4\n-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4\n-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4\n-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4\n-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4\n-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4\n-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4\n-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4\n-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4\n-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4\n-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4\n-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4\n-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4\n-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4\n-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4\n-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4\n-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4\n-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4\n-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4\n-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4\n-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4\n-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4\n-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4\n-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4\n-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4\n-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4\n-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4\n-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4\n-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4\n-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4\n-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4\n-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4\n-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4\n-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4\n-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4\n-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4\n-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4\n-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4\n-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4\n-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4\n-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4\n-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4\n-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4\n-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4\n-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4\n-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4\n-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4\n-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4\n-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4\n-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4\n-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4\n-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4\n-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4\n-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4\n-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4\n-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4\n-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4\n-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4\n-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4\n-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4\n-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4\n-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4\n-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4\n-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4\n-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4\n-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4\n-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4\n-rw-r--r-- 1 lukas staff 252921 22 Apr 09:16 compact_monitor_1_1776838586240.mp4\n-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4\n-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4\n-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4\n-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4\n-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4\n-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4\n-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4\n-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4\n-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4\n-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4\n-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4\n-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4\n-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4\n-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4\n-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4\n-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4\n-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4\n-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4\n-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4\n-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4\n-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4\n-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4\n-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4\n-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4\n-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4\n-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4\n-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4\n-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4\n-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4\n-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4\n-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4\n-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4\n-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4\n-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4\n-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4\n-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4\n-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4\n-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4\n-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4\n-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4\n-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4\n-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4\n-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4\n-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4\n-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4\n-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4\n-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4\n-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4\n-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4\n-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4\n-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4\n-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4\n-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4\n-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4\n-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4\n-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4\n-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4\n-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4\n-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4\n-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4\n-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4\n-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4\n-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4\n-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4\n-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4\n-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4\n-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4\n-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4\n-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4\n-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4\n-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4\n-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4\n-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4\n-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4\n-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4\n-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4\n-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4\n-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4\n-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4\n-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4\n-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4\n-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4\n-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4\n-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4\n-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4\n-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4\n-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4\n-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4\n-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4\n-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4\n-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4\n-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4\n-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4\n-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4\n-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4\n-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4\n-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4\n-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4\n-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4\n-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4\n-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4\n-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4\n-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4\n-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4\n-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4\n-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4\n-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4\n-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4\n-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4\n-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4\n-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4\n-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4\n-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4\n-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4\n-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4\n-rw-r--r-- 1 lukas staff 5461430 21 Apr 19:38 compact_monitor_2_1776789493765.mp4\n-rw-r--r-- 1 lukas staff 4057709 21 Apr 19:43 compact_monitor_2_1776789819462.mp4\n-rw-r--r-- 1 lukas staff 2596450 21 Apr 19:49 compact_monitor_2_1776790138746.mp4\n-rw-r--r-- 1 lukas staff 3792786 21 Apr 19:54 compact_monitor_2_1776790456362.mp4\n-rw-r--r-- 1 lukas staff 1534504 21 Apr 19:59 compact_monitor_2_1776790775836.mp4\n-rw-r--r-- 1 lukas staff 3246894 21 Apr 20:04 compact_monitor_2_1776791089868.mp4\n-rw-r--r-- 1 lukas staff 678653 21 Apr 20:10 compact_monitor_2_1776791400917.mp4\n-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4\n-rw-r--r-- 1 lukas staff 149786 22 Apr 09:16 compact_monitor_2_1776838588045.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-21\n[2026-04-22 18:19:28] ========================================\n[2026-04-22 18:19:28] Screenpipe sync starting for: 2026-04-21\n[2026-04-22 18:19:28] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (6.1G)\n NAS mount: OK /Volumes/Test/screenpipe\n Archive DB: exists (3.8G)\n Data dir: OK (246 files, 430M)\n\n[+00m01s] ▶ Counting source rows for 2026-04-21\n frames: 7871\n elements: 702947\n ui_events: 10083\n ocr_text: 2731\n meetings: 1\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-21\n video_chunks ✓ 0m03s\n frames (7871 rows) ✓ 2m23s\n ocr_text (2731 rows) ✓ 0m33s\n ui_events (10083 rows) ✓ 0m01s\n elements (702947 rows) ✓ 1m11s\n meetings (1 rows) ✓ 0m00s\n\n[+04m13s] ▶ Updating FTS indexes\n elements_fts ✓ 1m18s\n frames_fts ✓ 3m07s\n ui_events_fts ✓ 0m02s\n\n[+08m40s] ▶ Verifying DB\n frames: 7871 / 7871 ✓\n elements: 702947 / 702947 ✓\n ui_events: 10083 / 10083 ✓\n ocr_text: 2731 / 2731 ✓\n meetings: 1 / 1 ✓\n\n[+09m31s] ▶ Copying data folder for 2026-04-21\n rsync 2026-04-21/ → NAS ✓ 0m29s (246 files, 430M)\n\n[2026-04-22 18:29:28] Archive DB size: 4.9G\n[2026-04-22 18:29:28] Total time: 10m0s\n[2026-04-22 18:29:28] Sync complete for 2026-04-21\n[2026-04-22 18:29:28] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ 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 $ ll\ntotal 12977136\ndrwxr-xr-x 23 lukas staff 736 22 Apr 09:15 .\ndrwx------+ 91 lukas staff 2912 22 Apr 20:25 ..\n-rw-r--r--@ 1 lukas staff 8196 18 Apr 16:47 .DS_Store\n-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json\ndrwxr-xr-x 167 lukas staff 5344 18 Apr 14:45 data\n-rw-r--r--@ 1 lukas staff 6637330432 22 Apr 19:10 db.sqlite\n-rw-r--r--@ 1 lukas staff 131072 22 Apr 14:26 db.sqlite-shm\n-rw-r--r--@ 1 lukas staff 3621512 22 Apr 19:10 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log\n-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log\n-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log\n-rw-r--r-- 1 lukas staff 196994 16 Apr 20:33 screenpipe.2026-04-16.0.log\n-rw-r--r-- 1 lukas staff 208424 17 Apr 21:06 screenpipe.2026-04-17.0.log\n-rw-r--r-- 1 lukas staff 61983 18 Apr 14:45 screenpipe.2026-04-18.0.log\n-rw-r--r-- 1 lukas staff 359800 20 Apr 18:52 screenpipe.2026-04-20.0.log\n-rw-r--r-- 1 lukas staff 683671 21 Apr 20:18 screenpipe.2026-04-21.0.log\n-rw-r--r-- 1 lukas staff 284763 22 Apr 19:10 screenpipe.2026-04-22.0.log\n-rwxr-xr-x@ 1 lukas staff 14998 18 Apr 18:35 screenpipe_sync.sh\n-rw-r--r--@ 1 lukas staff 27173 22 Apr 18:29 sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp db.sqlite /Volumes/Test/screenpipe/db.sqlite\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe \n 12G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n5.9G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n6.2G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n128K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n4.0M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 36K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n 96K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\n160K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log\n172K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log\n196K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log\n204K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-18.0.log\n352K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-20.0.log\n668K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-21.0.log\n324K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-22.0.log\n 16K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe_sync.sh\n 28K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd /data/data/ \ncd: no such file or directory: /data/data/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd data/2026-04-22\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-22 $ ll\ntotal 521816\ndrwxr-xr-x 224 lukas staff 7168 23 Apr 09:14 .\ndrwxr-xr-x 16 lukas staff 512 23 Apr 09:13 ..\n-rw-r--r-- 1 lukas staff 1291639 22 Apr 09:26 compact_monitor_1_1776839204800.mp4\n-rw-r--r-- 1 lukas staff 1976819 22 Apr 09:31 compact_monitor_1_1776839511652.mp4\n-rw-r--r-- 1 lukas staff 385631 22 Apr 09:37 compact_monitor_1_1776839823964.mp4\n-rw-r--r-- 1 lukas staff 616970 22 Apr 09:42 compact_monitor_1_1776840142296.mp4\n-rw-r--r-- 1 lukas staff 2692728 22 Apr 09:47 compact_monitor_1_1776840467896.mp4\n-rw-r--r-- 1 lukas staff 2026505 22 Apr 09:53 compact_monitor_1_1776840800074.mp4\n-rw-r--r-- 1 lukas staff 1945361 22 Apr 09:58 compact_monitor_1_1776841121195.mp4\n-rw-r--r-- 1 lukas staff 1694598 22 Apr 10:04 compact_monitor_1_1776841439804.mp4\n-rw-r--r-- 1 lukas staff 1609711 22 Apr 10:09 compact_monitor_1_1776841764316.mp4\n-rw-r--r-- 1 lukas staff 1462521 22 Apr 10:14 compact_monitor_1_1776842081882.mp4\n-rw-r--r-- 1 lukas staff 1222819 22 Apr 10:20 compact_monitor_1_1776842401308.mp4\n-rw-r--r-- 1 lukas staff 1374769 22 Apr 10:25 compact_monitor_1_1776842720447.mp4\n-rw-r--r-- 1 lukas staff 1069475 22 Apr 10:30 compact_monitor_1_1776843032219.mp4\n-rw-r--r-- 1 lukas staff 1048226 22 Apr 10:35 compact_monitor_1_1776843337824.mp4\n-rw-r--r-- 1 lukas staff 378431 22 Apr 10:40 compact_monitor_1_1776843648464.mp4\n-rw-r--r-- 1 lukas staff 892142 22 Apr 10:46 compact_monitor_1_1776843964373.mp4\n-rw-r--r-- 1 lukas staff 519374 22 Apr 10:51 compact_monitor_1_1776844275867.mp4\n-rw-r--r-- 1 lukas staff 693685 22 Apr 10:56 compact_monitor_1_1776844584621.mp4\n-rw-r--r-- 1 lukas staff 452526 22 Apr 11:01 compact_monitor_1_1776844897612.mp4\n-rw-r--r-- 1 lukas staff 373085 22 Apr 11:06 compact_monitor_1_1776845205000.mp4\n-rw-r--r-- 1 lukas staff 792127 22 Apr 11:11 compact_monitor_1_1776845513822.mp4\n-rw-r--r-- 1 lukas staff 1336192 22 Apr 11:17 compact_monitor_1_1776845828958.mp4\n-rw-r--r-- 1 lukas staff 2739781 22 Apr 11:22 compact_monitor_1_1776846134058.mp4\n-rw-r--r-- 1 lukas staff 1229872 22 Apr 11:27 compact_monitor_1_1776846444744.mp4\n-rw-r--r-- 1 lukas staff 372000 22 Apr 11:32 compact_monitor_1_1776846749223.mp4\n-rw-r--r-- 1 lukas staff 215746 22 Apr 11:37 compact_monitor_1_1776847053415.mp4\n-rw-r--r-- 1 lukas staff 214432 22 Apr 11:42 compact_monitor_1_1776847358310.mp4\n-rw-r--r-- 1 lukas staff 213835 22 Apr 11:47 compact_monitor_1_1776847664230.mp4\n-rw-r--r-- 1 lukas staff 217385 22 Apr 11:52 compact_monitor_1_1776847973489.mp4\n-rw-r--r-- 1 lukas staff 215022 22 Apr 11:57 compact_monitor_1_1776848277473.mp4\n-rw-r--r-- 1 lukas staff 405201 22 Apr 12:03 compact_monitor_1_1776848581367.mp4\n-rw-r--r-- 1 lukas staff 1557849 22 Apr 12:08 compact_monitor_1_1776848886812.mp4\n-rw-r--r-- 1 lukas staff 1652380 22 Apr 12:13 compact_monitor_1_1776849197591.mp4\n-rw-r--r-- 1 lukas staff 1067419 22 Apr 12:18 compact_monitor_1_1776849503787.mp4\n-rw-r--r-- 1 lukas staff 268334 22 Apr 12:23 compact_monitor_1_1776849813627.mp4\n-rw-r--r-- 1 lukas staff 268945 22 Apr 12:28 compact_monitor_1_1776850116458.mp4\n-rw-r--r-- 1 lukas staff 906784 22 Apr 12:33 compact_monitor_1_1776850424950.mp4\n-rw-r--r-- 1 lukas staff 1251053 22 Apr 12:38 compact_monitor_1_1776850735839.mp4\n-rw-r--r-- 1 lukas staff 606643 22 Apr 12:44 compact_monitor_1_1776851047118.mp4\n-rw-r--r-- 1 lukas staff 3127146 22 Apr 12:49 compact_monitor_1_1776851354979.mp4\n-rw-r--r-- 1 lukas staff 1120031 22 Apr 12:54 compact_monitor_1_1776851661551.mp4\n-rw-r--r-- 1 lukas staff 389700 22 Apr 12:59 compact_monitor_1_1776851969831.mp4\n-rw-r--r-- 1 lukas staff 390117 22 Apr 13:04 compact_monitor_1_1776852272976.mp4\n-rw-r--r-- 1 lukas staff 393030 22 Apr 13:09 compact_monitor_1_1776852581698.mp4\n-rw-r--r-- 1 lukas staff 579804 22 Apr 13:14 compact_monitor_1_1776852888686.mp4\n-rw-r--r-- 1 lukas staff 144542 22 Apr 13:19 compact_monitor_1_1776853195671.mp4\n-rw-r--r-- 1 lukas staff 1319292 22 Apr 13:25 compact_monitor_1_1776853501128.mp4\n-rw-r--r-- 1 lukas staff 522815 22 Apr 13:30 compact_monitor_1_1776853807941.mp4\n-rw-r--r-- 1 lukas staff 467289 22 Apr 13:35 compact_monitor_1_1776854114758.mp4\n-rw-r--r-- 1 lukas staff 264853 22 Apr 13:40 compact_monitor_1_1776854419993.mp4\n-rw-r--r-- 1 lukas staff 183594 22 Apr 13:45 compact_monitor_1_1776854724809.mp4\n-rw-r--r-- 1 lukas staff 178631 22 Apr 13:50 compact_monitor_1_1776855032679.mp4\n-rw-r--r-- 1 lukas staff 182119 22 Apr 13:55 compact_monitor_1_1776855342190.mp4\n-rw-r--r-- 1 lukas staff 176349 22 Apr 14:00 compact_monitor_1_1776855655518.mp4\n-rw-r--r-- 1 lukas staff 179590 22 Apr 14:06 compact_monitor_1_1776855960164.mp4\n-rw-r--r-- 1 lukas staff 178846 22 Apr 14:11 compact_monitor_1_1776856271060.mp4\n-rw-r--r-- 1 lukas staff 884339 22 Apr 14:16 compact_monitor_1_1776856576155.mp4\n-rw-r--r-- 1 lukas staff 508676 22 Apr 14:21 compact_monitor_1_1776856888985.mp4\n-rw-r--r-- 1 lukas staff 141591 22 Apr 14:26 compact_monitor_1_1776857198732.mp4\n-rw-r--r-- 1 lukas staff 1074474 22 Apr 14:31 compact_monitor_1_1776857502105.mp4\n-rw-r--r-- 1 lukas staff 687202 22 Apr 14:36 compact_monitor_1_1776857809764.mp4\n-rw-r--r-- 1 lukas staff 301043 22 Apr 14:42 compact_monitor_1_1776858119930.mp4\n-rw-r--r-- 1 lukas staff 441512 22 Apr 14:47 compact_monitor_1_1776858435216.mp4\n-rw-r--r-- 1 lukas staff 470964 22 Apr 14:52 compact_monitor_1_1776858741990.mp4\n-rw-r--r-- 1 lukas staff 565080 22 Apr 14:57 compact_monitor_1_1776859048771.mp4\n-rw-r--r-- 1 lukas staff 2099393 22 Apr 15:02 compact_monitor_1_1776859363756.mp4\n-rw-r--r-- 1 lukas staff 341547 22 Apr 15:07 compact_monitor_1_1776859669692.mp4\n-rw-r--r-- 1 lukas staff 1470918 22 Apr 15:13 compact_monitor_1_1776859980784.mp4\n-rw-r--r-- 1 lukas staff 1386535 22 Apr 15:18 compact_monitor_1_1776860291496.mp4\n-rw-r--r-- 1 lukas staff 3721368 22 Apr 15:23 compact_monitor_1_1776860608283.mp4\n-rw-r--r-- 1 lukas staff 2829310 22 Apr 15:28 compact_monitor_1_1776860927808.mp4\n-rw-r--r-- 1 lukas staff 3608400 22 Apr 15:34 compact_monitor_1_1776861246919.mp4\n-rw-r--r-- 1 lukas staff 2520337 22 Apr 15:39 compact_monitor_1_1776861561807.mp4\n-rw-r--r-- 1 lukas staff 3394786 22 Apr 15:44 compact_monitor_1_1776861870869.mp4\n-rw-r--r-- 1 lukas staff 2311370 22 Apr 15:49 compact_monitor_1_1776862184223.mp4\n-rw-r--r-- 1 lukas staff 2312669 22 Apr 15:54 compact_monitor_1_1776862493758.mp4\n-rw-r--r-- 1 lukas staff 1674506 22 Apr 16:00 compact_monitor_1_1776862807398.mp4\n-rw-r--r-- 1 lukas staff 1595953 22 Apr 16:05 compact_monitor_1_1776863114876.mp4\n-rw-r--r-- 1 lukas staff 834561 22 Apr 16:10 compact_monitor_1_1776863433206.mp4\n-rw-r--r-- 1 lukas staff 297948 22 Apr 16:15 compact_monitor_1_1776863748371.mp4\n-rw-r--r-- 1 lukas staff 297470 22 Apr 16:20 compact_monitor_1_1776864053732.mp4\n-rw-r--r-- 1 lukas staff 301712 22 Apr 16:26 compact_monitor_1_1776864361608.mp4\n-rw-r--r-- 1 lukas staff 476053 22 Apr 16:31 compact_monitor_1_1776864676523.mp4\n-rw-r--r-- 1 lukas staff 1140004 22 Apr 16:36 compact_monitor_1_1776864986222.mp4\n-rw-r--r-- 1 lukas staff 209748 22 Apr 16:41 compact_monitor_1_1776865292562.mp4\n-rw-r--r-- 1 lukas staff 153281 22 Apr 16:46 compact_monitor_1_1776865598330.mp4\n-rw-r--r-- 1 lukas staff 124176 22 Apr 16:51 compact_monitor_1_1776865908133.mp4\n-rw-r--r-- 1 lukas staff 123505 22 Apr 16:56 compact_monitor_1_1776866216495.mp4\n-rw-r--r-- 1 lukas staff 122850 22 Apr 17:01 compact_monitor_1_1776866518685.mp4\n-rw-r--r-- 1 lukas staff 95026 22 Apr 17:07 compact_monitor_1_1776866821945.mp4\n-rw-r--r-- 1 lukas staff 117642 22 Apr 17:32 compact_monitor_1_1776868350295.mp4\n-rw-r--r-- 1 lukas staff 120079 22 Apr 17:37 compact_monitor_1_1776868656326.mp4\n-rw-r--r-- 1 lukas staff 169674 22 Apr 17:42 compact_monitor_1_1776868963122.mp4\n-rw-r--r-- 1 lukas staff 125060 22 Apr 17:47 compact_monitor_1_1776869273496.mp4\n-rw-r--r-- 1 lukas staff 123507 22 Apr 17:53 compact_monitor_1_1776869582690.mp4\n-rw-r--r-- 1 lukas staff 191046 22 Apr 17:58 compact_monitor_1_1776869890457.mp4\n-rw-r--r-- 1 lukas staff 127296 22 Apr 18:03 compact_monitor_1_1776870196198.mp4\n-rw-r--r-- 1 lukas staff 122512 22 Apr 18:08 compact_monitor_1_1776870507382.mp4\n-rw-r--r-- 1 lukas staff 118952 22 Apr 18:13 compact_monitor_1_1776870818099.mp4\n-rw-r--r-- 1 lukas staff 122784 22 Apr 18:18 compact_monitor_1_1776871121943.mp4\n-rw-r--r-- 1 lukas staff 117968 22 Apr 18:23 compact_monitor_1_1776871432304.mp4\n-rw-r--r-- 1 lukas staff 1522764 22 Apr 18:28 compact_monitor_1_1776871736007.mp4\n-rw-r--r-- 1 lukas staff 809317 22 Apr 18:34 compact_monitor_1_1776872041165.mp4\n-rw-r--r-- 1 lukas staff 503643 22 Apr 18:39 compact_monitor_1_1776872348660.mp4\n-rw-r--r-- 1 lukas staff 176552 22 Apr 18:44 compact_monitor_1_1776872651900.mp4\n-rw-r--r-- 1 lukas staff 177165 22 Apr 18:49 compact_monitor_1_1776872958626.mp4\n-rw-r--r-- 1 lukas staff 246259 22 Apr 18:54 compact_monitor_1_1776873265328.mp4\n-rw-r--r-- 1 lukas staff 332374 22 Apr 18:59 compact_monitor_1_1776873570308.mp4\n-rw-r--r-- 1 lukas staff 1013140 22 Apr 19:04 compact_monitor_1_1776873875737.mp4\n-rw-r--r-- 1 lukas staff 2533378 22 Apr 19:09 compact_monitor_1_1776874182454.mp4\n-rw-r--r-- 1 lukas staff 2868752 23 Apr 09:14 compact_monitor_1_1776924846954.mp4\n-rw-r--r-- 1 lukas staff 1406238 22 Apr 09:26 compact_monitor_2_1776839206703.mp4\n-rw-r--r-- 1 lukas staff 5220491 22 Apr 09:31 compact_monitor_2_1776839514102.mp4\n-rw-r--r-- 1 lukas staff 4302042 22 Apr 09:37 compact_monitor_2_1776839825945.mp4\n-rw-r--r-- 1 lukas staff 1166365 22 Apr 09:42 compact_monitor_2_1776840149161.mp4\n-rw-r--r-- 1 lukas staff 2835147 22 Apr 09:48 compact_monitor_2_1776840475601.mp4\n-rw-r--r-- 1 lukas staff 1335719 22 Apr 09:53 compact_monitor_2_1776840805501.mp4\n-rw-r--r-- 1 lukas staff 760807 22 Apr 09:58 compact_monitor_2_1776841130978.mp4\n-rw-r--r-- 1 lukas staff 335588 22 Apr 10:04 compact_monitor_2_1776841447110.mp4\n-rw-r--r-- 1 lukas staff 270101 22 Apr 10:09 compact_monitor_2_1776841770084.mp4\n-rw-r--r-- 1 lukas staff 471541 22 Apr 10:14 compact_monitor_2_1776842086264.mp4\n-rw-r--r-- 1 lukas staff 374686 22 Apr 10:20 compact_monitor_2_1776842407228.mp4\n-rw-r--r-- 1 lukas staff 549097 22 Apr 10:25 compact_monitor_2_1776842726731.mp4\n-rw-r--r-- 1 lukas staff 587980 22 Apr 10:30 compact_monitor_2_1776843033453.mp4\n-rw-r--r-- 1 lukas staff 1590795 22 Apr 10:35 compact_monitor_2_1776843339118.mp4\n-rw-r--r-- 1 lukas staff 2843756 22 Apr 10:40 compact_monitor_2_1776843652359.mp4\n-rw-r--r-- 1 lukas staff 1248500 22 Apr 10:46 compact_monitor_2_1776843965671.mp4\n-rw-r--r-- 1 lukas staff 2387069 22 Apr 10:51 compact_monitor_2_1776844278127.mp4\n-rw-r--r-- 1 lukas staff 3380766 22 Apr 10:56 compact_monitor_2_1776844586498.mp4\n-rw-r--r-- 1 lukas staff 1372830 22 Apr 11:01 compact_monitor_2_1776844898915.mp4\n-rw-r--r-- 1 lukas staff 431466 22 Apr 11:06 compact_monitor_2_1776845205857.mp4\n-rw-r--r-- 1 lukas staff 4140482 22 Apr 11:12 compact_monitor_2_1776845516891.mp4\n-rw-r--r-- 1 lukas staff 1019700 22 Apr 11:17 compact_monitor_2_1776845830886.mp4\n-rw-r--r-- 1 lukas staff 1971349 22 Apr 11:22 compact_monitor_2_1776846137433.mp4\n-rw-r--r-- 1 lukas staff 1855516 22 Apr 11:27 compact_monitor_2_1776846446118.mp4\n-rw-r--r-- 1 lukas staff 2113081 22 Apr 11:32 compact_monitor_2_1776846750841.mp4\n-rw-r--r-- 1 lukas staff 860635 22 Apr 11:37 compact_monitor_2_1776847054375.mp4\n-rw-r--r-- 1 lukas staff 1547770 22 Apr 11:42 compact_monitor_2_1776847359456.mp4\n-rw-r--r-- 1 lukas staff 1092684 22 Apr 11:47 compact_monitor_2_1776847665196.mp4\n-rw-r--r-- 1 lukas staff 2061114 22 Apr 11:52 compact_monitor_2_1776847974358.mp4\n-rw-r--r-- 1 lukas staff 2199781 22 Apr 11:58 compact_monitor_2_1776848278484.mp4\n-rw-r--r-- 1 lukas staff 1381991 22 Apr 12:03 compact_monitor_2_1776848583195.mp4\n-rw-r--r-- 1 lukas staff 2721087 22 Apr 12:08 compact_monitor_2_1776848888480.mp4\n-rw-r--r-- 1 lukas staff 877385 22 Apr 12:13 compact_monitor_2_1776849199887.mp4\n-rw-r--r-- 1 lukas staff 3540697 22 Apr 12:18 compact_monitor_2_1776849506021.mp4\n-rw-r--r-- 1 lukas staff 474523 22 Apr 12:23 compact_monitor_2_1776849814381.mp4\n-rw-r--r-- 1 lukas staff 991274 22 Apr 12:28 compact_monitor_2_1776850117283.mp4\n-rw-r--r-- 1 lukas staff 2121163 22 Apr 12:33 compact_monitor_2_1776850426669.mp4\n-rw-r--r-- 1 lukas staff 1480246 22 Apr 12:38 compact_monitor_2_1776850737952.mp4\n-rw-r--r-- 1 lukas staff 821464 22 Apr 12:44 compact_monitor_2_1776851048313.mp4\n-rw-r--r-- 1 lukas staff 684777 22 Apr 12:49 compact_monitor_2_1776851357051.mp4\n-rw-r--r-- 1 lukas staff 2576122 22 Apr 12:54 compact_monitor_2_1776851663610.mp4\n-rw-r--r-- 1 lukas staff 1690359 22 Apr 12:59 compact_monitor_2_1776851970964.mp4\n-rw-r--r-- 1 lukas staff 1821650 22 Apr 13:04 compact_monitor_2_1776852275017.mp4\n-rw-r--r-- 1 lukas staff 2451968 22 Apr 13:09 compact_monitor_2_1776852583512.mp4\n-rw-r--r-- 1 lukas staff 2568339 22 Apr 13:14 compact_monitor_2_1776852890302.mp4\n-rw-r--r-- 1 lukas staff 1354068 22 Apr 13:19 compact_monitor_2_1776853197021.mp4\n-rw-r--r-- 1 lukas staff 683086 22 Apr 13:25 compact_monitor_2_1776853502339.mp4\n-rw-r--r-- 1 lukas staff 1015792 22 Apr 13:30 compact_monitor_2_1776853809857.mp4\n-rw-r--r-- 1 lukas staff 833765 22 Apr 13:35 compact_monitor_2_1776854115701.mp4\n-rw-r--r-- 1 lukas staff 2018658 22 Apr 13:40 compact_monitor_2_1776854421548.mp4\n-rw-r--r-- 1 lukas staff 1912549 22 Apr 13:45 compact_monitor_2_1776854726335.mp4\n-rw-r--r-- 1 lukas staff 914258 22 Apr 13:50 compact_monitor_2_1776855033732.mp4\n-rw-r--r-- 1 lukas staff 1182467 22 Apr 13:55 compact_monitor_2_1776855343602.mp4\n-rw-r--r-- 1 lukas staff 385708 22 Apr 14:00 compact_monitor_2_1776855657104.mp4\n-rw-r--r-- 1 lukas staff 725079 22 Apr 14:06 compact_monitor_2_1776855962030.mp4\n-rw-r--r-- 1 lukas staff 900929 22 Apr 14:11 compact_monitor_2_1776856272407.mp4\n-rw-r--r-- 1 lukas staff 1331033 22 Apr 14:16 compact_monitor_2_1776856578708.mp4\n-rw-r--r-- 1 lukas staff 630778 22 Apr 14:21 compact_monitor_2_1776856890399.mp4\n-rw-r--r-- 1 lukas staff 1810130 22 Apr 14:26 compact_monitor_2_1776857199786.mp4\n-rw-r--r-- 1 lukas staff 1725201 22 Apr 14:31 compact_monitor_2_1776857503198.mp4\n-rw-r--r-- 1 lukas staff 1202608 22 Apr 14:36 compact_monitor_2_1776857811312.mp4\n-rw-r--r-- 1 lukas staff 1183824 22 Apr 14:42 compact_monitor_2_1776858123559.mp4\n-rw-r--r-- 1 lukas staff 1208327 22 Apr 14:47 compact_monitor_2_1776858436830.mp4\n-rw-r--r-- 1 lukas staff 1399691 22 Apr 14:52 compact_monitor_2_1776858743360.mp4\n-rw-r--r-- 1 lukas staff 2485595 22 Apr 14:57 compact_monitor_2_1776859051449.mp4\n-rw-r--r-- 1 lukas staff 1856739 22 Apr 15:02 compact_monitor_2_1776859366233.mp4\n-rw-r--r-- 1 lukas staff 903086 22 Apr 15:07 compact_monitor_2_1776859671654.mp4\n-rw-r--r-- 1 lukas staff 1425070 22 Apr 15:13 compact_monitor_2_1776859986162.mp4\n-rw-r--r-- 1 lukas staff 1299666 22 Apr 15:18 compact_monitor_2_1776860295573.mp4\n-rw-r--r-- 1 lukas staff 1280478 22 Apr 15:23 compact_monitor_2_1776860614296.mp4\n-rw-r--r-- 1 lukas staff 2337036 22 Apr 15:28 compact_monitor_2_1776860932062.mp4\n-rw-r--r-- 1 lukas staff 2131149 22 Apr 15:34 compact_monitor_2_1776861251494.mp4\n-rw-r--r-- 1 lukas staff 2359883 22 Apr 15:39 compact_monitor_2_1776861564243.mp4\n-rw-r--r-- 1 lukas staff 1547537 22 Apr 15:44 compact_monitor_2_1776861876714.mp4\n-rw-r--r-- 1 lukas staff 2172114 22 Apr 15:49 compact_monitor_2_1776862186712.mp4\n-rw-r--r-- 1 lukas staff 1480165 22 Apr 15:54 compact_monitor_2_1776862496217.mp4\n-rw-r--r-- 1 lukas staff 1451204 22 Apr 16:00 compact_monitor_2_1776862811373.mp4\n-rw-r--r-- 1 lukas staff 797522 22 Apr 16:05 compact_monitor_2_1776863121180.mp4\n-rw-r--r-- 1 lukas staff 1136154 22 Apr 16:10 compact_monitor_2_1776863436274.mp4\n-rw-r--r-- 1 lukas staff 408460 22 Apr 16:15 compact_monitor_2_1776863749818.mp4\n-rw-r--r-- 1 lukas staff 1151394 22 Apr 16:20 compact_monitor_2_1776864054467.mp4\n-rw-r--r-- 1 lukas staff 2617267 22 Apr 16:26 compact_monitor_2_1776864364411.mp4\n-rw-r--r-- 1 lukas staff 1648571 22 Apr 16:31 compact_monitor_2_1776864678063.mp4\n-rw-r--r-- 1 lukas staff 726061 22 Apr 16:36 compact_monitor_2_1776864988062.mp4\n-rw-r--r-- 1 lukas staff 499734 22 Apr 16:41 compact_monitor_2_1776865293654.mp4\n-rw-r--r-- 1 lukas staff 1277339 22 Apr 16:46 compact_monitor_2_1776865599949.mp4\n-rw-r--r-- 1 lukas staff 776016 22 Apr 16:51 compact_monitor_2_1776865909005.mp4\n-rw-r--r-- 1 lukas staff 310853 22 Apr 16:56 compact_monitor_2_1776866217337.mp4\n-rw-r--r-- 1 lukas staff 310651 22 Apr 17:02 compact_monitor_2_1776866519474.mp4\n-rw-r--r-- 1 lukas staff 244441 22 Apr 17:07 compact_monitor_2_1776866822189.mp4\n-rw-r--r-- 1 lukas staff 850717 22 Apr 17:32 compact_monitor_2_1776868350967.mp4\n-rw-r--r-- 1 lukas staff 958993 22 Apr 17:37 compact_monitor_2_1776868657735.mp4\n-rw-r--r-- 1 lukas staff 1574171 22 Apr 17:42 compact_monitor_2_1776868964141.mp4\n-rw-r--r-- 1 lukas staff 1651606 22 Apr 17:47 compact_monitor_2_1776869274633.mp4\n-rw-r--r-- 1 lukas staff 669609 22 Apr 17:53 compact_monitor_2_1776869583557.mp4\n-rw-r--r-- 1 lukas staff 2261136 22 Apr 17:58 compact_monitor_2_1776869892043.mp4\n-rw-r--r-- 1 lukas staff 1560427 22 Apr 18:03 compact_monitor_2_1776870198140.mp4\n-rw-r--r-- 1 lukas staff 678529 22 Apr 18:08 compact_monitor_2_1776870509039.mp4\n-rw-r--r-- 1 lukas staff 519464 22 Apr 18:13 compact_monitor_2_1776870818808.mp4\n-rw-r--r-- 1 lukas staff 1347344 22 Apr 18:18 compact_monitor_2_1776871123291.mp4\n-rw-r--r-- 1 lukas staff 1653980 22 Apr 18:23 compact_monitor_2_1776871433166.mp4\n-rw-r--r-- 1 lukas staff 844038 22 Apr 18:28 compact_monitor_2_1776871737404.mp4\n-rw-r--r-- 1 lukas staff 1809392 22 Apr 18:34 compact_monitor_2_1776872042292.mp4\n-rw-r--r-- 1 lukas staff 500253 22 Apr 18:39 compact_monitor_2_1776872349495.mp4\n-rw-r--r-- 1 lukas staff 362170 22 Apr 18:44 compact_monitor_2_1776872652803.mp4\n-rw-r--r-- 1 lukas staff 2235586 22 Apr 18:49 compact_monitor_2_1776872959641.mp4\n-rw-r--r-- 1 lukas staff 1160652 22 Apr 18:54 compact_monitor_2_1776873266662.mp4\n-rw-r--r-- 1 lukas staff 1344375 22 Apr 18:59 compact_monitor_2_1776873571536.mp4\n-rw-r--r-- 1 lukas staff 3807432 22 Apr 19:04 compact_monitor_2_1776873878479.mp4\n-rw-r--r-- 1 lukas staff 2414414 22 Apr 19:09 compact_monitor_2_1776874185817.mp4\n-rw-r--r-- 1 lukas staff 3120540 23 Apr 09:14 compact_monitor_2_1776924852567.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-22 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-22\n[2026-04-23 09:16:02] ========================================\n[2026-04-23 09:16:02] Screenpipe sync starting for: 2026-04-22\n[2026-04-23 09:16:02] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (6.2G)\n NAS mount: OK /Volumes/Test/screenpipe\n Archive DB: exists (4.9G)\n Data dir: OK (222 files, 255M)\n\n[+00m00s] ▶ Counting source rows for 2026-04-22\n frames: 4305\n elements: 332442\n ui_events: 5804\n ocr_text: 1074\n meetings: 3\n\n[+00m01s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m00s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m01s] ▶ Syncing data for 2026-04-22\n video_chunks ✓ 0m01s\n frames (4305 rows) ✓ 1m38s\n ocr_text (1074 rows) ✓ 0m12s\n ui_events (5804 rows) ✓ 0m01s\n elements (332442 rows) ✓ 0m51s\n meetings (3 rows) ✓ 0m00s\n\n[+02m44s] ▶ Updating FTS indexes\n elements_fts ✓ 1m26s\n frames_fts ✓ 2m14s\n ui_events_fts ✓ 0m02s\n\n[+06m26s] ▶ Verifying DB\n frames: 4305 / 4305 ✓\n elements: 332442 / 332442 ✓\n ui_events: 5804 / 5804 ✓\n ocr_text: 1074 / 1074 ✓\n meetings: 3 / 3 ✓\n\n[+07m20s] ▶ Copying data folder for 2026-04-22\n rsync 2026-04-22/ → NAS ✓ 0m16s (222 files, 254M)\n\n[2026-04-23 09:23:38] Archive DB size: 5.8G\n[2026-04-23 09:23:38] Total time: 7m36s\n[2026-04-23 09:23:38] Sync complete for 2026-04-22\n[2026-04-23 09:23:38] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-22 $","depth":4,"value":"-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll\ntotal 899512\ndrwxr-xr-x 306 lukas staff 9792 21 Apr 20:18 .\ndrwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:05 1776791134169_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:05 1776791134429_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791165816_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791166383_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791196587_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791197102_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791227416_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791227779_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791258183_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791258594_m1.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791287670_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791287761_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791292727_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791293784_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791300420_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791301542_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791305234_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791306590_m2.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791314840_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791316155_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791347790_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791348817_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791380412_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791381822_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791412322_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791413781_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791443689_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791446344_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791474900_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791479169_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791507841_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791511806_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791539947_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791543728_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791572066_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791576889_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791604264_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:13 1776791609516_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791635686_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791641549_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791667683_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791672264_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791699168_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791703546_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:15 1776791729923_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791734502_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791762742_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791767091_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791794955_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791799940_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791828207_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791832582_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791860643_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791864973_m1.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791886556_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791887551_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791892443_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791893875_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791895925_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791897732_m2.jpg\n-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4\n-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4\n-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4\n-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4\n-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4\n-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4\n-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4\n-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4\n-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4\n-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4\n-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4\n-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4\n-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4\n-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4\n-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4\n-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4\n-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4\n-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4\n-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4\n-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4\n-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4\n-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4\n-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4\n-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4\n-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4\n-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4\n-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4\n-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4\n-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4\n-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4\n-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4\n-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4\n-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4\n-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4\n-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4\n-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4\n-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4\n-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4\n-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4\n-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4\n-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4\n-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4\n-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4\n-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4\n-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4\n-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4\n-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4\n-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4\n-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4\n-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4\n-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4\n-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4\n-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4\n-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4\n-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4\n-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4\n-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4\n-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4\n-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4\n-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4\n-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4\n-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4\n-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4\n-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4\n-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4\n-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4\n-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4\n-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4\n-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4\n-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4\n-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4\n-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4\n-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4\n-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4\n-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4\n-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4\n-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4\n-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4\n-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4\n-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4\n-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4\n-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4\n-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4\n-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4\n-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4\n-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4\n-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4\n-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4\n-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4\n-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4\n-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4\n-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4\n-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4\n-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4\n-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4\n-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4\n-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4\n-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4\n-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4\n-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4\n-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4\n-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4\n-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4\n-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4\n-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4\n-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4\n-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4\n-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4\n-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4\n-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4\n-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4\n-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4\n-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4\n-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4\n-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4\n-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4\n-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4\n-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4\n-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4\n-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4\n-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4\n-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4\n-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4\n-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4\n-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4\n-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4\n-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4\n-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4\n-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4\n-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4\n-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4\n-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4\n-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4\n-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4\n-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4\n-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4\n-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4\n-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4\n-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4\n-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4\n-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4\n-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4\n-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4\n-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4\n-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4\n-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4\n-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4\n-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4\n-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4\n-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4\n-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4\n-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4\n-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4\n-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4\n-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4\n-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4\n-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4\n-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4\n-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4\n-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4\n-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4\n-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4\n-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4\n-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4\n-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4\n-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4\n-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4\n-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4\n-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4\n-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4\n-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4\n-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4\n-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4\n-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4\n-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4\n-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4\n-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4\n-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4\n-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4\n-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4\n-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4\n-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4\n-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4\n-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4\n-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4\n-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4\n-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4\n-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4\n-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4\n-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4\n-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4\n-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4\n-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4\n-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4\n-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4\n-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4\n-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4\n-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4\n-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4\n-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4\n-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4\n-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4\n-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4\n-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4\n-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4\n-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4\n-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4\n-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4\n-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4\n-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4\n-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4\n-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4\n-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4\n-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4\n-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4\n-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4\n-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4\n-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4\n-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4\n-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4\n-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4\n-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4\n-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4\n-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4\n-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4\n-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4\n-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4\n-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4\n-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4\n-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4\n-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4\n-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4\n-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4\n-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4\n-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4\n-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4\n-rw-r--r-- 1 lukas staff 5461430 21 Apr 19:38 compact_monitor_2_1776789493765.mp4\n-rw-r--r-- 1 lukas staff 4057709 21 Apr 19:43 compact_monitor_2_1776789819462.mp4\n-rw-r--r-- 1 lukas staff 2596450 21 Apr 19:49 compact_monitor_2_1776790138746.mp4\n-rw-r--r-- 1 lukas staff 3792786 21 Apr 19:54 compact_monitor_2_1776790456362.mp4\n-rw-r--r-- 1 lukas staff 1534504 21 Apr 19:59 compact_monitor_2_1776790775836.mp4\n-rw-r--r-- 1 lukas staff 3246894 21 Apr 20:04 compact_monitor_2_1776791089868.mp4\n-rw-r--r-- 1 lukas staff 678653 21 Apr 20:10 compact_monitor_2_1776791400917.mp4\n-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ cd /Volumes/ \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll\ntotal 32\ndrwxr-xr-x 4 root wheel 128 22 Apr 10:24 .\ndrwxr-xr-x 20 root wheel 640 4 Aug 2024 ..\nlrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /\ndrwx------ 1 lukas staff 16384 22 Apr 10:24 Work\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll\ntotal 96\ndrwxr-xr-x 6 root wheel 192 22 Apr 18:17 .\ndrwxr-xr-x 20 root wheel 640 4 Aug 2024 ..\nlrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /\ndrwx------ 1 lukas staff 16384 11 Apr 15:46 Test\ndrwx------ 1 lukas staff 16384 22 Apr 10:24 Work\ndrwx------ 1 lukas staff 16384 19 Apr 18:36 screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ cd Test/screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ ll\ntotal 10687944\ndrwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 .\ndrwx------ 1 lukas staff 16384 11 Apr 15:46 ..\n-rwxrwxrwx@ 1 lukas staff 6148 21 Apr 10:48 .DS_Store\n-rwxrwxrwx@ 1 lukas staff 4055343104 21 Apr 10:47 archive.db\ndrwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 data\n-rwxrwxrwx 1 lukas staff 1416806400 14 Apr 20:49 db.sqlite\ndrwxrwxrwx 1 lukas staff 16384 11 Apr 16:51 pipes\n-rwxrwxrwx@ 1 lukas staff 3250 11 Apr 17:00 screenpipe-day.sh\n-rwxrwxrwx 1 lukas staff 0 13 Apr 17:21 screenpipe.db\n-rwxrwxrwx 1 lukas staff 0 11 Apr 17:26 test_write\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ ll\ntotal 240\ndrwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 .\ndrwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 ..\n-rwxrwxrwx@ 1 lukas staff 6148 22 Apr 18:17 .DS_Store\ndrwxrwxrwx@ 1 lukas staff 16384 15 Apr 09:59 2026-04-14\ndrwxrwxrwx@ 1 lukas staff 16384 16 Apr 09:13 2026-04-15\ndrwxrwxrwx@ 1 lukas staff 16384 17 Apr 08:57 2026-04-16\ndrwxrwxrwx@ 1 lukas staff 16384 18 Apr 13:35 2026-04-17\ndrwxrwxrwx@ 1 lukas staff 16384 21 Apr 09:10 2026-04-20\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ cd ~/.screenpipe/data/data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll\ntotal 40\ndrwxr-xr-x 15 lukas staff 480 22 Apr 09:15 .\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 264 lukas staff 8448 22 Apr 18:18 2026-04-22\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-21\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll\ntotal 881488\ndrwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 .\ndrwxr-xr-x 15 lukas staff 480 22 Apr 09:15 ..\n-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4\n-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4\n-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4\n-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4\n-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4\n-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4\n-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4\n-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4\n-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4\n-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4\n-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4\n-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4\n-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4\n-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4\n-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4\n-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4\n-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4\n-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4\n-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4\n-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4\n-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4\n-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4\n-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4\n-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4\n-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4\n-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4\n-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4\n-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4\n-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4\n-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4\n-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4\n-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4\n-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4\n-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4\n-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4\n-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4\n-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4\n-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4\n-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4\n-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4\n-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4\n-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4\n-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4\n-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4\n-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4\n-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4\n-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4\n-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4\n-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4\n-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4\n-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4\n-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4\n-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4\n-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4\n-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4\n-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4\n-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4\n-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4\n-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4\n-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4\n-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4\n-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4\n-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4\n-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4\n-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4\n-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4\n-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4\n-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4\n-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4\n-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4\n-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4\n-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4\n-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4\n-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4\n-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4\n-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4\n-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4\n-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4\n-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4\n-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4\n-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4\n-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4\n-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4\n-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4\n-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4\n-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4\n-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4\n-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4\n-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4\n-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4\n-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4\n-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4\n-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4\n-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4\n-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4\n-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4\n-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4\n-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4\n-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4\n-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4\n-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4\n-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4\n-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4\n-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4\n-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4\n-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4\n-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4\n-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4\n-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4\n-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4\n-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4\n-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4\n-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4\n-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4\n-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4\n-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4\n-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4\n-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4\n-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4\n-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4\n-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4\n-rw-r--r-- 1 lukas staff 252921 22 Apr 09:16 compact_monitor_1_1776838586240.mp4\n-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4\n-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4\n-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4\n-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4\n-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4\n-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4\n-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4\n-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4\n-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4\n-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4\n-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4\n-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4\n-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4\n-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4\n-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4\n-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4\n-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4\n-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4\n-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4\n-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4\n-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4\n-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4\n-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4\n-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4\n-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4\n-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4\n-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4\n-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4\n-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4\n-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4\n-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4\n-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4\n-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4\n-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4\n-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4\n-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4\n-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4\n-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4\n-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4\n-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4\n-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4\n-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4\n-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4\n-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4\n-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4\n-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4\n-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4\n-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4\n-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4\n-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4\n-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4\n-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4\n-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4\n-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4\n-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4\n-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4\n-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4\n-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4\n-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4\n-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4\n-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4\n-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4\n-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4\n-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4\n-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4\n-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4\n-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4\n-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4\n-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4\n-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4\n-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4\n-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4\n-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4\n-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4\n-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4\n-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4\n-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4\n-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4\n-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4\n-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4\n-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4\n-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4\n-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4\n-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4\n-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4\n-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4\n-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4\n-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4\n-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4\n-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4\n-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4\n-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4\n-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4\n-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4\n-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4\n-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4\n-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4\n-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4\n-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4\n-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4\n-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4\n-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4\n-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4\n-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4\n-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4\n-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4\n-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4\n-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4\n-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4\n-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4\n-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4\n-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4\n-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4\n-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4\n-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4\n-rw-r--r-- 1 lukas staff 5461430 21 Apr 19:38 compact_monitor_2_1776789493765.mp4\n-rw-r--r-- 1 lukas staff 4057709 21 Apr 19:43 compact_monitor_2_1776789819462.mp4\n-rw-r--r-- 1 lukas staff 2596450 21 Apr 19:49 compact_monitor_2_1776790138746.mp4\n-rw-r--r-- 1 lukas staff 3792786 21 Apr 19:54 compact_monitor_2_1776790456362.mp4\n-rw-r--r-- 1 lukas staff 1534504 21 Apr 19:59 compact_monitor_2_1776790775836.mp4\n-rw-r--r-- 1 lukas staff 3246894 21 Apr 20:04 compact_monitor_2_1776791089868.mp4\n-rw-r--r-- 1 lukas staff 678653 21 Apr 20:10 compact_monitor_2_1776791400917.mp4\n-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4\n-rw-r--r-- 1 lukas staff 149786 22 Apr 09:16 compact_monitor_2_1776838588045.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-21\n[2026-04-22 18:19:28] ========================================\n[2026-04-22 18:19:28] Screenpipe sync starting for: 2026-04-21\n[2026-04-22 18:19:28] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (6.1G)\n NAS mount: OK /Volumes/Test/screenpipe\n Archive DB: exists (3.8G)\n Data dir: OK (246 files, 430M)\n\n[+00m01s] ▶ Counting source rows for 2026-04-21\n frames: 7871\n elements: 702947\n ui_events: 10083\n ocr_text: 2731\n meetings: 1\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-21\n video_chunks ✓ 0m03s\n frames (7871 rows) ✓ 2m23s\n ocr_text (2731 rows) ✓ 0m33s\n ui_events (10083 rows) ✓ 0m01s\n elements (702947 rows) ✓ 1m11s\n meetings (1 rows) ✓ 0m00s\n\n[+04m13s] ▶ Updating FTS indexes\n elements_fts ✓ 1m18s\n frames_fts ✓ 3m07s\n ui_events_fts ✓ 0m02s\n\n[+08m40s] ▶ Verifying DB\n frames: 7871 / 7871 ✓\n elements: 702947 / 702947 ✓\n ui_events: 10083 / 10083 ✓\n ocr_text: 2731 / 2731 ✓\n meetings: 1 / 1 ✓\n\n[+09m31s] ▶ Copying data folder for 2026-04-21\n rsync 2026-04-21/ → NAS ✓ 0m29s (246 files, 430M)\n\n[2026-04-22 18:29:28] Archive DB size: 4.9G\n[2026-04-22 18:29:28] Total time: 10m0s\n[2026-04-22 18:29:28] Sync complete for 2026-04-21\n[2026-04-22 18:29:28] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ 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 $ ll\ntotal 12977136\ndrwxr-xr-x 23 lukas staff 736 22 Apr 09:15 .\ndrwx------+ 91 lukas staff 2912 22 Apr 20:25 ..\n-rw-r--r--@ 1 lukas staff 8196 18 Apr 16:47 .DS_Store\n-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json\ndrwxr-xr-x 167 lukas staff 5344 18 Apr 14:45 data\n-rw-r--r--@ 1 lukas staff 6637330432 22 Apr 19:10 db.sqlite\n-rw-r--r--@ 1 lukas staff 131072 22 Apr 14:26 db.sqlite-shm\n-rw-r--r--@ 1 lukas staff 3621512 22 Apr 19:10 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log\n-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log\n-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log\n-rw-r--r-- 1 lukas staff 196994 16 Apr 20:33 screenpipe.2026-04-16.0.log\n-rw-r--r-- 1 lukas staff 208424 17 Apr 21:06 screenpipe.2026-04-17.0.log\n-rw-r--r-- 1 lukas staff 61983 18 Apr 14:45 screenpipe.2026-04-18.0.log\n-rw-r--r-- 1 lukas staff 359800 20 Apr 18:52 screenpipe.2026-04-20.0.log\n-rw-r--r-- 1 lukas staff 683671 21 Apr 20:18 screenpipe.2026-04-21.0.log\n-rw-r--r-- 1 lukas staff 284763 22 Apr 19:10 screenpipe.2026-04-22.0.log\n-rwxr-xr-x@ 1 lukas staff 14998 18 Apr 18:35 screenpipe_sync.sh\n-rw-r--r--@ 1 lukas staff 27173 22 Apr 18:29 sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp db.sqlite /Volumes/Test/screenpipe/db.sqlite\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe \n 12G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n5.9G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n6.2G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n128K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n4.0M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 36K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n 96K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\n160K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log\n172K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log\n196K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log\n204K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-18.0.log\n352K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-20.0.log\n668K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-21.0.log\n324K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-22.0.log\n 16K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe_sync.sh\n 28K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd /data/data/ \ncd: no such file or directory: /data/data/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd data/2026-04-22\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-22 $ ll\ntotal 521816\ndrwxr-xr-x 224 lukas staff 7168 23 Apr 09:14 .\ndrwxr-xr-x 16 lukas staff 512 23 Apr 09:13 ..\n-rw-r--r-- 1 lukas staff 1291639 22 Apr 09:26 compact_monitor_1_1776839204800.mp4\n-rw-r--r-- 1 lukas staff 1976819 22 Apr 09:31 compact_monitor_1_1776839511652.mp4\n-rw-r--r-- 1 lukas staff 385631 22 Apr 09:37 compact_monitor_1_1776839823964.mp4\n-rw-r--r-- 1 lukas staff 616970 22 Apr 09:42 compact_monitor_1_1776840142296.mp4\n-rw-r--r-- 1 lukas staff 2692728 22 Apr 09:47 compact_monitor_1_1776840467896.mp4\n-rw-r--r-- 1 lukas staff 2026505 22 Apr 09:53 compact_monitor_1_1776840800074.mp4\n-rw-r--r-- 1 lukas staff 1945361 22 Apr 09:58 compact_monitor_1_1776841121195.mp4\n-rw-r--r-- 1 lukas staff 1694598 22 Apr 10:04 compact_monitor_1_1776841439804.mp4\n-rw-r--r-- 1 lukas staff 1609711 22 Apr 10:09 compact_monitor_1_1776841764316.mp4\n-rw-r--r-- 1 lukas staff 1462521 22 Apr 10:14 compact_monitor_1_1776842081882.mp4\n-rw-r--r-- 1 lukas staff 1222819 22 Apr 10:20 compact_monitor_1_1776842401308.mp4\n-rw-r--r-- 1 lukas staff 1374769 22 Apr 10:25 compact_monitor_1_1776842720447.mp4\n-rw-r--r-- 1 lukas staff 1069475 22 Apr 10:30 compact_monitor_1_1776843032219.mp4\n-rw-r--r-- 1 lukas staff 1048226 22 Apr 10:35 compact_monitor_1_1776843337824.mp4\n-rw-r--r-- 1 lukas staff 378431 22 Apr 10:40 compact_monitor_1_1776843648464.mp4\n-rw-r--r-- 1 lukas staff 892142 22 Apr 10:46 compact_monitor_1_1776843964373.mp4\n-rw-r--r-- 1 lukas staff 519374 22 Apr 10:51 compact_monitor_1_1776844275867.mp4\n-rw-r--r-- 1 lukas staff 693685 22 Apr 10:56 compact_monitor_1_1776844584621.mp4\n-rw-r--r-- 1 lukas staff 452526 22 Apr 11:01 compact_monitor_1_1776844897612.mp4\n-rw-r--r-- 1 lukas staff 373085 22 Apr 11:06 compact_monitor_1_1776845205000.mp4\n-rw-r--r-- 1 lukas staff 792127 22 Apr 11:11 compact_monitor_1_1776845513822.mp4\n-rw-r--r-- 1 lukas staff 1336192 22 Apr 11:17 compact_monitor_1_1776845828958.mp4\n-rw-r--r-- 1 lukas staff 2739781 22 Apr 11:22 compact_monitor_1_1776846134058.mp4\n-rw-r--r-- 1 lukas staff 1229872 22 Apr 11:27 compact_monitor_1_1776846444744.mp4\n-rw-r--r-- 1 lukas staff 372000 22 Apr 11:32 compact_monitor_1_1776846749223.mp4\n-rw-r--r-- 1 lukas staff 215746 22 Apr 11:37 compact_monitor_1_1776847053415.mp4\n-rw-r--r-- 1 lukas staff 214432 22 Apr 11:42 compact_monitor_1_1776847358310.mp4\n-rw-r--r-- 1 lukas staff 213835 22 Apr 11:47 compact_monitor_1_1776847664230.mp4\n-rw-r--r-- 1 lukas staff 217385 22 Apr 11:52 compact_monitor_1_1776847973489.mp4\n-rw-r--r-- 1 lukas staff 215022 22 Apr 11:57 compact_monitor_1_1776848277473.mp4\n-rw-r--r-- 1 lukas staff 405201 22 Apr 12:03 compact_monitor_1_1776848581367.mp4\n-rw-r--r-- 1 lukas staff 1557849 22 Apr 12:08 compact_monitor_1_1776848886812.mp4\n-rw-r--r-- 1 lukas staff 1652380 22 Apr 12:13 compact_monitor_1_1776849197591.mp4\n-rw-r--r-- 1 lukas staff 1067419 22 Apr 12:18 compact_monitor_1_1776849503787.mp4\n-rw-r--r-- 1 lukas staff 268334 22 Apr 12:23 compact_monitor_1_1776849813627.mp4\n-rw-r--r-- 1 lukas staff 268945 22 Apr 12:28 compact_monitor_1_1776850116458.mp4\n-rw-r--r-- 1 lukas staff 906784 22 Apr 12:33 compact_monitor_1_1776850424950.mp4\n-rw-r--r-- 1 lukas staff 1251053 22 Apr 12:38 compact_monitor_1_1776850735839.mp4\n-rw-r--r-- 1 lukas staff 606643 22 Apr 12:44 compact_monitor_1_1776851047118.mp4\n-rw-r--r-- 1 lukas staff 3127146 22 Apr 12:49 compact_monitor_1_1776851354979.mp4\n-rw-r--r-- 1 lukas staff 1120031 22 Apr 12:54 compact_monitor_1_1776851661551.mp4\n-rw-r--r-- 1 lukas staff 389700 22 Apr 12:59 compact_monitor_1_1776851969831.mp4\n-rw-r--r-- 1 lukas staff 390117 22 Apr 13:04 compact_monitor_1_1776852272976.mp4\n-rw-r--r-- 1 lukas staff 393030 22 Apr 13:09 compact_monitor_1_1776852581698.mp4\n-rw-r--r-- 1 lukas staff 579804 22 Apr 13:14 compact_monitor_1_1776852888686.mp4\n-rw-r--r-- 1 lukas staff 144542 22 Apr 13:19 compact_monitor_1_1776853195671.mp4\n-rw-r--r-- 1 lukas staff 1319292 22 Apr 13:25 compact_monitor_1_1776853501128.mp4\n-rw-r--r-- 1 lukas staff 522815 22 Apr 13:30 compact_monitor_1_1776853807941.mp4\n-rw-r--r-- 1 lukas staff 467289 22 Apr 13:35 compact_monitor_1_1776854114758.mp4\n-rw-r--r-- 1 lukas staff 264853 22 Apr 13:40 compact_monitor_1_1776854419993.mp4\n-rw-r--r-- 1 lukas staff 183594 22 Apr 13:45 compact_monitor_1_1776854724809.mp4\n-rw-r--r-- 1 lukas staff 178631 22 Apr 13:50 compact_monitor_1_1776855032679.mp4\n-rw-r--r-- 1 lukas staff 182119 22 Apr 13:55 compact_monitor_1_1776855342190.mp4\n-rw-r--r-- 1 lukas staff 176349 22 Apr 14:00 compact_monitor_1_1776855655518.mp4\n-rw-r--r-- 1 lukas staff 179590 22 Apr 14:06 compact_monitor_1_1776855960164.mp4\n-rw-r--r-- 1 lukas staff 178846 22 Apr 14:11 compact_monitor_1_1776856271060.mp4\n-rw-r--r-- 1 lukas staff 884339 22 Apr 14:16 compact_monitor_1_1776856576155.mp4\n-rw-r--r-- 1 lukas staff 508676 22 Apr 14:21 compact_monitor_1_1776856888985.mp4\n-rw-r--r-- 1 lukas staff 141591 22 Apr 14:26 compact_monitor_1_1776857198732.mp4\n-rw-r--r-- 1 lukas staff 1074474 22 Apr 14:31 compact_monitor_1_1776857502105.mp4\n-rw-r--r-- 1 lukas staff 687202 22 Apr 14:36 compact_monitor_1_1776857809764.mp4\n-rw-r--r-- 1 lukas staff 301043 22 Apr 14:42 compact_monitor_1_1776858119930.mp4\n-rw-r--r-- 1 lukas staff 441512 22 Apr 14:47 compact_monitor_1_1776858435216.mp4\n-rw-r--r-- 1 lukas staff 470964 22 Apr 14:52 compact_monitor_1_1776858741990.mp4\n-rw-r--r-- 1 lukas staff 565080 22 Apr 14:57 compact_monitor_1_1776859048771.mp4\n-rw-r--r-- 1 lukas staff 2099393 22 Apr 15:02 compact_monitor_1_1776859363756.mp4\n-rw-r--r-- 1 lukas staff 341547 22 Apr 15:07 compact_monitor_1_1776859669692.mp4\n-rw-r--r-- 1 lukas staff 1470918 22 Apr 15:13 compact_monitor_1_1776859980784.mp4\n-rw-r--r-- 1 lukas staff 1386535 22 Apr 15:18 compact_monitor_1_1776860291496.mp4\n-rw-r--r-- 1 lukas staff 3721368 22 Apr 15:23 compact_monitor_1_1776860608283.mp4\n-rw-r--r-- 1 lukas staff 2829310 22 Apr 15:28 compact_monitor_1_1776860927808.mp4\n-rw-r--r-- 1 lukas staff 3608400 22 Apr 15:34 compact_monitor_1_1776861246919.mp4\n-rw-r--r-- 1 lukas staff 2520337 22 Apr 15:39 compact_monitor_1_1776861561807.mp4\n-rw-r--r-- 1 lukas staff 3394786 22 Apr 15:44 compact_monitor_1_1776861870869.mp4\n-rw-r--r-- 1 lukas staff 2311370 22 Apr 15:49 compact_monitor_1_1776862184223.mp4\n-rw-r--r-- 1 lukas staff 2312669 22 Apr 15:54 compact_monitor_1_1776862493758.mp4\n-rw-r--r-- 1 lukas staff 1674506 22 Apr 16:00 compact_monitor_1_1776862807398.mp4\n-rw-r--r-- 1 lukas staff 1595953 22 Apr 16:05 compact_monitor_1_1776863114876.mp4\n-rw-r--r-- 1 lukas staff 834561 22 Apr 16:10 compact_monitor_1_1776863433206.mp4\n-rw-r--r-- 1 lukas staff 297948 22 Apr 16:15 compact_monitor_1_1776863748371.mp4\n-rw-r--r-- 1 lukas staff 297470 22 Apr 16:20 compact_monitor_1_1776864053732.mp4\n-rw-r--r-- 1 lukas staff 301712 22 Apr 16:26 compact_monitor_1_1776864361608.mp4\n-rw-r--r-- 1 lukas staff 476053 22 Apr 16:31 compact_monitor_1_1776864676523.mp4\n-rw-r--r-- 1 lukas staff 1140004 22 Apr 16:36 compact_monitor_1_1776864986222.mp4\n-rw-r--r-- 1 lukas staff 209748 22 Apr 16:41 compact_monitor_1_1776865292562.mp4\n-rw-r--r-- 1 lukas staff 153281 22 Apr 16:46 compact_monitor_1_1776865598330.mp4\n-rw-r--r-- 1 lukas staff 124176 22 Apr 16:51 compact_monitor_1_1776865908133.mp4\n-rw-r--r-- 1 lukas staff 123505 22 Apr 16:56 compact_monitor_1_1776866216495.mp4\n-rw-r--r-- 1 lukas staff 122850 22 Apr 17:01 compact_monitor_1_1776866518685.mp4\n-rw-r--r-- 1 lukas staff 95026 22 Apr 17:07 compact_monitor_1_1776866821945.mp4\n-rw-r--r-- 1 lukas staff 117642 22 Apr 17:32 compact_monitor_1_1776868350295.mp4\n-rw-r--r-- 1 lukas staff 120079 22 Apr 17:37 compact_monitor_1_1776868656326.mp4\n-rw-r--r-- 1 lukas staff 169674 22 Apr 17:42 compact_monitor_1_1776868963122.mp4\n-rw-r--r-- 1 lukas staff 125060 22 Apr 17:47 compact_monitor_1_1776869273496.mp4\n-rw-r--r-- 1 lukas staff 123507 22 Apr 17:53 compact_monitor_1_1776869582690.mp4\n-rw-r--r-- 1 lukas staff 191046 22 Apr 17:58 compact_monitor_1_1776869890457.mp4\n-rw-r--r-- 1 lukas staff 127296 22 Apr 18:03 compact_monitor_1_1776870196198.mp4\n-rw-r--r-- 1 lukas staff 122512 22 Apr 18:08 compact_monitor_1_1776870507382.mp4\n-rw-r--r-- 1 lukas staff 118952 22 Apr 18:13 compact_monitor_1_1776870818099.mp4\n-rw-r--r-- 1 lukas staff 122784 22 Apr 18:18 compact_monitor_1_1776871121943.mp4\n-rw-r--r-- 1 lukas staff 117968 22 Apr 18:23 compact_monitor_1_1776871432304.mp4\n-rw-r--r-- 1 lukas staff 1522764 22 Apr 18:28 compact_monitor_1_1776871736007.mp4\n-rw-r--r-- 1 lukas staff 809317 22 Apr 18:34 compact_monitor_1_1776872041165.mp4\n-rw-r--r-- 1 lukas staff 503643 22 Apr 18:39 compact_monitor_1_1776872348660.mp4\n-rw-r--r-- 1 lukas staff 176552 22 Apr 18:44 compact_monitor_1_1776872651900.mp4\n-rw-r--r-- 1 lukas staff 177165 22 Apr 18:49 compact_monitor_1_1776872958626.mp4\n-rw-r--r-- 1 lukas staff 246259 22 Apr 18:54 compact_monitor_1_1776873265328.mp4\n-rw-r--r-- 1 lukas staff 332374 22 Apr 18:59 compact_monitor_1_1776873570308.mp4\n-rw-r--r-- 1 lukas staff 1013140 22 Apr 19:04 compact_monitor_1_1776873875737.mp4\n-rw-r--r-- 1 lukas staff 2533378 22 Apr 19:09 compact_monitor_1_1776874182454.mp4\n-rw-r--r-- 1 lukas staff 2868752 23 Apr 09:14 compact_monitor_1_1776924846954.mp4\n-rw-r--r-- 1 lukas staff 1406238 22 Apr 09:26 compact_monitor_2_1776839206703.mp4\n-rw-r--r-- 1 lukas staff 5220491 22 Apr 09:31 compact_monitor_2_1776839514102.mp4\n-rw-r--r-- 1 lukas staff 4302042 22 Apr 09:37 compact_monitor_2_1776839825945.mp4\n-rw-r--r-- 1 lukas staff 1166365 22 Apr 09:42 compact_monitor_2_1776840149161.mp4\n-rw-r--r-- 1 lukas staff 2835147 22 Apr 09:48 compact_monitor_2_1776840475601.mp4\n-rw-r--r-- 1 lukas staff 1335719 22 Apr 09:53 compact_monitor_2_1776840805501.mp4\n-rw-r--r-- 1 lukas staff 760807 22 Apr 09:58 compact_monitor_2_1776841130978.mp4\n-rw-r--r-- 1 lukas staff 335588 22 Apr 10:04 compact_monitor_2_1776841447110.mp4\n-rw-r--r-- 1 lukas staff 270101 22 Apr 10:09 compact_monitor_2_1776841770084.mp4\n-rw-r--r-- 1 lukas staff 471541 22 Apr 10:14 compact_monitor_2_1776842086264.mp4\n-rw-r--r-- 1 lukas staff 374686 22 Apr 10:20 compact_monitor_2_1776842407228.mp4\n-rw-r--r-- 1 lukas staff 549097 22 Apr 10:25 compact_monitor_2_1776842726731.mp4\n-rw-r--r-- 1 lukas staff 587980 22 Apr 10:30 compact_monitor_2_1776843033453.mp4\n-rw-r--r-- 1 lukas staff 1590795 22 Apr 10:35 compact_monitor_2_1776843339118.mp4\n-rw-r--r-- 1 lukas staff 2843756 22 Apr 10:40 compact_monitor_2_1776843652359.mp4\n-rw-r--r-- 1 lukas staff 1248500 22 Apr 10:46 compact_monitor_2_1776843965671.mp4\n-rw-r--r-- 1 lukas staff 2387069 22 Apr 10:51 compact_monitor_2_1776844278127.mp4\n-rw-r--r-- 1 lukas staff 3380766 22 Apr 10:56 compact_monitor_2_1776844586498.mp4\n-rw-r--r-- 1 lukas staff 1372830 22 Apr 11:01 compact_monitor_2_1776844898915.mp4\n-rw-r--r-- 1 lukas staff 431466 22 Apr 11:06 compact_monitor_2_1776845205857.mp4\n-rw-r--r-- 1 lukas staff 4140482 22 Apr 11:12 compact_monitor_2_1776845516891.mp4\n-rw-r--r-- 1 lukas staff 1019700 22 Apr 11:17 compact_monitor_2_1776845830886.mp4\n-rw-r--r-- 1 lukas staff 1971349 22 Apr 11:22 compact_monitor_2_1776846137433.mp4\n-rw-r--r-- 1 lukas staff 1855516 22 Apr 11:27 compact_monitor_2_1776846446118.mp4\n-rw-r--r-- 1 lukas staff 2113081 22 Apr 11:32 compact_monitor_2_1776846750841.mp4\n-rw-r--r-- 1 lukas staff 860635 22 Apr 11:37 compact_monitor_2_1776847054375.mp4\n-rw-r--r-- 1 lukas staff 1547770 22 Apr 11:42 compact_monitor_2_1776847359456.mp4\n-rw-r--r-- 1 lukas staff 1092684 22 Apr 11:47 compact_monitor_2_1776847665196.mp4\n-rw-r--r-- 1 lukas staff 2061114 22 Apr 11:52 compact_monitor_2_1776847974358.mp4\n-rw-r--r-- 1 lukas staff 2199781 22 Apr 11:58 compact_monitor_2_1776848278484.mp4\n-rw-r--r-- 1 lukas staff 1381991 22 Apr 12:03 compact_monitor_2_1776848583195.mp4\n-rw-r--r-- 1 lukas staff 2721087 22 Apr 12:08 compact_monitor_2_1776848888480.mp4\n-rw-r--r-- 1 lukas staff 877385 22 Apr 12:13 compact_monitor_2_1776849199887.mp4\n-rw-r--r-- 1 lukas staff 3540697 22 Apr 12:18 compact_monitor_2_1776849506021.mp4\n-rw-r--r-- 1 lukas staff 474523 22 Apr 12:23 compact_monitor_2_1776849814381.mp4\n-rw-r--r-- 1 lukas staff 991274 22 Apr 12:28 compact_monitor_2_1776850117283.mp4\n-rw-r--r-- 1 lukas staff 2121163 22 Apr 12:33 compact_monitor_2_1776850426669.mp4\n-rw-r--r-- 1 lukas staff 1480246 22 Apr 12:38 compact_monitor_2_1776850737952.mp4\n-rw-r--r-- 1 lukas staff 821464 22 Apr 12:44 compact_monitor_2_1776851048313.mp4\n-rw-r--r-- 1 lukas staff 684777 22 Apr 12:49 compact_monitor_2_1776851357051.mp4\n-rw-r--r-- 1 lukas staff 2576122 22 Apr 12:54 compact_monitor_2_1776851663610.mp4\n-rw-r--r-- 1 lukas staff 1690359 22 Apr 12:59 compact_monitor_2_1776851970964.mp4\n-rw-r--r-- 1 lukas staff 1821650 22 Apr 13:04 compact_monitor_2_1776852275017.mp4\n-rw-r--r-- 1 lukas staff 2451968 22 Apr 13:09 compact_monitor_2_1776852583512.mp4\n-rw-r--r-- 1 lukas staff 2568339 22 Apr 13:14 compact_monitor_2_1776852890302.mp4\n-rw-r--r-- 1 lukas staff 1354068 22 Apr 13:19 compact_monitor_2_1776853197021.mp4\n-rw-r--r-- 1 lukas staff 683086 22 Apr 13:25 compact_monitor_2_1776853502339.mp4\n-rw-r--r-- 1 lukas staff 1015792 22 Apr 13:30 compact_monitor_2_1776853809857.mp4\n-rw-r--r-- 1 lukas staff 833765 22 Apr 13:35 compact_monitor_2_1776854115701.mp4\n-rw-r--r-- 1 lukas staff 2018658 22 Apr 13:40 compact_monitor_2_1776854421548.mp4\n-rw-r--r-- 1 lukas staff 1912549 22 Apr 13:45 compact_monitor_2_1776854726335.mp4\n-rw-r--r-- 1 lukas staff 914258 22 Apr 13:50 compact_monitor_2_1776855033732.mp4\n-rw-r--r-- 1 lukas staff 1182467 22 Apr 13:55 compact_monitor_2_1776855343602.mp4\n-rw-r--r-- 1 lukas staff 385708 22 Apr 14:00 compact_monitor_2_1776855657104.mp4\n-rw-r--r-- 1 lukas staff 725079 22 Apr 14:06 compact_monitor_2_1776855962030.mp4\n-rw-r--r-- 1 lukas staff 900929 22 Apr 14:11 compact_monitor_2_1776856272407.mp4\n-rw-r--r-- 1 lukas staff 1331033 22 Apr 14:16 compact_monitor_2_1776856578708.mp4\n-rw-r--r-- 1 lukas staff 630778 22 Apr 14:21 compact_monitor_2_1776856890399.mp4\n-rw-r--r-- 1 lukas staff 1810130 22 Apr 14:26 compact_monitor_2_1776857199786.mp4\n-rw-r--r-- 1 lukas staff 1725201 22 Apr 14:31 compact_monitor_2_1776857503198.mp4\n-rw-r--r-- 1 lukas staff 1202608 22 Apr 14:36 compact_monitor_2_1776857811312.mp4\n-rw-r--r-- 1 lukas staff 1183824 22 Apr 14:42 compact_monitor_2_1776858123559.mp4\n-rw-r--r-- 1 lukas staff 1208327 22 Apr 14:47 compact_monitor_2_1776858436830.mp4\n-rw-r--r-- 1 lukas staff 1399691 22 Apr 14:52 compact_monitor_2_1776858743360.mp4\n-rw-r--r-- 1 lukas staff 2485595 22 Apr 14:57 compact_monitor_2_1776859051449.mp4\n-rw-r--r-- 1 lukas staff 1856739 22 Apr 15:02 compact_monitor_2_1776859366233.mp4\n-rw-r--r-- 1 lukas staff 903086 22 Apr 15:07 compact_monitor_2_1776859671654.mp4\n-rw-r--r-- 1 lukas staff 1425070 22 Apr 15:13 compact_monitor_2_1776859986162.mp4\n-rw-r--r-- 1 lukas staff 1299666 22 Apr 15:18 compact_monitor_2_1776860295573.mp4\n-rw-r--r-- 1 lukas staff 1280478 22 Apr 15:23 compact_monitor_2_1776860614296.mp4\n-rw-r--r-- 1 lukas staff 2337036 22 Apr 15:28 compact_monitor_2_1776860932062.mp4\n-rw-r--r-- 1 lukas staff 2131149 22 Apr 15:34 compact_monitor_2_1776861251494.mp4\n-rw-r--r-- 1 lukas staff 2359883 22 Apr 15:39 compact_monitor_2_1776861564243.mp4\n-rw-r--r-- 1 lukas staff 1547537 22 Apr 15:44 compact_monitor_2_1776861876714.mp4\n-rw-r--r-- 1 lukas staff 2172114 22 Apr 15:49 compact_monitor_2_1776862186712.mp4\n-rw-r--r-- 1 lukas staff 1480165 22 Apr 15:54 compact_monitor_2_1776862496217.mp4\n-rw-r--r-- 1 lukas staff 1451204 22 Apr 16:00 compact_monitor_2_1776862811373.mp4\n-rw-r--r-- 1 lukas staff 797522 22 Apr 16:05 compact_monitor_2_1776863121180.mp4\n-rw-r--r-- 1 lukas staff 1136154 22 Apr 16:10 compact_monitor_2_1776863436274.mp4\n-rw-r--r-- 1 lukas staff 408460 22 Apr 16:15 compact_monitor_2_1776863749818.mp4\n-rw-r--r-- 1 lukas staff 1151394 22 Apr 16:20 compact_monitor_2_1776864054467.mp4\n-rw-r--r-- 1 lukas staff 2617267 22 Apr 16:26 compact_monitor_2_1776864364411.mp4\n-rw-r--r-- 1 lukas staff 1648571 22 Apr 16:31 compact_monitor_2_1776864678063.mp4\n-rw-r--r-- 1 lukas staff 726061 22 Apr 16:36 compact_monitor_2_1776864988062.mp4\n-rw-r--r-- 1 lukas staff 499734 22 Apr 16:41 compact_monitor_2_1776865293654.mp4\n-rw-r--r-- 1 lukas staff 1277339 22 Apr 16:46 compact_monitor_2_1776865599949.mp4\n-rw-r--r-- 1 lukas staff 776016 22 Apr 16:51 compact_monitor_2_1776865909005.mp4\n-rw-r--r-- 1 lukas staff 310853 22 Apr 16:56 compact_monitor_2_1776866217337.mp4\n-rw-r--r-- 1 lukas staff 310651 22 Apr 17:02 compact_monitor_2_1776866519474.mp4\n-rw-r--r-- 1 lukas staff 244441 22 Apr 17:07 compact_monitor_2_1776866822189.mp4\n-rw-r--r-- 1 lukas staff 850717 22 Apr 17:32 compact_monitor_2_1776868350967.mp4\n-rw-r--r-- 1 lukas staff 958993 22 Apr 17:37 compact_monitor_2_1776868657735.mp4\n-rw-r--r-- 1 lukas staff 1574171 22 Apr 17:42 compact_monitor_2_1776868964141.mp4\n-rw-r--r-- 1 lukas staff 1651606 22 Apr 17:47 compact_monitor_2_1776869274633.mp4\n-rw-r--r-- 1 lukas staff 669609 22 Apr 17:53 compact_monitor_2_1776869583557.mp4\n-rw-r--r-- 1 lukas staff 2261136 22 Apr 17:58 compact_monitor_2_1776869892043.mp4\n-rw-r--r-- 1 lukas staff 1560427 22 Apr 18:03 compact_monitor_2_1776870198140.mp4\n-rw-r--r-- 1 lukas staff 678529 22 Apr 18:08 compact_monitor_2_1776870509039.mp4\n-rw-r--r-- 1 lukas staff 519464 22 Apr 18:13 compact_monitor_2_1776870818808.mp4\n-rw-r--r-- 1 lukas staff 1347344 22 Apr 18:18 compact_monitor_2_1776871123291.mp4\n-rw-r--r-- 1 lukas staff 1653980 22 Apr 18:23 compact_monitor_2_1776871433166.mp4\n-rw-r--r-- 1 lukas staff 844038 22 Apr 18:28 compact_monitor_2_1776871737404.mp4\n-rw-r--r-- 1 lukas staff 1809392 22 Apr 18:34 compact_monitor_2_1776872042292.mp4\n-rw-r--r-- 1 lukas staff 500253 22 Apr 18:39 compact_monitor_2_1776872349495.mp4\n-rw-r--r-- 1 lukas staff 362170 22 Apr 18:44 compact_monitor_2_1776872652803.mp4\n-rw-r--r-- 1 lukas staff 2235586 22 Apr 18:49 compact_monitor_2_1776872959641.mp4\n-rw-r--r-- 1 lukas staff 1160652 22 Apr 18:54 compact_monitor_2_1776873266662.mp4\n-rw-r--r-- 1 lukas staff 1344375 22 Apr 18:59 compact_monitor_2_1776873571536.mp4\n-rw-r--r-- 1 lukas staff 3807432 22 Apr 19:04 compact_monitor_2_1776873878479.mp4\n-rw-r--r-- 1 lukas staff 2414414 22 Apr 19:09 compact_monitor_2_1776874185817.mp4\n-rw-r--r-- 1 lukas staff 3120540 23 Apr 09:14 compact_monitor_2_1776924852567.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-22 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-22\n[2026-04-23 09:16:02] ========================================\n[2026-04-23 09:16:02] Screenpipe sync starting for: 2026-04-22\n[2026-04-23 09:16:02] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (6.2G)\n NAS mount: OK /Volumes/Test/screenpipe\n Archive DB: exists (4.9G)\n Data dir: OK (222 files, 255M)\n\n[+00m00s] ▶ Counting source rows for 2026-04-22\n frames: 4305\n elements: 332442\n ui_events: 5804\n ocr_text: 1074\n meetings: 3\n\n[+00m01s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m00s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m01s] ▶ Syncing data for 2026-04-22\n video_chunks ✓ 0m01s\n frames (4305 rows) ✓ 1m38s\n ocr_text (1074 rows) ✓ 0m12s\n ui_events (5804 rows) ✓ 0m01s\n elements (332442 rows) ✓ 0m51s\n meetings (3 rows) ✓ 0m00s\n\n[+02m44s] ▶ Updating FTS indexes\n elements_fts ✓ 1m26s\n frames_fts ✓ 2m14s\n ui_events_fts ✓ 0m02s\n\n[+06m26s] ▶ Verifying DB\n frames: 4305 / 4305 ✓\n elements: 332442 / 332442 ✓\n ui_events: 5804 / 5804 ✓\n ocr_text: 1074 / 1074 ✓\n meetings: 3 / 3 ✓\n\n[+07m20s] ▶ Copying data folder for 2026-04-22\n rsync 2026-04-22/ → NAS ✓ 0m16s (222 files, 254M)\n\n[2026-04-23 09:23:38] Archive DB size: 5.8G\n[2026-04-23 09:23:38] Total time: 7m36s\n[2026-04-23 09:23:38] Sync complete for 2026-04-22\n[2026-04-23 09:23:38] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-22 $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.058843084,"height":-0.042298436},"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.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.32912233,"top":1.0,"width":0.058843084,"height":-0.042298436},"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.33111703,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.3879654,"top":1.0,"width":0.058843084,"height":-0.042298436},"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.3899601,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.44680852,"top":1.0,"width":0.058843084,"height":-0.042298436},"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.4488032,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.5056516,"top":1.0,"width":0.058843084,"height":-0.042298436},"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.50764626,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.56449467,"top":1.0,"width":0.058843084,"height":-0.042298436},"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.56648934,"top":1.0,"width":0.005319149,"height":-0.04549086},"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.62333775,"top":1.0,"width":0.058843084,"height":-0.042298436},"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.6253325,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (-zsh)","depth":2,"bounds":{"left":0.6821808,"top":1.0,"width":0.058843084,"height":-0.042298436},"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.68417555,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7273936,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.50398934,"top":1.0,"width":0.010970744,"height":-0.02394259},"role_description":"text"}]...
|
1031678775612477790
|
-1275583338321592733
|
click
|
accessibility
|
NULL
|
-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 -rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll
total 899512
drwxr-xr-x 306 lukas staff 9792 21 Apr 20:18 .
drwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:05 1776791134169_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:05 1776791134429_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791165816_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791166383_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791196587_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791197102_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791227416_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791227779_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791258183_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791258594_m1.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791287670_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791287761_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791292727_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791293784_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791300420_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791301542_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791305234_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791306590_m2.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791314840_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791316155_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791347790_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791348817_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791380412_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791381822_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791412322_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791413781_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791443689_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791446344_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791474900_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791479169_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791507841_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791511806_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791539947_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791543728_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791572066_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791576889_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791604264_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:13 1776791609516_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791635686_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791641549_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791667683_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791672264_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791699168_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791703546_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:15 1776791729923_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791734502_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791762742_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791767091_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791794955_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791799940_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791828207_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791832582_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791860643_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791864973_m1.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791886556_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791887551_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791892443_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791893875_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791895925_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791897732_m2.jpg
-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4
-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4
-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4
-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4
-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4
-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4
-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4
-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4
-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4
-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4
-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4
-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4
-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4
-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4
-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4
-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4
-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4
-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4
-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4
-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4
-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4
-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4
-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4
-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4
-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4
-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4
-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4
-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4
-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4
-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4
-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4
-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4
-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4
-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4
-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4
-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4
-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4
-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4
-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4
-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4
-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4
-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4
-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4
-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4
-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4
-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4
-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4
-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4
-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4
-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4
-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4
-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4
-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4
-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4
-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4
-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4
-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4
-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4
-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4
-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4
-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4
-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4
-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4
-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4
-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4
-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4
-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4
-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4
-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4
-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4
-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4
-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4
-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4
-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4
-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4
-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4
-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4
-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4
-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4
-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4
-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4
-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4
-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4
-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4
-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4
-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4
-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4
-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4
-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4
-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4
-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4
-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4
-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4
-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4
-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4
-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4
-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4
-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4
-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4
-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4
-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4
-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4
-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4
-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4
-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4
-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4
-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4
-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4
-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4
-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4
-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4
-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4
-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4
-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4
-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4
-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4
-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4
-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4
-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4
-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4
-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4
-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4
-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4
-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4
-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4
-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4
-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4
-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4
-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4
-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4
-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4
-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4
-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4
-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4
-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4
-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4
-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4
-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4
-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4
-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4
-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4
-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4
-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4
-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4
-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4
-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4
-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4
-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4
-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4
-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4
-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4
-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4
-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4
-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4
-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4
-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4
-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4
-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4
-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4
-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4
-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4
-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4
-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4
-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4
-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4
-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4
-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4
-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4
-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4
-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4
-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4
-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4
-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4
-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4
-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4
-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4
-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4
-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4
-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4
-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4
-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4
-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4
-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4
-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4
-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4
-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4
-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4
-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4
-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4
-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4
-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4
-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4
-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4
-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4
-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4
-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4
-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4
-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4
-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4
-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4
-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4
-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4
-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4
-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4
-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4
-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4
-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4
-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4
-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4
-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4
-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4
-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4
-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4
-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4
-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4
-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4
-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4
-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4
-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4
-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4
-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4
-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4
-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4
-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4
-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4
-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4
-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4
-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4
-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4
-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4
-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4
-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4
-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4
-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4
-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4
-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4
-rw-r--r-- 1 lukas staff 5461430 21 Apr 19:38 compact_monitor_2_1776789493765.mp4
-rw-r--r-- 1 lukas staff 4057709 21 Apr 19:43 compact_monitor_2_1776789819462.mp4
-rw-r--r-- 1 lukas staff 2596450 21 Apr 19:49 compact_monitor_2_1776790138746.mp4
-rw-r--r-- 1 lukas staff 3792786 21 Apr 19:54 compact_monitor_2_1776790456362.mp4
-rw-r--r-- 1 lukas staff 1534504 21 Apr 19:59 compact_monitor_2_1776790775836.mp4
-rw-r--r-- 1 lukas staff 3246894 21 Apr 20:04 compact_monitor_2_1776791089868.mp4
-rw-r--r-- 1 lukas staff 678653 21 Apr 20:10 compact_monitor_2_1776791400917.mp4
-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ cd /Volumes/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll
total 32
drwxr-xr-x 4 root wheel 128 22 Apr 10:24 .
drwxr-xr-x 20 root wheel 640 4 Aug 2024 ..
lrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /
drwx------ 1 lukas staff 16384 22 Apr 10:24 Work
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll
total 96
drwxr-xr-x 6 root wheel 192 22 Apr 18:17 .
drwxr-xr-x 20 root wheel 640 4 Aug 2024 ..
lrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /
drwx------ 1 lukas staff 16384 11 Apr 15:46 Test
drwx------ 1 lukas staff 16384 22 Apr 10:24 Work
drwx------ 1 lukas staff 16384 19 Apr 18:36 screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ cd Test/screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ ll
total 10687944
drwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 .
drwx------ 1 lukas staff 16384 11 Apr 15:46 ..
-rwxrwxrwx@ 1 lukas staff 6148 21 Apr 10:48 .DS_Store
-rwxrwxrwx@ 1 lukas staff 4055343104 21 Apr 10:47 archive.db
drwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 data
-rwxrwxrwx 1 lukas staff 1416806400 14 Apr 20:49 db.sqlite
drwxrwxrwx 1 lukas staff 16384 11 Apr 16:51 pipes
-rwxrwxrwx@ 1 lukas staff 3250 11 Apr 17:00 screenpipe-day.sh
-rwxrwxrwx 1 lukas staff 0 13 Apr 17:21 screenpipe.db
-rwxrwxrwx 1 lukas staff 0 11 Apr 17:26 test_write
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ cd data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ ll
total 240
drwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 .
drwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 ..
-rwxrwxrwx@ 1 lukas staff 6148 22 Apr 18:17 .DS_Store
drwxrwxrwx@ 1 lukas staff 16384 15 Apr 09:59 2026-04-14
drwxrwxrwx@ 1 lukas staff 16384 16 Apr 09:13 2026-04-15
drwxrwxrwx@ 1 lukas staff 16384 17 Apr 08:57 2026-04-16
drwxrwxrwx@ 1 lukas staff 16384 18 Apr 13:35 2026-04-17
drwxrwxrwx@ 1 lukas staff 16384 21 Apr 09:10 2026-04-20
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ cd ~/.screenpipe/data/data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll
total 40
drwxr-xr-x 15 lukas staff 480 22 Apr 09:15 .
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 264 lukas staff 8448 22 Apr 18:18 2026-04-22
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-21
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll
total 881488
drwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 .
drwxr-xr-x 15 lukas staff 480 22 Apr 09:15 ..
-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4
-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4
-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4
-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4
-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4
-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4
-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4
-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4
-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4
-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4
-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4
-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4
-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4
-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4
-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4
-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4
-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4
-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4
-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4
-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4
-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4
-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4
-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4
-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4
-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4
-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4
-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4
-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4
-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4
-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4
-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4
-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4
-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4
-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4
-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4
-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4
-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4
-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4
-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4
-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4
-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4
-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4
-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4
-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4
-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4
-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4
-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4
-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4
-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4
-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4
-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4
-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4
-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4
-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4
-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4
-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4
-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4
-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4
-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4
-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4
-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4
-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4
-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4
-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4
-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4
-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4
-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4
-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4
-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4
-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4
-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4
-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4
-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4
-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4
-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4
-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4
-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4
-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4
-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4
-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4
-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4
-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4
-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4
-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4
-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4
-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4
-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4
-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4
-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4
-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4
-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4
-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4
-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4
-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4
-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4
-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4
-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4
-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4
-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4
-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4
-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4
-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4
-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4
-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4
-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4
-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4
-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4
-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4
-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4
-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4
-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4
-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4
-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4
-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4
-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4
-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4
-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4
-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4
-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4
-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4
-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4
-rw-r--r-- 1 lukas staff 252921 22 Apr 09:16 compact_monitor_1_1776838586240.mp4
-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4
-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4
-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4
-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4
-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4
-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4
-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4
-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4
-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4
-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4
-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4
-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4
-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4
-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4
-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4
-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4
-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4
-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4
-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4
-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4
-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4
-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4
-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4
-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4
-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4
-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4
-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4
-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4
-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4
-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4
-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4
-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4
-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4
-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4
-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4
-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4
-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4
-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4
-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4
-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4
-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4
-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4
-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4
-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4
-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4
-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4
-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4
-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4
-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4
-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4
-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4
-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4
-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4
-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4
-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4
-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4
-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4
-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4
-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4
-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4
-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4
-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4
-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4
-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4
-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4
-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4
-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4
-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4
-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4
-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4
-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4
-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4
-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4
-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4
-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4
-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4
-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4
-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4
-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4
-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4
-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4
-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4
-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4
-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4
-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4
-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4
-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4
-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4
-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4
-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4
-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4
-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4
-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4
-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4
-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4
-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4
-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4
-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4
-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4
-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4
-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4
-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4
-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4
-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4
-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4
-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4
-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4
-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4
-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4
-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4
-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4
-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4
-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4
-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4
-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4
-rw-r--r-- 1 lukas staff 546143...
|
NULL
|
|
74141
|
NULL
|
0
|
2026-04-23T09:04:51.078721+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776935091078_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 -rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll
total 899512
drwxr-xr-x 306 lukas staff 9792 21 Apr 20:18 .
drwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:05 1776791134169_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:05 1776791134429_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791165816_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791166383_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791196587_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791197102_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791227416_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791227779_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791258183_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791258594_m1.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791287670_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791287761_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791292727_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791293784_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791300420_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791301542_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791305234_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791306590_m2.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791314840_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791316155_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791347790_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791348817_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791380412_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791381822_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791412322_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791413781_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791443689_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791446344_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791474900_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791479169_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791507841_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791511806_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791539947_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791543728_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791572066_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791576889_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791604264_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:13 1776791609516_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791635686_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791641549_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791667683_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791672264_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791699168_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791703546_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:15 1776791729923_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791734502_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791762742_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791767091_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791794955_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791799940_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791828207_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791832582_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791860643_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791864973_m1.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791886556_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791887551_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791892443_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791893875_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791895925_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791897732_m2.jpg
-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4
-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4
-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4
-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4
-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4
-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4
-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4
-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4
-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4
-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4
-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4
-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4
-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4
-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4
-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4
-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4
-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4
-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4
-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4
-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4
-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4
-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4
-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4
-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4
-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4
-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4
-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4
-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4
-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4
-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4
-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4
-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4
-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4
-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4
-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4
-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4
-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4
-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4
-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4
-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4
-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4
-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4
-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4
-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4
-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4
-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4
-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4
-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4
-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4
-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4
-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4
-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4
-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4
-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4
-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4
-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4
-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4
-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4
-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4
-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4
-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4
-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4
-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4
-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4
-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4
-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4
-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4
-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4
-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4
-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4
-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4
-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4
-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4
-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4
-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4
-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4
-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4
-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4
-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4
-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4
-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4
-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4
-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4
-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4
-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4
-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4
-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4
-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4
-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4
-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4
-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4
-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4
-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4
-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4
-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4
-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4
-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4
-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4
-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4
-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4
-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4
-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4
-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4
-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4
-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4
-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4
-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4
-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4
-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4
-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4
-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4
-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4
-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4
-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4
-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4
-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4
-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4
-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4
-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4
-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4
-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4
-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4
-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4
-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4
-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4
-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4
-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4
-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4
-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4
-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4
-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4
-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4
-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4
-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4
-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4
-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4
-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4
-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4
-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4
-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4
-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4
-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4
-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4
-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4
-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4
-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4
-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4
-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4
-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4
-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4
-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4
-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4
-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4
-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4
-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4
-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4
-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4
-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4
-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4
-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4
-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4
-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4
-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4
-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4
-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4
-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4
-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4
-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4
-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4
-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4
-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4
-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4
-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4
-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4
-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4
-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4
-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4
-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4
-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4
-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4
-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4
-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4
-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4
-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4
-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4
-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4
-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4
-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4
-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4
-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4
-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4
-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4
-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4
-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4
-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4
-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4
-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4
-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4
-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4
-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4
-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4
-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4
-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4
-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4
-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4
-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4
-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4
-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4
-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4
-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4
-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4
-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4
-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4
-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4
-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4
-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4
-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4
-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4
-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4
-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4
-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4
-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4
-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4
-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4
-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4
-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4
-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4
-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4
-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4
-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4
-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4
-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4
-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4
-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4
-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4
-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4
-rw-r--r-- 1 lukas staff 5461430 21 Apr 19:38 compact_monitor_2_1776789493765.mp4
-rw-r--r-- 1 lukas staff 4057709 21 Apr 19:43 compact_monitor_2_1776789819462.mp4
-rw-r--r-- 1 lukas staff 2596450 21 Apr 19:49 compact_monitor_2_1776790138746.mp4
-rw-r--r-- 1 lukas staff 3792786 21 Apr 19:54 compact_monitor_2_1776790456362.mp4
-rw-r--r-- 1 lukas staff 1534504 21 Apr 19:59 compact_monitor_2_1776790775836.mp4
-rw-r--r-- 1 lukas staff 3246894 21 Apr 20:04 compact_monitor_2_1776791089868.mp4
-rw-r--r-- 1 lukas staff 678653 21 Apr 20:10 compact_monitor_2_1776791400917.mp4
-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ cd /Volumes/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll
total 32
drwxr-xr-x 4 root wheel 128 22 Apr 10:24 .
drwxr-xr-x 20 root wheel 640 4 Aug 2024 ..
lrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /
drwx------ 1 lukas staff 16384 22 Apr 10:24 Work
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll
total 96
drwxr-xr-x 6 root wheel 192 22 Apr 18:17 .
drwxr-xr-x 20 root wheel 640 4 Aug 2024 ..
lrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /
drwx------ 1 lukas staff 16384 11 Apr 15:46 Test
drwx------ 1 lukas staff 16384 22 Apr 10:24 Work
drwx------ 1 lukas staff 16384 19 Apr 18:36 screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ cd Test/screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ ll
total 10687944
drwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 .
drwx------ 1 lukas staff 16384 11 Apr 15:46 ..
-rwxrwxrwx@ 1 lukas staff 6148 21 Apr 10:48 .DS_Store
-rwxrwxrwx@ 1 lukas staff 4055343104 21 Apr 10:47 archive.db
drwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 data
-rwxrwxrwx 1 lukas staff 1416806400 14 Apr 20:49 db.sqlite
drwxrwxrwx 1 lukas staff 16384 11 Apr 16:51 pipes
-rwxrwxrwx@ 1 lukas staff 3250 11 Apr 17:00 screenpipe-day.sh
-rwxrwxrwx 1 lukas staff 0 13 Apr 17:21 screenpipe.db
-rwxrwxrwx 1 lukas staff 0 11 Apr 17:26 test_write
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ cd data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ ll
total 240
drwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 .
drwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 ..
-rwxrwxrwx@ 1 lukas staff 6148 22 Apr 18:17 .DS_Store
drwxrwxrwx@ 1 lukas staff 16384 15 Apr 09:59 2026-04-14
drwxrwxrwx@ 1 lukas staff 16384 16 Apr 09:13 2026-04-15
drwxrwxrwx@ 1 lukas staff 16384 17 Apr 08:57 2026-04-16
drwxrwxrwx@ 1 lukas staff 16384 18 Apr 13:35 2026-04-17
drwxrwxrwx@ 1 lukas staff 16384 21 Apr 09:10 2026-04-20
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ cd ~/.screenpipe/data/data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll
total 40
drwxr-xr-x 15 lukas staff 480 22 Apr 09:15 .
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 264 lukas staff 8448 22 Apr 18:18 2026-04-22
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-21
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll
total 881488
drwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 .
drwxr-xr-x 15 lukas staff 480 22 Apr 09:15 ..
-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4
-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4
-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4
-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4
-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4
-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4
-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4
-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4
-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4
-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4
-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4
-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4
-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4
-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4
-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4
-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4
-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4
-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4
-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4
-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4
-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4
-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4
-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4
-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4
-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4
-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4
-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4
-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4
-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4
-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4
-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4
-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4
-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4
-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4
-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4
-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4
-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4
-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4
-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4
-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4
-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4
-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4
-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4
-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4
-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4
-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4
-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4
-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4
-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4
-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4
-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4
-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4
-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4
-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4
-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4
-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4
-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4
-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4
-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4
-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4
-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4
-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4
-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4
-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4
-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4
-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4
-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4
-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4
-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4
-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4
-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4
-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4
-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4
-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4
-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4
-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4
-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4
-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4
-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4
-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4
-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4
-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4
-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4
-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4
-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4
-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4
-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4
-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4
-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4
-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4
-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4
-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4
-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4
-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4
-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4
-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4
-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4
-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4
-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4
-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4
-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4
-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4
-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4
-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4
-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4
-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4
-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4
-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4
-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4
-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4
-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4
-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4
-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4
-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4
-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4
-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4
-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4
-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4
-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4
-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4
-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4
-rw-r--r-- 1 lukas staff 252921 22 Apr 09:16 compact_monitor_1_1776838586240.mp4
-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4
-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4
-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4
-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4
-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4
-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4
-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4
-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4
-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4
-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4
-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4
-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4
-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4
-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4
-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4
-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4
-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4
-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4
-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4
-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4
-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4
-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4
-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4
-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4
-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4
-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4
-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4
-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4
-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4
-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4
-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4
-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4
-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4
-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4
-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4
-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4
-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4
-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4
-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4
-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4
-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4
-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4
-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4
-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4
-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4
-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4
-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4
-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4
-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4
-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4
-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4
-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4
-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4
-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4
-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4
-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4
-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4
-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4
-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4
-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4
-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4
-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4
-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4
-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4
-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4
-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4
-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4
-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4
-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4
-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4
-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4
-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4
-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4
-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4
-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4
-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4
-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4
-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4
-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4
-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4
-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4
-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4
-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4
-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4
-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4
-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4
-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4
-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4
-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4
-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4
-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4
-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4
-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4
-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4
-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4
-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4
-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4
-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4
-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4
-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4
-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4
-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4
-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4
-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4
-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4
-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4
-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4
-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4
-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4
-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4
-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4
-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4
-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4
-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4
-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4
-rw-r--r-- 1 lukas staff 546143...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll\ntotal 899512\ndrwxr-xr-x 306 lukas staff 9792 21 Apr 20:18 .\ndrwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:05 1776791134169_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:05 1776791134429_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791165816_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791166383_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791196587_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791197102_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791227416_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791227779_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791258183_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791258594_m1.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791287670_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791287761_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791292727_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791293784_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791300420_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791301542_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791305234_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791306590_m2.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791314840_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791316155_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791347790_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791348817_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791380412_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791381822_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791412322_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791413781_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791443689_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791446344_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791474900_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791479169_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791507841_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791511806_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791539947_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791543728_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791572066_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791576889_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791604264_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:13 1776791609516_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791635686_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791641549_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791667683_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791672264_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791699168_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791703546_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:15 1776791729923_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791734502_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791762742_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791767091_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791794955_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791799940_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791828207_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791832582_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791860643_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791864973_m1.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791886556_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791887551_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791892443_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791893875_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791895925_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791897732_m2.jpg\n-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4\n-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4\n-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4\n-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4\n-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4\n-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4\n-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4\n-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4\n-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4\n-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4\n-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4\n-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4\n-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4\n-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4\n-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4\n-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4\n-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4\n-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4\n-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4\n-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4\n-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4\n-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4\n-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4\n-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4\n-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4\n-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4\n-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4\n-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4\n-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4\n-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4\n-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4\n-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4\n-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4\n-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4\n-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4\n-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4\n-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4\n-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4\n-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4\n-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4\n-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4\n-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4\n-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4\n-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4\n-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4\n-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4\n-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4\n-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4\n-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4\n-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4\n-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4\n-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4\n-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4\n-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4\n-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4\n-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4\n-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4\n-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4\n-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4\n-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4\n-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4\n-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4\n-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4\n-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4\n-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4\n-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4\n-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4\n-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4\n-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4\n-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4\n-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4\n-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4\n-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4\n-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4\n-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4\n-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4\n-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4\n-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4\n-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4\n-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4\n-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4\n-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4\n-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4\n-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4\n-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4\n-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4\n-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4\n-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4\n-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4\n-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4\n-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4\n-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4\n-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4\n-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4\n-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4\n-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4\n-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4\n-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4\n-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4\n-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4\n-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4\n-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4\n-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4\n-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4\n-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4\n-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4\n-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4\n-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4\n-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4\n-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4\n-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4\n-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4\n-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4\n-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4\n-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4\n-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4\n-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4\n-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4\n-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4\n-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4\n-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4\n-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4\n-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4\n-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4\n-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4\n-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4\n-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4\n-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4\n-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4\n-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4\n-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4\n-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4\n-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4\n-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4\n-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4\n-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4\n-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4\n-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4\n-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4\n-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4\n-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4\n-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4\n-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4\n-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4\n-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4\n-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4\n-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4\n-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4\n-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4\n-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4\n-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4\n-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4\n-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4\n-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4\n-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4\n-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4\n-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4\n-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4\n-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4\n-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4\n-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4\n-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4\n-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4\n-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4\n-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4\n-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4\n-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4\n-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4\n-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4\n-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4\n-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4\n-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4\n-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4\n-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4\n-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4\n-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4\n-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4\n-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4\n-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4\n-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4\n-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4\n-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4\n-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4\n-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4\n-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4\n-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4\n-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4\n-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4\n-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4\n-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4\n-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4\n-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4\n-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4\n-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4\n-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4\n-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4\n-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4\n-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4\n-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4\n-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4\n-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4\n-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4\n-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4\n-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4\n-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4\n-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4\n-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4\n-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4\n-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4\n-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4\n-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4\n-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4\n-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4\n-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4\n-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4\n-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4\n-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4\n-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4\n-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4\n-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4\n-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4\n-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4\n-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4\n-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4\n-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4\n-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4\n-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4\n-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4\n-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4\n-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4\n-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4\n-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4\n-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4\n-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4\n-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4\n-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4\n-rw-r--r-- 1 lukas staff 5461430 21 Apr 19:38 compact_monitor_2_1776789493765.mp4\n-rw-r--r-- 1 lukas staff 4057709 21 Apr 19:43 compact_monitor_2_1776789819462.mp4\n-rw-r--r-- 1 lukas staff 2596450 21 Apr 19:49 compact_monitor_2_1776790138746.mp4\n-rw-r--r-- 1 lukas staff 3792786 21 Apr 19:54 compact_monitor_2_1776790456362.mp4\n-rw-r--r-- 1 lukas staff 1534504 21 Apr 19:59 compact_monitor_2_1776790775836.mp4\n-rw-r--r-- 1 lukas staff 3246894 21 Apr 20:04 compact_monitor_2_1776791089868.mp4\n-rw-r--r-- 1 lukas staff 678653 21 Apr 20:10 compact_monitor_2_1776791400917.mp4\n-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ cd /Volumes/ \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll\ntotal 32\ndrwxr-xr-x 4 root wheel 128 22 Apr 10:24 .\ndrwxr-xr-x 20 root wheel 640 4 Aug 2024 ..\nlrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /\ndrwx------ 1 lukas staff 16384 22 Apr 10:24 Work\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll\ntotal 96\ndrwxr-xr-x 6 root wheel 192 22 Apr 18:17 .\ndrwxr-xr-x 20 root wheel 640 4 Aug 2024 ..\nlrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /\ndrwx------ 1 lukas staff 16384 11 Apr 15:46 Test\ndrwx------ 1 lukas staff 16384 22 Apr 10:24 Work\ndrwx------ 1 lukas staff 16384 19 Apr 18:36 screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ cd Test/screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ ll\ntotal 10687944\ndrwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 .\ndrwx------ 1 lukas staff 16384 11 Apr 15:46 ..\n-rwxrwxrwx@ 1 lukas staff 6148 21 Apr 10:48 .DS_Store\n-rwxrwxrwx@ 1 lukas staff 4055343104 21 Apr 10:47 archive.db\ndrwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 data\n-rwxrwxrwx 1 lukas staff 1416806400 14 Apr 20:49 db.sqlite\ndrwxrwxrwx 1 lukas staff 16384 11 Apr 16:51 pipes\n-rwxrwxrwx@ 1 lukas staff 3250 11 Apr 17:00 screenpipe-day.sh\n-rwxrwxrwx 1 lukas staff 0 13 Apr 17:21 screenpipe.db\n-rwxrwxrwx 1 lukas staff 0 11 Apr 17:26 test_write\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ ll\ntotal 240\ndrwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 .\ndrwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 ..\n-rwxrwxrwx@ 1 lukas staff 6148 22 Apr 18:17 .DS_Store\ndrwxrwxrwx@ 1 lukas staff 16384 15 Apr 09:59 2026-04-14\ndrwxrwxrwx@ 1 lukas staff 16384 16 Apr 09:13 2026-04-15\ndrwxrwxrwx@ 1 lukas staff 16384 17 Apr 08:57 2026-04-16\ndrwxrwxrwx@ 1 lukas staff 16384 18 Apr 13:35 2026-04-17\ndrwxrwxrwx@ 1 lukas staff 16384 21 Apr 09:10 2026-04-20\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ cd ~/.screenpipe/data/data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll\ntotal 40\ndrwxr-xr-x 15 lukas staff 480 22 Apr 09:15 .\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 264 lukas staff 8448 22 Apr 18:18 2026-04-22\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-21\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll\ntotal 881488\ndrwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 .\ndrwxr-xr-x 15 lukas staff 480 22 Apr 09:15 ..\n-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4\n-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4\n-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4\n-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4\n-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4\n-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4\n-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4\n-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4\n-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4\n-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4\n-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4\n-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4\n-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4\n-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4\n-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4\n-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4\n-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4\n-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4\n-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4\n-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4\n-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4\n-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4\n-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4\n-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4\n-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4\n-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4\n-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4\n-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4\n-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4\n-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4\n-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4\n-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4\n-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4\n-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4\n-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4\n-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4\n-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4\n-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4\n-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4\n-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4\n-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4\n-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4\n-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4\n-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4\n-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4\n-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4\n-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4\n-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4\n-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4\n-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4\n-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4\n-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4\n-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4\n-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4\n-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4\n-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4\n-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4\n-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4\n-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4\n-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4\n-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4\n-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4\n-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4\n-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4\n-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4\n-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4\n-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4\n-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4\n-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4\n-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4\n-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4\n-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4\n-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4\n-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4\n-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4\n-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4\n-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4\n-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4\n-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4\n-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4\n-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4\n-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4\n-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4\n-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4\n-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4\n-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4\n-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4\n-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4\n-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4\n-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4\n-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4\n-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4\n-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4\n-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4\n-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4\n-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4\n-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4\n-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4\n-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4\n-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4\n-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4\n-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4\n-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4\n-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4\n-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4\n-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4\n-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4\n-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4\n-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4\n-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4\n-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4\n-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4\n-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4\n-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4\n-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4\n-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4\n-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4\n-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4\n-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4\n-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4\n-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4\n-rw-r--r-- 1 lukas staff 252921 22 Apr 09:16 compact_monitor_1_1776838586240.mp4\n-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4\n-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4\n-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4\n-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4\n-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4\n-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4\n-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4\n-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4\n-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4\n-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4\n-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4\n-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4\n-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4\n-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4\n-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4\n-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4\n-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4\n-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4\n-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4\n-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4\n-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4\n-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4\n-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4\n-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4\n-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4\n-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4\n-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4\n-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4\n-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4\n-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4\n-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4\n-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4\n-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4\n-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4\n-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4\n-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4\n-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4\n-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4\n-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4\n-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4\n-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4\n-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4\n-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4\n-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4\n-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4\n-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4\n-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4\n-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4\n-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4\n-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4\n-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4\n-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4\n-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4\n-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4\n-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4\n-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4\n-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4\n-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4\n-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4\n-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4\n-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4\n-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4\n-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4\n-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4\n-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4\n-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4\n-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4\n-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4\n-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4\n-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4\n-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4\n-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4\n-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4\n-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4\n-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4\n-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4\n-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4\n-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4\n-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4\n-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4\n-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4\n-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4\n-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4\n-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4\n-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4\n-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4\n-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4\n-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4\n-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4\n-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4\n-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4\n-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4\n-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4\n-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4\n-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4\n-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4\n-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4\n-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4\n-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4\n-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4\n-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4\n-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4\n-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4\n-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4\n-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4\n-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4\n-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4\n-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4\n-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4\n-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4\n-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4\n-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4\n-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4\n-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4\n-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4\n-rw-r--r-- 1 lukas staff 5461430 21 Apr 19:38 compact_monitor_2_1776789493765.mp4\n-rw-r--r-- 1 lukas staff 4057709 21 Apr 19:43 compact_monitor_2_1776789819462.mp4\n-rw-r--r-- 1 lukas staff 2596450 21 Apr 19:49 compact_monitor_2_1776790138746.mp4\n-rw-r--r-- 1 lukas staff 3792786 21 Apr 19:54 compact_monitor_2_1776790456362.mp4\n-rw-r--r-- 1 lukas staff 1534504 21 Apr 19:59 compact_monitor_2_1776790775836.mp4\n-rw-r--r-- 1 lukas staff 3246894 21 Apr 20:04 compact_monitor_2_1776791089868.mp4\n-rw-r--r-- 1 lukas staff 678653 21 Apr 20:10 compact_monitor_2_1776791400917.mp4\n-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4\n-rw-r--r-- 1 lukas staff 149786 22 Apr 09:16 compact_monitor_2_1776838588045.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-21\n[2026-04-22 18:19:28] ========================================\n[2026-04-22 18:19:28] Screenpipe sync starting for: 2026-04-21\n[2026-04-22 18:19:28] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (6.1G)\n NAS mount: OK /Volumes/Test/screenpipe\n Archive DB: exists (3.8G)\n Data dir: OK (246 files, 430M)\n\n[+00m01s] ▶ Counting source rows for 2026-04-21\n frames: 7871\n elements: 702947\n ui_events: 10083\n ocr_text: 2731\n meetings: 1\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-21\n video_chunks ✓ 0m03s\n frames (7871 rows) ✓ 2m23s\n ocr_text (2731 rows) ✓ 0m33s\n ui_events (10083 rows) ✓ 0m01s\n elements (702947 rows) ✓ 1m11s\n meetings (1 rows) ✓ 0m00s\n\n[+04m13s] ▶ Updating FTS indexes\n elements_fts ✓ 1m18s\n frames_fts ✓ 3m07s\n ui_events_fts ✓ 0m02s\n\n[+08m40s] ▶ Verifying DB\n frames: 7871 / 7871 ✓\n elements: 702947 / 702947 ✓\n ui_events: 10083 / 10083 ✓\n ocr_text: 2731 / 2731 ✓\n meetings: 1 / 1 ✓\n\n[+09m31s] ▶ Copying data folder for 2026-04-21\n rsync 2026-04-21/ → NAS ✓ 0m29s (246 files, 430M)\n\n[2026-04-22 18:29:28] Archive DB size: 4.9G\n[2026-04-22 18:29:28] Total time: 10m0s\n[2026-04-22 18:29:28] Sync complete for 2026-04-21\n[2026-04-22 18:29:28] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ 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 $ ll\ntotal 12977136\ndrwxr-xr-x 23 lukas staff 736 22 Apr 09:15 .\ndrwx------+ 91 lukas staff 2912 22 Apr 20:25 ..\n-rw-r--r--@ 1 lukas staff 8196 18 Apr 16:47 .DS_Store\n-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json\ndrwxr-xr-x 167 lukas staff 5344 18 Apr 14:45 data\n-rw-r--r--@ 1 lukas staff 6637330432 22 Apr 19:10 db.sqlite\n-rw-r--r--@ 1 lukas staff 131072 22 Apr 14:26 db.sqlite-shm\n-rw-r--r--@ 1 lukas staff 3621512 22 Apr 19:10 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log\n-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log\n-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log\n-rw-r--r-- 1 lukas staff 196994 16 Apr 20:33 screenpipe.2026-04-16.0.log\n-rw-r--r-- 1 lukas staff 208424 17 Apr 21:06 screenpipe.2026-04-17.0.log\n-rw-r--r-- 1 lukas staff 61983 18 Apr 14:45 screenpipe.2026-04-18.0.log\n-rw-r--r-- 1 lukas staff 359800 20 Apr 18:52 screenpipe.2026-04-20.0.log\n-rw-r--r-- 1 lukas staff 683671 21 Apr 20:18 screenpipe.2026-04-21.0.log\n-rw-r--r-- 1 lukas staff 284763 22 Apr 19:10 screenpipe.2026-04-22.0.log\n-rwxr-xr-x@ 1 lukas staff 14998 18 Apr 18:35 screenpipe_sync.sh\n-rw-r--r--@ 1 lukas staff 27173 22 Apr 18:29 sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp db.sqlite /Volumes/Test/screenpipe/db.sqlite\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe \n 12G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n5.9G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n6.2G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n128K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n4.0M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 36K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n 96K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\n160K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log\n172K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log\n196K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log\n204K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-18.0.log\n352K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-20.0.log\n668K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-21.0.log\n324K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-22.0.log\n 16K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe_sync.sh\n 28K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd /data/data/ \ncd: no such file or directory: /data/data/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd data/2026-04-22\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-22 $ ll\ntotal 521816\ndrwxr-xr-x 224 lukas staff 7168 23 Apr 09:14 .\ndrwxr-xr-x 16 lukas staff 512 23 Apr 09:13 ..\n-rw-r--r-- 1 lukas staff 1291639 22 Apr 09:26 compact_monitor_1_1776839204800.mp4\n-rw-r--r-- 1 lukas staff 1976819 22 Apr 09:31 compact_monitor_1_1776839511652.mp4\n-rw-r--r-- 1 lukas staff 385631 22 Apr 09:37 compact_monitor_1_1776839823964.mp4\n-rw-r--r-- 1 lukas staff 616970 22 Apr 09:42 compact_monitor_1_1776840142296.mp4\n-rw-r--r-- 1 lukas staff 2692728 22 Apr 09:47 compact_monitor_1_1776840467896.mp4\n-rw-r--r-- 1 lukas staff 2026505 22 Apr 09:53 compact_monitor_1_1776840800074.mp4\n-rw-r--r-- 1 lukas staff 1945361 22 Apr 09:58 compact_monitor_1_1776841121195.mp4\n-rw-r--r-- 1 lukas staff 1694598 22 Apr 10:04 compact_monitor_1_1776841439804.mp4\n-rw-r--r-- 1 lukas staff 1609711 22 Apr 10:09 compact_monitor_1_1776841764316.mp4\n-rw-r--r-- 1 lukas staff 1462521 22 Apr 10:14 compact_monitor_1_1776842081882.mp4\n-rw-r--r-- 1 lukas staff 1222819 22 Apr 10:20 compact_monitor_1_1776842401308.mp4\n-rw-r--r-- 1 lukas staff 1374769 22 Apr 10:25 compact_monitor_1_1776842720447.mp4\n-rw-r--r-- 1 lukas staff 1069475 22 Apr 10:30 compact_monitor_1_1776843032219.mp4\n-rw-r--r-- 1 lukas staff 1048226 22 Apr 10:35 compact_monitor_1_1776843337824.mp4\n-rw-r--r-- 1 lukas staff 378431 22 Apr 10:40 compact_monitor_1_1776843648464.mp4\n-rw-r--r-- 1 lukas staff 892142 22 Apr 10:46 compact_monitor_1_1776843964373.mp4\n-rw-r--r-- 1 lukas staff 519374 22 Apr 10:51 compact_monitor_1_1776844275867.mp4\n-rw-r--r-- 1 lukas staff 693685 22 Apr 10:56 compact_monitor_1_1776844584621.mp4\n-rw-r--r-- 1 lukas staff 452526 22 Apr 11:01 compact_monitor_1_1776844897612.mp4\n-rw-r--r-- 1 lukas staff 373085 22 Apr 11:06 compact_monitor_1_1776845205000.mp4\n-rw-r--r-- 1 lukas staff 792127 22 Apr 11:11 compact_monitor_1_1776845513822.mp4\n-rw-r--r-- 1 lukas staff 1336192 22 Apr 11:17 compact_monitor_1_1776845828958.mp4\n-rw-r--r-- 1 lukas staff 2739781 22 Apr 11:22 compact_monitor_1_1776846134058.mp4\n-rw-r--r-- 1 lukas staff 1229872 22 Apr 11:27 compact_monitor_1_1776846444744.mp4\n-rw-r--r-- 1 lukas staff 372000 22 Apr 11:32 compact_monitor_1_1776846749223.mp4\n-rw-r--r-- 1 lukas staff 215746 22 Apr 11:37 compact_monitor_1_1776847053415.mp4\n-rw-r--r-- 1 lukas staff 214432 22 Apr 11:42 compact_monitor_1_1776847358310.mp4\n-rw-r--r-- 1 lukas staff 213835 22 Apr 11:47 compact_monitor_1_1776847664230.mp4\n-rw-r--r-- 1 lukas staff 217385 22 Apr 11:52 compact_monitor_1_1776847973489.mp4\n-rw-r--r-- 1 lukas staff 215022 22 Apr 11:57 compact_monitor_1_1776848277473.mp4\n-rw-r--r-- 1 lukas staff 405201 22 Apr 12:03 compact_monitor_1_1776848581367.mp4\n-rw-r--r-- 1 lukas staff 1557849 22 Apr 12:08 compact_monitor_1_1776848886812.mp4\n-rw-r--r-- 1 lukas staff 1652380 22 Apr 12:13 compact_monitor_1_1776849197591.mp4\n-rw-r--r-- 1 lukas staff 1067419 22 Apr 12:18 compact_monitor_1_1776849503787.mp4\n-rw-r--r-- 1 lukas staff 268334 22 Apr 12:23 compact_monitor_1_1776849813627.mp4\n-rw-r--r-- 1 lukas staff 268945 22 Apr 12:28 compact_monitor_1_1776850116458.mp4\n-rw-r--r-- 1 lukas staff 906784 22 Apr 12:33 compact_monitor_1_1776850424950.mp4\n-rw-r--r-- 1 lukas staff 1251053 22 Apr 12:38 compact_monitor_1_1776850735839.mp4\n-rw-r--r-- 1 lukas staff 606643 22 Apr 12:44 compact_monitor_1_1776851047118.mp4\n-rw-r--r-- 1 lukas staff 3127146 22 Apr 12:49 compact_monitor_1_1776851354979.mp4\n-rw-r--r-- 1 lukas staff 1120031 22 Apr 12:54 compact_monitor_1_1776851661551.mp4\n-rw-r--r-- 1 lukas staff 389700 22 Apr 12:59 compact_monitor_1_1776851969831.mp4\n-rw-r--r-- 1 lukas staff 390117 22 Apr 13:04 compact_monitor_1_1776852272976.mp4\n-rw-r--r-- 1 lukas staff 393030 22 Apr 13:09 compact_monitor_1_1776852581698.mp4\n-rw-r--r-- 1 lukas staff 579804 22 Apr 13:14 compact_monitor_1_1776852888686.mp4\n-rw-r--r-- 1 lukas staff 144542 22 Apr 13:19 compact_monitor_1_1776853195671.mp4\n-rw-r--r-- 1 lukas staff 1319292 22 Apr 13:25 compact_monitor_1_1776853501128.mp4\n-rw-r--r-- 1 lukas staff 522815 22 Apr 13:30 compact_monitor_1_1776853807941.mp4\n-rw-r--r-- 1 lukas staff 467289 22 Apr 13:35 compact_monitor_1_1776854114758.mp4\n-rw-r--r-- 1 lukas staff 264853 22 Apr 13:40 compact_monitor_1_1776854419993.mp4\n-rw-r--r-- 1 lukas staff 183594 22 Apr 13:45 compact_monitor_1_1776854724809.mp4\n-rw-r--r-- 1 lukas staff 178631 22 Apr 13:50 compact_monitor_1_1776855032679.mp4\n-rw-r--r-- 1 lukas staff 182119 22 Apr 13:55 compact_monitor_1_1776855342190.mp4\n-rw-r--r-- 1 lukas staff 176349 22 Apr 14:00 compact_monitor_1_1776855655518.mp4\n-rw-r--r-- 1 lukas staff 179590 22 Apr 14:06 compact_monitor_1_1776855960164.mp4\n-rw-r--r-- 1 lukas staff 178846 22 Apr 14:11 compact_monitor_1_1776856271060.mp4\n-rw-r--r-- 1 lukas staff 884339 22 Apr 14:16 compact_monitor_1_1776856576155.mp4\n-rw-r--r-- 1 lukas staff 508676 22 Apr 14:21 compact_monitor_1_1776856888985.mp4\n-rw-r--r-- 1 lukas staff 141591 22 Apr 14:26 compact_monitor_1_1776857198732.mp4\n-rw-r--r-- 1 lukas staff 1074474 22 Apr 14:31 compact_monitor_1_1776857502105.mp4\n-rw-r--r-- 1 lukas staff 687202 22 Apr 14:36 compact_monitor_1_1776857809764.mp4\n-rw-r--r-- 1 lukas staff 301043 22 Apr 14:42 compact_monitor_1_1776858119930.mp4\n-rw-r--r-- 1 lukas staff 441512 22 Apr 14:47 compact_monitor_1_1776858435216.mp4\n-rw-r--r-- 1 lukas staff 470964 22 Apr 14:52 compact_monitor_1_1776858741990.mp4\n-rw-r--r-- 1 lukas staff 565080 22 Apr 14:57 compact_monitor_1_1776859048771.mp4\n-rw-r--r-- 1 lukas staff 2099393 22 Apr 15:02 compact_monitor_1_1776859363756.mp4\n-rw-r--r-- 1 lukas staff 341547 22 Apr 15:07 compact_monitor_1_1776859669692.mp4\n-rw-r--r-- 1 lukas staff 1470918 22 Apr 15:13 compact_monitor_1_1776859980784.mp4\n-rw-r--r-- 1 lukas staff 1386535 22 Apr 15:18 compact_monitor_1_1776860291496.mp4\n-rw-r--r-- 1 lukas staff 3721368 22 Apr 15:23 compact_monitor_1_1776860608283.mp4\n-rw-r--r-- 1 lukas staff 2829310 22 Apr 15:28 compact_monitor_1_1776860927808.mp4\n-rw-r--r-- 1 lukas staff 3608400 22 Apr 15:34 compact_monitor_1_1776861246919.mp4\n-rw-r--r-- 1 lukas staff 2520337 22 Apr 15:39 compact_monitor_1_1776861561807.mp4\n-rw-r--r-- 1 lukas staff 3394786 22 Apr 15:44 compact_monitor_1_1776861870869.mp4\n-rw-r--r-- 1 lukas staff 2311370 22 Apr 15:49 compact_monitor_1_1776862184223.mp4\n-rw-r--r-- 1 lukas staff 2312669 22 Apr 15:54 compact_monitor_1_1776862493758.mp4\n-rw-r--r-- 1 lukas staff 1674506 22 Apr 16:00 compact_monitor_1_1776862807398.mp4\n-rw-r--r-- 1 lukas staff 1595953 22 Apr 16:05 compact_monitor_1_1776863114876.mp4\n-rw-r--r-- 1 lukas staff 834561 22 Apr 16:10 compact_monitor_1_1776863433206.mp4\n-rw-r--r-- 1 lukas staff 297948 22 Apr 16:15 compact_monitor_1_1776863748371.mp4\n-rw-r--r-- 1 lukas staff 297470 22 Apr 16:20 compact_monitor_1_1776864053732.mp4\n-rw-r--r-- 1 lukas staff 301712 22 Apr 16:26 compact_monitor_1_1776864361608.mp4\n-rw-r--r-- 1 lukas staff 476053 22 Apr 16:31 compact_monitor_1_1776864676523.mp4\n-rw-r--r-- 1 lukas staff 1140004 22 Apr 16:36 compact_monitor_1_1776864986222.mp4\n-rw-r--r-- 1 lukas staff 209748 22 Apr 16:41 compact_monitor_1_1776865292562.mp4\n-rw-r--r-- 1 lukas staff 153281 22 Apr 16:46 compact_monitor_1_1776865598330.mp4\n-rw-r--r-- 1 lukas staff 124176 22 Apr 16:51 compact_monitor_1_1776865908133.mp4\n-rw-r--r-- 1 lukas staff 123505 22 Apr 16:56 compact_monitor_1_1776866216495.mp4\n-rw-r--r-- 1 lukas staff 122850 22 Apr 17:01 compact_monitor_1_1776866518685.mp4\n-rw-r--r-- 1 lukas staff 95026 22 Apr 17:07 compact_monitor_1_1776866821945.mp4\n-rw-r--r-- 1 lukas staff 117642 22 Apr 17:32 compact_monitor_1_1776868350295.mp4\n-rw-r--r-- 1 lukas staff 120079 22 Apr 17:37 compact_monitor_1_1776868656326.mp4\n-rw-r--r-- 1 lukas staff 169674 22 Apr 17:42 compact_monitor_1_1776868963122.mp4\n-rw-r--r-- 1 lukas staff 125060 22 Apr 17:47 compact_monitor_1_1776869273496.mp4\n-rw-r--r-- 1 lukas staff 123507 22 Apr 17:53 compact_monitor_1_1776869582690.mp4\n-rw-r--r-- 1 lukas staff 191046 22 Apr 17:58 compact_monitor_1_1776869890457.mp4\n-rw-r--r-- 1 lukas staff 127296 22 Apr 18:03 compact_monitor_1_1776870196198.mp4\n-rw-r--r-- 1 lukas staff 122512 22 Apr 18:08 compact_monitor_1_1776870507382.mp4\n-rw-r--r-- 1 lukas staff 118952 22 Apr 18:13 compact_monitor_1_1776870818099.mp4\n-rw-r--r-- 1 lukas staff 122784 22 Apr 18:18 compact_monitor_1_1776871121943.mp4\n-rw-r--r-- 1 lukas staff 117968 22 Apr 18:23 compact_monitor_1_1776871432304.mp4\n-rw-r--r-- 1 lukas staff 1522764 22 Apr 18:28 compact_monitor_1_1776871736007.mp4\n-rw-r--r-- 1 lukas staff 809317 22 Apr 18:34 compact_monitor_1_1776872041165.mp4\n-rw-r--r-- 1 lukas staff 503643 22 Apr 18:39 compact_monitor_1_1776872348660.mp4\n-rw-r--r-- 1 lukas staff 176552 22 Apr 18:44 compact_monitor_1_1776872651900.mp4\n-rw-r--r-- 1 lukas staff 177165 22 Apr 18:49 compact_monitor_1_1776872958626.mp4\n-rw-r--r-- 1 lukas staff 246259 22 Apr 18:54 compact_monitor_1_1776873265328.mp4\n-rw-r--r-- 1 lukas staff 332374 22 Apr 18:59 compact_monitor_1_1776873570308.mp4\n-rw-r--r-- 1 lukas staff 1013140 22 Apr 19:04 compact_monitor_1_1776873875737.mp4\n-rw-r--r-- 1 lukas staff 2533378 22 Apr 19:09 compact_monitor_1_1776874182454.mp4\n-rw-r--r-- 1 lukas staff 2868752 23 Apr 09:14 compact_monitor_1_1776924846954.mp4\n-rw-r--r-- 1 lukas staff 1406238 22 Apr 09:26 compact_monitor_2_1776839206703.mp4\n-rw-r--r-- 1 lukas staff 5220491 22 Apr 09:31 compact_monitor_2_1776839514102.mp4\n-rw-r--r-- 1 lukas staff 4302042 22 Apr 09:37 compact_monitor_2_1776839825945.mp4\n-rw-r--r-- 1 lukas staff 1166365 22 Apr 09:42 compact_monitor_2_1776840149161.mp4\n-rw-r--r-- 1 lukas staff 2835147 22 Apr 09:48 compact_monitor_2_1776840475601.mp4\n-rw-r--r-- 1 lukas staff 1335719 22 Apr 09:53 compact_monitor_2_1776840805501.mp4\n-rw-r--r-- 1 lukas staff 760807 22 Apr 09:58 compact_monitor_2_1776841130978.mp4\n-rw-r--r-- 1 lukas staff 335588 22 Apr 10:04 compact_monitor_2_1776841447110.mp4\n-rw-r--r-- 1 lukas staff 270101 22 Apr 10:09 compact_monitor_2_1776841770084.mp4\n-rw-r--r-- 1 lukas staff 471541 22 Apr 10:14 compact_monitor_2_1776842086264.mp4\n-rw-r--r-- 1 lukas staff 374686 22 Apr 10:20 compact_monitor_2_1776842407228.mp4\n-rw-r--r-- 1 lukas staff 549097 22 Apr 10:25 compact_monitor_2_1776842726731.mp4\n-rw-r--r-- 1 lukas staff 587980 22 Apr 10:30 compact_monitor_2_1776843033453.mp4\n-rw-r--r-- 1 lukas staff 1590795 22 Apr 10:35 compact_monitor_2_1776843339118.mp4\n-rw-r--r-- 1 lukas staff 2843756 22 Apr 10:40 compact_monitor_2_1776843652359.mp4\n-rw-r--r-- 1 lukas staff 1248500 22 Apr 10:46 compact_monitor_2_1776843965671.mp4\n-rw-r--r-- 1 lukas staff 2387069 22 Apr 10:51 compact_monitor_2_1776844278127.mp4\n-rw-r--r-- 1 lukas staff 3380766 22 Apr 10:56 compact_monitor_2_1776844586498.mp4\n-rw-r--r-- 1 lukas staff 1372830 22 Apr 11:01 compact_monitor_2_1776844898915.mp4\n-rw-r--r-- 1 lukas staff 431466 22 Apr 11:06 compact_monitor_2_1776845205857.mp4\n-rw-r--r-- 1 lukas staff 4140482 22 Apr 11:12 compact_monitor_2_1776845516891.mp4\n-rw-r--r-- 1 lukas staff 1019700 22 Apr 11:17 compact_monitor_2_1776845830886.mp4\n-rw-r--r-- 1 lukas staff 1971349 22 Apr 11:22 compact_monitor_2_1776846137433.mp4\n-rw-r--r-- 1 lukas staff 1855516 22 Apr 11:27 compact_monitor_2_1776846446118.mp4\n-rw-r--r-- 1 lukas staff 2113081 22 Apr 11:32 compact_monitor_2_1776846750841.mp4\n-rw-r--r-- 1 lukas staff 860635 22 Apr 11:37 compact_monitor_2_1776847054375.mp4\n-rw-r--r-- 1 lukas staff 1547770 22 Apr 11:42 compact_monitor_2_1776847359456.mp4\n-rw-r--r-- 1 lukas staff 1092684 22 Apr 11:47 compact_monitor_2_1776847665196.mp4\n-rw-r--r-- 1 lukas staff 2061114 22 Apr 11:52 compact_monitor_2_1776847974358.mp4\n-rw-r--r-- 1 lukas staff 2199781 22 Apr 11:58 compact_monitor_2_1776848278484.mp4\n-rw-r--r-- 1 lukas staff 1381991 22 Apr 12:03 compact_monitor_2_1776848583195.mp4\n-rw-r--r-- 1 lukas staff 2721087 22 Apr 12:08 compact_monitor_2_1776848888480.mp4\n-rw-r--r-- 1 lukas staff 877385 22 Apr 12:13 compact_monitor_2_1776849199887.mp4\n-rw-r--r-- 1 lukas staff 3540697 22 Apr 12:18 compact_monitor_2_1776849506021.mp4\n-rw-r--r-- 1 lukas staff 474523 22 Apr 12:23 compact_monitor_2_1776849814381.mp4\n-rw-r--r-- 1 lukas staff 991274 22 Apr 12:28 compact_monitor_2_1776850117283.mp4\n-rw-r--r-- 1 lukas staff 2121163 22 Apr 12:33 compact_monitor_2_1776850426669.mp4\n-rw-r--r-- 1 lukas staff 1480246 22 Apr 12:38 compact_monitor_2_1776850737952.mp4\n-rw-r--r-- 1 lukas staff 821464 22 Apr 12:44 compact_monitor_2_1776851048313.mp4\n-rw-r--r-- 1 lukas staff 684777 22 Apr 12:49 compact_monitor_2_1776851357051.mp4\n-rw-r--r-- 1 lukas staff 2576122 22 Apr 12:54 compact_monitor_2_1776851663610.mp4\n-rw-r--r-- 1 lukas staff 1690359 22 Apr 12:59 compact_monitor_2_1776851970964.mp4\n-rw-r--r-- 1 lukas staff 1821650 22 Apr 13:04 compact_monitor_2_1776852275017.mp4\n-rw-r--r-- 1 lukas staff 2451968 22 Apr 13:09 compact_monitor_2_1776852583512.mp4\n-rw-r--r-- 1 lukas staff 2568339 22 Apr 13:14 compact_monitor_2_1776852890302.mp4\n-rw-r--r-- 1 lukas staff 1354068 22 Apr 13:19 compact_monitor_2_1776853197021.mp4\n-rw-r--r-- 1 lukas staff 683086 22 Apr 13:25 compact_monitor_2_1776853502339.mp4\n-rw-r--r-- 1 lukas staff 1015792 22 Apr 13:30 compact_monitor_2_1776853809857.mp4\n-rw-r--r-- 1 lukas staff 833765 22 Apr 13:35 compact_monitor_2_1776854115701.mp4\n-rw-r--r-- 1 lukas staff 2018658 22 Apr 13:40 compact_monitor_2_1776854421548.mp4\n-rw-r--r-- 1 lukas staff 1912549 22 Apr 13:45 compact_monitor_2_1776854726335.mp4\n-rw-r--r-- 1 lukas staff 914258 22 Apr 13:50 compact_monitor_2_1776855033732.mp4\n-rw-r--r-- 1 lukas staff 1182467 22 Apr 13:55 compact_monitor_2_1776855343602.mp4\n-rw-r--r-- 1 lukas staff 385708 22 Apr 14:00 compact_monitor_2_1776855657104.mp4\n-rw-r--r-- 1 lukas staff 725079 22 Apr 14:06 compact_monitor_2_1776855962030.mp4\n-rw-r--r-- 1 lukas staff 900929 22 Apr 14:11 compact_monitor_2_1776856272407.mp4\n-rw-r--r-- 1 lukas staff 1331033 22 Apr 14:16 compact_monitor_2_1776856578708.mp4\n-rw-r--r-- 1 lukas staff 630778 22 Apr 14:21 compact_monitor_2_1776856890399.mp4\n-rw-r--r-- 1 lukas staff 1810130 22 Apr 14:26 compact_monitor_2_1776857199786.mp4\n-rw-r--r-- 1 lukas staff 1725201 22 Apr 14:31 compact_monitor_2_1776857503198.mp4\n-rw-r--r-- 1 lukas staff 1202608 22 Apr 14:36 compact_monitor_2_1776857811312.mp4\n-rw-r--r-- 1 lukas staff 1183824 22 Apr 14:42 compact_monitor_2_1776858123559.mp4\n-rw-r--r-- 1 lukas staff 1208327 22 Apr 14:47 compact_monitor_2_1776858436830.mp4\n-rw-r--r-- 1 lukas staff 1399691 22 Apr 14:52 compact_monitor_2_1776858743360.mp4\n-rw-r--r-- 1 lukas staff 2485595 22 Apr 14:57 compact_monitor_2_1776859051449.mp4\n-rw-r--r-- 1 lukas staff 1856739 22 Apr 15:02 compact_monitor_2_1776859366233.mp4\n-rw-r--r-- 1 lukas staff 903086 22 Apr 15:07 compact_monitor_2_1776859671654.mp4\n-rw-r--r-- 1 lukas staff 1425070 22 Apr 15:13 compact_monitor_2_1776859986162.mp4\n-rw-r--r-- 1 lukas staff 1299666 22 Apr 15:18 compact_monitor_2_1776860295573.mp4\n-rw-r--r-- 1 lukas staff 1280478 22 Apr 15:23 compact_monitor_2_1776860614296.mp4\n-rw-r--r-- 1 lukas staff 2337036 22 Apr 15:28 compact_monitor_2_1776860932062.mp4\n-rw-r--r-- 1 lukas staff 2131149 22 Apr 15:34 compact_monitor_2_1776861251494.mp4\n-rw-r--r-- 1 lukas staff 2359883 22 Apr 15:39 compact_monitor_2_1776861564243.mp4\n-rw-r--r-- 1 lukas staff 1547537 22 Apr 15:44 compact_monitor_2_1776861876714.mp4\n-rw-r--r-- 1 lukas staff 2172114 22 Apr 15:49 compact_monitor_2_1776862186712.mp4\n-rw-r--r-- 1 lukas staff 1480165 22 Apr 15:54 compact_monitor_2_1776862496217.mp4\n-rw-r--r-- 1 lukas staff 1451204 22 Apr 16:00 compact_monitor_2_1776862811373.mp4\n-rw-r--r-- 1 lukas staff 797522 22 Apr 16:05 compact_monitor_2_1776863121180.mp4\n-rw-r--r-- 1 lukas staff 1136154 22 Apr 16:10 compact_monitor_2_1776863436274.mp4\n-rw-r--r-- 1 lukas staff 408460 22 Apr 16:15 compact_monitor_2_1776863749818.mp4\n-rw-r--r-- 1 lukas staff 1151394 22 Apr 16:20 compact_monitor_2_1776864054467.mp4\n-rw-r--r-- 1 lukas staff 2617267 22 Apr 16:26 compact_monitor_2_1776864364411.mp4\n-rw-r--r-- 1 lukas staff 1648571 22 Apr 16:31 compact_monitor_2_1776864678063.mp4\n-rw-r--r-- 1 lukas staff 726061 22 Apr 16:36 compact_monitor_2_1776864988062.mp4\n-rw-r--r-- 1 lukas staff 499734 22 Apr 16:41 compact_monitor_2_1776865293654.mp4\n-rw-r--r-- 1 lukas staff 1277339 22 Apr 16:46 compact_monitor_2_1776865599949.mp4\n-rw-r--r-- 1 lukas staff 776016 22 Apr 16:51 compact_monitor_2_1776865909005.mp4\n-rw-r--r-- 1 lukas staff 310853 22 Apr 16:56 compact_monitor_2_1776866217337.mp4\n-rw-r--r-- 1 lukas staff 310651 22 Apr 17:02 compact_monitor_2_1776866519474.mp4\n-rw-r--r-- 1 lukas staff 244441 22 Apr 17:07 compact_monitor_2_1776866822189.mp4\n-rw-r--r-- 1 lukas staff 850717 22 Apr 17:32 compact_monitor_2_1776868350967.mp4\n-rw-r--r-- 1 lukas staff 958993 22 Apr 17:37 compact_monitor_2_1776868657735.mp4\n-rw-r--r-- 1 lukas staff 1574171 22 Apr 17:42 compact_monitor_2_1776868964141.mp4\n-rw-r--r-- 1 lukas staff 1651606 22 Apr 17:47 compact_monitor_2_1776869274633.mp4\n-rw-r--r-- 1 lukas staff 669609 22 Apr 17:53 compact_monitor_2_1776869583557.mp4\n-rw-r--r-- 1 lukas staff 2261136 22 Apr 17:58 compact_monitor_2_1776869892043.mp4\n-rw-r--r-- 1 lukas staff 1560427 22 Apr 18:03 compact_monitor_2_1776870198140.mp4\n-rw-r--r-- 1 lukas staff 678529 22 Apr 18:08 compact_monitor_2_1776870509039.mp4\n-rw-r--r-- 1 lukas staff 519464 22 Apr 18:13 compact_monitor_2_1776870818808.mp4\n-rw-r--r-- 1 lukas staff 1347344 22 Apr 18:18 compact_monitor_2_1776871123291.mp4\n-rw-r--r-- 1 lukas staff 1653980 22 Apr 18:23 compact_monitor_2_1776871433166.mp4\n-rw-r--r-- 1 lukas staff 844038 22 Apr 18:28 compact_monitor_2_1776871737404.mp4\n-rw-r--r-- 1 lukas staff 1809392 22 Apr 18:34 compact_monitor_2_1776872042292.mp4\n-rw-r--r-- 1 lukas staff 500253 22 Apr 18:39 compact_monitor_2_1776872349495.mp4\n-rw-r--r-- 1 lukas staff 362170 22 Apr 18:44 compact_monitor_2_1776872652803.mp4\n-rw-r--r-- 1 lukas staff 2235586 22 Apr 18:49 compact_monitor_2_1776872959641.mp4\n-rw-r--r-- 1 lukas staff 1160652 22 Apr 18:54 compact_monitor_2_1776873266662.mp4\n-rw-r--r-- 1 lukas staff 1344375 22 Apr 18:59 compact_monitor_2_1776873571536.mp4\n-rw-r--r-- 1 lukas staff 3807432 22 Apr 19:04 compact_monitor_2_1776873878479.mp4\n-rw-r--r-- 1 lukas staff 2414414 22 Apr 19:09 compact_monitor_2_1776874185817.mp4\n-rw-r--r-- 1 lukas staff 3120540 23 Apr 09:14 compact_monitor_2_1776924852567.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-22 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-22\n[2026-04-23 09:16:02] ========================================\n[2026-04-23 09:16:02] Screenpipe sync starting for: 2026-04-22\n[2026-04-23 09:16:02] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (6.2G)\n NAS mount: OK /Volumes/Test/screenpipe\n Archive DB: exists (4.9G)\n Data dir: OK (222 files, 255M)\n\n[+00m00s] ▶ Counting source rows for 2026-04-22\n frames: 4305\n elements: 332442\n ui_events: 5804\n ocr_text: 1074\n meetings: 3\n\n[+00m01s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m00s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m01s] ▶ Syncing data for 2026-04-22\n video_chunks ✓ 0m01s\n frames (4305 rows) ✓ 1m38s\n ocr_text (1074 rows) ✓ 0m12s\n ui_events (5804 rows) ✓ 0m01s\n elements (332442 rows) ✓ 0m51s\n meetings (3 rows) ✓ 0m00s\n\n[+02m44s] ▶ Updating FTS indexes\n elements_fts ✓ 1m26s\n frames_fts ✓ 2m14s\n ui_events_fts ✓ 0m02s\n\n[+06m26s] ▶ Verifying DB\n frames: 4305 / 4305 ✓\n elements: 332442 / 332442 ✓\n ui_events: 5804 / 5804 ✓\n ocr_text: 1074 / 1074 ✓\n meetings: 3 / 3 ✓\n\n[+07m20s] ▶ Copying data folder for 2026-04-22\n rsync 2026-04-22/ → NAS ✓ 0m16s (222 files, 254M)\n\n[2026-04-23 09:23:38] Archive DB size: 5.8G\n[2026-04-23 09:23:38] Total time: 7m36s\n[2026-04-23 09:23:38] Sync complete for 2026-04-22\n[2026-04-23 09:23:38] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-22 $","depth":4,"value":"-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll\ntotal 899512\ndrwxr-xr-x 306 lukas staff 9792 21 Apr 20:18 .\ndrwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:05 1776791134169_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:05 1776791134429_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791165816_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791166383_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791196587_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791197102_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791227416_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791227779_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791258183_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791258594_m1.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791287670_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791287761_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791292727_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791293784_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791300420_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791301542_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791305234_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791306590_m2.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791314840_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791316155_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791347790_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791348817_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791380412_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791381822_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791412322_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791413781_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791443689_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791446344_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791474900_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791479169_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791507841_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791511806_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791539947_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791543728_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791572066_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791576889_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791604264_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:13 1776791609516_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791635686_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791641549_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791667683_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791672264_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791699168_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791703546_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:15 1776791729923_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791734502_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791762742_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791767091_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791794955_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791799940_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791828207_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791832582_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791860643_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791864973_m1.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791886556_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791887551_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791892443_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791893875_m2.jpg\n-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791895925_m1.jpg\n-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791897732_m2.jpg\n-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4\n-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4\n-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4\n-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4\n-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4\n-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4\n-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4\n-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4\n-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4\n-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4\n-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4\n-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4\n-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4\n-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4\n-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4\n-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4\n-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4\n-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4\n-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4\n-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4\n-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4\n-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4\n-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4\n-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4\n-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4\n-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4\n-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4\n-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4\n-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4\n-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4\n-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4\n-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4\n-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4\n-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4\n-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4\n-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4\n-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4\n-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4\n-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4\n-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4\n-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4\n-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4\n-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4\n-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4\n-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4\n-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4\n-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4\n-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4\n-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4\n-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4\n-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4\n-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4\n-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4\n-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4\n-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4\n-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4\n-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4\n-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4\n-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4\n-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4\n-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4\n-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4\n-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4\n-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4\n-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4\n-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4\n-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4\n-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4\n-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4\n-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4\n-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4\n-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4\n-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4\n-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4\n-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4\n-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4\n-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4\n-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4\n-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4\n-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4\n-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4\n-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4\n-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4\n-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4\n-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4\n-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4\n-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4\n-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4\n-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4\n-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4\n-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4\n-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4\n-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4\n-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4\n-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4\n-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4\n-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4\n-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4\n-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4\n-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4\n-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4\n-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4\n-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4\n-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4\n-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4\n-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4\n-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4\n-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4\n-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4\n-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4\n-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4\n-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4\n-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4\n-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4\n-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4\n-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4\n-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4\n-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4\n-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4\n-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4\n-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4\n-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4\n-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4\n-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4\n-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4\n-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4\n-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4\n-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4\n-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4\n-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4\n-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4\n-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4\n-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4\n-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4\n-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4\n-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4\n-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4\n-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4\n-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4\n-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4\n-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4\n-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4\n-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4\n-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4\n-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4\n-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4\n-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4\n-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4\n-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4\n-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4\n-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4\n-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4\n-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4\n-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4\n-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4\n-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4\n-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4\n-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4\n-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4\n-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4\n-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4\n-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4\n-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4\n-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4\n-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4\n-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4\n-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4\n-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4\n-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4\n-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4\n-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4\n-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4\n-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4\n-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4\n-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4\n-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4\n-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4\n-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4\n-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4\n-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4\n-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4\n-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4\n-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4\n-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4\n-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4\n-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4\n-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4\n-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4\n-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4\n-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4\n-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4\n-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4\n-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4\n-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4\n-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4\n-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4\n-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4\n-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4\n-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4\n-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4\n-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4\n-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4\n-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4\n-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4\n-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4\n-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4\n-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4\n-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4\n-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4\n-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4\n-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4\n-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4\n-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4\n-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4\n-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4\n-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4\n-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4\n-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4\n-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4\n-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4\n-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4\n-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4\n-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4\n-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4\n-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4\n-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4\n-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4\n-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4\n-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4\n-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4\n-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4\n-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4\n-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4\n-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4\n-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4\n-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4\n-rw-r--r-- 1 lukas staff 5461430 21 Apr 19:38 compact_monitor_2_1776789493765.mp4\n-rw-r--r-- 1 lukas staff 4057709 21 Apr 19:43 compact_monitor_2_1776789819462.mp4\n-rw-r--r-- 1 lukas staff 2596450 21 Apr 19:49 compact_monitor_2_1776790138746.mp4\n-rw-r--r-- 1 lukas staff 3792786 21 Apr 19:54 compact_monitor_2_1776790456362.mp4\n-rw-r--r-- 1 lukas staff 1534504 21 Apr 19:59 compact_monitor_2_1776790775836.mp4\n-rw-r--r-- 1 lukas staff 3246894 21 Apr 20:04 compact_monitor_2_1776791089868.mp4\n-rw-r--r-- 1 lukas staff 678653 21 Apr 20:10 compact_monitor_2_1776791400917.mp4\n-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ cd /Volumes/ \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll\ntotal 32\ndrwxr-xr-x 4 root wheel 128 22 Apr 10:24 .\ndrwxr-xr-x 20 root wheel 640 4 Aug 2024 ..\nlrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /\ndrwx------ 1 lukas staff 16384 22 Apr 10:24 Work\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll\ntotal 96\ndrwxr-xr-x 6 root wheel 192 22 Apr 18:17 .\ndrwxr-xr-x 20 root wheel 640 4 Aug 2024 ..\nlrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /\ndrwx------ 1 lukas staff 16384 11 Apr 15:46 Test\ndrwx------ 1 lukas staff 16384 22 Apr 10:24 Work\ndrwx------ 1 lukas staff 16384 19 Apr 18:36 screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ cd Test/screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ ll\ntotal 10687944\ndrwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 .\ndrwx------ 1 lukas staff 16384 11 Apr 15:46 ..\n-rwxrwxrwx@ 1 lukas staff 6148 21 Apr 10:48 .DS_Store\n-rwxrwxrwx@ 1 lukas staff 4055343104 21 Apr 10:47 archive.db\ndrwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 data\n-rwxrwxrwx 1 lukas staff 1416806400 14 Apr 20:49 db.sqlite\ndrwxrwxrwx 1 lukas staff 16384 11 Apr 16:51 pipes\n-rwxrwxrwx@ 1 lukas staff 3250 11 Apr 17:00 screenpipe-day.sh\n-rwxrwxrwx 1 lukas staff 0 13 Apr 17:21 screenpipe.db\n-rwxrwxrwx 1 lukas staff 0 11 Apr 17:26 test_write\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ ll\ntotal 240\ndrwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 .\ndrwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 ..\n-rwxrwxrwx@ 1 lukas staff 6148 22 Apr 18:17 .DS_Store\ndrwxrwxrwx@ 1 lukas staff 16384 15 Apr 09:59 2026-04-14\ndrwxrwxrwx@ 1 lukas staff 16384 16 Apr 09:13 2026-04-15\ndrwxrwxrwx@ 1 lukas staff 16384 17 Apr 08:57 2026-04-16\ndrwxrwxrwx@ 1 lukas staff 16384 18 Apr 13:35 2026-04-17\ndrwxrwxrwx@ 1 lukas staff 16384 21 Apr 09:10 2026-04-20\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ cd ~/.screenpipe/data/data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll\ntotal 40\ndrwxr-xr-x 15 lukas staff 480 22 Apr 09:15 .\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 264 lukas staff 8448 22 Apr 18:18 2026-04-22\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-21\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll\ntotal 881488\ndrwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 .\ndrwxr-xr-x 15 lukas staff 480 22 Apr 09:15 ..\n-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4\n-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4\n-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4\n-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4\n-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4\n-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4\n-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4\n-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4\n-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4\n-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4\n-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4\n-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4\n-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4\n-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4\n-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4\n-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4\n-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4\n-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4\n-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4\n-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4\n-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4\n-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4\n-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4\n-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4\n-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4\n-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4\n-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4\n-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4\n-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4\n-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4\n-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4\n-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4\n-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4\n-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4\n-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4\n-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4\n-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4\n-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4\n-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4\n-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4\n-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4\n-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4\n-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4\n-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4\n-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4\n-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4\n-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4\n-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4\n-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4\n-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4\n-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4\n-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4\n-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4\n-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4\n-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4\n-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4\n-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4\n-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4\n-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4\n-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4\n-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4\n-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4\n-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4\n-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4\n-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4\n-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4\n-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4\n-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4\n-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4\n-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4\n-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4\n-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4\n-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4\n-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4\n-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4\n-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4\n-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4\n-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4\n-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4\n-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4\n-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4\n-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4\n-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4\n-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4\n-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4\n-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4\n-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4\n-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4\n-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4\n-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4\n-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4\n-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4\n-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4\n-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4\n-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4\n-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4\n-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4\n-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4\n-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4\n-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4\n-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4\n-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4\n-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4\n-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4\n-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4\n-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4\n-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4\n-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4\n-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4\n-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4\n-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4\n-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4\n-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4\n-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4\n-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4\n-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4\n-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4\n-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4\n-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4\n-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4\n-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4\n-rw-r--r-- 1 lukas staff 252921 22 Apr 09:16 compact_monitor_1_1776838586240.mp4\n-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4\n-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4\n-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4\n-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4\n-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4\n-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4\n-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4\n-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4\n-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4\n-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4\n-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4\n-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4\n-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4\n-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4\n-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4\n-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4\n-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4\n-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4\n-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4\n-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4\n-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4\n-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4\n-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4\n-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4\n-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4\n-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4\n-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4\n-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4\n-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4\n-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4\n-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4\n-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4\n-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4\n-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4\n-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4\n-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4\n-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4\n-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4\n-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4\n-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4\n-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4\n-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4\n-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4\n-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4\n-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4\n-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4\n-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4\n-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4\n-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4\n-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4\n-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4\n-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4\n-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4\n-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4\n-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4\n-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4\n-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4\n-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4\n-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4\n-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4\n-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4\n-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4\n-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4\n-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4\n-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4\n-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4\n-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4\n-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4\n-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4\n-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4\n-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4\n-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4\n-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4\n-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4\n-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4\n-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4\n-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4\n-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4\n-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4\n-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4\n-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4\n-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4\n-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4\n-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4\n-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4\n-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4\n-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4\n-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4\n-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4\n-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4\n-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4\n-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4\n-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4\n-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4\n-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4\n-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4\n-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4\n-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4\n-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4\n-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4\n-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4\n-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4\n-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4\n-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4\n-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4\n-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4\n-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4\n-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4\n-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4\n-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4\n-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4\n-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4\n-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4\n-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4\n-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4\n-rw-r--r-- 1 lukas staff 5461430 21 Apr 19:38 compact_monitor_2_1776789493765.mp4\n-rw-r--r-- 1 lukas staff 4057709 21 Apr 19:43 compact_monitor_2_1776789819462.mp4\n-rw-r--r-- 1 lukas staff 2596450 21 Apr 19:49 compact_monitor_2_1776790138746.mp4\n-rw-r--r-- 1 lukas staff 3792786 21 Apr 19:54 compact_monitor_2_1776790456362.mp4\n-rw-r--r-- 1 lukas staff 1534504 21 Apr 19:59 compact_monitor_2_1776790775836.mp4\n-rw-r--r-- 1 lukas staff 3246894 21 Apr 20:04 compact_monitor_2_1776791089868.mp4\n-rw-r--r-- 1 lukas staff 678653 21 Apr 20:10 compact_monitor_2_1776791400917.mp4\n-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4\n-rw-r--r-- 1 lukas staff 149786 22 Apr 09:16 compact_monitor_2_1776838588045.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-21\n[2026-04-22 18:19:28] ========================================\n[2026-04-22 18:19:28] Screenpipe sync starting for: 2026-04-21\n[2026-04-22 18:19:28] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (6.1G)\n NAS mount: OK /Volumes/Test/screenpipe\n Archive DB: exists (3.8G)\n Data dir: OK (246 files, 430M)\n\n[+00m01s] ▶ Counting source rows for 2026-04-21\n frames: 7871\n elements: 702947\n ui_events: 10083\n ocr_text: 2731\n meetings: 1\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-21\n video_chunks ✓ 0m03s\n frames (7871 rows) ✓ 2m23s\n ocr_text (2731 rows) ✓ 0m33s\n ui_events (10083 rows) ✓ 0m01s\n elements (702947 rows) ✓ 1m11s\n meetings (1 rows) ✓ 0m00s\n\n[+04m13s] ▶ Updating FTS indexes\n elements_fts ✓ 1m18s\n frames_fts ✓ 3m07s\n ui_events_fts ✓ 0m02s\n\n[+08m40s] ▶ Verifying DB\n frames: 7871 / 7871 ✓\n elements: 702947 / 702947 ✓\n ui_events: 10083 / 10083 ✓\n ocr_text: 2731 / 2731 ✓\n meetings: 1 / 1 ✓\n\n[+09m31s] ▶ Copying data folder for 2026-04-21\n rsync 2026-04-21/ → NAS ✓ 0m29s (246 files, 430M)\n\n[2026-04-22 18:29:28] Archive DB size: 4.9G\n[2026-04-22 18:29:28] Total time: 10m0s\n[2026-04-22 18:29:28] Sync complete for 2026-04-21\n[2026-04-22 18:29:28] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ 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 $ ll\ntotal 12977136\ndrwxr-xr-x 23 lukas staff 736 22 Apr 09:15 .\ndrwx------+ 91 lukas staff 2912 22 Apr 20:25 ..\n-rw-r--r--@ 1 lukas staff 8196 18 Apr 16:47 .DS_Store\n-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json\ndrwxr-xr-x 167 lukas staff 5344 18 Apr 14:45 data\n-rw-r--r--@ 1 lukas staff 6637330432 22 Apr 19:10 db.sqlite\n-rw-r--r--@ 1 lukas staff 131072 22 Apr 14:26 db.sqlite-shm\n-rw-r--r--@ 1 lukas staff 3621512 22 Apr 19:10 db.sqlite-wal\ndrwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log\n-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log\n-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log\n-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log\n-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log\n-rw-r--r-- 1 lukas staff 196994 16 Apr 20:33 screenpipe.2026-04-16.0.log\n-rw-r--r-- 1 lukas staff 208424 17 Apr 21:06 screenpipe.2026-04-17.0.log\n-rw-r--r-- 1 lukas staff 61983 18 Apr 14:45 screenpipe.2026-04-18.0.log\n-rw-r--r-- 1 lukas staff 359800 20 Apr 18:52 screenpipe.2026-04-20.0.log\n-rw-r--r-- 1 lukas staff 683671 21 Apr 20:18 screenpipe.2026-04-21.0.log\n-rw-r--r-- 1 lukas staff 284763 22 Apr 19:10 screenpipe.2026-04-22.0.log\n-rwxr-xr-x@ 1 lukas staff 14998 18 Apr 18:35 screenpipe_sync.sh\n-rw-r--r--@ 1 lukas staff 27173 22 Apr 18:29 sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cp db.sqlite /Volumes/Test/screenpipe/db.sqlite\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe \n 12G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n5.9G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n6.2G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n128K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n4.0M\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-wal\n 36K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/pipes\n132K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log\n 96K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log\n 72K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log\n160K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log\n172K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log\n196K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log\n204K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-18.0.log\n352K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-20.0.log\n668K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-21.0.log\n324K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-22.0.log\n 16K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe_sync.sh\n 28K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd /data/data/ \ncd: no such file or directory: /data/data/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd data/2026-04-22\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-22 $ ll\ntotal 521816\ndrwxr-xr-x 224 lukas staff 7168 23 Apr 09:14 .\ndrwxr-xr-x 16 lukas staff 512 23 Apr 09:13 ..\n-rw-r--r-- 1 lukas staff 1291639 22 Apr 09:26 compact_monitor_1_1776839204800.mp4\n-rw-r--r-- 1 lukas staff 1976819 22 Apr 09:31 compact_monitor_1_1776839511652.mp4\n-rw-r--r-- 1 lukas staff 385631 22 Apr 09:37 compact_monitor_1_1776839823964.mp4\n-rw-r--r-- 1 lukas staff 616970 22 Apr 09:42 compact_monitor_1_1776840142296.mp4\n-rw-r--r-- 1 lukas staff 2692728 22 Apr 09:47 compact_monitor_1_1776840467896.mp4\n-rw-r--r-- 1 lukas staff 2026505 22 Apr 09:53 compact_monitor_1_1776840800074.mp4\n-rw-r--r-- 1 lukas staff 1945361 22 Apr 09:58 compact_monitor_1_1776841121195.mp4\n-rw-r--r-- 1 lukas staff 1694598 22 Apr 10:04 compact_monitor_1_1776841439804.mp4\n-rw-r--r-- 1 lukas staff 1609711 22 Apr 10:09 compact_monitor_1_1776841764316.mp4\n-rw-r--r-- 1 lukas staff 1462521 22 Apr 10:14 compact_monitor_1_1776842081882.mp4\n-rw-r--r-- 1 lukas staff 1222819 22 Apr 10:20 compact_monitor_1_1776842401308.mp4\n-rw-r--r-- 1 lukas staff 1374769 22 Apr 10:25 compact_monitor_1_1776842720447.mp4\n-rw-r--r-- 1 lukas staff 1069475 22 Apr 10:30 compact_monitor_1_1776843032219.mp4\n-rw-r--r-- 1 lukas staff 1048226 22 Apr 10:35 compact_monitor_1_1776843337824.mp4\n-rw-r--r-- 1 lukas staff 378431 22 Apr 10:40 compact_monitor_1_1776843648464.mp4\n-rw-r--r-- 1 lukas staff 892142 22 Apr 10:46 compact_monitor_1_1776843964373.mp4\n-rw-r--r-- 1 lukas staff 519374 22 Apr 10:51 compact_monitor_1_1776844275867.mp4\n-rw-r--r-- 1 lukas staff 693685 22 Apr 10:56 compact_monitor_1_1776844584621.mp4\n-rw-r--r-- 1 lukas staff 452526 22 Apr 11:01 compact_monitor_1_1776844897612.mp4\n-rw-r--r-- 1 lukas staff 373085 22 Apr 11:06 compact_monitor_1_1776845205000.mp4\n-rw-r--r-- 1 lukas staff 792127 22 Apr 11:11 compact_monitor_1_1776845513822.mp4\n-rw-r--r-- 1 lukas staff 1336192 22 Apr 11:17 compact_monitor_1_1776845828958.mp4\n-rw-r--r-- 1 lukas staff 2739781 22 Apr 11:22 compact_monitor_1_1776846134058.mp4\n-rw-r--r-- 1 lukas staff 1229872 22 Apr 11:27 compact_monitor_1_1776846444744.mp4\n-rw-r--r-- 1 lukas staff 372000 22 Apr 11:32 compact_monitor_1_1776846749223.mp4\n-rw-r--r-- 1 lukas staff 215746 22 Apr 11:37 compact_monitor_1_1776847053415.mp4\n-rw-r--r-- 1 lukas staff 214432 22 Apr 11:42 compact_monitor_1_1776847358310.mp4\n-rw-r--r-- 1 lukas staff 213835 22 Apr 11:47 compact_monitor_1_1776847664230.mp4\n-rw-r--r-- 1 lukas staff 217385 22 Apr 11:52 compact_monitor_1_1776847973489.mp4\n-rw-r--r-- 1 lukas staff 215022 22 Apr 11:57 compact_monitor_1_1776848277473.mp4\n-rw-r--r-- 1 lukas staff 405201 22 Apr 12:03 compact_monitor_1_1776848581367.mp4\n-rw-r--r-- 1 lukas staff 1557849 22 Apr 12:08 compact_monitor_1_1776848886812.mp4\n-rw-r--r-- 1 lukas staff 1652380 22 Apr 12:13 compact_monitor_1_1776849197591.mp4\n-rw-r--r-- 1 lukas staff 1067419 22 Apr 12:18 compact_monitor_1_1776849503787.mp4\n-rw-r--r-- 1 lukas staff 268334 22 Apr 12:23 compact_monitor_1_1776849813627.mp4\n-rw-r--r-- 1 lukas staff 268945 22 Apr 12:28 compact_monitor_1_1776850116458.mp4\n-rw-r--r-- 1 lukas staff 906784 22 Apr 12:33 compact_monitor_1_1776850424950.mp4\n-rw-r--r-- 1 lukas staff 1251053 22 Apr 12:38 compact_monitor_1_1776850735839.mp4\n-rw-r--r-- 1 lukas staff 606643 22 Apr 12:44 compact_monitor_1_1776851047118.mp4\n-rw-r--r-- 1 lukas staff 3127146 22 Apr 12:49 compact_monitor_1_1776851354979.mp4\n-rw-r--r-- 1 lukas staff 1120031 22 Apr 12:54 compact_monitor_1_1776851661551.mp4\n-rw-r--r-- 1 lukas staff 389700 22 Apr 12:59 compact_monitor_1_1776851969831.mp4\n-rw-r--r-- 1 lukas staff 390117 22 Apr 13:04 compact_monitor_1_1776852272976.mp4\n-rw-r--r-- 1 lukas staff 393030 22 Apr 13:09 compact_monitor_1_1776852581698.mp4\n-rw-r--r-- 1 lukas staff 579804 22 Apr 13:14 compact_monitor_1_1776852888686.mp4\n-rw-r--r-- 1 lukas staff 144542 22 Apr 13:19 compact_monitor_1_1776853195671.mp4\n-rw-r--r-- 1 lukas staff 1319292 22 Apr 13:25 compact_monitor_1_1776853501128.mp4\n-rw-r--r-- 1 lukas staff 522815 22 Apr 13:30 compact_monitor_1_1776853807941.mp4\n-rw-r--r-- 1 lukas staff 467289 22 Apr 13:35 compact_monitor_1_1776854114758.mp4\n-rw-r--r-- 1 lukas staff 264853 22 Apr 13:40 compact_monitor_1_1776854419993.mp4\n-rw-r--r-- 1 lukas staff 183594 22 Apr 13:45 compact_monitor_1_1776854724809.mp4\n-rw-r--r-- 1 lukas staff 178631 22 Apr 13:50 compact_monitor_1_1776855032679.mp4\n-rw-r--r-- 1 lukas staff 182119 22 Apr 13:55 compact_monitor_1_1776855342190.mp4\n-rw-r--r-- 1 lukas staff 176349 22 Apr 14:00 compact_monitor_1_1776855655518.mp4\n-rw-r--r-- 1 lukas staff 179590 22 Apr 14:06 compact_monitor_1_1776855960164.mp4\n-rw-r--r-- 1 lukas staff 178846 22 Apr 14:11 compact_monitor_1_1776856271060.mp4\n-rw-r--r-- 1 lukas staff 884339 22 Apr 14:16 compact_monitor_1_1776856576155.mp4\n-rw-r--r-- 1 lukas staff 508676 22 Apr 14:21 compact_monitor_1_1776856888985.mp4\n-rw-r--r-- 1 lukas staff 141591 22 Apr 14:26 compact_monitor_1_1776857198732.mp4\n-rw-r--r-- 1 lukas staff 1074474 22 Apr 14:31 compact_monitor_1_1776857502105.mp4\n-rw-r--r-- 1 lukas staff 687202 22 Apr 14:36 compact_monitor_1_1776857809764.mp4\n-rw-r--r-- 1 lukas staff 301043 22 Apr 14:42 compact_monitor_1_1776858119930.mp4\n-rw-r--r-- 1 lukas staff 441512 22 Apr 14:47 compact_monitor_1_1776858435216.mp4\n-rw-r--r-- 1 lukas staff 470964 22 Apr 14:52 compact_monitor_1_1776858741990.mp4\n-rw-r--r-- 1 lukas staff 565080 22 Apr 14:57 compact_monitor_1_1776859048771.mp4\n-rw-r--r-- 1 lukas staff 2099393 22 Apr 15:02 compact_monitor_1_1776859363756.mp4\n-rw-r--r-- 1 lukas staff 341547 22 Apr 15:07 compact_monitor_1_1776859669692.mp4\n-rw-r--r-- 1 lukas staff 1470918 22 Apr 15:13 compact_monitor_1_1776859980784.mp4\n-rw-r--r-- 1 lukas staff 1386535 22 Apr 15:18 compact_monitor_1_1776860291496.mp4\n-rw-r--r-- 1 lukas staff 3721368 22 Apr 15:23 compact_monitor_1_1776860608283.mp4\n-rw-r--r-- 1 lukas staff 2829310 22 Apr 15:28 compact_monitor_1_1776860927808.mp4\n-rw-r--r-- 1 lukas staff 3608400 22 Apr 15:34 compact_monitor_1_1776861246919.mp4\n-rw-r--r-- 1 lukas staff 2520337 22 Apr 15:39 compact_monitor_1_1776861561807.mp4\n-rw-r--r-- 1 lukas staff 3394786 22 Apr 15:44 compact_monitor_1_1776861870869.mp4\n-rw-r--r-- 1 lukas staff 2311370 22 Apr 15:49 compact_monitor_1_1776862184223.mp4\n-rw-r--r-- 1 lukas staff 2312669 22 Apr 15:54 compact_monitor_1_1776862493758.mp4\n-rw-r--r-- 1 lukas staff 1674506 22 Apr 16:00 compact_monitor_1_1776862807398.mp4\n-rw-r--r-- 1 lukas staff 1595953 22 Apr 16:05 compact_monitor_1_1776863114876.mp4\n-rw-r--r-- 1 lukas staff 834561 22 Apr 16:10 compact_monitor_1_1776863433206.mp4\n-rw-r--r-- 1 lukas staff 297948 22 Apr 16:15 compact_monitor_1_1776863748371.mp4\n-rw-r--r-- 1 lukas staff 297470 22 Apr 16:20 compact_monitor_1_1776864053732.mp4\n-rw-r--r-- 1 lukas staff 301712 22 Apr 16:26 compact_monitor_1_1776864361608.mp4\n-rw-r--r-- 1 lukas staff 476053 22 Apr 16:31 compact_monitor_1_1776864676523.mp4\n-rw-r--r-- 1 lukas staff 1140004 22 Apr 16:36 compact_monitor_1_1776864986222.mp4\n-rw-r--r-- 1 lukas staff 209748 22 Apr 16:41 compact_monitor_1_1776865292562.mp4\n-rw-r--r-- 1 lukas staff 153281 22 Apr 16:46 compact_monitor_1_1776865598330.mp4\n-rw-r--r-- 1 lukas staff 124176 22 Apr 16:51 compact_monitor_1_1776865908133.mp4\n-rw-r--r-- 1 lukas staff 123505 22 Apr 16:56 compact_monitor_1_1776866216495.mp4\n-rw-r--r-- 1 lukas staff 122850 22 Apr 17:01 compact_monitor_1_1776866518685.mp4\n-rw-r--r-- 1 lukas staff 95026 22 Apr 17:07 compact_monitor_1_1776866821945.mp4\n-rw-r--r-- 1 lukas staff 117642 22 Apr 17:32 compact_monitor_1_1776868350295.mp4\n-rw-r--r-- 1 lukas staff 120079 22 Apr 17:37 compact_monitor_1_1776868656326.mp4\n-rw-r--r-- 1 lukas staff 169674 22 Apr 17:42 compact_monitor_1_1776868963122.mp4\n-rw-r--r-- 1 lukas staff 125060 22 Apr 17:47 compact_monitor_1_1776869273496.mp4\n-rw-r--r-- 1 lukas staff 123507 22 Apr 17:53 compact_monitor_1_1776869582690.mp4\n-rw-r--r-- 1 lukas staff 191046 22 Apr 17:58 compact_monitor_1_1776869890457.mp4\n-rw-r--r-- 1 lukas staff 127296 22 Apr 18:03 compact_monitor_1_1776870196198.mp4\n-rw-r--r-- 1 lukas staff 122512 22 Apr 18:08 compact_monitor_1_1776870507382.mp4\n-rw-r--r-- 1 lukas staff 118952 22 Apr 18:13 compact_monitor_1_1776870818099.mp4\n-rw-r--r-- 1 lukas staff 122784 22 Apr 18:18 compact_monitor_1_1776871121943.mp4\n-rw-r--r-- 1 lukas staff 117968 22 Apr 18:23 compact_monitor_1_1776871432304.mp4\n-rw-r--r-- 1 lukas staff 1522764 22 Apr 18:28 compact_monitor_1_1776871736007.mp4\n-rw-r--r-- 1 lukas staff 809317 22 Apr 18:34 compact_monitor_1_1776872041165.mp4\n-rw-r--r-- 1 lukas staff 503643 22 Apr 18:39 compact_monitor_1_1776872348660.mp4\n-rw-r--r-- 1 lukas staff 176552 22 Apr 18:44 compact_monitor_1_1776872651900.mp4\n-rw-r--r-- 1 lukas staff 177165 22 Apr 18:49 compact_monitor_1_1776872958626.mp4\n-rw-r--r-- 1 lukas staff 246259 22 Apr 18:54 compact_monitor_1_1776873265328.mp4\n-rw-r--r-- 1 lukas staff 332374 22 Apr 18:59 compact_monitor_1_1776873570308.mp4\n-rw-r--r-- 1 lukas staff 1013140 22 Apr 19:04 compact_monitor_1_1776873875737.mp4\n-rw-r--r-- 1 lukas staff 2533378 22 Apr 19:09 compact_monitor_1_1776874182454.mp4\n-rw-r--r-- 1 lukas staff 2868752 23 Apr 09:14 compact_monitor_1_1776924846954.mp4\n-rw-r--r-- 1 lukas staff 1406238 22 Apr 09:26 compact_monitor_2_1776839206703.mp4\n-rw-r--r-- 1 lukas staff 5220491 22 Apr 09:31 compact_monitor_2_1776839514102.mp4\n-rw-r--r-- 1 lukas staff 4302042 22 Apr 09:37 compact_monitor_2_1776839825945.mp4\n-rw-r--r-- 1 lukas staff 1166365 22 Apr 09:42 compact_monitor_2_1776840149161.mp4\n-rw-r--r-- 1 lukas staff 2835147 22 Apr 09:48 compact_monitor_2_1776840475601.mp4\n-rw-r--r-- 1 lukas staff 1335719 22 Apr 09:53 compact_monitor_2_1776840805501.mp4\n-rw-r--r-- 1 lukas staff 760807 22 Apr 09:58 compact_monitor_2_1776841130978.mp4\n-rw-r--r-- 1 lukas staff 335588 22 Apr 10:04 compact_monitor_2_1776841447110.mp4\n-rw-r--r-- 1 lukas staff 270101 22 Apr 10:09 compact_monitor_2_1776841770084.mp4\n-rw-r--r-- 1 lukas staff 471541 22 Apr 10:14 compact_monitor_2_1776842086264.mp4\n-rw-r--r-- 1 lukas staff 374686 22 Apr 10:20 compact_monitor_2_1776842407228.mp4\n-rw-r--r-- 1 lukas staff 549097 22 Apr 10:25 compact_monitor_2_1776842726731.mp4\n-rw-r--r-- 1 lukas staff 587980 22 Apr 10:30 compact_monitor_2_1776843033453.mp4\n-rw-r--r-- 1 lukas staff 1590795 22 Apr 10:35 compact_monitor_2_1776843339118.mp4\n-rw-r--r-- 1 lukas staff 2843756 22 Apr 10:40 compact_monitor_2_1776843652359.mp4\n-rw-r--r-- 1 lukas staff 1248500 22 Apr 10:46 compact_monitor_2_1776843965671.mp4\n-rw-r--r-- 1 lukas staff 2387069 22 Apr 10:51 compact_monitor_2_1776844278127.mp4\n-rw-r--r-- 1 lukas staff 3380766 22 Apr 10:56 compact_monitor_2_1776844586498.mp4\n-rw-r--r-- 1 lukas staff 1372830 22 Apr 11:01 compact_monitor_2_1776844898915.mp4\n-rw-r--r-- 1 lukas staff 431466 22 Apr 11:06 compact_monitor_2_1776845205857.mp4\n-rw-r--r-- 1 lukas staff 4140482 22 Apr 11:12 compact_monitor_2_1776845516891.mp4\n-rw-r--r-- 1 lukas staff 1019700 22 Apr 11:17 compact_monitor_2_1776845830886.mp4\n-rw-r--r-- 1 lukas staff 1971349 22 Apr 11:22 compact_monitor_2_1776846137433.mp4\n-rw-r--r-- 1 lukas staff 1855516 22 Apr 11:27 compact_monitor_2_1776846446118.mp4\n-rw-r--r-- 1 lukas staff 2113081 22 Apr 11:32 compact_monitor_2_1776846750841.mp4\n-rw-r--r-- 1 lukas staff 860635 22 Apr 11:37 compact_monitor_2_1776847054375.mp4\n-rw-r--r-- 1 lukas staff 1547770 22 Apr 11:42 compact_monitor_2_1776847359456.mp4\n-rw-r--r-- 1 lukas staff 1092684 22 Apr 11:47 compact_monitor_2_1776847665196.mp4\n-rw-r--r-- 1 lukas staff 2061114 22 Apr 11:52 compact_monitor_2_1776847974358.mp4\n-rw-r--r-- 1 lukas staff 2199781 22 Apr 11:58 compact_monitor_2_1776848278484.mp4\n-rw-r--r-- 1 lukas staff 1381991 22 Apr 12:03 compact_monitor_2_1776848583195.mp4\n-rw-r--r-- 1 lukas staff 2721087 22 Apr 12:08 compact_monitor_2_1776848888480.mp4\n-rw-r--r-- 1 lukas staff 877385 22 Apr 12:13 compact_monitor_2_1776849199887.mp4\n-rw-r--r-- 1 lukas staff 3540697 22 Apr 12:18 compact_monitor_2_1776849506021.mp4\n-rw-r--r-- 1 lukas staff 474523 22 Apr 12:23 compact_monitor_2_1776849814381.mp4\n-rw-r--r-- 1 lukas staff 991274 22 Apr 12:28 compact_monitor_2_1776850117283.mp4\n-rw-r--r-- 1 lukas staff 2121163 22 Apr 12:33 compact_monitor_2_1776850426669.mp4\n-rw-r--r-- 1 lukas staff 1480246 22 Apr 12:38 compact_monitor_2_1776850737952.mp4\n-rw-r--r-- 1 lukas staff 821464 22 Apr 12:44 compact_monitor_2_1776851048313.mp4\n-rw-r--r-- 1 lukas staff 684777 22 Apr 12:49 compact_monitor_2_1776851357051.mp4\n-rw-r--r-- 1 lukas staff 2576122 22 Apr 12:54 compact_monitor_2_1776851663610.mp4\n-rw-r--r-- 1 lukas staff 1690359 22 Apr 12:59 compact_monitor_2_1776851970964.mp4\n-rw-r--r-- 1 lukas staff 1821650 22 Apr 13:04 compact_monitor_2_1776852275017.mp4\n-rw-r--r-- 1 lukas staff 2451968 22 Apr 13:09 compact_monitor_2_1776852583512.mp4\n-rw-r--r-- 1 lukas staff 2568339 22 Apr 13:14 compact_monitor_2_1776852890302.mp4\n-rw-r--r-- 1 lukas staff 1354068 22 Apr 13:19 compact_monitor_2_1776853197021.mp4\n-rw-r--r-- 1 lukas staff 683086 22 Apr 13:25 compact_monitor_2_1776853502339.mp4\n-rw-r--r-- 1 lukas staff 1015792 22 Apr 13:30 compact_monitor_2_1776853809857.mp4\n-rw-r--r-- 1 lukas staff 833765 22 Apr 13:35 compact_monitor_2_1776854115701.mp4\n-rw-r--r-- 1 lukas staff 2018658 22 Apr 13:40 compact_monitor_2_1776854421548.mp4\n-rw-r--r-- 1 lukas staff 1912549 22 Apr 13:45 compact_monitor_2_1776854726335.mp4\n-rw-r--r-- 1 lukas staff 914258 22 Apr 13:50 compact_monitor_2_1776855033732.mp4\n-rw-r--r-- 1 lukas staff 1182467 22 Apr 13:55 compact_monitor_2_1776855343602.mp4\n-rw-r--r-- 1 lukas staff 385708 22 Apr 14:00 compact_monitor_2_1776855657104.mp4\n-rw-r--r-- 1 lukas staff 725079 22 Apr 14:06 compact_monitor_2_1776855962030.mp4\n-rw-r--r-- 1 lukas staff 900929 22 Apr 14:11 compact_monitor_2_1776856272407.mp4\n-rw-r--r-- 1 lukas staff 1331033 22 Apr 14:16 compact_monitor_2_1776856578708.mp4\n-rw-r--r-- 1 lukas staff 630778 22 Apr 14:21 compact_monitor_2_1776856890399.mp4\n-rw-r--r-- 1 lukas staff 1810130 22 Apr 14:26 compact_monitor_2_1776857199786.mp4\n-rw-r--r-- 1 lukas staff 1725201 22 Apr 14:31 compact_monitor_2_1776857503198.mp4\n-rw-r--r-- 1 lukas staff 1202608 22 Apr 14:36 compact_monitor_2_1776857811312.mp4\n-rw-r--r-- 1 lukas staff 1183824 22 Apr 14:42 compact_monitor_2_1776858123559.mp4\n-rw-r--r-- 1 lukas staff 1208327 22 Apr 14:47 compact_monitor_2_1776858436830.mp4\n-rw-r--r-- 1 lukas staff 1399691 22 Apr 14:52 compact_monitor_2_1776858743360.mp4\n-rw-r--r-- 1 lukas staff 2485595 22 Apr 14:57 compact_monitor_2_1776859051449.mp4\n-rw-r--r-- 1 lukas staff 1856739 22 Apr 15:02 compact_monitor_2_1776859366233.mp4\n-rw-r--r-- 1 lukas staff 903086 22 Apr 15:07 compact_monitor_2_1776859671654.mp4\n-rw-r--r-- 1 lukas staff 1425070 22 Apr 15:13 compact_monitor_2_1776859986162.mp4\n-rw-r--r-- 1 lukas staff 1299666 22 Apr 15:18 compact_monitor_2_1776860295573.mp4\n-rw-r--r-- 1 lukas staff 1280478 22 Apr 15:23 compact_monitor_2_1776860614296.mp4\n-rw-r--r-- 1 lukas staff 2337036 22 Apr 15:28 compact_monitor_2_1776860932062.mp4\n-rw-r--r-- 1 lukas staff 2131149 22 Apr 15:34 compact_monitor_2_1776861251494.mp4\n-rw-r--r-- 1 lukas staff 2359883 22 Apr 15:39 compact_monitor_2_1776861564243.mp4\n-rw-r--r-- 1 lukas staff 1547537 22 Apr 15:44 compact_monitor_2_1776861876714.mp4\n-rw-r--r-- 1 lukas staff 2172114 22 Apr 15:49 compact_monitor_2_1776862186712.mp4\n-rw-r--r-- 1 lukas staff 1480165 22 Apr 15:54 compact_monitor_2_1776862496217.mp4\n-rw-r--r-- 1 lukas staff 1451204 22 Apr 16:00 compact_monitor_2_1776862811373.mp4\n-rw-r--r-- 1 lukas staff 797522 22 Apr 16:05 compact_monitor_2_1776863121180.mp4\n-rw-r--r-- 1 lukas staff 1136154 22 Apr 16:10 compact_monitor_2_1776863436274.mp4\n-rw-r--r-- 1 lukas staff 408460 22 Apr 16:15 compact_monitor_2_1776863749818.mp4\n-rw-r--r-- 1 lukas staff 1151394 22 Apr 16:20 compact_monitor_2_1776864054467.mp4\n-rw-r--r-- 1 lukas staff 2617267 22 Apr 16:26 compact_monitor_2_1776864364411.mp4\n-rw-r--r-- 1 lukas staff 1648571 22 Apr 16:31 compact_monitor_2_1776864678063.mp4\n-rw-r--r-- 1 lukas staff 726061 22 Apr 16:36 compact_monitor_2_1776864988062.mp4\n-rw-r--r-- 1 lukas staff 499734 22 Apr 16:41 compact_monitor_2_1776865293654.mp4\n-rw-r--r-- 1 lukas staff 1277339 22 Apr 16:46 compact_monitor_2_1776865599949.mp4\n-rw-r--r-- 1 lukas staff 776016 22 Apr 16:51 compact_monitor_2_1776865909005.mp4\n-rw-r--r-- 1 lukas staff 310853 22 Apr 16:56 compact_monitor_2_1776866217337.mp4\n-rw-r--r-- 1 lukas staff 310651 22 Apr 17:02 compact_monitor_2_1776866519474.mp4\n-rw-r--r-- 1 lukas staff 244441 22 Apr 17:07 compact_monitor_2_1776866822189.mp4\n-rw-r--r-- 1 lukas staff 850717 22 Apr 17:32 compact_monitor_2_1776868350967.mp4\n-rw-r--r-- 1 lukas staff 958993 22 Apr 17:37 compact_monitor_2_1776868657735.mp4\n-rw-r--r-- 1 lukas staff 1574171 22 Apr 17:42 compact_monitor_2_1776868964141.mp4\n-rw-r--r-- 1 lukas staff 1651606 22 Apr 17:47 compact_monitor_2_1776869274633.mp4\n-rw-r--r-- 1 lukas staff 669609 22 Apr 17:53 compact_monitor_2_1776869583557.mp4\n-rw-r--r-- 1 lukas staff 2261136 22 Apr 17:58 compact_monitor_2_1776869892043.mp4\n-rw-r--r-- 1 lukas staff 1560427 22 Apr 18:03 compact_monitor_2_1776870198140.mp4\n-rw-r--r-- 1 lukas staff 678529 22 Apr 18:08 compact_monitor_2_1776870509039.mp4\n-rw-r--r-- 1 lukas staff 519464 22 Apr 18:13 compact_monitor_2_1776870818808.mp4\n-rw-r--r-- 1 lukas staff 1347344 22 Apr 18:18 compact_monitor_2_1776871123291.mp4\n-rw-r--r-- 1 lukas staff 1653980 22 Apr 18:23 compact_monitor_2_1776871433166.mp4\n-rw-r--r-- 1 lukas staff 844038 22 Apr 18:28 compact_monitor_2_1776871737404.mp4\n-rw-r--r-- 1 lukas staff 1809392 22 Apr 18:34 compact_monitor_2_1776872042292.mp4\n-rw-r--r-- 1 lukas staff 500253 22 Apr 18:39 compact_monitor_2_1776872349495.mp4\n-rw-r--r-- 1 lukas staff 362170 22 Apr 18:44 compact_monitor_2_1776872652803.mp4\n-rw-r--r-- 1 lukas staff 2235586 22 Apr 18:49 compact_monitor_2_1776872959641.mp4\n-rw-r--r-- 1 lukas staff 1160652 22 Apr 18:54 compact_monitor_2_1776873266662.mp4\n-rw-r--r-- 1 lukas staff 1344375 22 Apr 18:59 compact_monitor_2_1776873571536.mp4\n-rw-r--r-- 1 lukas staff 3807432 22 Apr 19:04 compact_monitor_2_1776873878479.mp4\n-rw-r--r-- 1 lukas staff 2414414 22 Apr 19:09 compact_monitor_2_1776874185817.mp4\n-rw-r--r-- 1 lukas staff 3120540 23 Apr 09:14 compact_monitor_2_1776924852567.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-22 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-22\n[2026-04-23 09:16:02] ========================================\n[2026-04-23 09:16:02] Screenpipe sync starting for: 2026-04-22\n[2026-04-23 09:16:02] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (6.2G)\n NAS mount: OK /Volumes/Test/screenpipe\n Archive DB: exists (4.9G)\n Data dir: OK (222 files, 255M)\n\n[+00m00s] ▶ Counting source rows for 2026-04-22\n frames: 4305\n elements: 332442\n ui_events: 5804\n ocr_text: 1074\n meetings: 3\n\n[+00m01s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m00s\n creating indexes ✓ 0m00s\n creating FTS tables ✓ 0m00s\n\n[+00m01s] ▶ Syncing data for 2026-04-22\n video_chunks ✓ 0m01s\n frames (4305 rows) ✓ 1m38s\n ocr_text (1074 rows) ✓ 0m12s\n ui_events (5804 rows) ✓ 0m01s\n elements (332442 rows) ✓ 0m51s\n meetings (3 rows) ✓ 0m00s\n\n[+02m44s] ▶ Updating FTS indexes\n elements_fts ✓ 1m26s\n frames_fts ✓ 2m14s\n ui_events_fts ✓ 0m02s\n\n[+06m26s] ▶ Verifying DB\n frames: 4305 / 4305 ✓\n elements: 332442 / 332442 ✓\n ui_events: 5804 / 5804 ✓\n ocr_text: 1074 / 1074 ✓\n meetings: 3 / 3 ✓\n\n[+07m20s] ▶ Copying data folder for 2026-04-22\n rsync 2026-04-22/ → NAS ✓ 0m16s (222 files, 254M)\n\n[2026-04-23 09:23:38] Archive DB size: 5.8G\n[2026-04-23 09:23:38] Total time: 7m36s\n[2026-04-23 09:23:38] Sync complete for 2026-04-22\n[2026-04-23 09:23:38] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-22 $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.12291667,"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":"-zsh","depth":2,"bounds":{"left":0.12291667,"top":0.05888889,"width":0.12291667,"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.12708333,"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.24583334,"top":0.05888889,"width":0.12291667,"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.25,"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":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.36875,"top":0.05888889,"width":0.12291667,"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.37291667,"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.49166667,"top":0.05888889,"width":0.12291667,"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.49583334,"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.6145833,"top":0.05888889,"width":0.12291667,"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.61875,"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.7375,"top":0.05888889,"width":0.12291667,"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.7416667,"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":"ec2-user@ip-10-30-159-186:~ (-zsh)","depth":2,"bounds":{"left":0.86041665,"top":0.05888889,"width":0.12291667,"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.8645833,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
1031678775612477790
|
-1275583338321592733
|
click
|
accessibility
|
NULL
|
-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 -rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll
total 899512
drwxr-xr-x 306 lukas staff 9792 21 Apr 20:18 .
drwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:05 1776791134169_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:05 1776791134429_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791165816_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791166383_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:06 1776791196587_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:06 1776791197102_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791227416_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791227779_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:07 1776791258183_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:07 1776791258594_m1.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791287670_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791287761_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791292727_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791293784_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791300420_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791301542_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791305234_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791306590_m2.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:08 1776791314840_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:08 1776791316155_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791347790_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791348817_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:09 1776791380412_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:09 1776791381822_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791412322_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791413781_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:10 1776791443689_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:10 1776791446344_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791474900_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791479169_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:11 1776791507841_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:11 1776791511806_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791539947_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791543728_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:12 1776791572066_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:12 1776791576889_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791604264_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:13 1776791609516_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:13 1776791635686_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791641549_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791667683_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:14 1776791672264_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:14 1776791699168_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791703546_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:15 1776791729923_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:15 1776791734502_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791762742_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791767091_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:16 1776791794955_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:16 1776791799940_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791828207_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791832582_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:17 1776791860643_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:17 1776791864973_m1.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791886556_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791887551_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791892443_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791893875_m2.jpg
-rw-r--r-- 1 lukas staff 165853 21 Apr 20:18 1776791895925_m1.jpg
-rw-r--r-- 1 lukas staff 150843 21 Apr 20:18 1776791897732_m2.jpg
-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4
-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4
-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4
-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4
-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4
-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4
-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4
-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4
-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4
-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4
-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4
-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4
-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4
-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4
-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4
-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4
-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4
-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4
-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4
-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4
-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4
-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4
-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4
-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4
-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4
-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4
-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4
-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4
-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4
-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4
-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4
-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4
-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4
-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4
-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4
-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4
-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4
-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4
-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4
-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4
-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4
-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4
-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4
-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4
-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4
-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4
-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4
-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4
-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4
-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4
-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4
-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4
-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4
-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4
-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4
-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4
-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4
-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4
-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4
-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4
-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4
-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4
-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4
-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4
-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4
-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4
-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4
-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4
-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4
-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4
-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4
-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4
-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4
-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4
-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4
-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4
-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4
-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4
-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4
-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4
-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4
-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4
-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4
-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4
-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4
-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4
-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4
-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4
-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4
-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4
-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4
-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4
-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4
-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4
-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4
-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4
-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4
-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4
-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4
-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4
-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4
-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4
-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4
-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4
-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4
-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4
-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4
-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4
-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4
-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4
-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4
-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4
-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4
-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4
-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4
-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4
-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4
-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4
-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4
-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4
-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4
-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4
-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4
-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4
-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4
-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4
-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4
-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4
-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4
-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4
-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4
-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4
-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4
-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4
-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4
-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4
-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4
-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4
-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4
-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4
-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4
-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4
-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4
-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4
-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4
-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4
-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4
-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4
-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4
-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4
-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4
-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4
-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4
-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4
-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4
-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4
-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4
-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4
-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4
-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4
-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4
-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4
-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4
-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4
-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4
-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4
-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4
-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4
-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4
-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4
-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4
-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4
-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4
-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4
-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4
-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4
-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4
-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4
-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4
-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4
-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4
-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4
-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4
-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4
-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4
-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4
-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4
-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4
-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4
-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4
-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4
-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4
-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4
-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4
-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4
-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4
-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4
-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4
-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4
-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4
-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4
-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4
-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4
-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4
-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4
-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4
-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4
-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4
-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4
-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4
-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4
-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4
-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4
-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4
-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4
-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4
-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4
-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4
-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4
-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4
-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4
-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4
-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4
-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4
-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4
-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4
-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4
-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4
-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4
-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4
-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4
-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4
-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4
-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4
-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4
-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4
-rw-r--r-- 1 lukas staff 5461430 21 Apr 19:38 compact_monitor_2_1776789493765.mp4
-rw-r--r-- 1 lukas staff 4057709 21 Apr 19:43 compact_monitor_2_1776789819462.mp4
-rw-r--r-- 1 lukas staff 2596450 21 Apr 19:49 compact_monitor_2_1776790138746.mp4
-rw-r--r-- 1 lukas staff 3792786 21 Apr 19:54 compact_monitor_2_1776790456362.mp4
-rw-r--r-- 1 lukas staff 1534504 21 Apr 19:59 compact_monitor_2_1776790775836.mp4
-rw-r--r-- 1 lukas staff 3246894 21 Apr 20:04 compact_monitor_2_1776791089868.mp4
-rw-r--r-- 1 lukas staff 678653 21 Apr 20:10 compact_monitor_2_1776791400917.mp4
-rw-r--r-- 1 lukas staff 1037919 21 Apr 20:15 compact_monitor_2_1776791709090.mp4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ cd /Volumes/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll
total 32
drwxr-xr-x 4 root wheel 128 22 Apr 10:24 .
drwxr-xr-x 20 root wheel 640 4 Aug 2024 ..
lrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /
drwx------ 1 lukas staff 16384 22 Apr 10:24 Work
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ ll
total 96
drwxr-xr-x 6 root wheel 192 22 Apr 18:17 .
drwxr-xr-x 20 root wheel 640 4 Aug 2024 ..
lrwxr-xr-x 1 root wheel 1 20 Apr 19:47 Macintosh HD -> /
drwx------ 1 lukas staff 16384 11 Apr 15:46 Test
drwx------ 1 lukas staff 16384 22 Apr 10:24 Work
drwx------ 1 lukas staff 16384 19 Apr 18:36 screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes $ cd Test/screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ ll
total 10687944
drwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 .
drwx------ 1 lukas staff 16384 11 Apr 15:46 ..
-rwxrwxrwx@ 1 lukas staff 6148 21 Apr 10:48 .DS_Store
-rwxrwxrwx@ 1 lukas staff 4055343104 21 Apr 10:47 archive.db
drwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 data
-rwxrwxrwx 1 lukas staff 1416806400 14 Apr 20:49 db.sqlite
drwxrwxrwx 1 lukas staff 16384 11 Apr 16:51 pipes
-rwxrwxrwx@ 1 lukas staff 3250 11 Apr 17:00 screenpipe-day.sh
-rwxrwxrwx 1 lukas staff 0 13 Apr 17:21 screenpipe.db
-rwxrwxrwx 1 lukas staff 0 11 Apr 17:26 test_write
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe $ cd data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ ll
total 240
drwxrwxrwx@ 1 lukas staff 16384 21 Apr 10:48 .
drwxrwxrwx 1 lukas staff 16384 21 Apr 10:47 ..
-rwxrwxrwx@ 1 lukas staff 6148 22 Apr 18:17 .DS_Store
drwxrwxrwx@ 1 lukas staff 16384 15 Apr 09:59 2026-04-14
drwxrwxrwx@ 1 lukas staff 16384 16 Apr 09:13 2026-04-15
drwxrwxrwx@ 1 lukas staff 16384 17 Apr 08:57 2026-04-16
drwxrwxrwx@ 1 lukas staff 16384 18 Apr 13:35 2026-04-17
drwxrwxrwx@ 1 lukas staff 16384 21 Apr 09:10 2026-04-20
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny /Volumes/Test/screenpipe/data $ cd ~/.screenpipe/data/data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll
total 40
drwxr-xr-x 15 lukas staff 480 22 Apr 09:15 .
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 264 lukas staff 8448 22 Apr 18:18 2026-04-22
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-21
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-21 $ ll
total 881488
drwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 .
drwxr-xr-x 15 lukas staff 480 22 Apr 09:15 ..
-rw-r--r-- 1 lukas staff 1361281 21 Apr 09:20 compact_monitor_1_1776752441248.mp4
-rw-r--r-- 1 lukas staff 651317 21 Apr 09:25 compact_monitor_1_1776752745803.mp4
-rw-r--r-- 1 lukas staff 3097532 21 Apr 09:30 compact_monitor_1_1776753055208.mp4
-rw-r--r-- 1 lukas staff 690723 21 Apr 09:36 compact_monitor_1_1776753364005.mp4
-rw-r--r-- 1 lukas staff 391403 21 Apr 09:41 compact_monitor_1_1776753671910.mp4
-rw-r--r-- 1 lukas staff 400049 21 Apr 09:46 compact_monitor_1_1776753983723.mp4
-rw-r--r-- 1 lukas staff 2590693 21 Apr 09:51 compact_monitor_1_1776754288632.mp4
-rw-r--r-- 1 lukas staff 3414940 21 Apr 09:56 compact_monitor_1_1776754595698.mp4
-rw-r--r-- 1 lukas staff 2142937 21 Apr 10:01 compact_monitor_1_1776754907279.mp4
-rw-r--r-- 1 lukas staff 2594906 21 Apr 10:06 compact_monitor_1_1776755216988.mp4
-rw-r--r-- 1 lukas staff 3580618 21 Apr 10:12 compact_monitor_1_1776755522051.mp4
-rw-r--r-- 1 lukas staff 1630021 21 Apr 10:17 compact_monitor_1_1776755830782.mp4
-rw-r--r-- 1 lukas staff 1101140 21 Apr 10:22 compact_monitor_1_1776756139518.mp4
-rw-r--r-- 1 lukas staff 1525074 21 Apr 10:27 compact_monitor_1_1776756449245.mp4
-rw-r--r-- 1 lukas staff 1217305 21 Apr 10:32 compact_monitor_1_1776756757426.mp4
-rw-r--r-- 1 lukas staff 848652 21 Apr 10:37 compact_monitor_1_1776757066993.mp4
-rw-r--r-- 1 lukas staff 735624 21 Apr 10:42 compact_monitor_1_1776757371762.mp4
-rw-r--r-- 1 lukas staff 831986 21 Apr 10:47 compact_monitor_1_1776757676789.mp4
-rw-r--r-- 1 lukas staff 1910069 21 Apr 10:53 compact_monitor_1_1776757982061.mp4
-rw-r--r-- 1 lukas staff 1173193 21 Apr 10:58 compact_monitor_1_1776758293584.mp4
-rw-r--r-- 1 lukas staff 4089387 21 Apr 11:03 compact_monitor_1_1776758598100.mp4
-rw-r--r-- 1 lukas staff 4525764 21 Apr 11:08 compact_monitor_1_1776758908569.mp4
-rw-r--r-- 1 lukas staff 819571 21 Apr 11:13 compact_monitor_1_1776759225828.mp4
-rw-r--r-- 1 lukas staff 2960114 21 Apr 11:18 compact_monitor_1_1776759531737.mp4
-rw-r--r-- 1 lukas staff 1192769 21 Apr 11:24 compact_monitor_1_1776759843534.mp4
-rw-r--r-- 1 lukas staff 652804 21 Apr 11:29 compact_monitor_1_1776760150075.mp4
-rw-r--r-- 1 lukas staff 1172707 21 Apr 11:34 compact_monitor_1_1776760454916.mp4
-rw-r--r-- 1 lukas staff 360331 21 Apr 11:39 compact_monitor_1_1776760760172.mp4
-rw-r--r-- 1 lukas staff 317710 21 Apr 11:44 compact_monitor_1_1776761068314.mp4
-rw-r--r-- 1 lukas staff 450918 21 Apr 11:49 compact_monitor_1_1776761375398.mp4
-rw-r--r-- 1 lukas staff 299945 21 Apr 11:54 compact_monitor_1_1776761680271.mp4
-rw-r--r-- 1 lukas staff 353867 21 Apr 11:59 compact_monitor_1_1776761985775.mp4
-rw-r--r-- 1 lukas staff 271890 21 Apr 12:04 compact_monitor_1_1776762295293.mp4
-rw-r--r-- 1 lukas staff 291270 21 Apr 12:10 compact_monitor_1_1776762600319.mp4
-rw-r--r-- 1 lukas staff 282771 21 Apr 12:15 compact_monitor_1_1776762905324.mp4
-rw-r--r-- 1 lukas staff 263293 21 Apr 12:20 compact_monitor_1_1776763210041.mp4
-rw-r--r-- 1 lukas staff 283167 21 Apr 12:25 compact_monitor_1_1776763512506.mp4
-rw-r--r-- 1 lukas staff 286094 21 Apr 12:30 compact_monitor_1_1776763822081.mp4
-rw-r--r-- 1 lukas staff 261359 21 Apr 12:35 compact_monitor_1_1776764127243.mp4
-rw-r--r-- 1 lukas staff 272391 21 Apr 12:40 compact_monitor_1_1776764431677.mp4
-rw-r--r-- 1 lukas staff 259220 21 Apr 12:45 compact_monitor_1_1776764734158.mp4
-rw-r--r-- 1 lukas staff 306143 21 Apr 12:50 compact_monitor_1_1776765036552.mp4
-rw-r--r-- 1 lukas staff 313379 21 Apr 12:55 compact_monitor_1_1776765344009.mp4
-rw-r--r-- 1 lukas staff 300628 21 Apr 13:00 compact_monitor_1_1776765646576.mp4
-rw-r--r-- 1 lukas staff 290958 21 Apr 13:05 compact_monitor_1_1776765954534.mp4
-rw-r--r-- 1 lukas staff 588397 21 Apr 13:11 compact_monitor_1_1776766259390.mp4
-rw-r--r-- 1 lukas staff 180500 21 Apr 13:16 compact_monitor_1_1776766566390.mp4
-rw-r--r-- 1 lukas staff 180884 21 Apr 13:21 compact_monitor_1_1776766871246.mp4
-rw-r--r-- 1 lukas staff 180377 21 Apr 13:26 compact_monitor_1_1776767174287.mp4
-rw-r--r-- 1 lukas staff 179980 21 Apr 13:31 compact_monitor_1_1776767478793.mp4
-rw-r--r-- 1 lukas staff 554281 21 Apr 13:39 compact_monitor_1_1776767997301.mp4
-rw-r--r-- 1 lukas staff 206870 21 Apr 13:45 compact_monitor_1_1776768302213.mp4
-rw-r--r-- 1 lukas staff 829571 21 Apr 13:50 compact_monitor_1_1776768605307.mp4
-rw-r--r-- 1 lukas staff 253043 21 Apr 13:55 compact_monitor_1_1776768909764.mp4
-rw-r--r-- 1 lukas staff 366585 21 Apr 14:00 compact_monitor_1_1776769213520.mp4
-rw-r--r-- 1 lukas staff 827017 21 Apr 14:05 compact_monitor_1_1776769520540.mp4
-rw-r--r-- 1 lukas staff 151713 21 Apr 14:10 compact_monitor_1_1776769827631.mp4
-rw-r--r-- 1 lukas staff 160379 21 Apr 14:15 compact_monitor_1_1776770135163.mp4
-rw-r--r-- 1 lukas staff 107354 21 Apr 14:20 compact_monitor_1_1776770440683.mp4
-rw-r--r-- 1 lukas staff 291081 21 Apr 14:25 compact_monitor_1_1776770744999.mp4
-rw-r--r-- 1 lukas staff 603627 21 Apr 14:30 compact_monitor_1_1776771051270.mp4
-rw-r--r-- 1 lukas staff 452023 21 Apr 14:36 compact_monitor_1_1776771361049.mp4
-rw-r--r-- 1 lukas staff 1230482 21 Apr 14:41 compact_monitor_1_1776771665945.mp4
-rw-r--r-- 1 lukas staff 943232 21 Apr 14:46 compact_monitor_1_1776771975744.mp4
-rw-r--r-- 1 lukas staff 1113618 21 Apr 14:51 compact_monitor_1_1776772285693.mp4
-rw-r--r-- 1 lukas staff 9991796 21 Apr 14:56 compact_monitor_1_1776772592311.mp4
-rw-r--r-- 1 lukas staff 7852861 21 Apr 15:01 compact_monitor_1_1776772906518.mp4
-rw-r--r-- 1 lukas staff 5373218 21 Apr 15:07 compact_monitor_1_1776773217969.mp4
-rw-r--r-- 1 lukas staff 2958007 21 Apr 15:12 compact_monitor_1_1776773526321.mp4
-rw-r--r-- 1 lukas staff 1524865 21 Apr 15:17 compact_monitor_1_1776773836226.mp4
-rw-r--r-- 1 lukas staff 1632964 21 Apr 15:22 compact_monitor_1_1776774139940.mp4
-rw-r--r-- 1 lukas staff 2658750 21 Apr 15:27 compact_monitor_1_1776774447008.mp4
-rw-r--r-- 1 lukas staff 4108273 21 Apr 15:32 compact_monitor_1_1776774756791.mp4
-rw-r--r-- 1 lukas staff 4304005 21 Apr 15:37 compact_monitor_1_1776775064772.mp4
-rw-r--r-- 1 lukas staff 4013066 21 Apr 15:43 compact_monitor_1_1776775373343.mp4
-rw-r--r-- 1 lukas staff 463750 21 Apr 15:48 compact_monitor_1_1776775690861.mp4
-rw-r--r-- 1 lukas staff 402959 21 Apr 15:53 compact_monitor_1_1776775996413.mp4
-rw-r--r-- 1 lukas staff 688059 21 Apr 15:58 compact_monitor_1_1776776305173.mp4
-rw-r--r-- 1 lukas staff 429470 21 Apr 16:03 compact_monitor_1_1776776616139.mp4
-rw-r--r-- 1 lukas staff 666874 21 Apr 16:08 compact_monitor_1_1776776927836.mp4
-rw-r--r-- 1 lukas staff 753219 21 Apr 16:14 compact_monitor_1_1776777243164.mp4
-rw-r--r-- 1 lukas staff 526976 21 Apr 16:19 compact_monitor_1_1776777553173.mp4
-rw-r--r-- 1 lukas staff 2122250 21 Apr 16:24 compact_monitor_1_1776777858871.mp4
-rw-r--r-- 1 lukas staff 1105836 21 Apr 16:29 compact_monitor_1_1776778165624.mp4
-rw-r--r-- 1 lukas staff 641592 21 Apr 16:34 compact_monitor_1_1776778472128.mp4
-rw-r--r-- 1 lukas staff 949605 21 Apr 16:39 compact_monitor_1_1776778777082.mp4
-rw-r--r-- 1 lukas staff 306519 21 Apr 16:44 compact_monitor_1_1776779085411.mp4
-rw-r--r-- 1 lukas staff 309868 21 Apr 16:49 compact_monitor_1_1776779393309.mp4
-rw-r--r-- 1 lukas staff 491284 21 Apr 16:55 compact_monitor_1_1776779699385.mp4
-rw-r--r-- 1 lukas staff 309642 21 Apr 17:28 compact_monitor_1_1776781695807.mp4
-rw-r--r-- 1 lukas staff 465924 21 Apr 17:38 compact_monitor_1_1776782303042.mp4
-rw-r--r-- 1 lukas staff 134405 21 Apr 17:43 compact_monitor_1_1776782611770.mp4
-rw-r--r-- 1 lukas staff 193581 21 Apr 17:48 compact_monitor_1_1776782919363.mp4
-rw-r--r-- 1 lukas staff 3920653 21 Apr 17:53 compact_monitor_1_1776783226867.mp4
-rw-r--r-- 1 lukas staff 4522984 21 Apr 17:59 compact_monitor_1_1776783537226.mp4
-rw-r--r-- 1 lukas staff 3278447 21 Apr 18:04 compact_monitor_1_1776783850457.mp4
-rw-r--r-- 1 lukas staff 4152848 21 Apr 18:09 compact_monitor_1_1776784162084.mp4
-rw-r--r-- 1 lukas staff 3514812 21 Apr 18:14 compact_monitor_1_1776784481496.mp4
-rw-r--r-- 1 lukas staff 3689553 21 Apr 18:20 compact_monitor_1_1776784799298.mp4
-rw-r--r-- 1 lukas staff 452528 21 Apr 18:25 compact_monitor_1_1776785110432.mp4
-rw-r--r-- 1 lukas staff 440956 21 Apr 18:30 compact_monitor_1_1776785423557.mp4
-rw-r--r-- 1 lukas staff 336062 21 Apr 18:35 compact_monitor_1_1776785729435.mp4
-rw-r--r-- 1 lukas staff 371803 21 Apr 18:40 compact_monitor_1_1776786036969.mp4
-rw-r--r-- 1 lukas staff 563389 21 Apr 18:45 compact_monitor_1_1776786354321.mp4
-rw-r--r-- 1 lukas staff 371801 21 Apr 18:51 compact_monitor_1_1776786665889.mp4
-rw-r--r-- 1 lukas staff 737600 21 Apr 18:56 compact_monitor_1_1776786974153.mp4
-rw-r--r-- 1 lukas staff 341424 21 Apr 19:01 compact_monitor_1_1776787288363.mp4
-rw-r--r-- 1 lukas staff 338058 21 Apr 19:06 compact_monitor_1_1776787612940.mp4
-rw-r--r-- 1 lukas staff 332166 21 Apr 19:12 compact_monitor_1_1776787932333.mp4
-rw-r--r-- 1 lukas staff 328362 21 Apr 19:17 compact_monitor_1_1776788241604.mp4
-rw-r--r-- 1 lukas staff 871980 21 Apr 19:22 compact_monitor_1_1776788545749.mp4
-rw-r--r-- 1 lukas staff 265660 21 Apr 19:27 compact_monitor_1_1776788858438.mp4
-rw-r--r-- 1 lukas staff 265021 21 Apr 19:32 compact_monitor_1_1776789168881.mp4
-rw-r--r-- 1 lukas staff 3632949 21 Apr 19:38 compact_monitor_1_1776789484956.mp4
-rw-r--r-- 1 lukas staff 3594409 21 Apr 19:43 compact_monitor_1_1776789816527.mp4
-rw-r--r-- 1 lukas staff 2558014 21 Apr 19:48 compact_monitor_1_1776790131571.mp4
-rw-r--r-- 1 lukas staff 1435890 21 Apr 19:54 compact_monitor_1_1776790452873.mp4
-rw-r--r-- 1 lukas staff 770082 21 Apr 19:59 compact_monitor_1_1776790772821.mp4
-rw-r--r-- 1 lukas staff 805381 21 Apr 20:04 compact_monitor_1_1776791086631.mp4
-rw-r--r-- 1 lukas staff 240936 21 Apr 20:10 compact_monitor_1_1776791399239.mp4
-rw-r--r-- 1 lukas staff 660883 21 Apr 20:15 compact_monitor_1_1776791707130.mp4
-rw-r--r-- 1 lukas staff 252921 22 Apr 09:16 compact_monitor_1_1776838586240.mp4
-rw-r--r-- 1 lukas staff 406541 21 Apr 09:20 compact_monitor_2_1776752442671.mp4
-rw-r--r-- 1 lukas staff 3455570 21 Apr 09:25 compact_monitor_2_1776752748499.mp4
-rw-r--r-- 1 lukas staff 3276134 21 Apr 09:31 compact_monitor_2_1776753058588.mp4
-rw-r--r-- 1 lukas staff 3189679 21 Apr 09:36 compact_monitor_2_1776753366025.mp4
-rw-r--r-- 1 lukas staff 4385210 21 Apr 09:41 compact_monitor_2_1776753673600.mp4
-rw-r--r-- 1 lukas staff 1501936 21 Apr 09:46 compact_monitor_2_1776753985751.mp4
-rw-r--r-- 1 lukas staff 1372602 21 Apr 09:51 compact_monitor_2_1776754291836.mp4
-rw-r--r-- 1 lukas staff 2000636 21 Apr 09:56 compact_monitor_2_1776754601162.mp4
-rw-r--r-- 1 lukas staff 2849997 21 Apr 10:01 compact_monitor_2_1776754909445.mp4
-rw-r--r-- 1 lukas staff 2654363 21 Apr 10:07 compact_monitor_2_1776755219231.mp4
-rw-r--r-- 1 lukas staff 2557181 21 Apr 10:12 compact_monitor_2_1776755525397.mp4
-rw-r--r-- 1 lukas staff 2261085 21 Apr 10:17 compact_monitor_2_1776755834563.mp4
-rw-r--r-- 1 lukas staff 5251119 21 Apr 10:22 compact_monitor_2_1776756143688.mp4
-rw-r--r-- 1 lukas staff 4849466 21 Apr 10:27 compact_monitor_2_1776756452946.mp4
-rw-r--r-- 1 lukas staff 7568584 21 Apr 10:32 compact_monitor_2_1776756760717.mp4
-rw-r--r-- 1 lukas staff 1777476 21 Apr 10:37 compact_monitor_2_1776757068551.mp4
-rw-r--r-- 1 lukas staff 1050187 21 Apr 10:42 compact_monitor_2_1776757372851.mp4
-rw-r--r-- 1 lukas staff 2443492 21 Apr 10:48 compact_monitor_2_1776757678198.mp4
-rw-r--r-- 1 lukas staff 2203759 21 Apr 10:53 compact_monitor_2_1776757984610.mp4
-rw-r--r-- 1 lukas staff 705421 21 Apr 10:58 compact_monitor_2_1776758295263.mp4
-rw-r--r-- 1 lukas staff 2164798 21 Apr 11:03 compact_monitor_2_1776758602089.mp4
-rw-r--r-- 1 lukas staff 5646225 21 Apr 11:08 compact_monitor_2_1776758914322.mp4
-rw-r--r-- 1 lukas staff 176405 21 Apr 11:08 compact_monitor_2_1776758920570.mp4
-rw-r--r-- 1 lukas staff 3055641 21 Apr 11:13 compact_monitor_2_1776759228080.mp4
-rw-r--r-- 1 lukas staff 5083148 21 Apr 11:19 compact_monitor_2_1776759535311.mp4
-rw-r--r-- 1 lukas staff 3249048 21 Apr 11:24 compact_monitor_2_1776759845538.mp4
-rw-r--r-- 1 lukas staff 412007 21 Apr 11:29 compact_monitor_2_1776760151136.mp4
-rw-r--r-- 1 lukas staff 1751151 21 Apr 11:34 compact_monitor_2_1776760456599.mp4
-rw-r--r-- 1 lukas staff 3456190 21 Apr 11:39 compact_monitor_2_1776760762300.mp4
-rw-r--r-- 1 lukas staff 3658014 21 Apr 11:44 compact_monitor_2_1776761070425.mp4
-rw-r--r-- 1 lukas staff 3206849 21 Apr 11:49 compact_monitor_2_1776761377421.mp4
-rw-r--r-- 1 lukas staff 3910927 21 Apr 11:54 compact_monitor_2_1776761681410.mp4
-rw-r--r-- 1 lukas staff 3953889 21 Apr 11:59 compact_monitor_2_1776761988171.mp4
-rw-r--r-- 1 lukas staff 861781 21 Apr 12:04 compact_monitor_2_1776762296552.mp4
-rw-r--r-- 1 lukas staff 1899936 21 Apr 12:10 compact_monitor_2_1776762601415.mp4
-rw-r--r-- 1 lukas staff 2512201 21 Apr 12:15 compact_monitor_2_1776762906487.mp4
-rw-r--r-- 1 lukas staff 1648105 21 Apr 12:20 compact_monitor_2_1776763210990.mp4
-rw-r--r-- 1 lukas staff 2146903 21 Apr 12:25 compact_monitor_2_1776763514151.mp4
-rw-r--r-- 1 lukas staff 2493928 21 Apr 12:30 compact_monitor_2_1776763823078.mp4
-rw-r--r-- 1 lukas staff 1036980 21 Apr 12:35 compact_monitor_2_1776764128064.mp4
-rw-r--r-- 1 lukas staff 1843291 21 Apr 12:40 compact_monitor_2_1776764432450.mp4
-rw-r--r-- 1 lukas staff 1332887 21 Apr 12:45 compact_monitor_2_1776764735029.mp4
-rw-r--r-- 1 lukas staff 2194246 21 Apr 12:50 compact_monitor_2_1776765037907.mp4
-rw-r--r-- 1 lukas staff 685377 21 Apr 12:55 compact_monitor_2_1776765345140.mp4
-rw-r--r-- 1 lukas staff 882308 21 Apr 13:00 compact_monitor_2_1776765647622.mp4
-rw-r--r-- 1 lukas staff 2144425 21 Apr 13:05 compact_monitor_2_1776765955945.mp4
-rw-r--r-- 1 lukas staff 1720705 21 Apr 13:11 compact_monitor_2_1776766260963.mp4
-rw-r--r-- 1 lukas staff 2881255 21 Apr 13:16 compact_monitor_2_1776766567612.mp4
-rw-r--r-- 1 lukas staff 1981148 21 Apr 13:21 compact_monitor_2_1776766872346.mp4
-rw-r--r-- 1 lukas staff 1849577 21 Apr 13:26 compact_monitor_2_1776767175783.mp4
-rw-r--r-- 1 lukas staff 2268817 21 Apr 13:31 compact_monitor_2_1776767479808.mp4
-rw-r--r-- 1 lukas staff 3217992 21 Apr 13:40 compact_monitor_2_1776767999099.mp4
-rw-r--r-- 1 lukas staff 233767 21 Apr 13:45 compact_monitor_2_1776768302941.mp4
-rw-r--r-- 1 lukas staff 326458 21 Apr 13:50 compact_monitor_2_1776768606665.mp4
-rw-r--r-- 1 lukas staff 753941 21 Apr 13:55 compact_monitor_2_1776768910508.mp4
-rw-r--r-- 1 lukas staff 1610278 21 Apr 14:00 compact_monitor_2_1776769215484.mp4
-rw-r--r-- 1 lukas staff 1650957 21 Apr 14:05 compact_monitor_2_1776769522225.mp4
-rw-r--r-- 1 lukas staff 2146659 21 Apr 14:10 compact_monitor_2_1776769829535.mp4
-rw-r--r-- 1 lukas staff 2601207 21 Apr 14:15 compact_monitor_2_1776770136633.mp4
-rw-r--r-- 1 lukas staff 824666 21 Apr 14:20 compact_monitor_2_1776770441822.mp4
-rw-r--r-- 1 lukas staff 2703967 21 Apr 14:25 compact_monitor_2_1776770747214.mp4
-rw-r--r-- 1 lukas staff 2321658 21 Apr 14:30 compact_monitor_2_1776771052932.mp4
-rw-r--r-- 1 lukas staff 1461253 21 Apr 14:36 compact_monitor_2_1776771362402.mp4
-rw-r--r-- 1 lukas staff 1437234 21 Apr 14:41 compact_monitor_2_1776771667446.mp4
-rw-r--r-- 1 lukas staff 987598 21 Apr 14:46 compact_monitor_2_1776771978048.mp4
-rw-r--r-- 1 lukas staff 3317652 21 Apr 14:51 compact_monitor_2_1776772287751.mp4
-rw-r--r-- 1 lukas staff 2270897 21 Apr 14:56 compact_monitor_2_1776772597109.mp4
-rw-r--r-- 1 lukas staff 2751238 21 Apr 15:01 compact_monitor_2_1776772910495.mp4
-rw-r--r-- 1 lukas staff 3119002 21 Apr 15:07 compact_monitor_2_1776773221603.mp4
-rw-r--r-- 1 lukas staff 1607530 21 Apr 15:12 compact_monitor_2_1776773528294.mp4
-rw-r--r-- 1 lukas staff 907723 21 Apr 15:17 compact_monitor_2_1776773837589.mp4
-rw-r--r-- 1 lukas staff 1386365 21 Apr 15:22 compact_monitor_2_1776774141369.mp4
-rw-r--r-- 1 lukas staff 2111486 21 Apr 15:27 compact_monitor_2_1776774448810.mp4
-rw-r--r-- 1 lukas staff 2258968 21 Apr 15:32 compact_monitor_2_1776774759155.mp4
-rw-r--r-- 1 lukas staff 1544108 21 Apr 15:37 compact_monitor_2_1776775067064.mp4
-rw-r--r-- 1 lukas staff 1433287 21 Apr 15:43 compact_monitor_2_1776775380397.mp4
-rw-r--r-- 1 lukas staff 1984377 21 Apr 15:48 compact_monitor_2_1776775692870.mp4
-rw-r--r-- 1 lukas staff 2617661 21 Apr 15:53 compact_monitor_2_1776775998384.mp4
-rw-r--r-- 1 lukas staff 2791654 21 Apr 15:58 compact_monitor_2_1776776307754.mp4
-rw-r--r-- 1 lukas staff 2433361 21 Apr 16:03 compact_monitor_2_1776776618393.mp4
-rw-r--r-- 1 lukas staff 3703100 21 Apr 16:08 compact_monitor_2_1776776931489.mp4
-rw-r--r-- 1 lukas staff 2474041 21 Apr 16:14 compact_monitor_2_1776777245751.mp4
-rw-r--r-- 1 lukas staff 2484853 21 Apr 16:19 compact_monitor_2_1776777555230.mp4
-rw-r--r-- 1 lukas staff 2062186 21 Apr 16:24 compact_monitor_2_1776777860560.mp4
-rw-r--r-- 1 lukas staff 2185453 21 Apr 16:29 compact_monitor_2_1776778167563.mp4
-rw-r--r-- 1 lukas staff 1177326 21 Apr 16:34 compact_monitor_2_1776778473232.mp4
-rw-r--r-- 1 lukas staff 1949139 21 Apr 16:39 compact_monitor_2_1776778779902.mp4
-rw-r--r-- 1 lukas staff 879195 21 Apr 16:44 compact_monitor_2_1776779086385.mp4
-rw-r--r-- 1 lukas staff 1252502 21 Apr 16:49 compact_monitor_2_1776779394675.mp4
-rw-r--r-- 1 lukas staff 2773673 21 Apr 16:55 compact_monitor_2_1776779700999.mp4
-rw-r--r-- 1 lukas staff 481976 21 Apr 17:28 compact_monitor_2_1776781697113.mp4
-rw-r--r-- 1 lukas staff 209802 21 Apr 17:38 compact_monitor_2_1776782304722.mp4
-rw-r--r-- 1 lukas staff 533030 21 Apr 17:43 compact_monitor_2_1776782612516.mp4
-rw-r--r-- 1 lukas staff 2066772 21 Apr 17:48 compact_monitor_2_1776782921485.mp4
-rw-r--r-- 1 lukas staff 2700050 21 Apr 17:53 compact_monitor_2_1776783230415.mp4
-rw-r--r-- 1 lukas staff 4246256 21 Apr 17:59 compact_monitor_2_1776783541082.mp4
-rw-r--r-- 1 lukas staff 2226648 21 Apr 18:04 compact_monitor_2_1776783852985.mp4
-rw-r--r-- 1 lukas staff 1964906 21 Apr 18:09 compact_monitor_2_1776784169011.mp4
-rw-r--r-- 1 lukas staff 2762600 21 Apr 18:14 compact_monitor_2_1776784488669.mp4
-rw-r--r-- 1 lukas staff 2565519 21 Apr 18:20 compact_monitor_2_1776784802053.mp4
-rw-r--r-- 1 lukas staff 3908397 21 Apr 18:25 compact_monitor_2_1776785112030.mp4
-rw-r--r-- 1 lukas staff 2820230 21 Apr 18:30 compact_monitor_2_1776785425843.mp4
-rw-r--r-- 1 lukas staff 3798324 21 Apr 18:35 compact_monitor_2_1776785731509.mp4
-rw-r--r-- 1 lukas staff 5973589 21 Apr 18:40 compact_monitor_2_1776786042237.mp4
-rw-r--r-- 1 lukas staff 696810 21 Apr 18:40 compact_monitor_2_1776786048297.mp4
-rw-r--r-- 1 lukas staff 3411653 21 Apr 18:46 compact_monitor_2_1776786358293.mp4
-rw-r--r-- 1 lukas staff 1900088 21 Apr 18:51 compact_monitor_2_1776786667842.mp4
-rw-r--r-- 1 lukas staff 2960124 21 Apr 18:56 compact_monitor_2_1776786976688.mp4
-rw-r--r-- 1 lukas staff 3465743 21 Apr 19:01 compact_monitor_2_1776787292732.mp4
-rw-r--r-- 1 lukas staff 5410677 21 Apr 19:07 compact_monitor_2_1776787617984.mp4
-rw-r--r-- 1 lukas staff 3739198 21 Apr 19:12 compact_monitor_2_1776787934248.mp4
-rw-r--r-- 1 lukas staff 1383154 21 Apr 19:17 compact_monitor_2_1776788242752.mp4
-rw-r--r-- 1 lukas staff 1800231 21 Apr 19:22 compact_monitor_2_1776788547707.mp4
-rw-r--r-- 1 lukas staff 985288 21 Apr 19:27 compact_monitor_2_1776788859770.mp4
-rw-r--r-- 1 lukas staff 2005715 21 Apr 19:32 compact_monitor_2_1776789171257.mp4
-rw-r--r-- 1 lukas staff 546143...
|
74137
|
|
74140
|
NULL
|
0
|
2026-04-23T09:04:49.035193+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776935089035_m2.jpg...
|
iTerm2
|
screenpipe" — 95✕45
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
2026-04-23T09:13:09.380863Z INFO sck_rs::stream_m 2026-04-23T09:13:09.380863Z INFO sck_rs::stream_manager: invalidated persistent stream for display 2
2026-04-23T09:13:32.742255Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 3 excluded)
2026-04-23T09:14:01.764079Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4702465002163205464, trigger=click)
2026-04-23T09:14:04.223149Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4702465002163205464, trigger=visual_change)
2026-04-23T09:14:06.953796Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=147 elapsed=6.3719465s
2026-04-23T09:14:06.954006Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 147 eligible frames
2026-04-23T09:14:12.566935Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 70 frames, 10.3MB → 2.7MB (3.8x), 70 JPEGs deleted
2026-04-23T09:14:17.358704Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 75 frames, 9.6MB → 3.0MB (3.2x), 75 JPEGs deleted
2026-04-23T09:15:47.544198Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)
2026-04-23T09:15:50.997492Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=click)
2026-04-23T09:15:51.600725Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3660881845293713510, trigger=click)
2026-04-23T09:15:55.723800Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3660881845293713510, trigger=click)
2026-04-23T09:15:56.933987Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)
2026-04-23T09:15:59.012409Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)
2026-04-23T09:16:49.882963Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=visual_change)
2026-04-23T09:16:51.405936Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)
2026-04-23T09:16:52.823011Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)
2026-04-23T09:16:54.220304Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)
2026-04-23T09:16:54.887021Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3759145274440377841, trigger=click)
2026-04-23T09:16:58.589203Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3759145274440377841, trigger=visual_change)
2026-04-23T09:18:05.879649Z WARN screenpipe_db::db: wal checkpoint: busy (could not truncate), 5054 pages in WAL
2026-04-23T09:18:05.879619Z WARN sqlx::query: summary="PRAGMA wal_checkpoint(TRUNCATE)" db.statement="" rows_affected=0 rows_returned=1 elapsed=5.220339167s
2026-04-23T09:19:24.740122Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=7.381061833s
2026-04-23T09:19:24.740850Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-23T09:19:36.514406Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2079049776495123607, trigger=click)
2026-04-23T09:24:26.477446Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=11 elapsed=1.729545666s
2026-04-23T09:24:26.477540Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames
2026-04-23T09:24:27.316363Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 1.4MB → 1.4MB (1.0x), 5 JPEGs deleted
2026-04-23T09:24:27.966623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 0.6MB → 0.2MB (2.7x), 6 JPEGs deleted
2026-04-23T09:24:42.606557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:26:03.160247Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7786631749263421517, trigger=click)
2026-04-23T09:27:26.154494Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:27:34.433056Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:28:06.713361Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:28:33.527151Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5209591986308457575, trigger=click)
2026-04-23T09:28:34.249353Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5209591986308457575, trigger=click)
2026-04-23T09:28:36.237199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5209591986308457575, trigger=click)
2026-04-23T09:28:42.253183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8747303508868961364, trigger=click)
2026-04-23T09:28:48.282686Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:28:50.613134Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:28:51.314522Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:29:31.961577Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=67 elapsed=3.996031s
2026-04-23T09:29:31.961670Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 67 eligible frames
2026-04-23T09:29:34.332658Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 5.8MB → 2.1MB (2.8x), 29 JPEGs deleted
2026-04-23T09:29:38.223511Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 7.4MB → 3.8MB (2.0x), 36 JPEGs deleted
2026-04-23T09:30:34.230785Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:30:39.665086Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:30:40.299751Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:30:45.663893Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:30:51.622228Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:30:52.321014Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:31:15.021588Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:31:15.691601Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:31:17.946692Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:31:18.653547Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:17.960360Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:24.051490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:29.442560Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:30.131038Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:32.452540Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:32:36.585069Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:32:39.322258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:33:18.072421Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:33:18.766929Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:33:22.098409Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:33:22.782084Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:34:27.313290Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:34:38.542722Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 89 eligible frames
2026-04-23T09:34:41.684595Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 5.6MB → 0.7MB (7.5x), 38 JPEGs deleted
2026-04-23T09:34:44.933963Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 10.6MB → 3.8MB (2.8x), 49 JPEGs deleted
2026-04-23T09:37:57.963204Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:37:58.697604Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:38:02.124214Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:38:53.190171Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:38:59.279885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:39:02.308536Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:39:36.189861Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:39:49.122120Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=50 elapsed=4.188474542s
2026-04-23T09:39:49.122232Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 50 eligible frames
2026-04-23T09:39:51.115025Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 2.9MB → 0.3MB (9.4x), 24 JPEGs deleted
2026-04-23T09:39:53.096763Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 2.3MB (2.2x), 24 JPEGs deleted
2026-04-23T09:40:57.095660Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:40:58.430714Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:01.130926Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:01.840278Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:04.072034Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:09.252541Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:09.972092Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:12.313228Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:13.696141Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:15.723102Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:16.452657Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:42:46.382248Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:43:42.993741Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6469703639183038647, trigger=visual_change)
2026-04-23T09:44:17.245560Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7072623502562616708, trigger=visual_change)
2026-04-23T09:44:56.342637Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.944921084s
2026-04-23T09:44:56.343212Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-23T09:44:57.216675Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.2MB → 0.2MB (6.9x), 10 JPEGs deleted
2026-04-23T09:44:58.298212Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 2.1MB → 0.7MB (2.8x), 9 JPEGs deleted
2026-04-23T09:45:10.982752Z INFO screenpipe_engine::meeting_detector: meeting v2: Idle -> Confirming (app=Firefox, signals=2)
2026-04-23T09:45:16.376695Z INFO screenpipe_engine::meeting_detector: meeting v2: Confirming -> Active (app=Firefox, signals=2, browser=true)
2026-04-23T09:45:16.378791Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting started (id=9, app=Firefox, title=None)
2026-04-23T09:50:01.989691Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=23 elapsed=3.688976042s
2026-04-23T09:50:01.989962Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-23T09:50:03.098505Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 1.3MB → 0.2MB (7.4x), 11 JPEGs deleted
2026-04-23T09:50:04.627741Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.4MB → 0.8MB (3.1x), 10 JPEGs deleted
2026-04-23T09:50:07.629323Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4672421675042950776, trigger=click)
2026-04-23T09:52:11.400798Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:52:15.346773Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:52:18.174934Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:52:22.107623Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:52:32.020499Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:53:33.890239Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:53:35.304629Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:53:58.176084Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:54:14.248454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:54:18.287472Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:20.289467Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:24.904239Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:54:27.981243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:29.172367Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:30.192245Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:31.161165Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:55:11.821088Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=36 elapsed=7.192436875s
2026-04-23T09:55:11.821248Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 36 eligible frames
2026-04-23T09:55:13.532739Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 2.3MB → 0.5MB (5.0x), 19 JPEGs deleted
2026-04-23T09:55:16.625152Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 3.3MB → 1.4MB (2.4x), 15 JPEGs deleted
2026-04-23T09:56:01.584150Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:56:24.887186Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=click)
2026-04-23T09:56:32.005363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=visual_change)
2026-04-23T09:56:41.374227Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=visual_change)
2026-04-23T09:56:54.666839Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3078857793355977422, trigger=click)
2026-04-23T09:57:06.486753Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3593283938725328408, trigger=visual_change)
2026-04-23T09:57:14.384178Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5341343601501307187, trigger=visual_change)
2026-04-23T09:57:32.721765Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5341343601501307187, trigger=visual_change)
2026-04-23T09:59:03.111441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:59:18.292184Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:59:24.203906Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:59:28.763273Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:59:36.189282Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:00:16.817081Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 72 eligible frames
2026-04-23T10:00:21.637421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 7.5MB → 3.5MB (2.1x), 45 JPEGs deleted
2026-04-23T10:00:24.683587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 1.4MB (3.2x), 25 JPEGs deleted
2026-04-23T10:00:40.573974Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6464745230001326344, trigger=visual_change)
2026-04-23T10:02:52.495992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8171437999531431641, trigger=click)
2026-04-23T10:02:53.374393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8171437999531431641, trigger=click)
2026-04-23T10:03:37.373391Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1961095499263201650, trigger=click)
2026-04-23T10:04:58.338820Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T10:05:04.300061Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:05:10.114887Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:05:16.104422Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:05:20.754499Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:05:25.933831Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T10:05:30.717296Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=45 elapsed=5.043796209s
2026-04-23T10:05:30.717708Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 45 eligible frames
2026-04-23T10:05:33.129158Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 3.5MB → 1.3MB (2.8x), 21 JPEGs deleted
2026-04-23T10:05:35.719261Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 22 frames, 3.9MB → 1.6MB (2.5x), 22 JPEGs deleted
2026-04-23T10:06:54.427408Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:06:58.568476Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:07:35.294176Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T10:07:36.671700Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T10:07:46.281682Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T10:10:42.001975Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=40 elapsed=6.278440792s
2026-04-23T10:10:42.002064Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 40 eligible frames
2026-04-23T10:10:45.302375Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 3.7MB → 1.7MB (2.2x), 21 JPEGs deleted
2026-04-23T10:10:47.110830Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 4.4MB → 0.6MB (7.8x), 17 JPEGs deleted
2026-04-23T10:12:18.002465Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7144568667011834365, trigger=click)
2026-04-23T10:13:16.229637Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3362537224271461493, trigger=visual_change)
2026-04-23T10:13:20.127210Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3362537224271461493, trigger=visual_change)
2026-04-23T10:15:43.498044Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:15:46.873827Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:15:49.085137Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 32 eligible frames
2026-04-23T10:15:49.496235Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:15:50.519319Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 3.0MB → 0.9MB (3.3x), 17 JPEGs deleted
2026-04-23T10:15:51.657703Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.5MB (6.7x), 13 JPEGs deleted
2026-04-23T10:15:53.186964Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:15:55.743993Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:16:10.260016Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7730332891388508974, trigger=visual_change)
2026-04-23T10:16:19.398464Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:16:23.686689Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:16:27.662719Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:16:34.159786Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:17:00.356336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:17:22.481007Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3265723714621232205, trigger=visual_change)
2026-04-23T10:17:29.195939Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3265723714621232205, trigger=visual_change)
2026-04-23T10:17:47.685112Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:17:51.199158Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:17:58.199222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:18:06.327777Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:18:13.175283Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:18:39.739176Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:19:27.720698Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:19:31.148096Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:19:35.991910Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:19:56.855761Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:20:03.521058Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:20:10.069690Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:20:18.117006Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:20:54.473088Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=27 elapsed=2.810096209s
2026-04-23T10:20:54.473356Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 27 eligible frames
2026-04-23T10:20:56.920972Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 2.2MB → 0.9MB (2.6x), 14 JPEGs deleted
2026-04-23T10:20:58.678464Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 2.5MB → 0.8MB (3.0x), 11 JPEGs deleted
2026-04-23T10:23:10.727426Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3844820439140861821, trigger=visual_change)
2026-04-23T10:25:16.468416Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:25:32.507777Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:26:05.910946Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=33 elapsed=7.132200208s
2026-04-23T10:26:05.912569Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 33 eligible frames
2026-04-23T10:26:09.921886Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 3.0MB → 1.2MB (2.5x), 18 JPEGs deleted
2026-04-23T10:26:13.670275Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 2.6MB → 0.9MB (3.0x), 13 JPEGs deleted
2026-04-23T10:26:20.034712Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:26:22.436991Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:26:25.816727Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:27:46.056157Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1615606372458852745, trigger=click)
2026-04-23T10:28:05.117587Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:16.307383Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:22.684004Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:39.022530Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:44.950116Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:50.090325Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:52.144212Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:55.229550Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:28:59.714370Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:08.010841Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:11.877274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:15.515889Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:19.052095Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:21.109938Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:28.551159Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:29:30.947483Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:29:38.350095Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:29:51.477755Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:29:56.846851Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:02.584960Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:06.779849Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:18.311444Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:22.665242Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:29.333028Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:37.983139Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:48.829636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:30:59.474314Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3712905987097609358, trigger=visual_change)
2026-04-23T10:31:16.115641Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=34 elapsed=1.523826083s
2026-04-23T10:31:16.115774Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames
2026-04-23T10:31:19.674413Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 3.4MB → 2.0MB (1.7x), 19 JPEGs deleted
2026-04-23T10:31:20.281876Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:21.222414Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.8MB (4.5x), 13 JPEGs deleted
2026-04-23T10:31:30.589390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:31.649068Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:34.542890Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:35.913592Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:42.222598Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:46.314096Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:56.457995Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:32:02.440693Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:32:11.844302Z INFO screenpipe_engine::meeting_detector: meeting v2: Active -> Ending (no controls, app=Firefox, id=9, grace=300s)
2026-04-23T10:36:21.778297Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames
2026-04-23T10:36:23.408803Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 3.2MB → 1.6MB (2.1x), 19 JPEGs deleted
2026-04-23T10:36:24.427188Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.7MB (4.8x), 13 JPEGs deleted
2026-04-23T10:37:15.245266Z INFO screenpipe_engine::meeting_detector: meeting v2: Ending -> Idle (timeout=300s, app=Firefox, id=9)
2026-04-23T10:37:15.499978Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting ended (id=9)
2026-04-23T10:39:08.136849Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7072094695368023128, trigger=visual_change)
2026-04-23T10:40:10.173692Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5626541066854626210, trigger=visual_change)
2026-04-23T10:41:03.187335Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6908211675272154683, trigger=visual_change)
2026-04-23T10:41:27.801144Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=32 elapsed=3.230263875s
2026-04-23T10:41:27.801229Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 32 eligible frames
2026-04-23T10:41:30.240257Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 2.7MB → 1.1MB (2.4x), 17 JPEGs deleted
2026-04-23T10:41:31.414104Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.3MB → 1.1MB (3.1x), 13 JPEGs deleted
2026-04-23T10:43:59.795473Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)
2026-04-23T10:44:00.574274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:44:03.353223Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:44:06.333413Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:44:15.554031Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)
2026-04-23T10:44:16.272856Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:44:36.868831Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:44:52.509317Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:45:05.711036Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:45:15.149681Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)
2026-04-23T10:45:15.874930Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:45:18.722067Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:45:27.888960Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:45:32.102259Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:45:47.964284Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)
2026-04-23T10:45:57.352178Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-250182447663358748, trigger=click)
2026-04-23T10:45:58.059330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)
2026-04-23T10:46:00.786122Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-250182447663358748, trigger=click)
2026-04-23T10:46:01.515587Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)
2026-04-23T10:46:32.335524Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames
2026-04-23T10:46:33.454412Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 1.3MB → 0.3MB (4.3x), 15 JPEGs deleted
2026-04-23T10:46:35.185172Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 4.4MB → 0.8MB (5.1x), 17 JPEGs deleted
2026-04-23T10:49:51.424053Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:49:52.278022Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)
2026-04-23T10:50:06.945403Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:50:20.071306Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:50:27.322330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:50:28.025501Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping captur...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"2026-04-23T09:13:09.380863Z INFO sck_rs::stream_manager: invalidated persistent stream for display 2\n2026-04-23T09:13:32.742255Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 3 excluded)\n2026-04-23T09:14:01.764079Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4702465002163205464, trigger=click)\n2026-04-23T09:14:04.223149Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4702465002163205464, trigger=visual_change)\n2026-04-23T09:14:06.953796Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=147 elapsed=6.3719465s\n2026-04-23T09:14:06.954006Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 147 eligible frames\n2026-04-23T09:14:12.566935Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 70 frames, 10.3MB → 2.7MB (3.8x), 70 JPEGs deleted\n2026-04-23T09:14:17.358704Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 75 frames, 9.6MB → 3.0MB (3.2x), 75 JPEGs deleted\n2026-04-23T09:15:47.544198Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)\n2026-04-23T09:15:50.997492Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=click)\n2026-04-23T09:15:51.600725Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3660881845293713510, trigger=click)\n2026-04-23T09:15:55.723800Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3660881845293713510, trigger=click)\n2026-04-23T09:15:56.933987Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)\n2026-04-23T09:15:59.012409Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)\n2026-04-23T09:16:49.882963Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=visual_change)\n2026-04-23T09:16:51.405936Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)\n2026-04-23T09:16:52.823011Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)\n2026-04-23T09:16:54.220304Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)\n2026-04-23T09:16:54.887021Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3759145274440377841, trigger=click)\n2026-04-23T09:16:58.589203Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3759145274440377841, trigger=visual_change)\n2026-04-23T09:18:05.879649Z WARN screenpipe_db::db: wal checkpoint: busy (could not truncate), 5054 pages in WAL\n2026-04-23T09:18:05.879619Z WARN sqlx::query: summary=\"PRAGMA wal_checkpoint(TRUNCATE)\" db.statement=\"\" rows_affected=0 rows_returned=1 elapsed=5.220339167s\n2026-04-23T09:19:24.740122Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=2 elapsed=7.381061833s\n2026-04-23T09:19:24.740850Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames\n2026-04-23T09:19:36.514406Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2079049776495123607, trigger=click)\n2026-04-23T09:24:26.477446Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=11 elapsed=1.729545666s\n2026-04-23T09:24:26.477540Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames\n2026-04-23T09:24:27.316363Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 1.4MB → 1.4MB (1.0x), 5 JPEGs deleted\n2026-04-23T09:24:27.966623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 0.6MB → 0.2MB (2.7x), 6 JPEGs deleted\n2026-04-23T09:24:42.606557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:26:03.160247Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7786631749263421517, trigger=click)\n2026-04-23T09:27:26.154494Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:27:34.433056Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:28:06.713361Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:28:33.527151Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5209591986308457575, trigger=click)\n2026-04-23T09:28:34.249353Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5209591986308457575, trigger=click)\n2026-04-23T09:28:36.237199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5209591986308457575, trigger=click)\n2026-04-23T09:28:42.253183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8747303508868961364, trigger=click)\n2026-04-23T09:28:48.282686Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:28:50.613134Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:28:51.314522Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:29:31.961577Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=67 elapsed=3.996031s\n2026-04-23T09:29:31.961670Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 67 eligible frames\n2026-04-23T09:29:34.332658Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 5.8MB → 2.1MB (2.8x), 29 JPEGs deleted\n2026-04-23T09:29:38.223511Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 7.4MB → 3.8MB (2.0x), 36 JPEGs deleted\n2026-04-23T09:30:34.230785Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:30:39.665086Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:30:40.299751Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:30:45.663893Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:30:51.622228Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:30:52.321014Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:31:15.021588Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:31:15.691601Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:31:17.946692Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:31:18.653547Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:32:17.960360Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:32:24.051490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:32:29.442560Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:32:30.131038Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:32:32.452540Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:32:36.585069Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:32:39.322258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:33:18.072421Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:33:18.766929Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:33:22.098409Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:33:22.782084Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:34:27.313290Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:34:38.542722Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 89 eligible frames\n2026-04-23T09:34:41.684595Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 5.6MB → 0.7MB (7.5x), 38 JPEGs deleted\n2026-04-23T09:34:44.933963Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 10.6MB → 3.8MB (2.8x), 49 JPEGs deleted\n2026-04-23T09:37:57.963204Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:37:58.697604Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:38:02.124214Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:38:53.190171Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:38:59.279885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:39:02.308536Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:39:36.189861Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:39:49.122120Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=50 elapsed=4.188474542s\n2026-04-23T09:39:49.122232Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 50 eligible frames\n2026-04-23T09:39:51.115025Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 2.9MB → 0.3MB (9.4x), 24 JPEGs deleted\n2026-04-23T09:39:53.096763Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 2.3MB (2.2x), 24 JPEGs deleted\n2026-04-23T09:40:57.095660Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:40:58.430714Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:01.130926Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:01.840278Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:04.072034Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:09.252541Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:09.972092Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:12.313228Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:13.696141Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:15.723102Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:16.452657Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:42:46.382248Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:43:42.993741Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6469703639183038647, trigger=visual_change)\n2026-04-23T09:44:17.245560Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7072623502562616708, trigger=visual_change)\n2026-04-23T09:44:56.342637Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=21 elapsed=2.944921084s\n2026-04-23T09:44:56.343212Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames\n2026-04-23T09:44:57.216675Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.2MB → 0.2MB (6.9x), 10 JPEGs deleted\n2026-04-23T09:44:58.298212Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 2.1MB → 0.7MB (2.8x), 9 JPEGs deleted\n2026-04-23T09:45:10.982752Z INFO screenpipe_engine::meeting_detector: meeting v2: Idle -> Confirming (app=Firefox, signals=2)\n2026-04-23T09:45:16.376695Z INFO screenpipe_engine::meeting_detector: meeting v2: Confirming -> Active (app=Firefox, signals=2, browser=true)\n2026-04-23T09:45:16.378791Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting started (id=9, app=Firefox, title=None)\n2026-04-23T09:50:01.989691Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=23 elapsed=3.688976042s\n2026-04-23T09:50:01.989962Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames\n2026-04-23T09:50:03.098505Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 1.3MB → 0.2MB (7.4x), 11 JPEGs deleted\n2026-04-23T09:50:04.627741Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.4MB → 0.8MB (3.1x), 10 JPEGs deleted\n2026-04-23T09:50:07.629323Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4672421675042950776, trigger=click)\n2026-04-23T09:52:11.400798Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:52:15.346773Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:52:18.174934Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:52:22.107623Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:52:32.020499Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:53:33.890239Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:53:35.304629Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:53:58.176084Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:54:14.248454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:54:18.287472Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:54:20.289467Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:54:24.904239Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:54:27.981243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:54:29.172367Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:54:30.192245Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:54:31.161165Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:55:11.821088Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=36 elapsed=7.192436875s\n2026-04-23T09:55:11.821248Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 36 eligible frames\n2026-04-23T09:55:13.532739Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 2.3MB → 0.5MB (5.0x), 19 JPEGs deleted\n2026-04-23T09:55:16.625152Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 3.3MB → 1.4MB (2.4x), 15 JPEGs deleted\n2026-04-23T09:56:01.584150Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:56:24.887186Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=click)\n2026-04-23T09:56:32.005363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=visual_change)\n2026-04-23T09:56:41.374227Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=visual_change)\n2026-04-23T09:56:54.666839Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3078857793355977422, trigger=click)\n2026-04-23T09:57:06.486753Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3593283938725328408, trigger=visual_change)\n2026-04-23T09:57:14.384178Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5341343601501307187, trigger=visual_change)\n2026-04-23T09:57:32.721765Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5341343601501307187, trigger=visual_change)\n2026-04-23T09:59:03.111441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:59:18.292184Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:59:24.203906Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:59:28.763273Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:59:36.189282Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:00:16.817081Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 72 eligible frames\n2026-04-23T10:00:21.637421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 7.5MB → 3.5MB (2.1x), 45 JPEGs deleted\n2026-04-23T10:00:24.683587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 1.4MB (3.2x), 25 JPEGs deleted\n2026-04-23T10:00:40.573974Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6464745230001326344, trigger=visual_change)\n2026-04-23T10:02:52.495992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8171437999531431641, trigger=click)\n2026-04-23T10:02:53.374393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8171437999531431641, trigger=click)\n2026-04-23T10:03:37.373391Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1961095499263201650, trigger=click)\n2026-04-23T10:04:58.338820Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T10:05:04.300061Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:05:10.114887Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:05:16.104422Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:05:20.754499Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:05:25.933831Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T10:05:30.717296Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=45 elapsed=5.043796209s\n2026-04-23T10:05:30.717708Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 45 eligible frames\n2026-04-23T10:05:33.129158Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 3.5MB → 1.3MB (2.8x), 21 JPEGs deleted\n2026-04-23T10:05:35.719261Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 22 frames, 3.9MB → 1.6MB (2.5x), 22 JPEGs deleted\n2026-04-23T10:06:54.427408Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:06:58.568476Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:07:35.294176Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T10:07:36.671700Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T10:07:46.281682Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T10:10:42.001975Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=40 elapsed=6.278440792s\n2026-04-23T10:10:42.002064Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 40 eligible frames\n2026-04-23T10:10:45.302375Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 3.7MB → 1.7MB (2.2x), 21 JPEGs deleted\n2026-04-23T10:10:47.110830Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 4.4MB → 0.6MB (7.8x), 17 JPEGs deleted\n2026-04-23T10:12:18.002465Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7144568667011834365, trigger=click)\n2026-04-23T10:13:16.229637Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3362537224271461493, trigger=visual_change)\n2026-04-23T10:13:20.127210Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3362537224271461493, trigger=visual_change)\n2026-04-23T10:15:43.498044Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)\n2026-04-23T10:15:46.873827Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)\n2026-04-23T10:15:49.085137Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 32 eligible frames\n2026-04-23T10:15:49.496235Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)\n2026-04-23T10:15:50.519319Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 3.0MB → 0.9MB (3.3x), 17 JPEGs deleted\n2026-04-23T10:15:51.657703Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.5MB (6.7x), 13 JPEGs deleted\n2026-04-23T10:15:53.186964Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)\n2026-04-23T10:15:55.743993Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)\n2026-04-23T10:16:10.260016Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7730332891388508974, trigger=visual_change)\n2026-04-23T10:16:19.398464Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)\n2026-04-23T10:16:23.686689Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)\n2026-04-23T10:16:27.662719Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)\n2026-04-23T10:16:34.159786Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)\n2026-04-23T10:17:00.356336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)\n2026-04-23T10:17:22.481007Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3265723714621232205, trigger=visual_change)\n2026-04-23T10:17:29.195939Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3265723714621232205, trigger=visual_change)\n2026-04-23T10:17:47.685112Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:17:51.199158Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:17:58.199222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:18:06.327777Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:18:13.175283Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:18:39.739176Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:19:27.720698Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:19:31.148096Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:19:35.991910Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:19:56.855761Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:20:03.521058Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:20:10.069690Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:20:18.117006Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:20:54.473088Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=27 elapsed=2.810096209s\n2026-04-23T10:20:54.473356Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 27 eligible frames\n2026-04-23T10:20:56.920972Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 2.2MB → 0.9MB (2.6x), 14 JPEGs deleted\n2026-04-23T10:20:58.678464Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 2.5MB → 0.8MB (3.0x), 11 JPEGs deleted\n2026-04-23T10:23:10.727426Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3844820439140861821, trigger=visual_change)\n2026-04-23T10:25:16.468416Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:25:32.507777Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:26:05.910946Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=33 elapsed=7.132200208s\n2026-04-23T10:26:05.912569Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 33 eligible frames\n2026-04-23T10:26:09.921886Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 3.0MB → 1.2MB (2.5x), 18 JPEGs deleted\n2026-04-23T10:26:13.670275Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 2.6MB → 0.9MB (3.0x), 13 JPEGs deleted\n2026-04-23T10:26:20.034712Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:26:22.436991Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:26:25.816727Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:27:46.056157Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1615606372458852745, trigger=click)\n2026-04-23T10:28:05.117587Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:28:16.307383Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:28:22.684004Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:28:39.022530Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:28:44.950116Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:28:50.090325Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:28:52.144212Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:28:55.229550Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:28:59.714370Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:29:08.010841Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:29:11.877274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:29:15.515889Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:29:19.052095Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:29:21.109938Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:29:28.551159Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:29:30.947483Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:29:38.350095Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:29:51.477755Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:29:56.846851Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:30:02.584960Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:30:06.779849Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:30:18.311444Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:30:22.665242Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:30:29.333028Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:30:37.983139Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:30:48.829636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:30:59.474314Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3712905987097609358, trigger=visual_change)\n2026-04-23T10:31:16.115641Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=34 elapsed=1.523826083s\n2026-04-23T10:31:16.115774Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames\n2026-04-23T10:31:19.674413Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 3.4MB → 2.0MB (1.7x), 19 JPEGs deleted\n2026-04-23T10:31:20.281876Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:31:21.222414Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.8MB (4.5x), 13 JPEGs deleted\n2026-04-23T10:31:30.589390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:31:31.649068Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:31:34.542890Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:31:35.913592Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:31:42.222598Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:31:46.314096Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:31:56.457995Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:32:02.440693Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:32:11.844302Z INFO screenpipe_engine::meeting_detector: meeting v2: Active -> Ending (no controls, app=Firefox, id=9, grace=300s)\n2026-04-23T10:36:21.778297Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames\n2026-04-23T10:36:23.408803Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 3.2MB → 1.6MB (2.1x), 19 JPEGs deleted\n2026-04-23T10:36:24.427188Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.7MB (4.8x), 13 JPEGs deleted\n2026-04-23T10:37:15.245266Z INFO screenpipe_engine::meeting_detector: meeting v2: Ending -> Idle (timeout=300s, app=Firefox, id=9)\n2026-04-23T10:37:15.499978Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting ended (id=9)\n2026-04-23T10:39:08.136849Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7072094695368023128, trigger=visual_change)\n2026-04-23T10:40:10.173692Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5626541066854626210, trigger=visual_change)\n2026-04-23T10:41:03.187335Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6908211675272154683, trigger=visual_change)\n2026-04-23T10:41:27.801144Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=32 elapsed=3.230263875s\n2026-04-23T10:41:27.801229Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 32 eligible frames\n2026-04-23T10:41:30.240257Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 2.7MB → 1.1MB (2.4x), 17 JPEGs deleted\n2026-04-23T10:41:31.414104Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.3MB → 1.1MB (3.1x), 13 JPEGs deleted\n2026-04-23T10:43:59.795473Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:44:00.574274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:44:03.353223Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:44:06.333413Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:44:15.554031Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:44:16.272856Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:44:36.868831Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:44:52.509317Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:45:05.711036Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:45:15.149681Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:45:15.874930Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:45:18.722067Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:45:27.888960Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:45:32.102259Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:45:47.964284Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)\n2026-04-23T10:45:57.352178Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-250182447663358748, trigger=click)\n2026-04-23T10:45:58.059330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)\n2026-04-23T10:46:00.786122Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-250182447663358748, trigger=click)\n2026-04-23T10:46:01.515587Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)\n2026-04-23T10:46:32.335524Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames\n2026-04-23T10:46:33.454412Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 1.3MB → 0.3MB (4.3x), 15 JPEGs deleted\n2026-04-23T10:46:35.185172Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 4.4MB → 0.8MB (5.1x), 17 JPEGs deleted\n2026-04-23T10:49:51.424053Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:49:52.278022Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:06.945403Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:50:20.071306Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:27.322330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:28.025501Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:31.361324Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:32.067598Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:43.957181Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:49.116814Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:49.902205Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:52.787071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:55.600444Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:56.613411Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:51:01.606653Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:51:36.294219Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames\n2026-04-23T10:51:37.139478Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 0.9MB → 0.1MB (8.1x), 10 JPEGs deleted\n2026-04-23T10:51:37.977586Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 2.4MB → 0.4MB (5.6x), 9 JPEGs deleted\n2026-04-23T10:53:10.914762Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5094416737894467752, trigger=click)\n2026-04-23T10:53:46.764312Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5492569374489755072, trigger=click)\n2026-04-23T10:53:47.493963Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5492569374489755072, trigger=click)\n2026-04-23T10:55:50.508246Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-9185031867676948653, trigger=click)\n2026-04-23T10:56:18.190631Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8265869039182172474, trigger=visual_change)\n2026-04-23T10:56:21.391253Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8265869039182172474, trigger=visual_change)\n2026-04-23T10:56:44.441379Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=33 elapsed=6.451315834s\n2026-04-23T10:56:44.441894Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 33 eligible frames\n2026-04-23T10:56:46.435494Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 1.6MB → 0.1MB (14.8x), 17 JPEGs deleted\n2026-04-23T10:56:47.618773Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 3.5MB → 1.0MB (3.6x), 14 JPEGs deleted\n2026-04-23T10:56:48.429385Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3009288458992913716, trigger=visual_change)\n2026-04-23T10:56:55.377427Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3009288458992913716, trigger=visual_change)\n2026-04-23T10:56:58.331194Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3009288458992913716, trigger=visual_change)\n2026-04-23T10:57:31.580363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=164293696523982731, trigger=visual_change)\n2026-04-23T10:57:37.142409Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=164293696523982731, trigger=visual_change)\n2026-04-23T11:01:54.879662Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=43 elapsed=6.651773875s\n2026-04-23T11:01:54.879780Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 43 eligible frames\n2026-04-23T11:01:56.181324Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 20 frames, 2.1MB → 0.5MB (4.0x), 20 JPEGs deleted\n2026-04-23T11:01:57.821885Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 4.6MB → 1.2MB (4.0x), 21 JPEGs deleted\n2026-04-23T11:05:34.805879Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4133405882569027308, trigger=click)\n2026-04-23T11:05:42.692507Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-792819002159032212, trigger=click)\n2026-04-23T11:05:45.195836Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-792819002159032212, trigger=click)\n2026-04-23T11:06:58.003581Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 56 eligible frames\n2026-04-23T11:07:01.998524Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 4.2MB → 2.0MB (2.1x), 27 JPEGs deleted\n2026-04-23T11:07:04.632834Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.1MB → 1.2MB (5.2x), 27 JPEGs deleted\n2026-04-23T11:08:29.041425Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:26.078346Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:26.826746Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:29.736291Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:30.502898Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:33.284639Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:34.732219Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:36.846175Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:47.161668Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=visual_change)\n2026-04-23T11:11:51.463126Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:55.190182Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:58.250612Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:58.984195Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=811120582590877593, trigger=click)\n2026-04-23T11:12:07.186907Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8190951420737299430, trigger=visual_change)\n2026-04-23T11:12:10.805150Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=28 elapsed=6.153365375s\n2026-04-23T11:12:10.806451Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 28 eligible frames\n2026-04-23T11:12:12.869531Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.7MB → 1.2MB (2.2x), 16 JPEGs deleted\n2026-04-23T11:12:14.462884Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.2MB → 0.4MB (5.9x), 10 JPEGs deleted\n2026-04-23T11:14:59.283313Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-962688942467523245, trigger=click)\n2026-04-23T11:14:59.996111Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-962688942467523245, trigger=click)\n2026-04-23T11:15:52.562512Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4085483410823602662, trigger=click)\n2026-04-23T11:16:10.556556Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-680298114769977367, trigger=click)\n2026-04-23T11:16:44.987984Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-781142721963066587, trigger=click)\n2026-04-23T11:17:15.717626Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=34 elapsed=1.192290209s\n2026-04-23T11:17:15.717877Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames\n2026-04-23T11:17:16.801524Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 1.7MB → 0.3MB (6.4x), 14 JPEGs deleted\n2026-04-23T11:17:18.950114Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 4.0MB → 0.9MB (4.3x), 18 JPEGs deleted\n2026-04-23T11:22:21.353046Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=27 elapsed=2.391216916s\n2026-04-23T11:22:21.353161Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 27 eligible frames\n2026-04-23T11:22:22.204810Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 1.6MB → 0.2MB (7.8x), 13 JPEGs deleted\n2026-04-23T11:22:23.352237Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 2.7MB → 1.1MB (2.5x), 12 JPEGs deleted\n2026-04-23T11:22:51.641783Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5591071779487381740, trigger=visual_change)\n2026-04-23T11:24:42.126313Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3622496340535697523, trigger=click)\n2026-04-23T11:27:16.328827Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3622496340535697523, trigger=click)\n2026-04-23T11:27:17.062717Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3622496340535697523, trigger=click)\n2026-04-23T11:27:20.131333Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3622496340535697523, trigger=visual_change)\n2026-04-23T11:27:27.263965Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=32 elapsed=2.915186083s\n2026-04-23T11:27:27.264345Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 32 eligible frames\n2026-04-23T11:27:29.317049Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.1MB → 0.6MB (3.5x), 16 JPEGs deleted\n2026-04-23T11:27:31.637712Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 3.0MB → 0.8MB (3.8x), 14 JPEGs deleted\n2026-04-23T11:29:03.406489Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1491366973306919482, trigger=visual_change)\n2026-04-23T11:29:37.371120Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1491366973306919482, trigger=click)\n2026-04-23T11:29:38.828999Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1491366973306919482, trigger=click)\n2026-04-23T11:30:05.594417Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7420299184765789117, trigger=click)\n2026-04-23T11:30:10.415695Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7420299184765789117, trigger=click)\n2026-04-23T11:30:37.438406Z INFO screenpipe_engine::meeting_detector: meeting v2: Idle -> Confirming (app=Firefox, signals=2)\n2026-04-23T11:30:47.134756Z INFO screenpipe_engine::meeting_detector: meeting v2: Confirming -> Active (app=Firefox, signals=2, browser=true)\n2026-04-23T11:30:47.150842Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting started (id=10, app=Firefox, title=None)\n2026-04-23T11:32:52.795697Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=click, monitor=1) — DB pool may be saturated\n2026-04-23T11:32:54.063047Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=22 elapsed=22.405129875s\n2026-04-23T11:32:54.065127Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 22 eligible frames\n2026-04-23T11:32:56.659956Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.7MB → 0.3MB (5.8x), 10 JPEGs deleted\n2026-04-23T11:32:58.390326Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.1MB → 0.4MB (5.1x), 10 JPEGs deleted\n2026-04-23T11:32:58.454323Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=click, monitor=2) — DB pool may be saturated\n2026-04-23T11:33:03.630685Z INFO screenpipe_engine::event_driven_capture: monitor 2 capture recovered after 1 consecutive errors\n2026-04-23T11:33:03.698376Z INFO screenpipe_engine::event_driven_capture: monitor 1 capture recovered after 1 consecutive errors\n2026-04-23T11:34:08.146813Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=visual_change, monitor=1) — DB pool may be saturated\n2026-04-23T11:34:19.115606Z INFO screenpipe_engine::event_driven_capture: monitor 1 capture recovered after 1 consecutive errors\n2026-04-23T11:38:06.413998Z WARN sqlx::query: summary=\"PRAGMA wal_checkpoint(TRUNCATE)\" db.statement=\"\" rows_affected=0 rows_returned=1 elapsed=5.320189792s\n2026-04-23T11:38:06.417026Z WARN screenpipe_db::db: wal checkpoint: busy (could not truncate), 1136 pages in WAL\n2026-04-23T11:38:06.480369Z WARN sqlx::query: summary=\"BEGIN IMMEDIATE\" db.statement=\"\" rows_affected=1 rows_returned=0 elapsed=3.645234084s\n2026-04-23T11:38:12.229580Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=26 elapsed=13.80812125s\n2026-04-23T11:38:12.232573Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 26 eligible frames\n2026-04-23T11:38:15.382662Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 1.9MB → 0.5MB (3.8x), 11 JPEGs deleted\n2026-04-23T11:38:16.795794Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=visual_change, monitor=1) — DB pool may be saturated\n2026-04-23T11:38:19.817599Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 2.7MB → 0.6MB (4.2x), 13 JPEGs deleted\n2026-04-23T11:38:24.993308Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=visual_change, monitor=2) — DB pool may be saturated\n2026-04-23T11:38:30.141938Z INFO screenpipe_engine::event_driven_capture: monitor 1 capture recovered after 1 consecutive errors\n2026-04-23T11:38:34.776814Z INFO screenpipe_engine::event_driven_capture: monitor 2 capture recovered after 1 consecutive errors\n2026-04-23T11:40:55.703155Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5781407336396073109, trigger=visual_change)\n2026-04-23T11:41:02.662314Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5781407336396073109, trigger=visual_change)\n2026-04-23T11:41:09.390136Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5781407336396073109, trigger=visual_change)\n2026-04-23T11:41:16.161715Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5781407336396073109, trigger=visual_change)\n2026-04-23T11:41:37.205648Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5781407336396073109, trigger=visual_change)\n2026-04-23T11:42:04.257036Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5781407336396073109, trigger=visual_change)\n2026-04-23T11:42:21.214633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6679997250984875896, trigger=visual_change)\n2026-04-23T11:42:24.525053Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6679997250984875896, trigger=visual_change)\n2026-04-23T11:42:29.877589Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6679997250984875896, trigger=visual_change)\n2026-04-23T11:42:33.802238Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6679997250984875896, trigger=visual_change)\n2026-04-23T11:42:36.923509Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6679997250984875896, trigger=visual_change)\n2026-04-23T11:42:57.455576Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6679997250984875896, trigger=visual_change)\n2026-04-23T11:43:12.031547Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=951548071599591969, trigger=visual_change)\n2026-04-23T11:43:18.874182Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=951548071599591969, trigger=visual_change)\n2026-04-23T11:43:24.247849Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=951548071599591969, trigger=visual_change)\n2026-04-23T11:43:26.259182Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=49 elapsed=6.405864s\n2026-04-23T11:43:26.263056Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 49 eligible frames\n2026-04-23T11:43:32.316690Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 23 frames, 3.7MB → 1.8MB (2.0x), 23 JPEGs deleted\n2026-04-23T11:43:34.974978Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=951548071599591969, trigger=visual_change)\n2026-04-23T11:43:36.047883Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.3MB → 1.5MB (2.9x), 24 JPEGs deleted\n2026-04-23T11:43:49.116309Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=951548071599591969, trigger=visual_change)\n2026-04-23T11:43:52.940018Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=951548071599591969, trigger=visual_change)\n2026-04-23T11:43:56.539135Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=951548071599591969, trigger=visual_change)\n2026-04-23T11:44:11.233290Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4079677798565982376, trigger=visual_change)\n2026-04-23T11:45:03.923694Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=click, monitor=2) — DB pool may be saturated\n2026-04-23T11:45:18.638512Z INFO screenpipe_engine::event_driven_capture: monitor 2 capture recovered after 1 consecutive errors\n2026-04-23T11:45:27.824824Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=click, monitor=1) — DB pool may be saturated\n2026-04-23T11:45:41.576372Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=click, monitor=2) — DB pool may be saturated\n2026-04-23T11:45:44.291896Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=click, monitor=1) — DB pool may be saturated\n2026-04-23T11:46:03.257280Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=click, monitor=1) — DB pool may be saturated\n2026-04-23T11:46:12.724398Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=visual_change, monitor=2) — DB pool may be saturated\n2026-04-23T11:46:22.727197Z INFO screenpipe_engine::event_driven_capture: monitor 1 capture recovered after 3 consecutive errors\n2026-04-23T11:46:24.228006Z INFO screenpipe_engine::event_driven_capture: monitor 2 capture recovered after 2 consecutive errors\n2026-04-23T11:46:40.390580Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7643951286516936585, trigger=visual_change)\n2026-04-23T11:46:49.248747Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7643951286516936585, trigger=visual_change)\n2026-04-23T11:46:55.471031Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7643951286516936585, trigger=visual_change)\n2026-04-23T11:47:02.336575Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7643951286516936585, trigger=visual_change)\n2026-04-23T11:48:17.252755Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7643951286516936585, trigger=visual_change)\n2026-04-23T11:48:25.013997Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7643951286516936585, trigger=visual_change)\n2026-04-23T11:48:53.059242Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=56 elapsed=13.220216708s\n2026-04-23T11:48:53.065643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 56 eligible frames\n2026-04-23T11:48:58.527594Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 30 frames, 4.7MB → 2.2MB (2.1x), 30 JPEGs deleted\n2026-04-23T11:49:05.857012Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.3MB → 1.6MB (2.7x), 24 JPEGs deleted\n2026-04-23T11:49:06.658338Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5995459936453258264, trigger=visual_change)\n2026-04-23T11:49:28.247468Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5995459936453258264, trigger=visual_change)\n2026-04-23T11:49:46.108336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4001297392414942723, trigger=visual_change)\n2026-04-23T11:49:53.084297Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4001297392414942723, trigger=visual_change)\n2026-04-23T11:49:56.028797Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4001297392414942723, trigger=click)\n2026-04-23T11:50:37.287127Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2527600923706712259, trigger=visual_change)\n2026-04-23T11:51:12.946650Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1489108089542937642, trigger=visual_change)\n2026-04-23T11:51:19.338386Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1489108089542937642, trigger=visual_change)\n2026-04-23T11:52:16.352383Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8163356110886780433, trigger=visual_change)\n2026-04-23T11:53:55.890568Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5293025605401136867, trigger=click)\n2026-04-23T11:54:09.640558Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=41 elapsed=3.460436583s\n2026-04-23T11:54:09.640693Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 41 eligible frames\n2026-04-23T11:54:13.152878Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 22 frames, 3.3MB → 1.5MB (2.2x), 22 JPEGs deleted\n2026-04-23T11:54:15.204535Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 3.9MB → 1.2MB (3.4x), 17 JPEGs deleted\n2026-04-23T11:58:11.876342Z INFO screenpipe_engine::meeting_detector: meeting v2: Active -> Ending (no controls, app=Firefox, id=10, grace=300s)\n2026-04-23T11:59:15.385310Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 25 eligible frames\n2026-04-23T11:59:16.921656Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 1.6MB → 0.6MB (2.8x), 13 JPEGs deleted\n2026-04-23T11:59:18.047335Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.2MB → 1.0MB (2.3x), 10 JPEGs deleted\n2026-04-23T12:01:17.114786Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7823854956395915880, trigger=click)\n/Volumes/Work/2026/User\\ Pilot\\ introduction\\ Adi\\ 2026-04-23.mp4 2026-04-23T12:02:09.213929Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4997183725580178172, trigger=visual_change)\n2026-04-23T12:02:12.305485Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4997183725580178172, trigger=visual_change)\n2026-04-23T12:02:22.392607Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4428370940474457947, trigger=visual_change)\n2026-04-23T12:02:23.534043Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4428370940474457947, trigger=click)\n2026-04-23T12:02:25.338561Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4428370940474457947, trigger=click)\n2026-04-23T12:02:26.896633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4428370940474457947, trigger=click)\n2026-04-23T12:03:14.422791Z INFO screenpipe_engine::meeting_detector: meeting v2: Ending -> Idle (timeout=300s, app=Firefox, id=10)\n2026-04-23T12:03:14.697666Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting ended (id=10)\n2026-04-23T12:04:18.652471Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 62 eligible frames\n2026-04-23T12:04:22.291047Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 4.6MB → 1.6MB (3.0x), 36 JPEGs deleted\n2026-04-23T12:04:25.831665Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.8MB → 1.1MB (4.3x), 24 JPEGs deleted\n2026-04-23T12:04:36.186162Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8094579906910625439, trigger=click)","depth":4,"value":"2026-04-23T09:13:09.380863Z INFO sck_rs::stream_manager: invalidated persistent stream for display 2\n2026-04-23T09:13:32.742255Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 3 excluded)\n2026-04-23T09:14:01.764079Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4702465002163205464, trigger=click)\n2026-04-23T09:14:04.223149Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4702465002163205464, trigger=visual_change)\n2026-04-23T09:14:06.953796Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=147 elapsed=6.3719465s\n2026-04-23T09:14:06.954006Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 147 eligible frames\n2026-04-23T09:14:12.566935Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 70 frames, 10.3MB → 2.7MB (3.8x), 70 JPEGs deleted\n2026-04-23T09:14:17.358704Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 75 frames, 9.6MB → 3.0MB (3.2x), 75 JPEGs deleted\n2026-04-23T09:15:47.544198Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)\n2026-04-23T09:15:50.997492Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=click)\n2026-04-23T09:15:51.600725Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3660881845293713510, trigger=click)\n2026-04-23T09:15:55.723800Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3660881845293713510, trigger=click)\n2026-04-23T09:15:56.933987Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)\n2026-04-23T09:15:59.012409Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)\n2026-04-23T09:16:49.882963Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=visual_change)\n2026-04-23T09:16:51.405936Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)\n2026-04-23T09:16:52.823011Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)\n2026-04-23T09:16:54.220304Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)\n2026-04-23T09:16:54.887021Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3759145274440377841, trigger=click)\n2026-04-23T09:16:58.589203Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3759145274440377841, trigger=visual_change)\n2026-04-23T09:18:05.879649Z WARN screenpipe_db::db: wal checkpoint: busy (could not truncate), 5054 pages in WAL\n2026-04-23T09:18:05.879619Z WARN sqlx::query: summary=\"PRAGMA wal_checkpoint(TRUNCATE)\" db.statement=\"\" rows_affected=0 rows_returned=1 elapsed=5.220339167s\n2026-04-23T09:19:24.740122Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=2 elapsed=7.381061833s\n2026-04-23T09:19:24.740850Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames\n2026-04-23T09:19:36.514406Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2079049776495123607, trigger=click)\n2026-04-23T09:24:26.477446Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=11 elapsed=1.729545666s\n2026-04-23T09:24:26.477540Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames\n2026-04-23T09:24:27.316363Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 1.4MB → 1.4MB (1.0x), 5 JPEGs deleted\n2026-04-23T09:24:27.966623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 0.6MB → 0.2MB (2.7x), 6 JPEGs deleted\n2026-04-23T09:24:42.606557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:26:03.160247Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7786631749263421517, trigger=click)\n2026-04-23T09:27:26.154494Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:27:34.433056Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:28:06.713361Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:28:33.527151Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5209591986308457575, trigger=click)\n2026-04-23T09:28:34.249353Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5209591986308457575, trigger=click)\n2026-04-23T09:28:36.237199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5209591986308457575, trigger=click)\n2026-04-23T09:28:42.253183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8747303508868961364, trigger=click)\n2026-04-23T09:28:48.282686Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:28:50.613134Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:28:51.314522Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:29:31.961577Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=67 elapsed=3.996031s\n2026-04-23T09:29:31.961670Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 67 eligible frames\n2026-04-23T09:29:34.332658Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 5.8MB → 2.1MB (2.8x), 29 JPEGs deleted\n2026-04-23T09:29:38.223511Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 7.4MB → 3.8MB (2.0x), 36 JPEGs deleted\n2026-04-23T09:30:34.230785Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:30:39.665086Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:30:40.299751Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:30:45.663893Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:30:51.622228Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:30:52.321014Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:31:15.021588Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:31:15.691601Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:31:17.946692Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:31:18.653547Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:32:17.960360Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:32:24.051490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:32:29.442560Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:32:30.131038Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:32:32.452540Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:32:36.585069Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:32:39.322258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:33:18.072421Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:33:18.766929Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:33:22.098409Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:33:22.782084Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:34:27.313290Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:34:38.542722Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 89 eligible frames\n2026-04-23T09:34:41.684595Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 5.6MB → 0.7MB (7.5x), 38 JPEGs deleted\n2026-04-23T09:34:44.933963Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 10.6MB → 3.8MB (2.8x), 49 JPEGs deleted\n2026-04-23T09:37:57.963204Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:37:58.697604Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:38:02.124214Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:38:53.190171Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:38:59.279885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:39:02.308536Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:39:36.189861Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:39:49.122120Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=50 elapsed=4.188474542s\n2026-04-23T09:39:49.122232Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 50 eligible frames\n2026-04-23T09:39:51.115025Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 2.9MB → 0.3MB (9.4x), 24 JPEGs deleted\n2026-04-23T09:39:53.096763Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 2.3MB (2.2x), 24 JPEGs deleted\n2026-04-23T09:40:57.095660Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:40:58.430714Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:01.130926Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:01.840278Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:04.072034Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:09.252541Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:09.972092Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:12.313228Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:13.696141Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:15.723102Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:41:16.452657Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:42:46.382248Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:43:42.993741Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6469703639183038647, trigger=visual_change)\n2026-04-23T09:44:17.245560Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7072623502562616708, trigger=visual_change)\n2026-04-23T09:44:56.342637Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=21 elapsed=2.944921084s\n2026-04-23T09:44:56.343212Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames\n2026-04-23T09:44:57.216675Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.2MB → 0.2MB (6.9x), 10 JPEGs deleted\n2026-04-23T09:44:58.298212Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 2.1MB → 0.7MB (2.8x), 9 JPEGs deleted\n2026-04-23T09:45:10.982752Z INFO screenpipe_engine::meeting_detector: meeting v2: Idle -> Confirming (app=Firefox, signals=2)\n2026-04-23T09:45:16.376695Z INFO screenpipe_engine::meeting_detector: meeting v2: Confirming -> Active (app=Firefox, signals=2, browser=true)\n2026-04-23T09:45:16.378791Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting started (id=9, app=Firefox, title=None)\n2026-04-23T09:50:01.989691Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=23 elapsed=3.688976042s\n2026-04-23T09:50:01.989962Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames\n2026-04-23T09:50:03.098505Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 1.3MB → 0.2MB (7.4x), 11 JPEGs deleted\n2026-04-23T09:50:04.627741Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.4MB → 0.8MB (3.1x), 10 JPEGs deleted\n2026-04-23T09:50:07.629323Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4672421675042950776, trigger=click)\n2026-04-23T09:52:11.400798Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:52:15.346773Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:52:18.174934Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:52:22.107623Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:52:32.020499Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:53:33.890239Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:53:35.304629Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:53:58.176084Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:54:14.248454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:54:18.287472Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:54:20.289467Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:54:24.904239Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:54:27.981243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:54:29.172367Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:54:30.192245Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:54:31.161165Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:55:11.821088Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=36 elapsed=7.192436875s\n2026-04-23T09:55:11.821248Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 36 eligible frames\n2026-04-23T09:55:13.532739Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 2.3MB → 0.5MB (5.0x), 19 JPEGs deleted\n2026-04-23T09:55:16.625152Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 3.3MB → 1.4MB (2.4x), 15 JPEGs deleted\n2026-04-23T09:56:01.584150Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:56:24.887186Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=click)\n2026-04-23T09:56:32.005363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=visual_change)\n2026-04-23T09:56:41.374227Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=visual_change)\n2026-04-23T09:56:54.666839Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3078857793355977422, trigger=click)\n2026-04-23T09:57:06.486753Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3593283938725328408, trigger=visual_change)\n2026-04-23T09:57:14.384178Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5341343601501307187, trigger=visual_change)\n2026-04-23T09:57:32.721765Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5341343601501307187, trigger=visual_change)\n2026-04-23T09:59:03.111441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T09:59:18.292184Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:59:24.203906Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:59:28.763273Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T09:59:36.189282Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:00:16.817081Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 72 eligible frames\n2026-04-23T10:00:21.637421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 7.5MB → 3.5MB (2.1x), 45 JPEGs deleted\n2026-04-23T10:00:24.683587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 1.4MB (3.2x), 25 JPEGs deleted\n2026-04-23T10:00:40.573974Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6464745230001326344, trigger=visual_change)\n2026-04-23T10:02:52.495992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8171437999531431641, trigger=click)\n2026-04-23T10:02:53.374393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8171437999531431641, trigger=click)\n2026-04-23T10:03:37.373391Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1961095499263201650, trigger=click)\n2026-04-23T10:04:58.338820Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T10:05:04.300061Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:05:10.114887Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:05:16.104422Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:05:20.754499Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:05:25.933831Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T10:05:30.717296Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=45 elapsed=5.043796209s\n2026-04-23T10:05:30.717708Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 45 eligible frames\n2026-04-23T10:05:33.129158Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 3.5MB → 1.3MB (2.8x), 21 JPEGs deleted\n2026-04-23T10:05:35.719261Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 22 frames, 3.9MB → 1.6MB (2.5x), 22 JPEGs deleted\n2026-04-23T10:06:54.427408Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:06:58.568476Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:07:35.294176Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T10:07:36.671700Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)\n2026-04-23T10:07:46.281682Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)\n2026-04-23T10:10:42.001975Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=40 elapsed=6.278440792s\n2026-04-23T10:10:42.002064Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 40 eligible frames\n2026-04-23T10:10:45.302375Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 3.7MB → 1.7MB (2.2x), 21 JPEGs deleted\n2026-04-23T10:10:47.110830Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 4.4MB → 0.6MB (7.8x), 17 JPEGs deleted\n2026-04-23T10:12:18.002465Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7144568667011834365, trigger=click)\n2026-04-23T10:13:16.229637Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3362537224271461493, trigger=visual_change)\n2026-04-23T10:13:20.127210Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3362537224271461493, trigger=visual_change)\n2026-04-23T10:15:43.498044Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)\n2026-04-23T10:15:46.873827Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)\n2026-04-23T10:15:49.085137Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 32 eligible frames\n2026-04-23T10:15:49.496235Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)\n2026-04-23T10:15:50.519319Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 3.0MB → 0.9MB (3.3x), 17 JPEGs deleted\n2026-04-23T10:15:51.657703Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.5MB (6.7x), 13 JPEGs deleted\n2026-04-23T10:15:53.186964Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)\n2026-04-23T10:15:55.743993Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)\n2026-04-23T10:16:10.260016Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7730332891388508974, trigger=visual_change)\n2026-04-23T10:16:19.398464Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)\n2026-04-23T10:16:23.686689Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)\n2026-04-23T10:16:27.662719Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)\n2026-04-23T10:16:34.159786Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)\n2026-04-23T10:17:00.356336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)\n2026-04-23T10:17:22.481007Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3265723714621232205, trigger=visual_change)\n2026-04-23T10:17:29.195939Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3265723714621232205, trigger=visual_change)\n2026-04-23T10:17:47.685112Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:17:51.199158Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:17:58.199222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:18:06.327777Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:18:13.175283Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:18:39.739176Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:19:27.720698Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:19:31.148096Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:19:35.991910Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:19:56.855761Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:20:03.521058Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:20:10.069690Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:20:18.117006Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)\n2026-04-23T10:20:54.473088Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=27 elapsed=2.810096209s\n2026-04-23T10:20:54.473356Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 27 eligible frames\n2026-04-23T10:20:56.920972Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 2.2MB → 0.9MB (2.6x), 14 JPEGs deleted\n2026-04-23T10:20:58.678464Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 2.5MB → 0.8MB (3.0x), 11 JPEGs deleted\n2026-04-23T10:23:10.727426Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3844820439140861821, trigger=visual_change)\n2026-04-23T10:25:16.468416Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:25:32.507777Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)\n2026-04-23T10:26:05.910946Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=33 elapsed=7.132200208s\n2026-04-23T10:26:05.912569Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 33 eligible frames\n2026-04-23T10:26:09.921886Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 3.0MB → 1.2MB (2.5x), 18 JPEGs deleted\n2026-04-23T10:26:13.670275Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 2.6MB → 0.9MB (3.0x), 13 JPEGs deleted\n2026-04-23T10:26:20.034712Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:26:22.436991Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:26:25.816727Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:27:46.056157Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1615606372458852745, trigger=click)\n2026-04-23T10:28:05.117587Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:28:16.307383Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:28:22.684004Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:28:39.022530Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:28:44.950116Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:28:50.090325Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:28:52.144212Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:28:55.229550Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:28:59.714370Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:29:08.010841Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:29:11.877274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:29:15.515889Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:29:19.052095Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:29:21.109938Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:29:28.551159Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:29:30.947483Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:29:38.350095Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:29:51.477755Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:29:56.846851Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:30:02.584960Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:30:06.779849Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:30:18.311444Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:30:22.665242Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:30:29.333028Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:30:37.983139Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:30:48.829636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:30:59.474314Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3712905987097609358, trigger=visual_change)\n2026-04-23T10:31:16.115641Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=34 elapsed=1.523826083s\n2026-04-23T10:31:16.115774Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames\n2026-04-23T10:31:19.674413Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 3.4MB → 2.0MB (1.7x), 19 JPEGs deleted\n2026-04-23T10:31:20.281876Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:31:21.222414Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.8MB (4.5x), 13 JPEGs deleted\n2026-04-23T10:31:30.589390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:31:31.649068Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:31:34.542890Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:31:35.913592Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:31:42.222598Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:31:46.314096Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:31:56.457995Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)\n2026-04-23T10:32:02.440693Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)\n2026-04-23T10:32:11.844302Z INFO screenpipe_engine::meeting_detector: meeting v2: Active -> Ending (no controls, app=Firefox, id=9, grace=300s)\n2026-04-23T10:36:21.778297Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames\n2026-04-23T10:36:23.408803Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 3.2MB → 1.6MB (2.1x), 19 JPEGs deleted\n2026-04-23T10:36:24.427188Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.7MB (4.8x), 13 JPEGs deleted\n2026-04-23T10:37:15.245266Z INFO screenpipe_engine::meeting_detector: meeting v2: Ending -> Idle (timeout=300s, app=Firefox, id=9)\n2026-04-23T10:37:15.499978Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting ended (id=9)\n2026-04-23T10:39:08.136849Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7072094695368023128, trigger=visual_change)\n2026-04-23T10:40:10.173692Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5626541066854626210, trigger=visual_change)\n2026-04-23T10:41:03.187335Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6908211675272154683, trigger=visual_change)\n2026-04-23T10:41:27.801144Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=32 elapsed=3.230263875s\n2026-04-23T10:41:27.801229Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 32 eligible frames\n2026-04-23T10:41:30.240257Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 2.7MB → 1.1MB (2.4x), 17 JPEGs deleted\n2026-04-23T10:41:31.414104Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.3MB → 1.1MB (3.1x), 13 JPEGs deleted\n2026-04-23T10:43:59.795473Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:44:00.574274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:44:03.353223Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:44:06.333413Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:44:15.554031Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:44:16.272856Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:44:36.868831Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:44:52.509317Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:45:05.711036Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:45:15.149681Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:45:15.874930Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:45:18.722067Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:45:27.888960Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:45:32.102259Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:45:47.964284Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)\n2026-04-23T10:45:57.352178Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-250182447663358748, trigger=click)\n2026-04-23T10:45:58.059330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)\n2026-04-23T10:46:00.786122Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-250182447663358748, trigger=click)\n2026-04-23T10:46:01.515587Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)\n2026-04-23T10:46:32.335524Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames\n2026-04-23T10:46:33.454412Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 1.3MB → 0.3MB (4.3x), 15 JPEGs deleted\n2026-04-23T10:46:35.185172Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 4.4MB → 0.8MB (5.1x), 17 JPEGs deleted\n2026-04-23T10:49:51.424053Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:49:52.278022Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:06.945403Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:50:20.071306Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:27.322330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:28.025501Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:31.361324Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:32.067598Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:43.957181Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:49.116814Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:49.902205Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:52.787071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:55.600444Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:50:56.613411Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)\n2026-04-23T10:51:01.606653Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)\n2026-04-23T10:51:36.294219Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames\n2026-04-23T10:51:37.139478Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 0.9MB → 0.1MB (8.1x), 10 JPEGs deleted\n2026-04-23T10:51:37.977586Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 2.4MB → 0.4MB (5.6x), 9 JPEGs deleted\n2026-04-23T10:53:10.914762Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5094416737894467752, trigger=click)\n2026-04-23T10:53:46.764312Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5492569374489755072, trigger=click)\n2026-04-23T10:53:47.493963Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5492569374489755072, trigger=click)\n2026-04-23T10:55:50.508246Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-9185031867676948653, trigger=click)\n2026-04-23T10:56:18.190631Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8265869039182172474, trigger=visual_change)\n2026-04-23T10:56:21.391253Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8265869039182172474, trigger=visual_change)\n2026-04-23T10:56:44.441379Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=33 elapsed=6.451315834s\n2026-04-23T10:56:44.441894Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 33 eligible frames\n2026-04-23T10:56:46.435494Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 1.6MB → 0.1MB (14.8x), 17 JPEGs deleted\n2026-04-23T10:56:47.618773Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 3.5MB → 1.0MB (3.6x), 14 JPEGs deleted\n2026-04-23T10:56:48.429385Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3009288458992913716, trigger=visual_change)\n2026-04-23T10:56:55.377427Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3009288458992913716, trigger=visual_change)\n2026-04-23T10:56:58.331194Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3009288458992913716, trigger=visual_change)\n2026-04-23T10:57:31.580363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=164293696523982731, trigger=visual_change)\n2026-04-23T10:57:37.142409Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=164293696523982731, trigger=visual_change)\n2026-04-23T11:01:54.879662Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=43 elapsed=6.651773875s\n2026-04-23T11:01:54.879780Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 43 eligible frames\n2026-04-23T11:01:56.181324Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 20 frames, 2.1MB → 0.5MB (4.0x), 20 JPEGs deleted\n2026-04-23T11:01:57.821885Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 4.6MB → 1.2MB (4.0x), 21 JPEGs deleted\n2026-04-23T11:05:34.805879Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4133405882569027308, trigger=click)\n2026-04-23T11:05:42.692507Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-792819002159032212, trigger=click)\n2026-04-23T11:05:45.195836Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-792819002159032212, trigger=click)\n2026-04-23T11:06:58.003581Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 56 eligible frames\n2026-04-23T11:07:01.998524Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 4.2MB → 2.0MB (2.1x), 27 JPEGs deleted\n2026-04-23T11:07:04.632834Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.1MB → 1.2MB (5.2x), 27 JPEGs deleted\n2026-04-23T11:08:29.041425Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:26.078346Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:26.826746Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:29.736291Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:30.502898Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:33.284639Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:34.732219Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:36.846175Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:47.161668Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=visual_change)\n2026-04-23T11:11:51.463126Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:55.190182Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:58.250612Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=811120582590877593, trigger=click)\n2026-04-23T11:11:58.984195Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=811120582590877593, trigger=click)\n2026-04-23T11:12:07.186907Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8190951420737299430, trigger=visual_change)\n2026-04-23T11:12:10.805150Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=28 elapsed=6.153365375s\n2026-04-23T11:12:10.806451Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 28 eligible frames\n2026-04-23T11:12:12.869531Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.7MB → 1.2MB (2.2x), 16 JPEGs deleted\n2026-04-23T11:12:14.462884Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.2MB → 0.4MB (5.9x), 10 JPEGs deleted\n2026-04-23T11:14:59.283313Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-962688942467523245, trigger=click)\n2026-04-23T11:14:59.996111Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-962688942467523245, trigger=click)\n2026-04-23T11:15:52.562512Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4085483410823602662, trigger=click)\n2026-04-23T11:16:10.556556Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-680298114769977367, trigger=click)\n2026-04-23T11:16:44.987984Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-781142721963066587, trigger=click)\n2026-04-23T11:17:15.717626Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=34 elapsed=1.192290209s\n2026-04-23T11:17:15.717877Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames\n2026-04-23T11:17:16.801524Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 1.7MB → 0.3MB (6.4x), 14 JPEGs deleted\n2026-04-23T11:17:18.950114Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 4.0MB → 0.9MB (4.3x), 18 JPEGs deleted\n2026-04-23T11:22:21.353046Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=27 elapsed=2.391216916s\n2026-04-23T11:22:21.353161Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 27 eligible frames\n2026-04-23T11:22:22.204810Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 1.6MB → 0.2MB (7.8x), 13 JPEGs deleted\n2026-04-23T11:22:23.352237Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 2.7MB → 1.1MB (2.5x), 12 JPEGs deleted\n2026-04-23T11:22:51.641783Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5591071779487381740, trigger=visual_change)\n2026-04-23T11:24:42.126313Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3622496340535697523, trigger=click)\n2026-04-23T11:27:16.328827Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3622496340535697523, trigger=click)\n2026-04-23T11:27:17.062717Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3622496340535697523, trigger=click)\n2026-04-23T11:27:20.131333Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3622496340535697523, trigger=visual_change)\n2026-04-23T11:27:27.263965Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=32 elapsed=2.915186083s\n2026-04-23T11:27:27.264345Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 32 eligible frames\n2026-04-23T11:27:29.317049Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.1MB → 0.6MB (3.5x), 16 JPEGs deleted\n2026-04-23T11:27:31.637712Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 3.0MB → 0.8MB (3.8x), 14 JPEGs deleted\n2026-04-23T11:29:03.406489Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1491366973306919482, trigger=visual_change)\n2026-04-23T11:29:37.371120Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1491366973306919482, trigger=click)\n2026-04-23T11:29:38.828999Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1491366973306919482, trigger=click)\n2026-04-23T11:30:05.594417Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7420299184765789117, trigger=click)\n2026-04-23T11:30:10.415695Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7420299184765789117, trigger=click)\n2026-04-23T11:30:37.438406Z INFO screenpipe_engine::meeting_detector: meeting v2: Idle -> Confirming (app=Firefox, signals=2)\n2026-04-23T11:30:47.134756Z INFO screenpipe_engine::meeting_detector: meeting v2: Confirming -> Active (app=Firefox, signals=2, browser=true)\n2026-04-23T11:30:47.150842Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting started (id=10, app=Firefox, title=None)\n2026-04-23T11:32:52.795697Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=click, monitor=1) — DB pool may be saturated\n2026-04-23T11:32:54.063047Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=22 elapsed=22.405129875s\n2026-04-23T11:32:54.065127Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 22 eligible frames\n2026-04-23T11:32:56.659956Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.7MB → 0.3MB (5.8x), 10 JPEGs deleted\n2026-04-23T11:32:58.390326Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.1MB → 0.4MB (5.1x), 10 JPEGs deleted\n2026-04-23T11:32:58.454323Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=click, monitor=2) — DB pool may be saturated\n2026-04-23T11:33:03.630685Z INFO screenpipe_engine::event_driven_capture: monitor 2 capture recovered after 1 consecutive errors\n2026-04-23T11:33:03.698376Z INFO screenpipe_engine::event_driven_capture: monitor 1 capture recovered after 1 consecutive errors\n2026-04-23T11:34:08.146813Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=visual_change, monitor=1) — DB pool may be saturated\n2026-04-23T11:34:19.115606Z INFO screenpipe_engine::event_driven_capture: monitor 1 capture recovered after 1 consecutive errors\n2026-04-23T11:38:06.413998Z WARN sqlx::query: summary=\"PRAGMA wal_checkpoint(TRUNCATE)\" db.statement=\"\" rows_affected=0 rows_returned=1 elapsed=5.320189792s\n2026-04-23T11:38:06.417026Z WARN screenpipe_db::db: wal checkpoint: busy (could not truncate), 1136 pages in WAL\n2026-04-23T11:38:06.480369Z WARN sqlx::query: summary=\"BEGIN IMMEDIATE\" db.statement=\"\" rows_affected=1 rows_returned=0 elapsed=3.645234084s\n2026-04-23T11:38:12.229580Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=26 elapsed=13.80812125s\n2026-04-23T11:38:12.232573Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 26 eligible frames\n2026-04-23T11:38:15.382662Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 1.9MB → 0.5MB (3.8x), 11 JPEGs deleted\n2026-04-23T11:38:16.795794Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=visual_change, monitor=1) — DB pool may be saturated\n2026-04-23T11:38:19.817599Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 2.7MB → 0.6MB (4.2x), 13 JPEGs deleted\n2026-04-23T11:38:24.993308Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=visual_change, monitor=2) — DB pool may be saturated\n2026-04-23T11:38:30.141938Z INFO screenpipe_engine::event_driven_capture: monitor 1 capture recovered after 1 consecutive errors\n2026-04-23T11:38:34.776814Z INFO screenpipe_engine::event_driven_capture: monitor 2 capture recovered after 1 consecutive errors\n2026-04-23T11:40:55.703155Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5781407336396073109, trigger=visual_change)\n2026-04-23T11:41:02.662314Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5781407336396073109, trigger=visual_change)\n2026-04-23T11:41:09.390136Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5781407336396073109, trigger=visual_change)\n2026-04-23T11:41:16.161715Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5781407336396073109, trigger=visual_change)\n2026-04-23T11:41:37.205648Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5781407336396073109, trigger=visual_change)\n2026-04-23T11:42:04.257036Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5781407336396073109, trigger=visual_change)\n2026-04-23T11:42:21.214633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6679997250984875896, trigger=visual_change)\n2026-04-23T11:42:24.525053Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6679997250984875896, trigger=visual_change)\n2026-04-23T11:42:29.877589Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6679997250984875896, trigger=visual_change)\n2026-04-23T11:42:33.802238Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6679997250984875896, trigger=visual_change)\n2026-04-23T11:42:36.923509Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6679997250984875896, trigger=visual_change)\n2026-04-23T11:42:57.455576Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6679997250984875896, trigger=visual_change)\n2026-04-23T11:43:12.031547Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=951548071599591969, trigger=visual_change)\n2026-04-23T11:43:18.874182Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=951548071599591969, trigger=visual_change)\n2026-04-23T11:43:24.247849Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=951548071599591969, trigger=visual_change)\n2026-04-23T11:43:26.259182Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=49 elapsed=6.405864s\n2026-04-23T11:43:26.263056Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 49 eligible frames\n2026-04-23T11:43:32.316690Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 23 frames, 3.7MB → 1.8MB (2.0x), 23 JPEGs deleted\n2026-04-23T11:43:34.974978Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=951548071599591969, trigger=visual_change)\n2026-04-23T11:43:36.047883Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.3MB → 1.5MB (2.9x), 24 JPEGs deleted\n2026-04-23T11:43:49.116309Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=951548071599591969, trigger=visual_change)\n2026-04-23T11:43:52.940018Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=951548071599591969, trigger=visual_change)\n2026-04-23T11:43:56.539135Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=951548071599591969, trigger=visual_change)\n2026-04-23T11:44:11.233290Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4079677798565982376, trigger=visual_change)\n2026-04-23T11:45:03.923694Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=click, monitor=2) — DB pool may be saturated\n2026-04-23T11:45:18.638512Z INFO screenpipe_engine::event_driven_capture: monitor 2 capture recovered after 1 consecutive errors\n2026-04-23T11:45:27.824824Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=click, monitor=1) — DB pool may be saturated\n2026-04-23T11:45:41.576372Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=click, monitor=2) — DB pool may be saturated\n2026-04-23T11:45:44.291896Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=click, monitor=1) — DB pool may be saturated\n2026-04-23T11:46:03.257280Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=click, monitor=1) — DB pool may be saturated\n2026-04-23T11:46:12.724398Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=visual_change, monitor=2) — DB pool may be saturated\n2026-04-23T11:46:22.727197Z INFO screenpipe_engine::event_driven_capture: monitor 1 capture recovered after 3 consecutive errors\n2026-04-23T11:46:24.228006Z INFO screenpipe_engine::event_driven_capture: monitor 2 capture recovered after 2 consecutive errors\n2026-04-23T11:46:40.390580Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7643951286516936585, trigger=visual_change)\n2026-04-23T11:46:49.248747Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7643951286516936585, trigger=visual_change)\n2026-04-23T11:46:55.471031Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7643951286516936585, trigger=visual_change)\n2026-04-23T11:47:02.336575Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7643951286516936585, trigger=visual_change)\n2026-04-23T11:48:17.252755Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7643951286516936585, trigger=visual_change)\n2026-04-23T11:48:25.013997Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7643951286516936585, trigger=visual_change)\n2026-04-23T11:48:53.059242Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=56 elapsed=13.220216708s\n2026-04-23T11:48:53.065643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 56 eligible frames\n2026-04-23T11:48:58.527594Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 30 frames, 4.7MB → 2.2MB (2.1x), 30 JPEGs deleted\n2026-04-23T11:49:05.857012Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.3MB → 1.6MB (2.7x), 24 JPEGs deleted\n2026-04-23T11:49:06.658338Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5995459936453258264, trigger=visual_change)\n2026-04-23T11:49:28.247468Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5995459936453258264, trigger=visual_change)\n2026-04-23T11:49:46.108336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4001297392414942723, trigger=visual_change)\n2026-04-23T11:49:53.084297Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4001297392414942723, trigger=visual_change)\n2026-04-23T11:49:56.028797Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4001297392414942723, trigger=click)\n2026-04-23T11:50:37.287127Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2527600923706712259, trigger=visual_change)\n2026-04-23T11:51:12.946650Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1489108089542937642, trigger=visual_change)\n2026-04-23T11:51:19.338386Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1489108089542937642, trigger=visual_change)\n2026-04-23T11:52:16.352383Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8163356110886780433, trigger=visual_change)\n2026-04-23T11:53:55.890568Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5293025605401136867, trigger=click)\n2026-04-23T11:54:09.640558Z WARN sqlx::query: summary=\"SELECT id, snapshot_path, device_name, …\" db.statement=\"\\n\\nSELECT\\n id,\\n snapshot_path,\\n device_name,\\n timestamp\\nFROM\\n frames\\nWHERE\\n snapshot_path IS NOT NULL\\n AND timestamp < ?1\\nORDER BY\\n device_name,\\n timestamp ASC\\nLIMIT\\n 5000\\n\" rows_affected=0 rows_returned=41 elapsed=3.460436583s\n2026-04-23T11:54:09.640693Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 41 eligible frames\n2026-04-23T11:54:13.152878Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 22 frames, 3.3MB → 1.5MB (2.2x), 22 JPEGs deleted\n2026-04-23T11:54:15.204535Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 3.9MB → 1.2MB (3.4x), 17 JPEGs deleted\n2026-04-23T11:58:11.876342Z INFO screenpipe_engine::meeting_detector: meeting v2: Active -> Ending (no controls, app=Firefox, id=10, grace=300s)\n2026-04-23T11:59:15.385310Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 25 eligible frames\n2026-04-23T11:59:16.921656Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 1.6MB → 0.6MB (2.8x), 13 JPEGs deleted\n2026-04-23T11:59:18.047335Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.2MB → 1.0MB (2.3x), 10 JPEGs deleted\n2026-04-23T12:01:17.114786Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7823854956395915880, trigger=click)\n/Volumes/Work/2026/User\\ Pilot\\ introduction\\ Adi\\ 2026-04-23.mp4 2026-04-23T12:02:09.213929Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4997183725580178172, trigger=visual_change)\n2026-04-23T12:02:12.305485Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4997183725580178172, trigger=visual_change)\n2026-04-23T12:02:22.392607Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4428370940474457947, trigger=visual_change)\n2026-04-23T12:02:23.534043Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4428370940474457947, trigger=click)\n2026-04-23T12:02:25.338561Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4428370940474457947, trigger=click)\n2026-04-23T12:02:26.896633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4428370940474457947, trigger=click)\n2026-04-23T12:03:14.422791Z INFO screenpipe_engine::meeting_detector: meeting v2: Ending -> Idle (timeout=300s, app=Firefox, id=10)\n2026-04-23T12:03:14.697666Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting ended (id=10)\n2026-04-23T12:04:18.652471Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 62 eligible frames\n2026-04-23T12:04:22.291047Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 4.6MB → 1.6MB (3.0x), 36 JPEGs deleted\n2026-04-23T12:04:25.831665Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.8MB → 1.1MB (4.3x), 24 JPEGs deleted\n2026-04-23T12:04:36.186162Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8094579906910625439, trigger=click)","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.031083776,"height":-0.042298436},"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.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.30136302,"top":1.0,"width":0.031083776,"height":-0.042298436},"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.30335772,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.3324468,"top":1.0,"width":0.031083776,"height":-0.042298436},"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.33444148,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.36353058,"top":1.0,"width":0.031083776,"height":-0.042298436},"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.36552528,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.39461437,"top":1.0,"width":0.031083776,"height":-0.042298436},"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.39660904,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.42569813,"top":1.0,"width":0.031083776,"height":-0.042298436},"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.42769283,"top":1.0,"width":0.005319149,"height":-0.04549086},"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.45678192,"top":1.0,"width":0.030917553,"height":-0.042298436},"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.4587766,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (-zsh)","depth":2,"bounds":{"left":0.48769948,"top":1.0,"width":0.030917553,"height":-0.042298436},"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.48969415,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.5049867,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"screenpipe\" — 95✕45","depth":1,"bounds":{"left":0.37400267,"top":1.0,"width":0.04886968,"height":-0.02394259},"role_description":"text"}]...
|
3112232738136535939
|
986754612592747899
|
visual_change
|
accessibility
|
NULL
|
2026-04-23T09:13:09.380863Z INFO sck_rs::stream_m 2026-04-23T09:13:09.380863Z INFO sck_rs::stream_manager: invalidated persistent stream for display 2
2026-04-23T09:13:32.742255Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 3 excluded)
2026-04-23T09:14:01.764079Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4702465002163205464, trigger=click)
2026-04-23T09:14:04.223149Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4702465002163205464, trigger=visual_change)
2026-04-23T09:14:06.953796Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=147 elapsed=6.3719465s
2026-04-23T09:14:06.954006Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 147 eligible frames
2026-04-23T09:14:12.566935Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 70 frames, 10.3MB → 2.7MB (3.8x), 70 JPEGs deleted
2026-04-23T09:14:17.358704Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 75 frames, 9.6MB → 3.0MB (3.2x), 75 JPEGs deleted
2026-04-23T09:15:47.544198Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)
2026-04-23T09:15:50.997492Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=click)
2026-04-23T09:15:51.600725Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3660881845293713510, trigger=click)
2026-04-23T09:15:55.723800Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3660881845293713510, trigger=click)
2026-04-23T09:15:56.933987Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)
2026-04-23T09:15:59.012409Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)
2026-04-23T09:16:49.882963Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=visual_change)
2026-04-23T09:16:51.405936Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)
2026-04-23T09:16:52.823011Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)
2026-04-23T09:16:54.220304Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)
2026-04-23T09:16:54.887021Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3759145274440377841, trigger=click)
2026-04-23T09:16:58.589203Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3759145274440377841, trigger=visual_change)
2026-04-23T09:18:05.879649Z WARN screenpipe_db::db: wal checkpoint: busy (could not truncate), 5054 pages in WAL
2026-04-23T09:18:05.879619Z WARN sqlx::query: summary="PRAGMA wal_checkpoint(TRUNCATE)" db.statement="" rows_affected=0 rows_returned=1 elapsed=5.220339167s
2026-04-23T09:19:24.740122Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=7.381061833s
2026-04-23T09:19:24.740850Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-23T09:19:36.514406Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2079049776495123607, trigger=click)
2026-04-23T09:24:26.477446Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=11 elapsed=1.729545666s
2026-04-23T09:24:26.477540Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames
2026-04-23T09:24:27.316363Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 1.4MB → 1.4MB (1.0x), 5 JPEGs deleted
2026-04-23T09:24:27.966623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 0.6MB → 0.2MB (2.7x), 6 JPEGs deleted
2026-04-23T09:24:42.606557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:26:03.160247Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7786631749263421517, trigger=click)
2026-04-23T09:27:26.154494Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:27:34.433056Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:28:06.713361Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:28:33.527151Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5209591986308457575, trigger=click)
2026-04-23T09:28:34.249353Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5209591986308457575, trigger=click)
2026-04-23T09:28:36.237199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5209591986308457575, trigger=click)
2026-04-23T09:28:42.253183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8747303508868961364, trigger=click)
2026-04-23T09:28:48.282686Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:28:50.613134Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:28:51.314522Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:29:31.961577Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=67 elapsed=3.996031s
2026-04-23T09:29:31.961670Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 67 eligible frames
2026-04-23T09:29:34.332658Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 5.8MB → 2.1MB (2.8x), 29 JPEGs deleted
2026-04-23T09:29:38.223511Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 7.4MB → 3.8MB (2.0x), 36 JPEGs deleted
2026-04-23T09:30:34.230785Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:30:39.665086Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:30:40.299751Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:30:45.663893Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:30:51.622228Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:30:52.321014Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:31:15.021588Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:31:15.691601Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:31:17.946692Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:31:18.653547Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:17.960360Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:24.051490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:29.442560Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:30.131038Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:32.452540Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:32:36.585069Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:32:39.322258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:33:18.072421Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:33:18.766929Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:33:22.098409Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:33:22.782084Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:34:27.313290Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:34:38.542722Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 89 eligible frames
2026-04-23T09:34:41.684595Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 5.6MB → 0.7MB (7.5x), 38 JPEGs deleted
2026-04-23T09:34:44.933963Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 10.6MB → 3.8MB (2.8x), 49 JPEGs deleted
2026-04-23T09:37:57.963204Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:37:58.697604Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:38:02.124214Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:38:53.190171Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:38:59.279885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:39:02.308536Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:39:36.189861Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:39:49.122120Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=50 elapsed=4.188474542s
2026-04-23T09:39:49.122232Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 50 eligible frames
2026-04-23T09:39:51.115025Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 2.9MB → 0.3MB (9.4x), 24 JPEGs deleted
2026-04-23T09:39:53.096763Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 2.3MB (2.2x), 24 JPEGs deleted
2026-04-23T09:40:57.095660Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:40:58.430714Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:01.130926Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:01.840278Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:04.072034Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:09.252541Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:09.972092Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:12.313228Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:13.696141Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:15.723102Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:16.452657Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:42:46.382248Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:43:42.993741Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6469703639183038647, trigger=visual_change)
2026-04-23T09:44:17.245560Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7072623502562616708, trigger=visual_change)
2026-04-23T09:44:56.342637Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.944921084s
2026-04-23T09:44:56.343212Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-23T09:44:57.216675Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.2MB → 0.2MB (6.9x), 10 JPEGs deleted
2026-04-23T09:44:58.298212Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 2.1MB → 0.7MB (2.8x), 9 JPEGs deleted
2026-04-23T09:45:10.982752Z INFO screenpipe_engine::meeting_detector: meeting v2: Idle -> Confirming (app=Firefox, signals=2)
2026-04-23T09:45:16.376695Z INFO screenpipe_engine::meeting_detector: meeting v2: Confirming -> Active (app=Firefox, signals=2, browser=true)
2026-04-23T09:45:16.378791Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting started (id=9, app=Firefox, title=None)
2026-04-23T09:50:01.989691Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=23 elapsed=3.688976042s
2026-04-23T09:50:01.989962Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-23T09:50:03.098505Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 1.3MB → 0.2MB (7.4x), 11 JPEGs deleted
2026-04-23T09:50:04.627741Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.4MB → 0.8MB (3.1x), 10 JPEGs deleted
2026-04-23T09:50:07.629323Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4672421675042950776, trigger=click)
2026-04-23T09:52:11.400798Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:52:15.346773Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:52:18.174934Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:52:22.107623Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:52:32.020499Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:53:33.890239Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:53:35.304629Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:53:58.176084Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:54:14.248454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:54:18.287472Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:20.289467Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:24.904239Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:54:27.981243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:29.172367Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:30.192245Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:31.161165Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:55:11.821088Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=36 elapsed=7.192436875s
2026-04-23T09:55:11.821248Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 36 eligible frames
2026-04-23T09:55:13.532739Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 2.3MB → 0.5MB (5.0x), 19 JPEGs deleted
2026-04-23T09:55:16.625152Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 3.3MB → 1.4MB (2.4x), 15 JPEGs deleted
2026-04-23T09:56:01.584150Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:56:24.887186Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=click)
2026-04-23T09:56:32.005363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=visual_change)
2026-04-23T09:56:41.374227Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=visual_change)
2026-04-23T09:56:54.666839Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3078857793355977422, trigger=click)
2026-04-23T09:57:06.486753Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3593283938725328408, trigger=visual_change)
2026-04-23T09:57:14.384178Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5341343601501307187, trigger=visual_change)
2026-04-23T09:57:32.721765Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5341343601501307187, trigger=visual_change)
2026-04-23T09:59:03.111441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:59:18.292184Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:59:24.203906Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:59:28.763273Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:59:36.189282Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:00:16.817081Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 72 eligible frames
2026-04-23T10:00:21.637421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 7.5MB → 3.5MB (2.1x), 45 JPEGs deleted
2026-04-23T10:00:24.683587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 1.4MB (3.2x), 25 JPEGs deleted
2026-04-23T10:00:40.573974Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6464745230001326344, trigger=visual_change)
2026-04-23T10:02:52.495992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8171437999531431641, trigger=click)
2026-04-23T10:02:53.374393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8171437999531431641, trigger=click)
2026-04-23T10:03:37.373391Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1961095499263201650, trigger=click)
2026-04-23T10:04:58.338820Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T10:05:04.300061Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:05:10.114887Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:05:16.104422Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:05:20.754499Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:05:25.933831Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T10:05:30.717296Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=45 elapsed=5.043796209s
2026-04-23T10:05:30.717708Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 45 eligible frames
2026-04-23T10:05:33.129158Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 3.5MB → 1.3MB (2.8x), 21 JPEGs deleted
2026-04-23T10:05:35.719261Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 22 frames, 3.9MB → 1.6MB (2.5x), 22 JPEGs deleted
2026-04-23T10:06:54.427408Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:06:58.568476Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:07:35.294176Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T10:07:36.671700Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T10:07:46.281682Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T10:10:42.001975Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=40 elapsed=6.278440792s
2026-04-23T10:10:42.002064Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 40 eligible frames
2026-04-23T10:10:45.302375Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 3.7MB → 1.7MB (2.2x), 21 JPEGs deleted
2026-04-23T10:10:47.110830Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 4.4MB → 0.6MB (7.8x), 17 JPEGs deleted
2026-04-23T10:12:18.002465Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7144568667011834365, trigger=click)
2026-04-23T10:13:16.229637Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3362537224271461493, trigger=visual_change)
2026-04-23T10:13:20.127210Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3362537224271461493, trigger=visual_change)
2026-04-23T10:15:43.498044Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:15:46.873827Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:15:49.085137Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 32 eligible frames
2026-04-23T10:15:49.496235Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:15:50.519319Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 3.0MB → 0.9MB (3.3x), 17 JPEGs deleted
2026-04-23T10:15:51.657703Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.5MB (6.7x), 13 JPEGs deleted
2026-04-23T10:15:53.186964Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:15:55.743993Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:16:10.260016Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7730332891388508974, trigger=visual_change)
2026-04-23T10:16:19.398464Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:16:23.686689Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:16:27.662719Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:16:34.159786Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:17:00.356336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:17:22.481007Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3265723714621232205, trigger=visual_change)
2026-04-23T10:17:29.195939Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3265723714621232205, trigger=visual_change)
2026-04-23T10:17:47.685112Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:17:51.199158Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:17:58.199222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:18:06.327777Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:18:13.175283Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:18:39.739176Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:19:27.720698Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:19:31.148096Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:19:35.991910Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:19:56.855761Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:20:03.521058Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:20:10.069690Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:20:18.117006Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:20:54.473088Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=27 elapsed=2.810096209s
2026-04-23T10:20:54.473356Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 27 eligible frames
2026-04-23T10:20:56.920972Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 2.2MB → 0.9MB (2.6x), 14 JPEGs deleted
2026-04-23T10:20:58.678464Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 2.5MB → 0.8MB (3.0x), 11 JPEGs deleted
2026-04-23T10:23:10.727426Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3844820439140861821, trigger=visual_change)
2026-04-23T10:25:16.468416Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:25:32.507777Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:26:05.910946Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=33 elapsed=7.132200208s
2026-04-23T10:26:05.912569Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 33 eligible frames
2026-04-23T10:26:09.921886Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 3.0MB → 1.2MB (2.5x), 18 JPEGs deleted
2026-04-23T10:26:13.670275Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 2.6MB → 0.9MB (3.0x), 13 JPEGs deleted
2026-04-23T10:26:20.034712Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:26:22.436991Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:26:25.816727Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:27:46.056157Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1615606372458852745, trigger=click)
2026-04-23T10:28:05.117587Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:16.307383Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:22.684004Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:39.022530Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:44.950116Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:50.090325Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:52.144212Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:55.229550Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:28:59.714370Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:08.010841Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:11.877274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:15.515889Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:19.052095Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:21.109938Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:28.551159Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:29:30.947483Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:29:38.350095Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:29:51.477755Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:29:56.846851Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:02.584960Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:06.779849Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:18.311444Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:22.665242Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:29.333028Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:37.983139Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:48.829636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:30:59.474314Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3712905987097609358, trigger=visual_change)
2026-04-23T10:31:16.115641Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=34 elapsed=1.523826083s
2026-04-23T10:31:16.115774Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames
2026-04-23T10:31:19.674413Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 3.4MB → 2.0MB (1.7x), 19 JPEGs deleted
2026-04-23T10:31:20.281876Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:21.222414Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.8MB (4.5x), 13 JPEGs deleted
2026-04-23T10:31:30.589390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:31.649068Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:34.542890Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:35.913592Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:42.222598Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:46.314096Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:56.457995Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:32:02.440693Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:32:11.844302Z INFO screenpipe_engine::meeting_detector: meeting v2: Active -> Ending (no controls, app=Firefox, id=9, grace=300s)
2026-04-23T10:36:21.778297Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames
2026-04-23T10:36:23.408803Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 3.2MB → 1.6MB (2.1x), 19 JPEGs deleted
2026-04-23T10:36:24.427188Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.7MB (4.8x), 13 JPEGs deleted
2026-04-23T10:37:15.245266Z INFO screenpipe_engine::meeting_detector: meeting v2: Ending -> Idle (timeout=300s, app=Firefox, id=9)
2026-04-23T10:37:15.499978Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting ended (id=9)
2026-04-23T10:39:08.136849Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7072094695368023128, trigger=visual_change)
2026-04-23T10:40:10.173692Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5626541066854626210, trigger=visual_change)
2026-04-23T10:41:03.187335Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6908211675272154683, trigger=visual_change)
2026-04-23T10:41:27.801144Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=32 elapsed=3.230263875s
2026-04-23T10:41:27.801229Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 32 eligible frames
2026-04-23T10:41:30.240257Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 2.7MB → 1.1MB (2.4x), 17 JPEGs deleted
2026-04-23T10:41:31.414104Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.3MB → 1.1MB (3.1x), 13 JPEGs deleted
2026-04-23T10:43:59.795473Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)
2026-04-23T10:44:00.574274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:44:03.353223Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:44:06.333413Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:44:15.554031Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)
2026-04-23T10:44:16.272856Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:44:36.868831Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:44:52.509317Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:45:05.711036Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:45:15.149681Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)
2026-04-23T10:45:15.874930Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:45:18.722067Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:45:27.888960Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:45:32.102259Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:45:47.964284Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)
2026-04-23T10:45:57.352178Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-250182447663358748, trigger=click)
2026-04-23T10:45:58.059330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)
2026-04-23T10:46:00.786122Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-250182447663358748, trigger=click)
2026-04-23T10:46:01.515587Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)
2026-04-23T10:46:32.335524Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames
2026-04-23T10:46:33.454412Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 1.3MB → 0.3MB (4.3x), 15 JPEGs deleted
2026-04-23T10:46:35.185172Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 4.4MB → 0.8MB (5.1x), 17 JPEGs deleted
2026-04-23T10:49:51.424053Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:49:52.278022Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)
2026-04-23T10:50:06.945403Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:50:20.071306Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:50:27.322330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:50:28.025501Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping captur...
|
74139
|
|
73948
|
NULL
|
0
|
2026-04-23T08:54:08.694625+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776934448694_m2.jpg...
|
Firefox
|
Userpilot | AJ PB typing in the box — Work
|
True
|
run.userpilot.io/events/labeled_event/84
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | AJ PB typing in the box
Userpilot | AJ PB typing in the box
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Userpilot
Dashboards
Dashboards
People
People
Data
Data
Analytics
Analytics
Sessions
Sessions
Workflows
Workflows
Engagement
Engagement
Feedback
Feedback
Events
Events
Search engagement, feedback, reports, users and more
⌘K
Notifications
Help
Settings
Jiminny
Production
:r318: Active
AJ PB typing in the box
Active
more
Segment
Segment All users
All users
Company
Company All companies
All companies
Page
Page All pages
All pages
Time period
Time period Last 90 days
Last 90 days
Active users
2,838
/
8177
0%
Active companies
278
/
346
8.17%
Total events occurred
53,212
29.25%
Avg. occurrences per user
19
11.76%
Overview
Overview
:r31a:
D
:r31c:
W
:r31e:
M
:r31g:
:r31i:
Key stat
Feb 2026 (BST)
Total events occurred
16,240
(+2.76%)
Unique users
1,782
(+17.16%)
Unique companies
238
(+10.19%)
Key stat
Total events occurred
Unique users
Unique companies
Feb 2026 (BST)
16,240
(+2.76%)
1,782
(+17.16%)
238
(+10.19%)
Click data point to view event properties
Last 90 days
Last 90 days
Previous Period
Previous Period
User activity
Search...
User
Total occurrences
First occurred
Last occurred
Jae Morgan
f13d09cb-abda-4635-b713-08b6f4f4c578
59
March 23, 2026 - 11:03 AM
April 23, 2026 - 09:53 AM
Carolina Sohns
e6781435-39ad-4c79-a9cb-21529bf02e4b
121
January 25, 2026 - 04:49 PM
April 23, 2026 - 09:50 AM
Shazri
c2e4eeed-d320-4de0-83bd-9d9f140b9c1b...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.23321144,"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":"New Tab","depth":4,"bounds":{"left":0.23138298,"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":"New Tab","depth":5,"bounds":{"left":0.24468085,"top":0.10614525,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"bounds":{"left":0.23138298,"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":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"bounds":{"left":0.24468085,"top":0.13886672,"width":0.14128989,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"bounds":{"left":0.23138298,"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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"bounds":{"left":0.24468085,"top":0.17158818,"width":0.16555852,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23138298,"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":"Jiminny","depth":5,"bounds":{"left":0.24468085,"top":0.20430966,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | AJ PB typing in the box","depth":4,"bounds":{"left":0.23138298,"top":0.22585794,"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":"Userpilot | AJ PB typing in the box","depth":5,"bounds":{"left":0.24468085,"top":0.23703113,"width":0.059175532,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.29870346,"top":0.2330407,"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.23420878,"top":0.2601756,"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.23420878,"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.24517952,"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.25631648,"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.26745346,"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.2785904,"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":"Userpilot","depth":9,"bounds":{"left":0.31100398,"top":0.0518755,"width":0.026595745,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Dashboards","depth":9,"bounds":{"left":0.31100398,"top":0.096568234,"width":0.026595745,"height":0.04309657},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dashboards","depth":11,"bounds":{"left":0.31366357,"top":0.12290503,"width":0.021276595,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"People","depth":9,"bounds":{"left":0.31100398,"top":0.14285715,"width":0.026595745,"height":0.04309657},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"People","depth":11,"bounds":{"left":0.31831783,"top":0.16919394,"width":0.011968086,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Data","depth":9,"bounds":{"left":0.31100398,"top":0.18914606,"width":0.026595745,"height":0.04309657},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Data","depth":11,"bounds":{"left":0.32014626,"top":0.21628092,"width":0.00831117,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Analytics","depth":9,"bounds":{"left":0.31100398,"top":0.23543495,"width":0.026595745,"height":0.04309657},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Analytics","depth":11,"bounds":{"left":0.31632313,"top":0.26177174,"width":0.015957447,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Sessions","depth":9,"bounds":{"left":0.31100398,"top":0.28172386,"width":0.026595745,"height":0.04309657},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sessions","depth":11,"bounds":{"left":0.3168218,"top":0.30806065,"width":0.014960106,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Workflows","depth":9,"bounds":{"left":0.31100398,"top":0.32801276,"width":0.026595745,"height":0.04309657},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Workflows","depth":11,"bounds":{"left":0.31499335,"top":0.35434955,"width":0.01861702,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Engagement","depth":9,"bounds":{"left":0.31100398,"top":0.37430167,"width":0.026595745,"height":0.04309657},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Engagement","depth":11,"bounds":{"left":0.31333113,"top":0.40063846,"width":0.021941489,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Feedback","depth":9,"bounds":{"left":0.31100398,"top":0.42059058,"width":0.026595745,"height":0.04309657},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feedback","depth":11,"bounds":{"left":0.3159907,"top":0.44692737,"width":0.01662234,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Events","depth":10,"bounds":{"left":0.3409242,"top":0.059856344,"width":0.024767287,"height":0.028731046},"help_text":"Back","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Events","depth":12,"bounds":{"left":0.3489029,"top":0.066640064,"width":0.014793883,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search engagement, feedback, reports, users and more","depth":13,"bounds":{"left":0.5844415,"top":0.066640064,"width":0.1200133,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"⌘K","depth":13,"bounds":{"left":0.74983376,"top":0.06743815,"width":0.006150266,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":12,"bounds":{"left":0.90890956,"top":0.059856344,"width":0.012632979,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Help","depth":11,"bounds":{"left":0.92420214,"top":0.059856344,"width":0.012632979,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Settings","depth":11,"bounds":{"left":0.93949467,"top":0.059856344,"width":0.012632979,"height":0.028731046},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":15,"bounds":{"left":0.9574468,"top":0.061053474,"width":0.014461436,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Production","depth":14,"bounds":{"left":0.9574468,"top":0.07462091,"width":0.018783245,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":":r318: Active","depth":11,"bounds":{"left":0.34557846,"top":0.110135674,"width":0.5600067,"height":0.025538707},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ PB typing in the box","depth":14,"bounds":{"left":0.34557846,"top":0.11213089,"width":0.07480053,"height":0.021947326},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Active","depth":13,"bounds":{"left":0.42719415,"top":0.11532322,"width":0.013796543,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"more","depth":12,"bounds":{"left":0.9830452,"top":0.10933759,"width":0.013297873,"height":0.027134877},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Segment","depth":15,"bounds":{"left":0.34557846,"top":0.16161214,"width":0.019780586,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Segment All users","depth":15,"bounds":{"left":0.34557846,"top":0.1811652,"width":0.059840426,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All users","depth":17,"bounds":{"left":0.35006648,"top":0.18794893,"width":0.018284574,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Company","depth":14,"bounds":{"left":0.4085771,"top":0.16161214,"width":0.021276595,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Company All companies","depth":14,"bounds":{"left":0.4085771,"top":0.1811652,"width":0.059840426,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"All companies","depth":16,"bounds":{"left":0.41306517,"top":0.18794893,"width":0.03025266,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Page","depth":15,"bounds":{"left":0.4715758,"top":0.16161214,"width":0.010970744,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Page All pages","depth":15,"bounds":{"left":0.4715758,"top":0.1811652,"width":0.059840426,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All pages","depth":17,"bounds":{"left":0.47623006,"top":0.18754987,"width":0.019281914,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Time period","depth":15,"bounds":{"left":0.5347407,"top":0.16161214,"width":0.026761968,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Time period Last 90 days","depth":15,"bounds":{"left":0.5347407,"top":0.1811652,"width":0.059840426,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Last 90 days","depth":17,"bounds":{"left":0.53922874,"top":0.18754987,"width":0.026595745,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Active users","depth":14,"bounds":{"left":0.35754654,"top":0.2509976,"width":0.022273935,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2,838","depth":14,"bounds":{"left":0.35754654,"top":0.27094972,"width":0.013630319,"height":0.017956903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":14,"bounds":{"left":0.37117687,"top":0.27094972,"width":0.0019946808,"height":0.017956903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8177","depth":14,"bounds":{"left":0.37317154,"top":0.27094972,"width":0.012300532,"height":0.017956903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0%","depth":16,"bounds":{"left":0.39727393,"top":0.27214685,"width":0.0066489363,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Active companies","depth":14,"bounds":{"left":0.43068483,"top":0.2509976,"width":0.032413565,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"278","depth":14,"bounds":{"left":0.43068483,"top":0.27094972,"width":0.009142287,"height":0.017956903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":14,"bounds":{"left":0.4398271,"top":0.27094972,"width":0.0019946808,"height":0.017956903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"346","depth":14,"bounds":{"left":0.4418218,"top":0.27094972,"width":0.009142287,"height":0.017956903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8.17%","depth":16,"bounds":{"left":0.4637633,"top":0.27214685,"width":0.013297873,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Total events occurred","depth":14,"bounds":{"left":0.50382316,"top":0.2509976,"width":0.040226065,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"53,212","depth":14,"bounds":{"left":0.50382316,"top":0.27094972,"width":0.01662234,"height":0.017956903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"29.25%","depth":16,"bounds":{"left":0.53424203,"top":0.27214685,"width":0.015957447,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Avg. occurrences per user","depth":14,"bounds":{"left":0.57696146,"top":0.2509976,"width":0.048038565,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19","depth":14,"bounds":{"left":0.57696146,"top":0.27094972,"width":0.006150266,"height":0.017956903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11.76%","depth":16,"bounds":{"left":0.60738033,"top":0.27214685,"width":0.015957447,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Overview","depth":11,"bounds":{"left":0.35355717,"top":0.33160415,"width":0.027094414,"height":0.021548284},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Overview","depth":12,"bounds":{"left":0.35355717,"top":0.33240223,"width":0.027094414,"height":0.019952115},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":":r31a:","depth":12,"bounds":{"left":0.92021275,"top":0.32881084,"width":0.012300532,"height":0.027134877},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"D","depth":15,"bounds":{"left":0.92453456,"top":0.3339984,"width":0.003656915,"height":0.016759777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":":r31c:","depth":12,"bounds":{"left":0.9321808,"top":0.32881084,"width":0.012300532,"height":0.027134877},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"W","depth":15,"bounds":{"left":0.936004,"top":0.3339984,"width":0.004654255,"height":0.016759777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":":r31e:","depth":12,"bounds":{"left":0.94414896,"top":0.32881084,"width":0.012300532,"height":0.027134877},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"M","depth":15,"bounds":{"left":0.94797206,"top":0.3339984,"width":0.004654255,"height":0.016759777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":":r31g:","depth":12,"bounds":{"left":0.9617686,"top":0.32881084,"width":0.011303191,"height":0.027134877},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":":r31i:","depth":12,"bounds":{"left":0.97273934,"top":0.32881084,"width":0.011303191,"height":0.027134877},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Key stat","depth":17,"bounds":{"left":0.59208775,"top":0.46049482,"width":0.016788565,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Feb 2026 (BST)","depth":17,"bounds":{"left":0.6597407,"top":0.46049482,"width":0.030086435,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Total events occurred","depth":17,"bounds":{"left":0.6000665,"top":0.48762968,"width":0.043550532,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16,240","depth":18,"bounds":{"left":0.6609042,"top":0.4868316,"width":0.013464096,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(+2.76%)","depth":19,"bounds":{"left":0.67669547,"top":0.48802873,"width":0.015791224,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unique users","depth":17,"bounds":{"left":0.6000665,"top":0.51276934,"width":0.026761968,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,782","depth":18,"bounds":{"left":0.6609042,"top":0.5123703,"width":0.010970744,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(+17.16%)","depth":19,"bounds":{"left":0.67420214,"top":0.5131684,"width":0.018118352,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unique companies","depth":17,"bounds":{"left":0.6000665,"top":0.5383081,"width":0.037732713,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"238","depth":18,"bounds":{"left":0.6609042,"top":0.53790903,"width":0.007480053,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(+10.19%)","depth":19,"bounds":{"left":0.67071146,"top":0.5387071,"width":0.018118352,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Key stat","depth":17,"bounds":{"left":0.59208775,"top":0.46049482,"width":0.016788565,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Total events occurred","depth":17,"bounds":{"left":0.6000665,"top":0.48762968,"width":0.043550532,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unique users","depth":17,"bounds":{"left":0.6000665,"top":0.51276934,"width":0.026761968,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unique companies","depth":17,"bounds":{"left":0.6000665,"top":0.5383081,"width":0.037732713,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Feb 2026 (BST)","depth":17,"bounds":{"left":0.6597407,"top":0.46049482,"width":0.030086435,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16,240","depth":18,"bounds":{"left":0.6609042,"top":0.4868316,"width":0.013464096,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(+2.76%)","depth":19,"bounds":{"left":0.67669547,"top":0.48802873,"width":0.015791224,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,782","depth":18,"bounds":{"left":0.6609042,"top":0.5123703,"width":0.010970744,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(+17.16%)","depth":19,"bounds":{"left":0.67420214,"top":0.5131684,"width":0.018118352,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"238","depth":18,"bounds":{"left":0.6609042,"top":0.53790903,"width":0.007480053,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(+10.19%)","depth":19,"bounds":{"left":0.67071146,"top":0.5387071,"width":0.018118352,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Click data point to view event properties","depth":14,"bounds":{"left":0.6050532,"top":0.56504387,"width":0.074634306,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Last 90 days","depth":11,"bounds":{"left":0.623504,"top":0.63527536,"width":0.038065158,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Last 90 days","depth":13,"bounds":{"left":0.63580453,"top":0.6380686,"width":0.022772606,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Previous Period","depth":11,"bounds":{"left":0.66954786,"top":0.63527536,"width":0.04454787,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Previous Period","depth":13,"bounds":{"left":0.6818484,"top":0.6380686,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"User activity","depth":14,"bounds":{"left":0.35555187,"top":0.7094972,"width":0.039893616,"height":0.021947326},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search...","depth":13,"bounds":{"left":0.42270613,"top":0.70710295,"width":0.053357713,"height":0.026735835},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"User","depth":19,"bounds":{"left":0.36419547,"top":0.76935357,"width":0.010472074,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Total occurrences","depth":19,"bounds":{"left":0.5034907,"top":0.76935357,"width":0.039893616,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"First occurred","depth":19,"bounds":{"left":0.68932843,"top":0.76935357,"width":0.031083776,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Last occurred","depth":19,"bounds":{"left":0.85056514,"top":0.76935357,"width":0.030585106,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jae Morgan","depth":23,"bounds":{"left":0.3721742,"top":0.8056664,"width":0.02543218,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"f13d09cb-abda-4635-b713-08b6f4f4c578","depth":21,"bounds":{"left":0.3721742,"top":0.82122904,"width":0.075465426,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"59","depth":19,"bounds":{"left":0.5034907,"top":0.81284916,"width":0.004986702,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"March 23, 2026 - 11:03 AM","depth":19,"bounds":{"left":0.68932843,"top":0.81284916,"width":0.053357713,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:53 AM","depth":19,"bounds":{"left":0.85056514,"top":0.81284916,"width":0.049867023,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Carolina Sohns","depth":23,"bounds":{"left":0.3721742,"top":0.849162,"width":0.03357713,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"e6781435-39ad-4c79-a9cb-21529bf02e4b","depth":21,"bounds":{"left":0.3721742,"top":0.86432564,"width":0.076961435,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"121","depth":19,"bounds":{"left":0.5034907,"top":0.8559457,"width":0.007480053,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"January 25, 2026 - 04:49 PM","depth":19,"bounds":{"left":0.68932843,"top":0.8559457,"width":0.055518616,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:50 AM","depth":19,"bounds":{"left":0.85056514,"top":0.8559457,"width":0.049867023,"height":0.014365523},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shazri","depth":23,"bounds":{"left":0.3721742,"top":0.8922586,"width":0.013796543,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"c2e4eeed-d320-4de0-83bd-9d9f140b9c1b","depth":21,"bounds":{"left":0.3721742,"top":0.90782124,"width":0.07762633,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-781945384109429201
|
-5599535691958672666
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | AJ PB typing in the box
Userpilot | AJ PB typing in the box
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Userpilot
Dashboards
Dashboards
People
People
Data
Data
Analytics
Analytics
Sessions
Sessions
Workflows
Workflows
Engagement
Engagement
Feedback
Feedback
Events
Events
Search engagement, feedback, reports, users and more
⌘K
Notifications
Help
Settings
Jiminny
Production
:r318: Active
AJ PB typing in the box
Active
more
Segment
Segment All users
All users
Company
Company All companies
All companies
Page
Page All pages
All pages
Time period
Time period Last 90 days
Last 90 days
Active users
2,838
/
8177
0%
Active companies
278
/
346
8.17%
Total events occurred
53,212
29.25%
Avg. occurrences per user
19
11.76%
Overview
Overview
:r31a:
D
:r31c:
W
:r31e:
M
:r31g:
:r31i:
Key stat
Feb 2026 (BST)
Total events occurred
16,240
(+2.76%)
Unique users
1,782
(+17.16%)
Unique companies
238
(+10.19%)
Key stat
Total events occurred
Unique users
Unique companies
Feb 2026 (BST)
16,240
(+2.76%)
1,782
(+17.16%)
238
(+10.19%)
Click data point to view event properties
Last 90 days
Last 90 days
Previous Period
Previous Period
User activity
Search...
User
Total occurrences
First occurred
Last occurred
Jae Morgan
f13d09cb-abda-4635-b713-08b6f4f4c578
59
March 23, 2026 - 11:03 AM
April 23, 2026 - 09:53 AM
Carolina Sohns
e6781435-39ad-4c79-a9cb-21529bf02e4b
121
January 25, 2026 - 04:49 PM
April 23, 2026 - 09:50 AM
Shazri
c2e4eeed-d320-4de0-83bd-9d9f140b9c1b...
|
73946
|
|
73947
|
NULL
|
0
|
2026-04-23T08:54:07.360971+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776934447360_m1.jpg...
|
Firefox
|
Userpilot | AJ PB typing in the box — Work
|
True
|
run.userpilot.io/events/labeled_event/84
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | AJ PB typing in the box
Userpilot | AJ PB typing in the box
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Userpilot
Dashboards
Dashboards
People
People
Data
Data
Analytics
Analytics
Sessions
Sessions
Workflows
Workflows
Engagement
Engagement
Feedback
Feedback
Events
Events
Search engagement, feedback, reports, users and more
⌘K
Notifications
Help
Settings
Jiminny
Production
:r318: Active
AJ PB typing in the box
Active
more
Segment
Segment All users
All users
Company
Company All companies
All companies
Page
Page All pages
All pages
Time period
Time period Last 90 days
Last 90 days
Active users
2,838
/
8177
0%
Active companies
278
/
346
8.17%
Total events occurred
53,212
29.25%
Avg. occurrences per user
19
11.76%
Overview
Overview
:r31a:
D
:r31c:
W
:r31e:
M
:r31g:
:r31i:
Key stat
Feb 2026 (BST)
Total events occurred
16,240
(+2.76%)
Unique users
1,782
(+17.16%)
Unique companies
238
(+10.19%)
Key stat
Total events occurred
Unique users
Unique companies
Feb 2026 (BST)
16,240
(+2.76%)
1,782
(+17.16%)
238
(+10.19%)
Click data point to view event properties
Last 90 days
Last 90 days
Previous Period
Previous Period
User activity
Search...
User
Total occurrences
First occurred
Last occurred
Jae Morgan
f13d09cb-abda-4635-b713-08b6f4f4c578
59
March 23, 2026 - 11:03 AM
April 23, 2026 - 09:53 AM
Carolina Sohns
e6781435-39ad-4c79-a9cb-21529bf02e4b
121
January 25, 2026 - 04:49 PM
April 23, 2026 - 09:50 AM
Shazri
c2e4eeed-d320-4de0-83bd-9d9f140b9c1b
45
February 3, 2026 - 02:09 AM
April 23, 2026 - 09:48 AM
Alvin Hernandez Enamorado
5bd657b7-a091-460c-bcc2-1f78c434346c
327
January 25, 2026 - 01:03 PM
April 23, 2026 - 09:47 AM
Anne Dorseuil
3c991b27-04a7-4ac9-85bd-64660c254f61
58
January 26, 2026 - 01:34 PM
April 23, 2026 - 09:46 AM
Peter Johnson
2d30015e-8cfe-4e87-84b2-9c5a3d350530
12
February 16, 2026 - 03:09 PM
April 23, 2026 - 09:45 AM
Vanessa Fiehl
57b81ba7-4e02-4d5f-a797-3c5346ab2fdd
18
January 27, 2026 - 12:58 PM
April 23, 2026 - 09:40 AM
Finn Bland
dc0b14ea-6cf7-4dab-9a61-c2c00dc56b94
180
January 27, 2026 - 02:00 PM
April 23, 2026 - 09:37 AM
Aidan MacEwen
deaa5386-5f31-4ea1-bef2-3012ea77007a
84
March 18, 2026 - 09:26 AM
April 23, 2026 - 09:37 AM
Ryan Galvin
edeffaa2-824f-4da1-b313-9a388f6a1a1f
15
January 30, 2026 - 03:20 PM
April 23, 2026 - 09:35 AM
Joseph Stone
46f83224-cd77-448f-800d-f12e93d53882
4
February 2, 2026 - 09:19 AM
April 23, 2026 - 09:33 AM
Maximilian Fraider
3be2a641-0e78-4232-a873-406c7dcf6477
18
January 29, 2026 - 05:22 PM
April 23, 2026 - 09:33 AM
Bobbie Lawrenson
a8cf4560-5349-4626-b79a-eeae8a14d9f1
13
February 19, 2026 - 11:01 AM
April 23, 2026 - 09:32 AM
Shauna O'Connor
767f9049-b02a-4d5b-b43d-0d900df4fb26
52
March 17, 2026 - 04:24 PM
April 23, 2026 - 09:31 AM
Ross Bennington
69317dbb-4b9b-477b-adaf-9692bee2aaa6
4
March 26, 2026 - 02:52 PM
April 23, 2026 - 09:28 AM
User
Jae Morgan
f13d09cb-abda-4635-b713-08b6f4f4c578
Carolina Sohns
e6781435-39ad-4c79-a9cb-21529bf02e4b
Shazri
c2e4eeed-d320-4de0-83bd-9d9f140b9c1b
Alvin Hernandez Enamorado
5bd657b7-a091-460c-bcc2-1f78c434346c
Anne Dorseuil
3c991b27-04a7-4ac9-85bd-64660c254f61
Peter Johnson
2d30015e-8cfe-4e87-84b2-9c5a3d350530
Vanessa Fiehl
57b81ba7-4e02-4d5f-a797-3c5346ab2fdd
Finn Bland
dc0b14ea-6cf7-4dab-9a61-c2c00dc56b94
Aidan MacEwen
deaa5386-5f31-4ea1-bef2-3012ea77007a
Ryan Galvin
edeffaa2-824f-4da1-b313-9a388f6a1a1f
Joseph Stone
46f83224-cd77-448f-800d-f12e93d53882
Maximilian Fraider
3be2a641-0e78-4232-a873-406c7dcf6477
Bobbie Lawrenson
a8cf4560-5349-4626-b79a-eeae8a14d9f1
Shauna O'Connor
767f9049-b02a-4d5b-b43d-0d900df4fb26
Ross Bennington
69317dbb-4b9b-477b-adaf-9692bee2aaa6
Total occurrences
59
121...
|
[{"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":"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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · 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 | AJ PB typing in the box","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Userpilot | AJ PB typing in the box","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},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.017361112,"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":"AXLink","text":"Userpilot","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Dashboards","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dashboards","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"People","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"People","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Data","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Data","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Analytics","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Analytics","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Sessions","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sessions","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Workflows","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Workflows","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Engagement","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Engagement","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Feedback","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feedback","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Events","depth":10,"help_text":"Back","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Events","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search engagement, feedback, reports, users and more","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"⌘K","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Help","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Settings","depth":11,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Production","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":":r318: Active","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ PB typing in the box","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Active","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"more","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Segment","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Segment All users","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All users","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Company","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Company All companies","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"All companies","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Page","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Page All pages","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All pages","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Time period","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Time period Last 90 days","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Last 90 days","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Active users","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2,838","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8177","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0%","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Active companies","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"278","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"346","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8.17%","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Total events occurred","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"53,212","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"29.25%","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Avg. occurrences per user","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11.76%","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Overview","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Overview","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":":r31a:","depth":12,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"D","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":":r31c:","depth":12,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"W","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":":r31e:","depth":12,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"M","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":":r31g:","depth":12,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":":r31i:","depth":12,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Key stat","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Feb 2026 (BST)","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Total events occurred","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16,240","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(+2.76%)","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unique users","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,782","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(+17.16%)","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unique companies","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"238","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(+10.19%)","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Key stat","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Total events occurred","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unique users","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unique companies","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Feb 2026 (BST)","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16,240","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(+2.76%)","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,782","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(+17.16%)","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"238","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(+10.19%)","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Click data point to view event properties","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Last 90 days","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Last 90 days","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Previous Period","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Previous Period","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"User activity","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search...","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"User","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Total occurrences","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"First occurred","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Last occurred","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jae Morgan","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"f13d09cb-abda-4635-b713-08b6f4f4c578","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"59","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"March 23, 2026 - 11:03 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:53 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Carolina Sohns","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"e6781435-39ad-4c79-a9cb-21529bf02e4b","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"121","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"January 25, 2026 - 04:49 PM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:50 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shazri","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"c2e4eeed-d320-4de0-83bd-9d9f140b9c1b","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"45","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"February 3, 2026 - 02:09 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:48 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Alvin Hernandez Enamorado","depth":23,"bounds":{"left":0.21284722,"top":0.0,"width":0.13402778,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5bd657b7-a091-460c-bcc2-1f78c434346c","depth":21,"bounds":{"left":0.21284722,"top":0.0,"width":0.15868056,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"327","depth":19,"bounds":{"left":0.48715279,"top":0.0,"width":0.015625,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"January 25, 2026 - 01:03 PM","depth":19,"bounds":{"left":0.8753472,"top":0.0,"width":0.11597222,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:47 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Anne Dorseuil","depth":23,"bounds":{"left":0.21284722,"top":0.0,"width":0.065972224,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3c991b27-04a7-4ac9-85bd-64660c254f61","depth":21,"bounds":{"left":0.21284722,"top":0.0,"width":0.15972222,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"58","depth":19,"bounds":{"left":0.48715279,"top":0.0,"width":0.010416667,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"January 26, 2026 - 01:34 PM","depth":19,"bounds":{"left":0.8753472,"top":0.0,"width":0.11597222,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:46 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Peter Johnson","depth":23,"bounds":{"left":0.21284722,"top":0.030555556,"width":0.065972224,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2d30015e-8cfe-4e87-84b2-9c5a3d350530","depth":21,"bounds":{"left":0.21284722,"top":0.052222222,"width":0.16041666,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12","depth":19,"bounds":{"left":0.48715279,"top":0.040555555,"width":0.010416667,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"February 16, 2026 - 03:09 PM","depth":19,"bounds":{"left":0.8753472,"top":0.040555555,"width":0.12222222,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:45 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Vanessa Fiehl","depth":23,"bounds":{"left":0.21284722,"top":0.09111111,"width":0.063541666,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"57b81ba7-4e02-4d5f-a797-3c5346ab2fdd","depth":21,"bounds":{"left":0.21284722,"top":0.112222224,"width":0.16006945,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18","depth":19,"bounds":{"left":0.48715279,"top":0.100555554,"width":0.010416667,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"January 27, 2026 - 12:58 PM","depth":19,"bounds":{"left":0.8753472,"top":0.100555554,"width":0.11597222,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:40 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finn Bland","depth":23,"bounds":{"left":0.21284722,"top":0.15111111,"width":0.049652778,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dc0b14ea-6cf7-4dab-9a61-c2c00dc56b94","depth":21,"bounds":{"left":0.21284722,"top":0.17277777,"width":0.15902779,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"180","depth":19,"bounds":{"left":0.48715279,"top":0.16111112,"width":0.015625,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"January 27, 2026 - 02:00 PM","depth":19,"bounds":{"left":0.8753472,"top":0.16111112,"width":0.11597222,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:37 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Aidan MacEwen","depth":23,"bounds":{"left":0.21284722,"top":0.21166667,"width":0.07395833,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"deaa5386-5f31-4ea1-bef2-3012ea77007a","depth":21,"bounds":{"left":0.21284722,"top":0.23277777,"width":0.15902779,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"84","depth":19,"bounds":{"left":0.48715279,"top":0.2211111,"width":0.010416667,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"March 18, 2026 - 09:26 AM","depth":19,"bounds":{"left":0.8753472,"top":0.2211111,"width":0.11145833,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:37 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ryan Galvin","depth":23,"bounds":{"left":0.21284722,"top":0.27166668,"width":0.055208333,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"edeffaa2-824f-4da1-b313-9a388f6a1a1f","depth":21,"bounds":{"left":0.21284722,"top":0.29277778,"width":0.15347221,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15","depth":19,"bounds":{"left":0.48715279,"top":0.28111112,"width":0.010416667,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"January 30, 2026 - 03:20 PM","depth":19,"bounds":{"left":0.8753472,"top":0.28111112,"width":0.11597222,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:35 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Joseph Stone","depth":23,"bounds":{"left":0.21284722,"top":0.33166668,"width":0.060763888,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"46f83224-cd77-448f-800d-f12e93d53882","depth":21,"bounds":{"left":0.21284722,"top":0.35333332,"width":0.15763889,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":19,"bounds":{"left":0.48715279,"top":0.34166667,"width":0.0052083335,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"February 2, 2026 - 09:19 AM","depth":19,"bounds":{"left":0.8753472,"top":0.34166667,"width":0.11736111,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:33 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Maximilian Fraider","depth":23,"bounds":{"left":0.21284722,"top":0.39222223,"width":0.087847225,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3be2a641-0e78-4232-a873-406c7dcf6477","depth":21,"bounds":{"left":0.21284722,"top":0.41333333,"width":0.16006945,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18","depth":19,"bounds":{"left":0.48715279,"top":0.40166667,"width":0.010416667,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"January 29, 2026 - 05:22 PM","depth":19,"bounds":{"left":0.8753472,"top":0.40166667,"width":0.11597222,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:33 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bobbie Lawrenson","depth":23,"bounds":{"left":0.21284722,"top":0.45222223,"width":0.08715278,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"a8cf4560-5349-4626-b79a-eeae8a14d9f1","depth":21,"bounds":{"left":0.21284722,"top":0.47388887,"width":0.15833333,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13","depth":19,"bounds":{"left":0.48715279,"top":0.46222222,"width":0.010416667,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"February 19, 2026 - 11:01 AM","depth":19,"bounds":{"left":0.8753472,"top":0.46222222,"width":0.12222222,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:32 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shauna O'Connor","depth":23,"bounds":{"left":0.21284722,"top":0.5127778,"width":0.08229167,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"767f9049-b02a-4d5b-b43d-0d900df4fb26","depth":21,"bounds":{"left":0.21284722,"top":0.5338889,"width":0.16006945,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"52","depth":19,"bounds":{"left":0.48715279,"top":0.5222222,"width":0.010416667,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"March 17, 2026 - 04:24 PM","depth":19,"bounds":{"left":0.8753472,"top":0.5222222,"width":0.11111111,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:31 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ross Bennington","depth":23,"bounds":{"left":0.21284722,"top":0.57277775,"width":0.078819446,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"69317dbb-4b9b-477b-adaf-9692bee2aaa6","depth":21,"bounds":{"left":0.21284722,"top":0.5938889,"width":0.16319445,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":19,"bounds":{"left":0.48715279,"top":0.5822222,"width":0.0052083335,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"March 26, 2026 - 02:52 PM","depth":19,"bounds":{"left":0.8753472,"top":0.5822222,"width":0.11111111,"height":0.02},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"April 23, 2026 - 09:28 AM","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"User","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jae Morgan","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"f13d09cb-abda-4635-b713-08b6f4f4c578","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Carolina Sohns","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"e6781435-39ad-4c79-a9cb-21529bf02e4b","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shazri","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"c2e4eeed-d320-4de0-83bd-9d9f140b9c1b","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Alvin Hernandez Enamorado","depth":22,"bounds":{"left":0.21284722,"top":0.0,"width":0.13402778,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5bd657b7-a091-460c-bcc2-1f78c434346c","depth":20,"bounds":{"left":0.21284722,"top":0.0,"width":0.15868056,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Anne Dorseuil","depth":22,"bounds":{"left":0.21284722,"top":0.0,"width":0.065972224,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3c991b27-04a7-4ac9-85bd-64660c254f61","depth":20,"bounds":{"left":0.21284722,"top":0.0,"width":0.15972222,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Peter Johnson","depth":22,"bounds":{"left":0.21284722,"top":0.030555556,"width":0.065972224,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2d30015e-8cfe-4e87-84b2-9c5a3d350530","depth":20,"bounds":{"left":0.21284722,"top":0.052222222,"width":0.16041666,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Vanessa Fiehl","depth":22,"bounds":{"left":0.21284722,"top":0.09111111,"width":0.063541666,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"57b81ba7-4e02-4d5f-a797-3c5346ab2fdd","depth":20,"bounds":{"left":0.21284722,"top":0.112222224,"width":0.16006945,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finn Bland","depth":22,"bounds":{"left":0.21284722,"top":0.15111111,"width":0.049652778,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dc0b14ea-6cf7-4dab-9a61-c2c00dc56b94","depth":20,"bounds":{"left":0.21284722,"top":0.17277777,"width":0.15902779,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Aidan MacEwen","depth":22,"bounds":{"left":0.21284722,"top":0.21166667,"width":0.07395833,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"deaa5386-5f31-4ea1-bef2-3012ea77007a","depth":20,"bounds":{"left":0.21284722,"top":0.23277777,"width":0.15902779,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ryan Galvin","depth":22,"bounds":{"left":0.21284722,"top":0.27166668,"width":0.055208333,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"edeffaa2-824f-4da1-b313-9a388f6a1a1f","depth":20,"bounds":{"left":0.21284722,"top":0.29277778,"width":0.15347221,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Joseph Stone","depth":22,"bounds":{"left":0.21284722,"top":0.33166668,"width":0.060763888,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"46f83224-cd77-448f-800d-f12e93d53882","depth":20,"bounds":{"left":0.21284722,"top":0.35333332,"width":0.15763889,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Maximilian Fraider","depth":22,"bounds":{"left":0.21284722,"top":0.39222223,"width":0.087847225,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3be2a641-0e78-4232-a873-406c7dcf6477","depth":20,"bounds":{"left":0.21284722,"top":0.41333333,"width":0.16006945,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bobbie Lawrenson","depth":22,"bounds":{"left":0.21284722,"top":0.45222223,"width":0.08715278,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"a8cf4560-5349-4626-b79a-eeae8a14d9f1","depth":20,"bounds":{"left":0.21284722,"top":0.47388887,"width":0.15833333,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shauna O'Connor","depth":22,"bounds":{"left":0.21284722,"top":0.5127778,"width":0.08229167,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"767f9049-b02a-4d5b-b43d-0d900df4fb26","depth":20,"bounds":{"left":0.21284722,"top":0.5338889,"width":0.16006945,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ross Bennington","depth":22,"bounds":{"left":0.21284722,"top":0.57277775,"width":0.078819446,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"69317dbb-4b9b-477b-adaf-9692bee2aaa6","depth":20,"bounds":{"left":0.21284722,"top":0.5938889,"width":0.16319445,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Total occurrences","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"59","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"121","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-1580868333270176883
|
-9190083359819390297
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
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-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | AJ PB typing in the box
Userpilot | AJ PB typing in the box
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Userpilot
Dashboards
Dashboards
People
People
Data
Data
Analytics
Analytics
Sessions
Sessions
Workflows
Workflows
Engagement
Engagement
Feedback
Feedback
Events
Events
Search engagement, feedback, reports, users and more
⌘K
Notifications
Help
Settings
Jiminny
Production
:r318: Active
AJ PB typing in the box
Active
more
Segment
Segment All users
All users
Company
Company All companies
All companies
Page
Page All pages
All pages
Time period
Time period Last 90 days
Last 90 days
Active users
2,838
/
8177
0%
Active companies
278
/
346
8.17%
Total events occurred
53,212
29.25%
Avg. occurrences per user
19
11.76%
Overview
Overview
:r31a:
D
:r31c:
W
:r31e:
M
:r31g:
:r31i:
Key stat
Feb 2026 (BST)
Total events occurred
16,240
(+2.76%)
Unique users
1,782
(+17.16%)
Unique companies
238
(+10.19%)
Key stat
Total events occurred
Unique users
Unique companies
Feb 2026 (BST)
16,240
(+2.76%)
1,782
(+17.16%)
238
(+10.19%)
Click data point to view event properties
Last 90 days
Last 90 days
Previous Period
Previous Period
User activity
Search...
User
Total occurrences
First occurred
Last occurred
Jae Morgan
f13d09cb-abda-4635-b713-08b6f4f4c578
59
March 23, 2026 - 11:03 AM
April 23, 2026 - 09:53 AM
Carolina Sohns
e6781435-39ad-4c79-a9cb-21529bf02e4b
121
January 25, 2026 - 04:49 PM
April 23, 2026 - 09:50 AM
Shazri
c2e4eeed-d320-4de0-83bd-9d9f140b9c1b
45
February 3, 2026 - 02:09 AM
April 23, 2026 - 09:48 AM
Alvin Hernandez Enamorado
5bd657b7-a091-460c-bcc2-1f78c434346c
327
January 25, 2026 - 01:03 PM
April 23, 2026 - 09:47 AM
Anne Dorseuil
3c991b27-04a7-4ac9-85bd-64660c254f61
58
January 26, 2026 - 01:34 PM
April 23, 2026 - 09:46 AM
Peter Johnson
2d30015e-8cfe-4e87-84b2-9c5a3d350530
12
February 16, 2026 - 03:09 PM
April 23, 2026 - 09:45 AM
Vanessa Fiehl
57b81ba7-4e02-4d5f-a797-3c5346ab2fdd
18
January 27, 2026 - 12:58 PM
April 23, 2026 - 09:40 AM
Finn Bland
dc0b14ea-6cf7-4dab-9a61-c2c00dc56b94
180
January 27, 2026 - 02:00 PM
April 23, 2026 - 09:37 AM
Aidan MacEwen
deaa5386-5f31-4ea1-bef2-3012ea77007a
84
March 18, 2026 - 09:26 AM
April 23, 2026 - 09:37 AM
Ryan Galvin
edeffaa2-824f-4da1-b313-9a388f6a1a1f
15
January 30, 2026 - 03:20 PM
April 23, 2026 - 09:35 AM
Joseph Stone
46f83224-cd77-448f-800d-f12e93d53882
4
February 2, 2026 - 09:19 AM
April 23, 2026 - 09:33 AM
Maximilian Fraider
3be2a641-0e78-4232-a873-406c7dcf6477
18
January 29, 2026 - 05:22 PM
April 23, 2026 - 09:33 AM
Bobbie Lawrenson
a8cf4560-5349-4626-b79a-eeae8a14d9f1
13
February 19, 2026 - 11:01 AM
April 23, 2026 - 09:32 AM
Shauna O'Connor
767f9049-b02a-4d5b-b43d-0d900df4fb26
52
March 17, 2026 - 04:24 PM
April 23, 2026 - 09:31 AM
Ross Bennington
69317dbb-4b9b-477b-adaf-9692bee2aaa6
4
March 26, 2026 - 02:52 PM
April 23, 2026 - 09:28 AM
User
Jae Morgan
f13d09cb-abda-4635-b713-08b6f4f4c578
Carolina Sohns
e6781435-39ad-4c79-a9cb-21529bf02e4b
Shazri
c2e4eeed-d320-4de0-83bd-9d9f140b9c1b
Alvin Hernandez Enamorado
5bd657b7-a091-460c-bcc2-1f78c434346c
Anne Dorseuil
3c991b27-04a7-4ac9-85bd-64660c254f61
Peter Johnson
2d30015e-8cfe-4e87-84b2-9c5a3d350530
Vanessa Fiehl
57b81ba7-4e02-4d5f-a797-3c5346ab2fdd
Finn Bland
dc0b14ea-6cf7-4dab-9a61-c2c00dc56b94
Aidan MacEwen
deaa5386-5f31-4ea1-bef2-3012ea77007a
Ryan Galvin
edeffaa2-824f-4da1-b313-9a388f6a1a1f
Joseph Stone
46f83224-cd77-448f-800d-f12e93d53882
Maximilian Fraider
3be2a641-0e78-4232-a873-406c7dcf6477
Bobbie Lawrenson
a8cf4560-5349-4626-b79a-eeae8a14d9f1
Shauna O'Connor
767f9049-b02a-4d5b-b43d-0d900df4fb26
Ross Bennington
69317dbb-4b9b-477b-adaf-9692bee2aaa6
Total occurrences
59
121...
|
73945
|
|
73888
|
NULL
|
0
|
2026-04-23T08:49:11.405236+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776934151405_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+Hidden BarAdelina Petrova (Presenting, ann+- Save +Hidden BarAdelina Petrova (Presenting, ann+- Saved ReportsRetention TrendPwopleDиtA20%15%< Week 1Retention Table*Docker Desktop is running• Go to the DashboardSign in / Sign upSettings...TroubleshootGive feedbackAbout Docker DesktopDocker HubDocumentationExtensionsKubernetes Context® Download update• Restart11 PauseU Quit Docker ResktopWeek 1CohortAverage RetectionMrch 131.3028March 30, 202641 Users10ra 8 3028April 13, 202630 UsersAocl 20, 202817 Users› $0§ Userpilot Introducti... 41 m left-ifky-yjc?authuser=lukas.kovalik%40jiminny.com100% (478• Thu 23 Apr 11:49:1918ets, Users And MoreAdelina PetrovaMihail Mihaylov*QANeCkPek &Week 1„Week 232.7% -1225%WEeKSWeek 330%Week 435%13 othersStefka Stoyanova28.4%Get Started with Userpilot11:49 AM | Userpilot IntroductionLukas Kovalik18:41...
|
NULL
|
-4613005255166926388
|
NULL
|
visual_change
|
ocr
|
NULL
|
+Hidden BarAdelina Petrova (Presenting, ann+- Save +Hidden BarAdelina Petrova (Presenting, ann+- Saved ReportsRetention TrendPwopleDиtA20%15%< Week 1Retention Table*Docker Desktop is running• Go to the DashboardSign in / Sign upSettings...TroubleshootGive feedbackAbout Docker DesktopDocker HubDocumentationExtensionsKubernetes Context® Download update• Restart11 PauseU Quit Docker ResktopWeek 1CohortAverage RetectionMrch 131.3028March 30, 202641 Users10ra 8 3028April 13, 202630 UsersAocl 20, 202817 Users› $0§ Userpilot Introducti... 41 m left-ifky-yjc?authuser=lukas.kovalik%40jiminny.com100% (478• Thu 23 Apr 11:49:1918ets, Users And MoreAdelina PetrovaMihail Mihaylov*QANeCkPek &Week 1„Week 232.7% -1225%WEeKSWeek 330%Week 435%13 othersStefka Stoyanova28.4%Get Started with Userpilot11:49 AM | Userpilot IntroductionLukas Kovalik18:41...
|
73886
|
|
73887
|
NULL
|
0
|
2026-04-23T08:48:49.180233+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776934129180_m2.jpg...
|
iTerm2
|
docker
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
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 ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 46.498 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at https://docs.docker.com/go/debug-cli/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
Switched to branch 'master'
Your branch is behind 'origin/master' by 63 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 8 (delta 6), reused 6 (delta 5), pack-reused 0 (from 0)
Unpacking objects: 100% (8/8), 872 bytes | 62.00 KiB/s, done.
From github.com:jiminny/app
40be217d54..0dd5b23990 master -> origin/master
* [new branch] handle-throwable-exception-activity-sync -> origin/handle-throwable-exception-activity-sync
Updating d207a770d8..0dd5b23990
Fast-forward
app/Component/ActivitySearch/FilterDefinition/ActivityUpdatedDate.php | 7 +-
app/Component/ActivitySearch/Service/ActivitySearch.php | 15 ++
app/Component/ProphetAi/ProphetClient.php | 5 +
app/Console/Commands/Reports/AutomatedReportsCommand.php | 91 +++++++++++-
app/Console/Commands/Reports/AutomatedReportsSendCommand.php | 40 +++++-
app/Events/AutomatedReports/AutomatedReportGenerated.php | 15 ++
app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php | 33 ++++-
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 2 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 2 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 27 ++++
app/Http/Controllers/Webhook/ReportController.php | 5 +
app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php | 210 +++++++++++++++++++++++++++
app/Jobs/AutomatedReports/SendReportJob.php | 2 +
app/Jobs/AutomatedReports/SendReportMailJob.php | 6 +-
app/Jobs/Crm/SyncHubspotObjects.php | 2 -
app/Jobs/Crm/SyncObjects.php | 2 -
app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php | 82 +++++++++++
app/Mail/Reports/ReportWithAttachment.php | 7 +-
app/Models/Contracts/UserContract.php | 6 +
app/Providers/EventServiceProvider.php | 4 +
app/Repositories/AutomatedReportsRepository.php | 76 +++++++++-
app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php | 143 +++++++++++++++++++
app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 222 +++++++++++++++++++++++++----
front-end/package.json | 2 +-
front-end/src/components/AiReports/AiReports.vue | 9 +-
front-end/src/components/AiReports/GridCells/ActionsCell.vue | 107 +++++++++++---
front-end/src/components/AiReports/GridCells/NameCell.vue | 13 +-
front-end/src/components/AiReports/GridCells/TypeIndicator.vue | 26 ++--
front-end/src/components/AiReports/Manage/ExpiringCell.vue | 86 +++++++++++
front-end/src/components/AiReports/Manage/ManageAiReports.less | 6 +
front-end/src/components/AiReports/Manage/ManageAiReports.vue | 6 +-
front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js | 116 +++++++++++++++
front-end/src/components/AiReports/Manage/__tests__/ManageAiReports.spec.js | 32 +++--
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/create-definition-drawer.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/edit-definition-drawer.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/manage-ai-reports.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/gridConfig.js | 12 +-
front-end/src/components/AiReports/__tests__/AiReports.spec.js | 45 +++++-
front-end/src/components/AiReports/__tests__/__mocks__/data.js | 49 +++++++
front-end/src/components/AiReports/__tests__/__mocks__/requestHandlers.js | 3 +
front-end/src/components/AiReports/__tests__/__snapshots__/ai-reports.output.html | 319 ++++++++++++++++++++++++++++++++++++++++-
front-end/src/components/AiReports/constants.js | 1 +
front-end/src/components/AiReports/gridConfig.js | 2 +-
front-end/src/components/AiReports/useAiReportsGrid.js | 27 ++++
front-end/src/components/Settings/Kiosk/AutomatedReports/RecipientsCell.vue | 36 ++++-
front-end/src/components/Settings/Kiosk/AutomatedReports/UsersCell.vue | 9 +-
front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js | 171 ++++++++++++++++++++++
front-end/src/components/shared/GridView/useOrder.js | 6 +-
front-end/src/components/shared/GridView/usePaginationList.js | 7 +-
front-end/yarn.lock | 8 +-
resources/views/emails/reports/ask-jiminny-report-generated.blade.php | 25 ++++
routes/api.php | 1 +
tests/Unit/Console/Commands/Reports/AutomatedReportsCommandTest.php | 468 +++++++++++++++++++++++++++++++++++++++++-------------------
tests/Unit/Http/Controllers/Webhook/ReportControllerTest.php | 9 +-
tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php | 407 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php | 199 ++++++++++++++++++++++++++
tests/Unit/Repositories/AutomatedReportsRepositoryTest.php | 55 +++++++
tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php | 430 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.php | 521 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
59 files changed, 4119 insertions(+), 347 deletions(-)
create mode 100644 app/Events/AutomatedReports/AutomatedReportGenerated.php
create mode 100644 app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
create mode 100644 app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php
create mode 100644 app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php
create mode 100644 front-end/src/components/AiReports/Manage/ExpiringCell.vue
create mode 100644 fro...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\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 ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 46.498 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is behind 'origin/master' by 63 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 8, done.\nremote: Counting objects: 100% (8/8), done.\nremote: Compressing objects: 100% (3/3), done.\nremote: Total 8 (delta 6), reused 6 (delta 5), pack-reused 0 (from 0)\nUnpacking objects: 100% (8/8), 872 bytes | 62.00 KiB/s, done.\nFrom github.com:jiminny/app\n 40be217d54..0dd5b23990 master -> origin/master\n * [new branch] handle-throwable-exception-activity-sync -> origin/handle-throwable-exception-activity-sync\nUpdating d207a770d8..0dd5b23990\nFast-forward\n app/Component/ActivitySearch/FilterDefinition/ActivityUpdatedDate.php | 7 +-\n app/Component/ActivitySearch/Service/ActivitySearch.php | 15 ++\n app/Component/ProphetAi/ProphetClient.php | 5 +\n app/Console/Commands/Reports/AutomatedReportsCommand.php | 91 +++++++++++-\n app/Console/Commands/Reports/AutomatedReportsSendCommand.php | 40 +++++-\n app/Events/AutomatedReports/AutomatedReportGenerated.php | 15 ++\n app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php | 33 ++++-\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 2 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 2 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 27 ++++\n app/Http/Controllers/Webhook/ReportController.php | 5 +\n app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php | 210 +++++++++++++++++++++++++++\n app/Jobs/AutomatedReports/SendReportJob.php | 2 +\n app/Jobs/AutomatedReports/SendReportMailJob.php | 6 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 2 -\n app/Jobs/Crm/SyncObjects.php | 2 -\n app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php | 82 +++++++++++\n app/Mail/Reports/ReportWithAttachment.php | 7 +-\n app/Models/Contracts/UserContract.php | 6 +\n app/Providers/EventServiceProvider.php | 4 +\n app/Repositories/AutomatedReportsRepository.php | 76 +++++++++-\n app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php | 143 +++++++++++++++++++\n app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 222 +++++++++++++++++++++++++----\n front-end/package.json | 2 +-\n front-end/src/components/AiReports/AiReports.vue | 9 +-\n front-end/src/components/AiReports/GridCells/ActionsCell.vue | 107 +++++++++++---\n front-end/src/components/AiReports/GridCells/NameCell.vue | 13 +-\n front-end/src/components/AiReports/GridCells/TypeIndicator.vue | 26 ++--\n front-end/src/components/AiReports/Manage/ExpiringCell.vue | 86 +++++++++++\n front-end/src/components/AiReports/Manage/ManageAiReports.less | 6 +\n front-end/src/components/AiReports/Manage/ManageAiReports.vue | 6 +-\n front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js | 116 +++++++++++++++\n front-end/src/components/AiReports/Manage/__tests__/ManageAiReports.spec.js | 32 +++--\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/create-definition-drawer.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/edit-definition-drawer.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/manage-ai-reports.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/gridConfig.js | 12 +-\n front-end/src/components/AiReports/__tests__/AiReports.spec.js | 45 +++++-\n front-end/src/components/AiReports/__tests__/__mocks__/data.js | 49 +++++++\n front-end/src/components/AiReports/__tests__/__mocks__/requestHandlers.js | 3 +\n front-end/src/components/AiReports/__tests__/__snapshots__/ai-reports.output.html | 319 ++++++++++++++++++++++++++++++++++++++++-\n front-end/src/components/AiReports/constants.js | 1 +\n front-end/src/components/AiReports/gridConfig.js | 2 +-\n front-end/src/components/AiReports/useAiReportsGrid.js | 27 ++++\n front-end/src/components/Settings/Kiosk/AutomatedReports/RecipientsCell.vue | 36 ++++-\n front-end/src/components/Settings/Kiosk/AutomatedReports/UsersCell.vue | 9 +-\n front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js | 171 ++++++++++++++++++++++\n front-end/src/components/shared/GridView/useOrder.js | 6 +-\n front-end/src/components/shared/GridView/usePaginationList.js | 7 +-\n front-end/yarn.lock | 8 +-\n resources/views/emails/reports/ask-jiminny-report-generated.blade.php | 25 ++++\n routes/api.php | 1 +\n tests/Unit/Console/Commands/Reports/AutomatedReportsCommandTest.php | 468 +++++++++++++++++++++++++++++++++++++++++-------------------\n tests/Unit/Http/Controllers/Webhook/ReportControllerTest.php | 9 +-\n tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php | 407 ++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php | 199 ++++++++++++++++++++++++++\n tests/Unit/Repositories/AutomatedReportsRepositoryTest.php | 55 +++++++\n tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php | 430 +++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.php | 521 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--\n 59 files changed, 4119 insertions(+), 347 deletions(-)\n create mode 100644 app/Events/AutomatedReports/AutomatedReportGenerated.php\n create mode 100644 app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n create mode 100644 app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php\n create mode 100644 app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php\n create mode 100644 front-end/src/components/AiReports/Manage/ExpiringCell.vue\n create mode 100644 front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js\n create mode 100644 front-end/src/components/AiReports/constants.js\n create mode 100644 front-end/src/components/AiReports/useAiReportsGrid.js\n create mode 100644 front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js\n create mode 100644 resources/views/emails/reports/ask-jiminny-report-generated.blade.php\n create mode 100644 tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n create mode 100644 tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php\n create mode 100644 tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20157-AJ-report-not-send-notification \nSwitched to a new branch 'JY-20157-AJ-report-not-send-notification'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\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 ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 46.498 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is behind 'origin/master' by 63 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 8, done.\nremote: Counting objects: 100% (8/8), done.\nremote: Compressing objects: 100% (3/3), done.\nremote: Total 8 (delta 6), reused 6 (delta 5), pack-reused 0 (from 0)\nUnpacking objects: 100% (8/8), 872 bytes | 62.00 KiB/s, done.\nFrom github.com:jiminny/app\n 40be217d54..0dd5b23990 master -> origin/master\n * [new branch] handle-throwable-exception-activity-sync -> origin/handle-throwable-exception-activity-sync\nUpdating d207a770d8..0dd5b23990\nFast-forward\n app/Component/ActivitySearch/FilterDefinition/ActivityUpdatedDate.php | 7 +-\n app/Component/ActivitySearch/Service/ActivitySearch.php | 15 ++\n app/Component/ProphetAi/ProphetClient.php | 5 +\n app/Console/Commands/Reports/AutomatedReportsCommand.php | 91 +++++++++++-\n app/Console/Commands/Reports/AutomatedReportsSendCommand.php | 40 +++++-\n app/Events/AutomatedReports/AutomatedReportGenerated.php | 15 ++\n app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php | 33 ++++-\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 2 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 2 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 27 ++++\n app/Http/Controllers/Webhook/ReportController.php | 5 +\n app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php | 210 +++++++++++++++++++++++++++\n app/Jobs/AutomatedReports/SendReportJob.php | 2 +\n app/Jobs/AutomatedReports/SendReportMailJob.php | 6 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 2 -\n app/Jobs/Crm/SyncObjects.php | 2 -\n app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php | 82 +++++++++++\n app/Mail/Reports/ReportWithAttachment.php | 7 +-\n app/Models/Contracts/UserContract.php | 6 +\n app/Providers/EventServiceProvider.php | 4 +\n app/Repositories/AutomatedReportsRepository.php | 76 +++++++++-\n app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php | 143 +++++++++++++++++++\n app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 222 +++++++++++++++++++++++++----\n front-end/package.json | 2 +-\n front-end/src/components/AiReports/AiReports.vue | 9 +-\n front-end/src/components/AiReports/GridCells/ActionsCell.vue | 107 +++++++++++---\n front-end/src/components/AiReports/GridCells/NameCell.vue | 13 +-\n front-end/src/components/AiReports/GridCells/TypeIndicator.vue | 26 ++--\n front-end/src/components/AiReports/Manage/ExpiringCell.vue | 86 +++++++++++\n front-end/src/components/AiReports/Manage/ManageAiReports.less | 6 +\n front-end/src/components/AiReports/Manage/ManageAiReports.vue | 6 +-\n front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js | 116 +++++++++++++++\n front-end/src/components/AiReports/Manage/__tests__/ManageAiReports.spec.js | 32 +++--\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/create-definition-drawer.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/edit-definition-drawer.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/manage-ai-reports.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/gridConfig.js | 12 +-\n front-end/src/components/AiReports/__tests__/AiReports.spec.js | 45 +++++-\n front-end/src/components/AiReports/__tests__/__mocks__/data.js | 49 +++++++\n front-end/src/components/AiReports/__tests__/__mocks__/requestHandlers.js | 3 +\n front-end/src/components/AiReports/__tests__/__snapshots__/ai-reports.output.html | 319 ++++++++++++++++++++++++++++++++++++++++-\n front-end/src/components/AiReports/constants.js | 1 +\n front-end/src/components/AiReports/gridConfig.js | 2 +-\n front-end/src/components/AiReports/useAiReportsGrid.js | 27 ++++\n front-end/src/components/Settings/Kiosk/AutomatedReports/RecipientsCell.vue | 36 ++++-\n front-end/src/components/Settings/Kiosk/AutomatedReports/UsersCell.vue | 9 +-\n front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js | 171 ++++++++++++++++++++++\n front-end/src/components/shared/GridView/useOrder.js | 6 +-\n front-end/src/components/shared/GridView/usePaginationList.js | 7 +-\n front-end/yarn.lock | 8 +-\n resources/views/emails/reports/ask-jiminny-report-generated.blade.php | 25 ++++\n routes/api.php | 1 +\n tests/Unit/Console/Commands/Reports/AutomatedReportsCommandTest.php | 468 +++++++++++++++++++++++++++++++++++++++++-------------------\n tests/Unit/Http/Controllers/Webhook/ReportControllerTest.php | 9 +-\n tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php | 407 ++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php | 199 ++++++++++++++++++++++++++\n tests/Unit/Repositories/AutomatedReportsRepositoryTest.php | 55 +++++++\n tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php | 430 +++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.php | 521 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--\n 59 files changed, 4119 insertions(+), 347 deletions(-)\n create mode 100644 app/Events/AutomatedReports/AutomatedReportGenerated.php\n create mode 100644 app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n create mode 100644 app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php\n create mode 100644 app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php\n create mode 100644 front-end/src/components/AiReports/Manage/ExpiringCell.vue\n create mode 100644 front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js\n create mode 100644 front-end/src/components/AiReports/constants.js\n create mode 100644 front-end/src/components/AiReports/useAiReportsGrid.js\n create mode 100644 front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js\n create mode 100644 resources/views/emails/reports/ask-jiminny-report-generated.blade.php\n create mode 100644 tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n create mode 100644 tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php\n create mode 100644 tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20157-AJ-report-not-send-notification \nSwitched to a new branch 'JY-20157-AJ-report-not-send-notification'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.042298485,"width":0.065990694,"height":0.01915403},"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.0019946808,"top":0.045490824,"width":0.005319149,"height":0.012769354},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"docker","depth":2,"bounds":{"left":0.065990694,"top":0.042298485,"width":0.065990694,"height":0.01915403},"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.06798537,"top":0.045490824,"width":0.005319149,"height":0.012769354},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"docker","depth":2,"bounds":{"left":0.13198139,"top":0.042298485,"width":0.065990694,"height":0.01915403},"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.13397606,"top":0.045490824,"width":0.005319149,"height":0.012769354},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.19797207,"top":0.042298485,"width":0.065990694,"height":0.01915403},"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.19996676,"top":0.045490824,"width":0.005319149,"height":0.012769354},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ffmpeg","depth":2,"bounds":{"left":0.26396278,"top":0.042298485,"width":0.06582447,"height":0.01915403},"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.26595744,"top":0.045490824,"width":0.005319149,"height":0.012769354},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.32978722,"top":0.042298485,"width":0.06582447,"height":0.01915403},"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.33178192,"top":0.045490824,"width":0.005319149,"height":0.012769354},"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.3956117,"top":0.042298485,"width":0.06582447,"height":0.01915403},"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.39760637,"top":0.045490824,"width":0.005319149,"height":0.012769354},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (-zsh)","depth":2,"bounds":{"left":0.46143618,"top":0.042298485,"width":0.06582447,"height":0.01915403},"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.46343085,"top":0.045490824,"width":0.005319149,"height":0.012769354},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.51363033,"top":0.023144454,"width":0.01861702,"height":0.013567438},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"docker","depth":1,"bounds":{"left":0.25930852,"top":0.023942538,"width":0.016289894,"height":0.012769354},"role_description":"text"}]...
|
5995459936453258264
|
-1076456339805820197
|
visual_change
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
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 ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 46.498 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at https://docs.docker.com/go/debug-cli/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
Switched to branch 'master'
Your branch is behind 'origin/master' by 63 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 8 (delta 6), reused 6 (delta 5), pack-reused 0 (from 0)
Unpacking objects: 100% (8/8), 872 bytes | 62.00 KiB/s, done.
From github.com:jiminny/app
40be217d54..0dd5b23990 master -> origin/master
* [new branch] handle-throwable-exception-activity-sync -> origin/handle-throwable-exception-activity-sync
Updating d207a770d8..0dd5b23990
Fast-forward
app/Component/ActivitySearch/FilterDefinition/ActivityUpdatedDate.php | 7 +-
app/Component/ActivitySearch/Service/ActivitySearch.php | 15 ++
app/Component/ProphetAi/ProphetClient.php | 5 +
app/Console/Commands/Reports/AutomatedReportsCommand.php | 91 +++++++++++-
app/Console/Commands/Reports/AutomatedReportsSendCommand.php | 40 +++++-
app/Events/AutomatedReports/AutomatedReportGenerated.php | 15 ++
app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php | 33 ++++-
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 2 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 2 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 27 ++++
app/Http/Controllers/Webhook/ReportController.php | 5 +
app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php | 210 +++++++++++++++++++++++++++
app/Jobs/AutomatedReports/SendReportJob.php | 2 +
app/Jobs/AutomatedReports/SendReportMailJob.php | 6 +-
app/Jobs/Crm/SyncHubspotObjects.php | 2 -
app/Jobs/Crm/SyncObjects.php | 2 -
app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php | 82 +++++++++++
app/Mail/Reports/ReportWithAttachment.php | 7 +-
app/Models/Contracts/UserContract.php | 6 +
app/Providers/EventServiceProvider.php | 4 +
app/Repositories/AutomatedReportsRepository.php | 76 +++++++++-
app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php | 143 +++++++++++++++++++
app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 222 +++++++++++++++++++++++++----
front-end/package.json | 2 +-
front-end/src/components/AiReports/AiReports.vue | 9 +-
front-end/src/components/AiReports/GridCells/ActionsCell.vue | 107 +++++++++++---
front-end/src/components/AiReports/GridCells/NameCell.vue | 13 +-
front-end/src/components/AiReports/GridCells/TypeIndicator.vue | 26 ++--
front-end/src/components/AiReports/Manage/ExpiringCell.vue | 86 +++++++++++
front-end/src/components/AiReports/Manage/ManageAiReports.less | 6 +
front-end/src/components/AiReports/Manage/ManageAiReports.vue | 6 +-
front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js | 116 +++++++++++++++
front-end/src/components/AiReports/Manage/__tests__/ManageAiReports.spec.js | 32 +++--
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/create-definition-drawer.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/edit-definition-drawer.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/manage-ai-reports.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/gridConfig.js | 12 +-
front-end/src/components/AiReports/__tests__/AiReports.spec.js | 45 +++++-
front-end/src/components/AiReports/__tests__/__mocks__/data.js | 49 +++++++
front-end/src/components/AiReports/__tests__/__mocks__/requestHandlers.js | 3 +
front-end/src/components/AiReports/__tests__/__snapshots__/ai-reports.output.html | 319 ++++++++++++++++++++++++++++++++++++++++-
front-end/src/components/AiReports/constants.js | 1 +
front-end/src/components/AiReports/gridConfig.js | 2 +-
front-end/src/components/AiReports/useAiReportsGrid.js | 27 ++++
front-end/src/components/Settings/Kiosk/AutomatedReports/RecipientsCell.vue | 36 ++++-
front-end/src/components/Settings/Kiosk/AutomatedReports/UsersCell.vue | 9 +-
front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js | 171 ++++++++++++++++++++++
front-end/src/components/shared/GridView/useOrder.js | 6 +-
front-end/src/components/shared/GridView/usePaginationList.js | 7 +-
front-end/yarn.lock | 8 +-
resources/views/emails/reports/ask-jiminny-report-generated.blade.php | 25 ++++
routes/api.php | 1 +
tests/Unit/Console/Commands/Reports/AutomatedReportsCommandTest.php | 468 +++++++++++++++++++++++++++++++++++++++++-------------------
tests/Unit/Http/Controllers/Webhook/ReportControllerTest.php | 9 +-
tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php | 407 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php | 199 ++++++++++++++++++++++++++
tests/Unit/Repositories/AutomatedReportsRepositoryTest.php | 55 +++++++
tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php | 430 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.php | 521 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
59 files changed, 4119 insertions(+), 347 deletions(-)
create mode 100644 app/Events/AutomatedReports/AutomatedReportGenerated.php
create mode 100644 app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
create mode 100644 app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php
create mode 100644 app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php
create mode 100644 front-end/src/components/AiReports/Manage/ExpiringCell.vue
create mode 100644 fro...
|
NULL
|
|
73865
|
NULL
|
0
|
2026-04-23T08:44:01.863206+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776933841863_m1.jpg...
|
Firefox
|
Meet - Userpilot Introduction — Work
|
True
|
meet.google.com/uai-ifky-yjc?authuser=lukas.kovali meet.google.com/uai-ifky-yjc?authuser=lukas.kovalik%40jiminny.com...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Userpilot Introduction
Close tab
New Tab
Op Meet - Userpilot Introduction
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Adelina Petrova (Presenting, annotating)
Adelina Petrova (Presenting, annotating)
External participants joined
External participants joined
People
18
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.
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.
Adelina Petrova
Mihail Mihaylov
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.
Stefka Stoyanova
13 others
13 others
Lukas Kovalik
11:44
AM
Userpilot Introduction
Userpilot Introduction
Audio settings
Turn on microphone
Video settings
Turn on camera
Adelina Petrova 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 off.
Background is no longer replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Userpilot Introduction","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":"Adelina Petrova (Presenting, annotating)","depth":12,"bounds":{"left":0.07534722,"top":0.101111114,"width":0.18125,"height":0.022222223},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Adelina Petrova (Presenting, annotating)","depth":13,"bounds":{"left":0.07534722,"top":0.10222222,"width":0.18125,"height":0.020555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"External participants joined","depth":15,"bounds":{"left":0.8524306,"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":"External participants joined","depth":22,"bounds":{"left":0.85520834,"top":0.101111114,"width":0.10694444,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":15,"bounds":{"left":0.8829861,"top":0.08944444,"width":0.044791665,"height":0.04},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"18","depth":22,"bounds":{"left":0.91076386,"top":0.101111114,"width":0.008680556,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":15,"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":22,"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.58055556,"top":0.6061111,"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.72465277,"top":0.6205556,"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.70243055,"top":0.6166667,"width":0.11076389,"height":0.05666667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Zoom in","depth":13,"bounds":{"left":0.6315972,"top":0.77555555,"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.6649306,"top":0.77555555,"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.6982639,"top":0.77555555,"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.7861111,"top":0.27611113,"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.9302083,"top":0.2911111,"width":0.069791675,"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.9079861,"top":0.28666666,"width":0.092013896,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Adelina Petrova","depth":17,"bounds":{"left":0.75451386,"top":0.36277777,"width":0.08055556,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Mihail Mihaylov","depth":17,"bounds":{"left":0.8802083,"top":0.36277777,"width":0.07847222,"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.77916664,"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.9232639,"top":0.54888886,"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.9010417,"top":0.54444444,"width":0.09895831,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":17,"bounds":{"left":0.75451386,"top":0.6205556,"width":0.088194445,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"13 others","depth":11,"bounds":{"left":0.871875,"top":0.40888888,"width":0.11736111,"height":0.24444444},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 others","depth":13,"bounds":{"left":0.90694445,"top":0.5566667,"width":0.047222223,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":17,"bounds":{"left":0.75381947,"top":0.87833333,"width":0.06875,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:44","depth":12,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.02673611,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":12,"bounds":{"left":0.08055556,"top":0.9444444,"width":0.017708333,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Userpilot Introduction","depth":12,"bounds":{"left":0.115625,"top":0.9111111,"width":0.11423611,"height":0.08888888},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Userpilot Introduction","depth":15,"bounds":{"left":0.115625,"top":0.9444444,"width":0.11423611,"height":0.022777777},"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 on 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":"Adelina Petrova 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 off.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is no longer replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-4079677798565982376
|
-6425612758313436368
|
visual_change
|
accessibility
|
NULL
|
Meet - Userpilot Introduction
Close tab
New Tab
Op Meet - Userpilot Introduction
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Adelina Petrova (Presenting, annotating)
Adelina Petrova (Presenting, annotating)
External participants joined
External participants joined
People
18
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.
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.
Adelina Petrova
Mihail Mihaylov
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.
Stefka Stoyanova
13 others
13 others
Lukas Kovalik
11:44
AM
Userpilot Introduction
Userpilot Introduction
Audio settings
Turn on microphone
Video settings
Turn on camera
Adelina Petrova 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 off.
Background is no longer replaced...
|
73863
|
|
73864
|
NULL
|
0
|
2026-04-23T08:43:50.223323+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776933830223_m2.jpg...
|
Firefox
|
Meet - Userpilot Introduction — Work
|
True
|
meet.google.com/uai-ifky-yjc?authuser=lukas.kovali meet.google.com/uai-ifky-yjc?authuser=lukas.kovalik%40jiminny.com...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Userpilot Introduction
Close tab
New Tab
Op Meet - Userpilot Introduction
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Adelina Petrova (Presenting, annotating)
Adelina Petrova (Presenting, annotating)
External participants joined
External participants joined
People
18
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.
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.
Adelina Petrova
Mihail Mihaylov
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.
Stefka Stoyanova
13 others
13 others
Lukas Kovalik
11:43
AM
Userpilot Introduction
Userpilot Introduction
Audio settings
Turn on microphone
Video settings
Turn on camera
Adelina Petrova 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 off.
Background is no longer replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Userpilot Introduction","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.016123671,"height":-0.051875472},"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.27094415,"top":1.0,"width":0.004986702,"height":-0.051875472},"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.27310506,"top":1.0,"width":0.010638298,"height":-0.086193085},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Adelina Petrova (Presenting, annotating)","depth":12,"bounds":{"left":0.30634972,"top":1.0,"width":0.08676862,"height":-0.072625756},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Adelina Petrova (Presenting, annotating)","depth":13,"bounds":{"left":0.30634972,"top":1.0,"width":0.08676862,"height":-0.07342374},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"External participants joined","depth":15,"bounds":{"left":0.6783577,"top":1.0,"width":0.011968086,"height":-0.06424582},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"External participants joined","depth":22,"bounds":{"left":0.6796875,"top":1.0,"width":0.05119681,"height":-0.072625756},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":15,"bounds":{"left":0.69298536,"top":1.0,"width":0.02144282,"height":-0.06424582},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"18","depth":22,"bounds":{"left":0.7062833,"top":1.0,"width":0.004155585,"height":-0.072625756},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":15,"bounds":{"left":0.71708775,"top":1.0,"width":0.011968086,"height":-0.06424582},"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":22,"bounds":{"left":0.7184175,"top":1.0,"width":0.043550532,"height":-0.072625756},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":22,"bounds":{"left":0.7330452,"top":1.0,"width":0.013464096,"height":-0.072625756},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":22,"bounds":{"left":0.73204786,"top":1.0,"width":0.011303191,"height":-0.065043926},"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,"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,"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,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Zoom in","depth":13,"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,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":13,"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,"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,"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,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Adelina Petrova","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Mihail Mihaylov","depth":17,"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,"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,"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,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"13 others","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 others","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:43","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Userpilot Introduction","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Userpilot Introduction","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on microphone","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on camera","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Adelina Petrova is presenting","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":12,"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,"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,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":12,"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,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":12,"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,"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,"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 off.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is no longer replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
951548071599591969
|
-6425612758313436368
|
idle
|
accessibility
|
NULL
|
Meet - Userpilot Introduction
Close tab
New Tab
Op Meet - Userpilot Introduction
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Adelina Petrova (Presenting, annotating)
Adelina Petrova (Presenting, annotating)
External participants joined
External participants joined
People
18
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.
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.
Adelina Petrova
Mihail Mihaylov
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.
Stefka Stoyanova
13 others
13 others
Lukas Kovalik
11:43
AM
Userpilot Introduction
Userpilot Introduction
Audio settings
Turn on microphone
Video settings
Turn on camera
Adelina Petrova 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 off.
Background is no longer replaced...
|
NULL
|
|
73826
|
NULL
|
0
|
2026-04-23T08:38:35.414105+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776933515414_m1.jpg...
|
iTerm2
|
docker
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
root@docker_lamp_1:/home/jiminny# php artisan jimi root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-21 13:25:21
From: 2026-04-20 00:00:00
To: 2026-04-20 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-20 13:25:31
From: 2026-04-17 00:00:00
To: 2026-04-17 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-19 13:26:02
From: 2026-04-17 00:00:00
To: 2026-04-17 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-18 13:26:53
From: 2026-04-17 00:00:00
To: 2026-04-17 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-17 13:27:05
From: 2026-04-16 00:00:00
To: 2026-04-16 23:59:59
root@docker_lamp_1:/home/jiminny#
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug 007d5da3af66
Learn more at [URL_WITH_CREDENTIALS] ~ $ dev
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 1
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 1
All count: 1
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 4.21ms DONE
cache [PASSWORD_DOTS] 24.90ms DONE
compiled [PASSWORD_DOTS] 2.45ms DONE
events [PASSWORD_DOTS] 1.93ms DONE
routes [PASSWORD_DOTS] 2.01ms DONE
views [PASSWORD_DOTS] 9.92ms DONE
worker-download:worker-download_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-nudges:worker-nudges_00: stopped
worker-emails:worker-emails_00: stopped
worker:worker_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-audio:worker-audio_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 6
All count: 6
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 6
All count: 6
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 2
All count: 2
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
DOCKER
Close Tab
docker
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (-zsh)
Close Tab
⌥⌘1
docker...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-21 13:25:21\nFrom: 2026-04-20 00:00:00\nTo: 2026-04-20 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-20 13:25:31\nFrom: 2026-04-17 00:00:00\nTo: 2026-04-17 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-19 13:26:02\nFrom: 2026-04-17 00:00:00\nTo: 2026-04-17 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-18 13:26:53\nFrom: 2026-04-17 00:00:00\nTo: 2026-04-17 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-17 13:27:05\nFrom: 2026-04-16 00:00:00\nTo: 2026-04-16 23:59:59\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug 007d5da3af66\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ php artisan jiminny:debug\nzsh: command not found: php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 1\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 1\nAll count: 1\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 4.21ms DONE\n cache ............................................................................................................................... 24.90ms DONE\n compiled ............................................................................................................................. 2.45ms DONE\n events ............................................................................................................................... 1.93ms DONE\n routes ............................................................................................................................... 2.01ms DONE\n views ................................................................................................................................ 9.92ms DONE\n\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 6\nAll count: 6\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 6\nAll count: 6\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 2\nAll count: 2\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug","depth":4,"value":"root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-21 13:25:21\nFrom: 2026-04-20 00:00:00\nTo: 2026-04-20 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-20 13:25:31\nFrom: 2026-04-17 00:00:00\nTo: 2026-04-17 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-19 13:26:02\nFrom: 2026-04-17 00:00:00\nTo: 2026-04-17 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-18 13:26:53\nFrom: 2026-04-17 00:00:00\nTo: 2026-04-17 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-17 13:27:05\nFrom: 2026-04-16 00:00:00\nTo: 2026-04-16 23:59:59\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug 007d5da3af66\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ php artisan jiminny:debug\nzsh: command not found: php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 1\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 1\nAll count: 1\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 4.21ms DONE\n cache ............................................................................................................................... 24.90ms DONE\n compiled ............................................................................................................................. 2.45ms DONE\n events ............................................................................................................................... 1.93ms DONE\n routes ............................................................................................................................... 2.01ms DONE\n views ................................................................................................................................ 9.92ms DONE\n\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 6\nAll count: 6\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 6\nAll count: 6\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 2\nAll count: 2\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"docker","depth":2,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (-zsh)","depth":2,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"docker","depth":1,"role_description":"text"}]...
|
-1648481732478018552
|
121400426803940174
|
click
|
accessibility
|
NULL
|
root@docker_lamp_1:/home/jiminny# php artisan jimi root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-21 13:25:21
From: 2026-04-20 00:00:00
To: 2026-04-20 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-20 13:25:31
From: 2026-04-17 00:00:00
To: 2026-04-17 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-19 13:26:02
From: 2026-04-17 00:00:00
To: 2026-04-17 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-18 13:26:53
From: 2026-04-17 00:00:00
To: 2026-04-17 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-17 13:27:05
From: 2026-04-16 00:00:00
To: 2026-04-16 23:59:59
root@docker_lamp_1:/home/jiminny#
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug 007d5da3af66
Learn more at [URL_WITH_CREDENTIALS] ~ $ dev
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 1
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 1
All count: 1
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 4.21ms DONE
cache [PASSWORD_DOTS] 24.90ms DONE
compiled [PASSWORD_DOTS] 2.45ms DONE
events [PASSWORD_DOTS] 1.93ms DONE
routes [PASSWORD_DOTS] 2.01ms DONE
views [PASSWORD_DOTS] 9.92ms DONE
worker-download:worker-download_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-nudges:worker-nudges_00: stopped
worker-emails:worker-emails_00: stopped
worker:worker_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-audio:worker-audio_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 6
All count: 6
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 6
All count: 6
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 2
All count: 2
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
DOCKER
Close Tab
docker
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (-zsh)
Close Tab
⌥⌘1
docker...
|
NULL
|
|
73825
|
NULL
|
0
|
2026-04-23T08:38:35.003029+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776933515003_m2.jpg...
|
iTerm2
|
docker
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
root@docker_lamp_1:/home/jiminny# php artisan jimi root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-21 13:25:21
From: 2026-04-20 00:00:00
To: 2026-04-20 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-20 13:25:31
From: 2026-04-17 00:00:00
To: 2026-04-17 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-19 13:26:02
From: 2026-04-17 00:00:00
To: 2026-04-17 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-18 13:26:53
From: 2026-04-17 00:00:00
To: 2026-04-17 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-17 13:27:05
From: 2026-04-16 00:00:00
To: 2026-04-16 23:59:59
root@docker_lamp_1:/home/jiminny#
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug 007d5da3af66
Learn more at [URL_WITH_CREDENTIALS] ~ $ dev
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 1
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 1
All count: 1
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 4.21ms DONE
cache [PASSWORD_DOTS] 24.90ms DONE
compiled [PASSWORD_DOTS] 2.45ms DONE
events [PASSWORD_DOTS] 1.93ms DONE
routes [PASSWORD_DOTS] 2.01ms DONE
views [PASSWORD_DOTS] 9.92ms DONE
worker-download:worker-download_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-nudges:worker-nudges_00: stopped
worker-emails:worker-emails_00: stopped
worker:worker_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-audio:worker-audio_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 6
All count: 6
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 6
All count: 6
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 2
All count: 2
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
DOCKER
Close Tab
docker
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-21 13:25:21\nFrom: 2026-04-20 00:00:00\nTo: 2026-04-20 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-20 13:25:31\nFrom: 2026-04-17 00:00:00\nTo: 2026-04-17 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-19 13:26:02\nFrom: 2026-04-17 00:00:00\nTo: 2026-04-17 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-18 13:26:53\nFrom: 2026-04-17 00:00:00\nTo: 2026-04-17 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-17 13:27:05\nFrom: 2026-04-16 00:00:00\nTo: 2026-04-16 23:59:59\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug 007d5da3af66\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ php artisan jiminny:debug\nzsh: command not found: php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 1\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 1\nAll count: 1\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 4.21ms DONE\n cache ............................................................................................................................... 24.90ms DONE\n compiled ............................................................................................................................. 2.45ms DONE\n events ............................................................................................................................... 1.93ms DONE\n routes ............................................................................................................................... 2.01ms DONE\n views ................................................................................................................................ 9.92ms DONE\n\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 6\nAll count: 6\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 6\nAll count: 6\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 2\nAll count: 2\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug","depth":4,"value":"root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-21 13:25:21\nFrom: 2026-04-20 00:00:00\nTo: 2026-04-20 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-20 13:25:31\nFrom: 2026-04-17 00:00:00\nTo: 2026-04-17 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-19 13:26:02\nFrom: 2026-04-17 00:00:00\nTo: 2026-04-17 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-18 13:26:53\nFrom: 2026-04-17 00:00:00\nTo: 2026-04-17 23:59:59\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nNow: 2026-04-17 13:27:05\nFrom: 2026-04-16 00:00:00\nTo: 2026-04-16 23:59:59\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug 007d5da3af66\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ php artisan jiminny:debug\nzsh: command not found: php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 1\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 1\nAll count: 1\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 4.21ms DONE\n cache ............................................................................................................................... 24.90ms DONE\n compiled ............................................................................................................................. 2.45ms DONE\n events ............................................................................................................................... 1.93ms DONE\n routes ............................................................................................................................... 2.01ms DONE\n views ................................................................................................................................ 9.92ms DONE\n\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 6\nAll count: 6\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 6\nAll count: 6\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nCount: 2\nAll count: 2\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.042298485,"width":0.065990694,"height":0.01915403},"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.0019946808,"top":0.045490824,"width":0.005319149,"height":0.012769354},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"docker","depth":2,"bounds":{"left":0.065990694,"top":0.042298485,"width":0.065990694,"height":0.01915403},"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.06798537,"top":0.045490824,"width":0.005319149,"height":0.012769354},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.13198139,"top":0.042298485,"width":0.065990694,"height":0.01915403},"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.13397606,"top":0.045490824,"width":0.005319149,"height":0.012769354},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.19797207,"top":0.042298485,"width":0.065990694,"height":0.01915403},"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.19996676,"top":0.045490824,"width":0.005319149,"height":0.012769354},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.26396278,"top":0.042298485,"width":0.06582447,"height":0.01915403},"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.26595744,"top":0.045490824,"width":0.005319149,"height":0.012769354},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.32978722,"top":0.042298485,"width":0.06582447,"height":0.01915403},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
4015732549331070370
|
121400392452589902
|
click
|
accessibility
|
NULL
|
root@docker_lamp_1:/home/jiminny# php artisan jimi root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-21 13:25:21
From: 2026-04-20 00:00:00
To: 2026-04-20 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-20 13:25:31
From: 2026-04-17 00:00:00
To: 2026-04-17 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-19 13:26:02
From: 2026-04-17 00:00:00
To: 2026-04-17 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-18 13:26:53
From: 2026-04-17 00:00:00
To: 2026-04-17 23:59:59
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Now: 2026-04-17 13:27:05
From: 2026-04-16 00:00:00
To: 2026-04-16 23:59:59
root@docker_lamp_1:/home/jiminny#
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug 007d5da3af66
Learn more at [URL_WITH_CREDENTIALS] ~ $ dev
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 1
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 1
All count: 1
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 4.21ms DONE
cache [PASSWORD_DOTS] 24.90ms DONE
compiled [PASSWORD_DOTS] 2.45ms DONE
events [PASSWORD_DOTS] 1.93ms DONE
routes [PASSWORD_DOTS] 2.01ms DONE
views [PASSWORD_DOTS] 9.92ms DONE
worker-download:worker-download_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-nudges:worker-nudges_00: stopped
worker-emails:worker-emails_00: stopped
worker:worker_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-audio:worker-audio_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 6
All count: 6
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 6
All count: 6
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Count: 2
All count: 2
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
DOCKER
Close Tab
docker
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh...
|
73823
|
|
73772
|
NULL
|
0
|
2026-04-23T08:33:14.939509+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776933194939_m2.jpg...
|
PhpStorm
|
faVsco.js – SF [jiminny@localhost]
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, 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
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();
}
public function countAllUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
// ->whereNotNull('sent_at')
->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))
->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
20
1
16
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id
where u.team_id = 1;
SELECT * FROM social_accounts WHERE sociable_id = 1635;
SELECT * FROM users WHERE id = 1635;
select * from teams where id = 1;
select * from users where team_id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;
SELECT * FROM automated_reports where id = 71;
SELECT * FROM automated_report_results where report_id = 71;
UPDATE automated_reports set playbook_categories = NULL where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
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 = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
SELECT `automated_report_results`.* FROM `automated_report_results`
INNER JOIN `automated_reports`
ON `automated_report_results`.`report_id` = `automated_reports`.`id`
WHERE 1=1
AND `automated_report_results`.`generated_at` IS NOT NULL
# AND `automated_report_results`.`sent_at` IS NOT NULL
AND `automated_reports`.`team_id` = 1
AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$."users"')
;
SELECT * FROM automated_reports where id = 42;
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded' and duration > 60
and status = 'completed' and actual_start_time >= '2025-12-01';
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;
select * from leads;
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.25731382,"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":"JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.10139628,"height":0.025538707},"help_text":"Git Branch: JY-20157-AJ-report-not-send-notification","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.7972075,"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":"RequestGenerateAskJiminnyReportJobTest","depth":6,"bounds":{"left":0.8125,"top":0.019952115,"width":0.10305851,"height":0.025538707},"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.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 'RequestGenerateAskJiminnyReportJobTest'","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":"16","depth":4,"bounds":{"left":0.60638297,"top":0.17478053,"width":0.009640957,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"7","depth":4,"bounds":{"left":0.6180186,"top":0.17478053,"width":0.0076462766,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.62765956,"top":0.17478053,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.63663566,"top":0.17318435,"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.64394945,"top":0.17318435,"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\\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 public function countAllUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n// ->whereNotNull('sent_at')\n ->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))\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 public function countAllUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n// ->whereNotNull('sent_at')\n ->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))\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,"bounds":{"left":0.6525931,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"bounds":{"left":0.6612367,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"bounds":{"left":0.6722075,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"bounds":{"left":0.68085104,"top":0.09896249,"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 Query Execution Settings…","depth":4,"bounds":{"left":0.68949467,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"bounds":{"left":0.70046544,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.71143615,"top":0.09896249,"width":0.024268618,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.7380319,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"bounds":{"left":0.74900264,"top":0.09896249,"width":0.029587766,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"bounds":{"left":0.9587766,"top":0.09896249,"width":0.02825798,"height":0.01915403},"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":"20","depth":4,"bounds":{"left":0.9212101,"top":0.123703115,"width":0.010305851,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.93351066,"top":0.123703115,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"bounds":{"left":0.9428192,"top":0.123703115,"width":0.009640957,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.9544548,"top":0.123703115,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.9644282,"top":0.123703115,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9740692,"top":0.12210695,"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.98138297,"top":0.12210695,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 42;\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","depth":4,"value":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 42;\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","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,"bounds":{"left":0.24335106,"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}]...
|
-5586507417300402095
|
-7004754253363931579
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, 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
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();
}
public function countAllUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
// ->whereNotNull('sent_at')
->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))
->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
20
1
16
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id
where u.team_id = 1;
SELECT * FROM social_accounts WHERE sociable_id = 1635;
SELECT * FROM users WHERE id = 1635;
select * from teams where id = 1;
select * from users where team_id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;
SELECT * FROM automated_reports where id = 71;
SELECT * FROM automated_report_results where report_id = 71;
UPDATE automated_reports set playbook_categories = NULL where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
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 = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
SELECT `automated_report_results`.* FROM `automated_report_results`
INNER JOIN `automated_reports`
ON `automated_report_results`.`report_id` = `automated_reports`.`id`
WHERE 1=1
AND `automated_report_results`.`generated_at` IS NOT NULL
# AND `automated_report_results`.`sent_at` IS NOT NULL
AND `automated_reports`.`team_id` = 1
AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$."users"')
;
SELECT * FROM automated_reports where id = 42;
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded' and duration > 60
and status = 'completed' and actual_start_time >= '2025-12-01';
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;
select * from leads;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
73771
|
NULL
|
0
|
2026-04-23T08:33:04.140873+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776933184140_m1.jpg...
|
Slack
|
faVsco.js – SF [jiminny@localhost]
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, 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
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();
}
public function countAllUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
// ->whereNotNull('sent_at')
->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))
->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
20
1
16
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id
where u.team_id = 1;
SELECT * FROM social_accounts WHERE sociable_id = 1635;
SELECT * FROM users WHERE id = 1635;
select * from teams where id = 1;
select * from users where team_id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;
SELECT * FROM automated_reports where id = 71;
SELECT * FROM automated_report_results where report_id = 71;
UPDATE automated_reports set playbook_categories = NULL where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
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 = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
SELECT `automated_report_results`.* FROM `automated_report_results`
INNER JOIN `automated_reports`
ON `automated_report_results`.`report_id` = `automated_reports`.`id`
WHERE 1=1
AND `automated_report_results`.`generated_at` IS NOT NULL
# AND `automated_report_results`.`sent_at` IS NOT NULL
AND `automated_reports`.`team_id` = 1
AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$."users"')
;
SELECT * FROM automated_reports where id = 42;
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded' and duration > 60
and status = 'completed' and actual_start_time >= '2025-12-01';
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;
select * from leads;
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":"JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Git Branch: JY-20157-AJ-report-not-send-notification","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":"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 public function countAllUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n// ->whereNotNull('sent_at')\n ->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))\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 public function countAllUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n// ->whereNotNull('sent_at')\n ->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))\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":"20","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"2","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":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 42;\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","depth":4,"value":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 42;\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","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}]...
|
-5586507417300402095
|
-7004754253363931579
|
app_switch
|
hybrid
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, 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
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();
}
public function countAllUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
// ->whereNotNull('sent_at')
->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))
->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
20
1
16
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id
where u.team_id = 1;
SELECT * FROM social_accounts WHERE sociable_id = 1635;
SELECT * FROM users WHERE id = 1635;
select * from teams where id = 1;
select * from users where team_id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;
SELECT * FROM automated_reports where id = 71;
SELECT * FROM automated_report_results where report_id = 71;
UPDATE automated_reports set playbook_categories = NULL where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
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 = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
SELECT `automated_report_results`.* FROM `automated_report_results`
INNER JOIN `automated_reports`
ON `automated_report_results`.`report_id` = `automated_reports`.`id`
WHERE 1=1
AND `automated_report_results`.`generated_at` IS NOT NULL
# AND `automated_report_results`.`sent_at` IS NOT NULL
AND `automated_reports`.`team_id` = 1
AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$."users"')
;
SELECT * FROM automated_reports where id = 42;
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded' and duration > 60
and status = 'completed' and actual_start_time >= '2025-12-01';
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;
select * from leads;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
+iTerm2SessionScriptsProfilesWindowPeopkeDatAShellEdit|ViewHelp→meet.google.com/uai-ifky-yjc?authuser=lukas.kovalik%40jiminny.comAdelina Petrova (Presenting, annotating)+- All DashboardsQ, Search Engagement, Feedback, Reports, Users And MoreProduct UsageThe Product Usage Dashboard Tracks User And Company Engagement Metrics, Pooular Pages, And Features. R Highlohts Trends, User Sockiness, Top Interactions, And Browser Preferences% Add FitersE User Activity MetricsE Company Activity MetricsMessures The Daly, Weeidy. And Monthily Number O1 Companies Actively Using The Product.1544,463NeeiActive Uvers6,566Mente,Active Companies57DalyActive Companies307WeeklyE Trend Of Active UsersTracks Active Users Over Time, Providing A Time-Based View Ct EngagemnennE Trend Of Active CompaniesUraces Actee Don1Urce time, PTononeA lmendalo Tee Cloreaoeon• WeallyJan 24, 2026Feo 10, 2026Feb 28,2008Mur 18, 2026A94 490024024 298e019, 2920war 14. 298011:33 AM | Userpilot IntroductionUserpilot Introducti….. now100% C28• Thu 23 Apr 11:33:1717Adelina PetrovaMihail MihaylovActive Companies323Monthly12 othersStoyan lomovVVIGet Started with UserpilotStefka Stoyanovaможе ли линк към UP?2:39...
|
NULL
|
|
73725
|
NULL
|
0
|
2026-04-23T08:27:34.776757+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776932854776_m1.jpg...
|
PhpStorm
|
faVsco.js – SF [jiminny@localhost]
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, 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
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();
}
public function countAllUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
// ->whereNotNull('sent_at')
->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))
->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
21
1
16
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id
where u.team_id = 1;
SELECT * FROM social_accounts WHERE sociable_id = 1635;
SELECT * FROM users WHERE id = 1635;
select * from teams where id = 1;
select * from users where team_id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;
SELECT * FROM automated_reports where id = 71;
SELECT * FROM automated_report_results where report_id = 71;
UPDATE automated_reports set playbook_categories = NULL where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
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 = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
SELECT `automated_report_results`.* FROM `automated_report_results`
INNER JOIN `automated_reports`
ON `automated_report_results`.`report_id` = `automated_reports`.`id`
WHERE 1=1
AND `automated_report_results`.`generated_at` IS NOT NULL
# AND `automated_report_results`.`sent_at` IS NOT NULL
AND `automated_reports`.`team_id` = 1
AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$."users"')
;
SELECT * FROM automated_reports where id = 71
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded' and duration > 60
and status = 'completed' and actual_start_time >= '2025-12-01';
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;
select * from leads;
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":"JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Git Branch: JY-20157-AJ-report-not-send-notification","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":"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 public function countAllUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n// ->whereNotNull('sent_at')\n ->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))\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 public function countAllUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n// ->whereNotNull('sent_at')\n ->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))\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":"21","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"2","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":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 71\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","depth":4,"value":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 71\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","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}]...
|
-1491366973306919482
|
-7004754253363931579
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, 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
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();
}
public function countAllUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
// ->whereNotNull('sent_at')
->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))
->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
21
1
16
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id
where u.team_id = 1;
SELECT * FROM social_accounts WHERE sociable_id = 1635;
SELECT * FROM users WHERE id = 1635;
select * from teams where id = 1;
select * from users where team_id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;
SELECT * FROM automated_reports where id = 71;
SELECT * FROM automated_report_results where report_id = 71;
UPDATE automated_reports set playbook_categories = NULL where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
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 = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
SELECT `automated_report_results`.* FROM `automated_report_results`
INNER JOIN `automated_reports`
ON `automated_report_results`.`report_id` = `automated_reports`.`id`
WHERE 1=1
AND `automated_report_results`.`generated_at` IS NOT NULL
# AND `automated_report_results`.`sent_at` IS NOT NULL
AND `automated_reports`.`team_id` = 1
AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$."users"')
;
SELECT * FROM automated_reports where id = 71
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded' and duration > 60
and status = 'completed' and actual_start_time >= '2025-12-01';
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;
select * from leads;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
73714
|
|
73724
|
NULL
|
0
|
2026-04-23T08:27:34.573922+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776932854573_m2.jpg...
|
PhpStorm
|
faVsco.js – SF [jiminny@localhost]
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, 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
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();
}
public function countAllUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
// ->whereNotNull('sent_at')
->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))
->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
19
1
15
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id
where u.team_id = 1;
SELECT * FROM social_accounts WHERE sociable_id = 1635;
SELECT * FROM users WHERE id = 1635;
select * from teams where id = 1;
select * from users where team_id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;
SELECT * FROM automated_reports where id = 71;
SELECT * FROM automated_report_results where report_id = 71;
UPDATE automated_reports set playbook_categories = NULL where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
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 = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
SELECT `automated_report_results`.* FROM `automated_report_results`
INNER JOIN `automated_reports`
ON `automated_report_results`.`report_id` = `automated_reports`.`id`
WHERE 1=1
AND `automated_report_results`.`generated_at` IS NOT NULL
# AND `automated_report_results`.`sent_at` IS NOT NULL
AND `automated_reports`.`team_id` = 1
AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$."users"')
;
SELECT * FROM automated_reports where id = 71
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded' and duration > 60
and status = 'completed' and actual_start_time >= '2025-12-01';
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;
select * from leads;
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.25731382,"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":"JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.10139628,"height":0.025538707},"help_text":"Git Branch: JY-20157-AJ-report-not-send-notification","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.7972075,"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":"RequestGenerateAskJiminnyReportJobTest","depth":6,"bounds":{"left":0.8125,"top":0.019952115,"width":0.10305851,"height":0.025538707},"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.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 'RequestGenerateAskJiminnyReportJobTest'","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":"16","depth":4,"bounds":{"left":0.60638297,"top":0.17478053,"width":0.009640957,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"7","depth":4,"bounds":{"left":0.6180186,"top":0.17478053,"width":0.0076462766,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.62765956,"top":0.17478053,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.63663566,"top":0.17318435,"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.64394945,"top":0.17318435,"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\\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 public function countAllUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n// ->whereNotNull('sent_at')\n ->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))\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 public function countAllUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n// ->whereNotNull('sent_at')\n ->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))\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,"bounds":{"left":0.6525931,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"bounds":{"left":0.6612367,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"bounds":{"left":0.6722075,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"bounds":{"left":0.68085104,"top":0.09896249,"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 Query Execution Settings…","depth":4,"bounds":{"left":0.68949467,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"bounds":{"left":0.70046544,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.71143615,"top":0.09896249,"width":0.024268618,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.7380319,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"bounds":{"left":0.74900264,"top":0.09896249,"width":0.029587766,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"bounds":{"left":0.9587766,"top":0.09896249,"width":0.02825798,"height":0.01915403},"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":"19","depth":4,"bounds":{"left":0.921875,"top":0.123703115,"width":0.009640957,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.93351066,"top":0.123703115,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"15","depth":4,"bounds":{"left":0.9428192,"top":0.123703115,"width":0.009640957,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.9544548,"top":0.123703115,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.9644282,"top":0.123703115,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9740692,"top":0.12210695,"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.98138297,"top":0.12210695,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 71\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","depth":4,"value":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\n\nselect sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id\nwhere u.team_id = 1;\nSELECT * FROM social_accounts WHERE sociable_id = 1635;\nSELECT * FROM users WHERE id = 1635;\n\nselect * from teams where id = 1;\nselect * from users where team_id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;\nSELECT * FROM automated_reports where id = 71;\nSELECT * FROM automated_report_results where report_id = 71;\nUPDATE automated_reports set playbook_categories = NULL where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\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 = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\nSELECT `automated_report_results`.* FROM `automated_report_results`\nINNER JOIN `automated_reports`\n ON `automated_report_results`.`report_id` = `automated_reports`.`id`\nWHERE 1=1\n AND `automated_report_results`.`generated_at` IS NOT NULL\n# AND `automated_report_results`.`sent_at` IS NOT NULL\n AND `automated_reports`.`team_id` = 1\n AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$.\"users\"')\n;\n\nSELECT * FROM automated_reports where id = 71\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded' and duration > 60\nand status = 'completed' and actual_start_time >= '2025-12-01';\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;\n\nselect * from leads;","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,"bounds":{"left":0.24335106,"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}]...
|
-195634151014066416
|
-7004754253363931579
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, 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
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();
}
public function countAllUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
// ->whereNotNull('sent_at')
->whereHas('report', fn (Builder $q) => $this->applyUserAccessScope($q, $user))
->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
19
1
15
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select sa.* from users u JOIN social_accounts sa on u.id = sa.sociable_id
where u.team_id = 1;
SELECT * FROM social_accounts WHERE sociable_id = 1635;
SELECT * FROM users WHERE id = 1635;
select * from teams where id = 1;
select * from users where team_id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM activities WHERE uuid_to_bin('e916569b-086c-4bd1-94d7-5e3802c27ccf') = uuid;
SELECT * FROM automated_reports where id = 71;
SELECT * FROM automated_report_results where report_id = 71;
UPDATE automated_reports set playbook_categories = NULL where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
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 = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
SELECT `automated_report_results`.* FROM `automated_report_results`
INNER JOIN `automated_reports`
ON `automated_report_results`.`report_id` = `automated_reports`.`id`
WHERE 1=1
AND `automated_report_results`.`generated_at` IS NOT NULL
# AND `automated_report_results`.`sent_at` IS NOT NULL
AND `automated_reports`.`team_id` = 1
AND JSON_CONTAINS(`automated_reports`.`recipients`, 143, '$."users"')
;
SELECT * FROM automated_reports where id = 71
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded' and duration > 60
and status = 'completed' and actual_start_time >= '2025-12-01';
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid;
select * from leads;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
73713
|
|
73701
|
NULL
|
0
|
2026-04-23T08:22:14.681747+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776932534681_m2.jpg...
|
Slack
|
general (Channel) - Jiminny Inc - 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
Stoyan Tomov
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Vasil Vasilev
Galya Dimitrova
Stefka Stoyanova
Stoyan Tanev
Jira Cloud
Toast
Messages
Messages
Files
Files
Bookmarks
Bookmarks
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Claire Wincott-Holder
Apr 21st at 2:30:37 PM
2:30 PM
Hi
@here
Please can you let finance know when the onboarding call has happened for a new customer so we know when to send the invoice out.
There is supposed to be an automated workflow from Planhat to the slack channel '1st Client Invoice Ready' but I don't think it is working. When we process a new deal, we set the first invoice up with a date of 1 month after the close date, so, if we are not told when this onboarding meeting has happened, we don't know to send the invoice out earlier.
I would suggest notifying us in this channel while we try and fix the workflow.
Thanks
1 reaction, react with dart emoji
1
Add reaction…
3 replies
Last reply 1 day ago
View thread
Jump to date
Salesforce for Slack
APP
Yesterday at 4:34:06 PM
4:34 PM
Petko Kashinski just closed a renewal with
JPA Workspaces - Renewal (12/06/2025) - Renewal (23/04/2026)
JPA Workspaces - Renewal (12/06/2025) - Renewal (23/04/2026)
. Nice Work!
Amount:
GBP 5,556.6
ARR:
GBP 5,556.6
Close Date:
April 22, 2026
Start Date:
June 17, 2026
Number of Salespeople:
Detraction?
false
Detraction Reason:
Detraction Context:
4 reactions, react with clapping emoji
4
2 reactions, react with happycreeper emoji
2
2 reactions, react with white check mark emoji
2
Add reaction…
2 replies
Last reply 18 hours ago
View thread
Jump to date
New
Salesforce for Slack
APP
Today at 11:14:01 AM
11:14 AM
Oliver Harris just closed a deal with
Referoo-
Referoo-
Amount:
USD 14,868
ARR:
USD 14,868
Close Date:
April 23, 2026
Created Date:
2/16/2026 6:56 AM
CRM:
Lead Source:
1 reaction, react with awesome emoji
1
2 reactions, react with clapping emoji
2
2 reactions, react with fire emoji
2
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
Conversation marked as unread from this message
Channel general...
|
[{"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,"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,"bounds":{"left":0.042220745,"top":0.09177973,"width":0.025598405,"height":0.008778931},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"bounds":{"left":0.042220745,"top":0.10853951,"width":0.018949468,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.042220745,"top":0.13088587,"width":0.015957447,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"bounds":{"left":0.042220745,"top":0.15323225,"width":0.029587766,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.042220745,"top":0.17557861,"width":0.022938829,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"people-with-copilot-licences","depth":23,"bounds":{"left":0.042220745,"top":0.19792499,"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.22027135,"width":0.045877658,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"platform-team","depth":23,"bounds":{"left":0.042220745,"top":0.24261771,"width":0.03125,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.042220745,"top":0.26496407,"width":0.034906916,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.042220745,"top":0.28731045,"width":0.03856383,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.042220745,"top":0.30965683,"width":0.01662234,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.042220745,"top":0.3320032,"width":0.01761968,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.042220745,"top":0.35434955,"width":0.024268618,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.042220745,"top":0.37669593,"width":0.016954787,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.042220745,"top":0.3990423,"width":0.024268618,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.042220745,"top":0.42138866,"width":0.04488032,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.042220745,"top":0.47406226,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.07945479,"top":0.47406226,"width":0.0063164895,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.08211436,"top":0.47406226,"width":0.014295213,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.09607713,"top":0.49162012,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.09607713,"top":0.49162012,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.042220745,"top":0.4964086,"width":0.030585106,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.042220745,"top":0.51875496,"width":0.032912236,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"bounds":{"left":0.042220745,"top":0.54110134,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.042220745,"top":0.5634477,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"bounds":{"left":0.042220745,"top":0.5857941,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":23,"bounds":{"left":0.042220745,"top":0.60814047,"width":0.033909574,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.042220745,"top":0.63048685,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":23,"bounds":{"left":0.042220745,"top":0.6528332,"width":0.03523936,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.042220745,"top":0.67517954,"width":0.026263298,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.042220745,"top":0.6975259,"width":0.034906916,"height":0.011971269},"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 Tanev","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.028922873,"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":"Files","depth":18,"bounds":{"left":0.13397606,"top":0.09177973,"width":0.020944148,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"bounds":{"left":0.14328457,"top":0.10055866,"width":0.008976064,"height":0.012769354},"role_description":"text"},{"role":"AXRadioButton","text":"Bookmarks","depth":18,"bounds":{"left":0.15591756,"top":0.09177973,"width":0.033909574,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Bookmarks","depth":20,"bounds":{"left":0.16522606,"top":0.10055866,"width":0.021941489,"height":0.012769354},"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.19115691,"top":0.09177973,"width":0.019946808,"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.21110372,"top":0.09177973,"width":0.010638298,"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,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Claire Wincott-Holder","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":"Apr 21st at 2:30:37 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:30 PM","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Hi","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"@here","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Please can you let finance know when the onboarding call has happened for a new customer so we know when to send the invoice out.","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"There is supposed to be an automated workflow from Planhat to the slack channel '1st Client Invoice Ready' but I don't think it is working. When we process a new deal, we set the first invoice up with a date of 1 month after the close date, so, if we are not told when this onboarding meeting has happened, we don't know to send the invoice out earlier.","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"I would suggest notifying us in this channel while we try and fix the workflow.","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Thanks","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with dart 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":"AXButton","text":"3 replies","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Last reply 1 day ago","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"View thread","depth":26,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.14660904,"top":0.12689546,"width":0.032579787,"height":0.022346368},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce for Slack","depth":25,"bounds":{"left":0.11801862,"top":0.11811652,"width":0.043550532,"height":0.017557861},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":25,"bounds":{"left":0.16389628,"top":0.12210695,"width":0.0066489363,"height":0.009577015},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.17121011,"top":0.11971269,"width":0.0026595744,"height":0.014365523},"role_description":"text"},{"role":"AXLink","text":"Yesterday at 4:34:06 PM","depth":25,"bounds":{"left":0.17386968,"top":0.12210695,"width":0.015292553,"height":0.011173184},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4:34 PM","depth":26,"bounds":{"left":0.17386968,"top":0.12210695,"width":0.015292553,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski just closed a renewal with","depth":26,"bounds":{"left":0.11801862,"top":0.13727055,"width":0.0930851,"height":0.014365523},"role_description":"text"},{"role":"AXLink","text":"JPA Workspaces - Renewal (12/06/2025) - Renewal (23/04/2026)","depth":26,"bounds":{"left":0.11801862,"top":0.13727055,"width":0.10405585,"height":0.049481247},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"JPA Workspaces - Renewal (12/06/2025) - Renewal (23/04/2026)","depth":27,"bounds":{"left":0.11801862,"top":0.13727055,"width":0.10405585,"height":0.049481247},"role_description":"text"},{"role":"AXStaticText","text":". Nice Work!","depth":26,"bounds":{"left":0.14827128,"top":0.17238627,"width":0.026928192,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Amount:","depth":26,"bounds":{"left":0.11801862,"top":0.18994413,"width":0.019281914,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"GBP 5,556.6","depth":26,"bounds":{"left":0.13696809,"top":0.18994413,"width":0.02925532,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"ARR:","depth":26,"bounds":{"left":0.11801862,"top":0.207502,"width":0.011303191,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"GBP 5,556.6","depth":26,"bounds":{"left":0.12898937,"top":0.207502,"width":0.02925532,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Close Date:","depth":26,"bounds":{"left":0.11801862,"top":0.22505985,"width":0.025598405,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"April 22, 2026","depth":26,"bounds":{"left":0.14328457,"top":0.22505985,"width":0.032579787,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Start Date:","depth":26,"bounds":{"left":0.11801862,"top":0.24261771,"width":0.023936171,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"June 17, 2026","depth":26,"bounds":{"left":0.1419548,"top":0.24261771,"width":0.032579787,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Number of Salespeople:","depth":26,"bounds":{"left":0.11801862,"top":0.2601756,"width":0.052526597,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Detraction?","depth":26,"bounds":{"left":0.11801862,"top":0.27773345,"width":0.025930852,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"false","depth":26,"bounds":{"left":0.14394946,"top":0.27773345,"width":0.011635638,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Detraction Reason:","depth":26,"bounds":{"left":0.11801862,"top":0.2952913,"width":0.04255319,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Detraction Context:","depth":26,"bounds":{"left":0.11801862,"top":0.31284916,"width":0.044215426,"height":0.014365523},"role_description":"text"},{"role":"AXCheckBox","text":"4 reactions, react with clapping emoji","depth":26,"bounds":{"left":0.11801862,"top":0.3320032,"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":"4","depth":27,"bounds":{"left":0.12732713,"top":0.33519554,"width":0.0023271276,"height":0.011971269},"role_description":"text"},{"role":"AXCheckBox","text":"2 reactions, react with happycreeper emoji","depth":26,"bounds":{"left":0.13331117,"top":0.3320032,"width":0.01462766,"height":0.01915403},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":27,"bounds":{"left":0.14261968,"top":0.33519554,"width":0.0026595744,"height":0.011971269},"role_description":"text"},{"role":"AXCheckBox","text":"2 reactions, react with white check mark emoji","depth":26,"bounds":{"left":0.14893617,"top":0.3320032,"width":0.01462766,"height":0.01915403},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":27,"bounds":{"left":0.15824468,"top":0.33519554,"width":0.0026595744,"height":0.011971269},"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":26,"bounds":{"left":0.16456117,"top":0.3320032,"width":0.011635638,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"2 replies","depth":25,"bounds":{"left":0.13763298,"top":0.35993615,"width":0.016289894,"height":0.015961692},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Last reply 18 hours ago","depth":26,"bounds":{"left":0.15625,"top":0.36073422,"width":0.044215426,"height":0.013567438},"role_description":"text"},{"role":"AXStaticText","text":"View thread","depth":26,"bounds":{"left":0.15625,"top":0.36073422,"width":0.023271276,"height":0.013567438},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.15026596,"top":0.39584997,"width":0.025265958,"height":0.022346368},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New","depth":24,"bounds":{"left":0.21343085,"top":0.39984038,"width":0.00930851,"height":0.012769354},"role_description":"text"},{"role":"AXButton","text":"Salesforce for Slack","depth":25,"bounds":{"left":0.11801862,"top":0.42697525,"width":0.043550532,"height":0.017557861},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":25,"bounds":{"left":0.16389628,"top":0.4309657,"width":0.0066489363,"height":0.009577015},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.17121011,"top":0.42857143,"width":0.0026595744,"height":0.014365523},"role_description":"text"},{"role":"AXLink","text":"Today at 11:14:01 AM","depth":25,"bounds":{"left":0.17386968,"top":0.4309657,"width":0.01761968,"height":0.011173184},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:14 AM","depth":26,"bounds":{"left":0.17386968,"top":0.4309657,"width":0.01761968,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"Oliver Harris just closed a deal with","depth":26,"bounds":{"left":0.11801862,"top":0.4461293,"width":0.078457445,"height":0.014365523},"role_description":"text"},{"role":"AXLink","text":"Referoo-","depth":26,"bounds":{"left":0.19614361,"top":0.4461293,"width":0.019281914,"height":0.014365523},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Referoo-","depth":27,"bounds":{"left":0.19614361,"top":0.4461293,"width":0.019281914,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Amount:","depth":26,"bounds":{"left":0.11801862,"top":0.481245,"width":0.019281914,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"USD 14,868","depth":26,"bounds":{"left":0.13696809,"top":0.481245,"width":0.028590426,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"ARR:","depth":26,"bounds":{"left":0.11801862,"top":0.49880287,"width":0.011303191,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"USD 14,868","depth":26,"bounds":{"left":0.12898937,"top":0.49880287,"width":0.028590426,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Close Date:","depth":26,"bounds":{"left":0.11801862,"top":0.51636076,"width":0.025598405,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"April 23, 2026","depth":26,"bounds":{"left":0.14328457,"top":0.51636076,"width":0.032579787,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Created Date:","depth":26,"bounds":{"left":0.11801862,"top":0.5339186,"width":0.030917553,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"2/16/2026 6:56 AM","depth":26,"bounds":{"left":0.14860372,"top":0.5339186,"width":0.04654255,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"CRM:","depth":26,"bounds":{"left":0.11801862,"top":0.5514765,"width":0.012632979,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Lead Source:","depth":26,"bounds":{"left":0.11801862,"top":0.56903434,"width":0.02825798,"height":0.014365523},"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with awesome 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":"AXCheckBox","text":"2 reactions, react with clapping emoji","depth":26,"bounds":{"left":0.13331117,"top":0.58818835,"width":0.01462766,"height":0.01915403},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":27,"bounds":{"left":0.14261968,"top":0.5913807,"width":0.0026595744,"height":0.011971269},"role_description":"text"},{"role":"AXCheckBox","text":"2 reactions, react with fire emoji","depth":26,"bounds":{"left":0.14893617,"top":0.58818835,"width":0.01462766,"height":0.01915403},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":27,"bounds":{"left":0.15824468,"top":0.5913807,"width":0.0026595744,"height":0.011971269},"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":26,"bounds":{"left":0.16456117,"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.41340783,"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.41340783,"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.41340783,"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.41340783,"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.41340783,"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.41340783,"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.41340783,"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.41340783,"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":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Conversation marked as unread from this message","depth":11,"bounds":{"left":0.0,"top":0.7126895,"width":0.02825798,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Channel general","depth":11,"bounds":{"left":0.0,"top":0.7126895,"width":0.017287234,"height":0.0007980846},"role_description":"text"}]...
|
5591071779487381740
|
-6408556184553029099
|
idle
|
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
Stoyan Tomov
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Vasil Vasilev
Galya Dimitrova
Stefka Stoyanova
Stoyan Tanev
Jira Cloud
Toast
Messages
Messages
Files
Files
Bookmarks
Bookmarks
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Claire Wincott-Holder
Apr 21st at 2:30:37 PM
2:30 PM
Hi
@here
Please can you let finance know when the onboarding call has happened for a new customer so we know when to send the invoice out.
There is supposed to be an automated workflow from Planhat to the slack channel '1st Client Invoice Ready' but I don't think it is working. When we process a new deal, we set the first invoice up with a date of 1 month after the close date, so, if we are not told when this onboarding meeting has happened, we don't know to send the invoice out earlier.
I would suggest notifying us in this channel while we try and fix the workflow.
Thanks
1 reaction, react with dart emoji
1
Add reaction…
3 replies
Last reply 1 day ago
View thread
Jump to date
Salesforce for Slack
APP
Yesterday at 4:34:06 PM
4:34 PM
Petko Kashinski just closed a renewal with
JPA Workspaces - Renewal (12/06/2025) - Renewal (23/04/2026)
JPA Workspaces - Renewal (12/06/2025) - Renewal (23/04/2026)
. Nice Work!
Amount:
GBP 5,556.6
ARR:
GBP 5,556.6
Close Date:
April 22, 2026
Start Date:
June 17, 2026
Number of Salespeople:
Detraction?
false
Detraction Reason:
Detraction Context:
4 reactions, react with clapping emoji
4
2 reactions, react with happycreeper emoji
2
2 reactions, react with white check mark emoji
2
Add reaction…
2 replies
Last reply 18 hours ago
View thread
Jump to date
New
Salesforce for Slack
APP
Today at 11:14:01 AM
11:14 AM
Oliver Harris just closed a deal with
Referoo-
Referoo-
Amount:
USD 14,868
ARR:
USD 14,868
Close Date:
April 23, 2026
Created Date:
2/16/2026 6:56 AM
CRM:
Lead Source:
1 reaction, react with awesome emoji
1
2 reactions, react with clapping emoji
2
2 reactions, react with fire emoji
2
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
Conversation marked as unread from this message
Channel general
ActivityLateMoreSlackcalVIewMistonWindowHelp@ Describe what you are looking forJiminny ... ~# engineering# frontend# general# infra-changes#jiminny-bg• people-with-copilo..• people-with-zoom-….# plattorm-team# platform-tickets# product launches# random# releases# soha-ofhce# support# thank-vous# the people of jimi..^ Direct messages.3 Aneliya Angelova,Stovan TomovP. Nikolay YankovPetko Kashinski0. Aneliya Angelova. Nikolay NikolovMario Georgiev38: Todor StamatovGabriela DurevalVasil Vasilev@ Colvn Dimitrovo# generalX43Messages( Filese BookmarksMoreSalesforce for Cle-l. ann•34 PMPetko Kashins.Yesterday ~ a renewal with JPAVorkspaces - Kenewal (12/06/2025) - Kenewali(23/04/2026). Nice Work!Amount Gbr 5.550.0ARR: GBP 5.556.6Close Date: Aoril 22, 2026Start Date: June 17. 2026Number of Salespeonle:Detraction? talseDetraction Reason›Detraction Conteyt.G er 2 replies Last reply 18 hours aroloday~• NewSalecforce for Sllack ApP 11.14AMOliver Harric mict clocod a donl with Roforoo-Amount. LISN 14 949App.LISN 14949Close Date: April 23. 2026Created Date: 2/16/2026 6:56 AMCRM:Lead sourceWE 1Ci 2Message #general+ Aa IFV faVsco.jsv°9 JY-20157-AJ-report-not-send-notificatProject(C) AutomatedReport.onp© AiPromptRepository.pnp© AskAnythingRepository.phpkequestoenerateaskulminnykeporJoo.ong© Automateakeporskepository.ons© CallImportRepository.php© CoachingFeedbackRepository.phj© CrmTemplateFilterRepository.php© CrmTemplateRepository.php© CrmTemplateRunRepository.php© DeviceRepository.ohportNotGenerateamallJob.phpclass AutomatedReportsrepos1torvouolic tunction cetpaqinateduserrenortsoreturn squery->paqinate SresultsPerPaqe,'*', pageName: 'paqe', Spaqe)*(C) ElasticActivityRepositorv.oho© EmailMessageRepository.php(c) GenericAiPromotRepositorv.oho© GroupRepositorv.ohnoublic function countuserReoorts(User suser): int©InboxemailBatchRepository.phpP InboxRepositorv.ohpreturn AutomatedRenortResult:queruol© [EMAIL]->whereNotNul.d columns:'aenerated at')275->whereNotNusent att)C LanguageRepository.php© MomentRepository.phpNotificationRepository.php278© ParticipantRepository.php© ParticipantSpeechRepository.php 286© ParticipantStatsRepository.php© PlaybookCategoryRepository.php 264© PlaybookRepository.php© PlaylistActivityRepository.phpPlaylistRepository.php( PlaylistShareRepository.php© QuestionRepository.php283284285286© RoleChanqeEventRepository.php 28%->whenelasd relation:Sa->whenpd cd'report', function ($q) use (Suser) 1• Iteam id' Susen->aetTeamTdobl->whereJsonContains( column: 'recipients->users', Suser->getIdO);->counto.pubLic Tunccion countALLuserkeports user suser. 1ncreturn AutomatedReportResult::queruo->whereNotNull( columns: 'generated at')->whereNotnullsent at'Services+оCx( Outputiii Result 4 Xv D Databasefw 1rowvv 4 liminnv@localhost0 idA HS local@uuid (UUID with time-low and time-high swapped)v APRODI report idd consoleI name# STAGINGg, DockerM media typeI parent id(• statusI reasonnavloadresponserequested_atI generated atI• sent_at16 ms, fetuserollot introcuct. in om100% 152Thu 23 Apr 11:22:15=custom.logE laravel.log4 SF jiminny@localhost] X« HS_local [jiminny@localhost]« console [PROD](C) DatabaseActivities.ohn© DealsRepository.phpreport-not-generated.blade.php197ã | A16 X7 81 A Y 198199— 208=201203204—295.—206207— 208— 209220A console (EU]A console [STAGING]Tx: AutovPlavaroundsajminnyYWHERE a.type = 'ask_jiminnyLIMIT 10:020 A1 A15 V.2 V.4 ^SELECT'automated report results'.* FROM 'automated_ report_results'INNER JOIN 'automated reports'ON'automated report results'.'report id' = 'automated_reports'.'idi1=1" automated_report_results'.'generated_at* IS NOT NULLautomated report results', 'sent at' IS NOT NULIautomated reoorts', team id = 1AND JSON CONTAINS('automated reports' 'recinients', 143. '$ "users"!)select * from teams where id = 3143;select * from crm_configurations where id = 500;select * from users where name = 'Integration Account'; # 1695SFLECT * ER0M social accounts WHFRE cociahle id = 1605•colont + foom activitioc whono enm confiaunation id = 70and recording_state = 'recorded' and duration > 60and status = 'completed' and actual_start_time >= '2025-12-01' ;SELECT * FROM activities WHERE uuid to bin('458cf915-b914-4000-b083-5687b32b2956') = uuid:select * from leads:Csvu|d 1 →|0, 8,eecchood.041d.10ze.h9fh-dha?o1d25070Monthlv Ask J reoort - Mar 2026E"team id" -1."nequest _id"."f6S5heo0-961d-493f-h8fh-dhc2e1d25279" "nenont tvne" -"ask liminny" "media tynes" -"ndf" L"activity ids"-Г"402003" "356001" "202515" "356008" "616537" "407509" "401247" "61620E"neduest id"-"adc47759-160a-4f61-82fo-c8odf5e55464" "status" - "comolleted" "timestamo" • "2026-03-31715452405.828229400-00" "s3_ Mnl" -"S3AV//dev.ciiminnv.olient-dataV5.f0f4810-7e77-4086-8669-93429ae4d70hlV2026-04-08 06-29-992026-04-08 07:29:092026-04-08 11:48:43W Windsurf Teams 275:32 UTF-8 f 4 space...
|
73699
|
|
73700
|
NULL
|
0
|
2026-04-23T08:22:13.392362+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776932533392_m1.jpg...
|
Slack
|
general (Channel) - Jiminny Inc - 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
Stoyan Tomov
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Vasil Vasilev
Galya Dimitrova
Stefka Stoyanova
Stoyan Tanev
Jira Cloud
Toast
Messages
Messages
Files
Files
Bookmarks
Bookmarks
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Claire Wincott-Holder
Apr 21st at 2:30:37 PM
2:30 PM
Hi
@here
Please can you let finance know when the onboarding call has happened for a new customer so we know when to send the invoice out.
There is supposed to be an automated workflow from Planhat to the slack channel '1st Client Invoice Ready' but I don't think it is working. When we process a new deal, we set the first invoice up with a date of 1 month after the close date, so, if we are not told when this onboarding meeting has happened, we don't know to send the invoice out earlier.
I would suggest notifying us in this channel while we try and fix the workflow.
Thanks
1 reaction, react with dart emoji
1
Add reaction…
3 replies
Last reply 1 day ago
View thread
Jump to date
Salesforce for Slack
APP
Yesterday at 4:34:06 PM
4:34 PM
Petko Kashinski just closed a renewal with
JPA Workspaces - Renewal (12/06/2025) - Renewal (23/04/2026)
JPA Workspaces - Renewal (12/06/2025) - Renewal (23/04/2026)
. Nice Work!
Amount:
GBP 5,556.6
ARR:
GBP 5,556.6
Close Date:
April 22, 2026
Start Date:
June 17, 2026
Number of Salespeople:
Detraction?
false
Detraction Reason:
Detraction Context:
4 reactions, react with clapping emoji
4
2 reactions, react with happycreeper emoji
2
2 reactions, react with white check mark emoji
2
Add reaction…
2 replies
Last reply 18 hours ago
View thread
Jump to date
New
Salesforce for Slack
APP
Today at 11:14:01 AM
11:14 AM
Oliver Harris just closed a deal with
Referoo-
Referoo-
Amount:
USD 14,868
ARR:
USD 14,868
Close Date:
April 23, 2026
Created Date:
2/16/2026 6:56 AM
CRM:
Lead Source:
1 reaction, react with awesome emoji
1
2 reactions, react with clapping emoji
2
2 reactions, react with fire emoji
2
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
Conversation marked as unread from this message
Channel general...
|
[{"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":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":"Stoyan Tomov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","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":"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 Tanev","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":"Files","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"Bookmarks","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Bookmarks","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":"Claire Wincott-Holder","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":"Apr 21st at 2:30:37 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:30 PM","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Hi","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"@here","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Please can you let finance know when the onboarding call has happened for a new customer so we know when to send the invoice out.","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"There is supposed to be an automated workflow from Planhat to the slack channel '1st Client Invoice Ready' but I don't think it is working. When we process a new deal, we set the first invoice up with a date of 1 month after the close date, so, if we are not told when this onboarding meeting has happened, we don't know to send the invoice out earlier.","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"I would suggest notifying us in this channel while we try and fix the workflow.","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Thanks","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with dart 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":"AXButton","text":"3 replies","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Last reply 1 day ago","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"View thread","depth":26,"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":"Salesforce for Slack","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 4:34:06 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4:34 PM","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski just closed a renewal with","depth":26,"role_description":"text"},{"role":"AXLink","text":"JPA Workspaces - Renewal (12/06/2025) - Renewal (23/04/2026)","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"JPA Workspaces - Renewal (12/06/2025) - Renewal (23/04/2026)","depth":27,"role_description":"text"},{"role":"AXStaticText","text":". Nice Work!","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Amount:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"GBP 5,556.6","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"ARR:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"GBP 5,556.6","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Close Date:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"April 22, 2026","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Start Date:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"June 17, 2026","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Number of Salespeople:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Detraction?","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"false","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Detraction Reason:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Detraction Context:","depth":26,"role_description":"text"},{"role":"AXCheckBox","text":"4 reactions, react with clapping emoji","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":27,"role_description":"text"},{"role":"AXCheckBox","text":"2 reactions, react with happycreeper emoji","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":27,"role_description":"text"},{"role":"AXCheckBox","text":"2 reactions, react with white check mark emoji","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","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":"2 replies","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Last reply 18 hours ago","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"View thread","depth":26,"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":"AXStaticText","text":"New","depth":24,"role_description":"text"},{"role":"AXButton","text":"Salesforce for Slack","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 11:14:01 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:14 AM","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Oliver Harris just closed a deal with","depth":26,"role_description":"text"},{"role":"AXLink","text":"Referoo-","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Referoo-","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Amount:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"USD 14,868","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"ARR:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"USD 14,868","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Close Date:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"April 23, 2026","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Created Date:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"2/16/2026 6:56 AM","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"CRM:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Lead Source:","depth":26,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with awesome 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":"AXCheckBox","text":"2 reactions, react with clapping emoji","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":27,"role_description":"text"},{"role":"AXCheckBox","text":"2 reactions, react with fire emoji","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","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":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Conversation marked as unread from this message","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"Channel general","depth":11,"role_description":"text"}]...
|
5591071779487381740
|
-6408556184553029099
|
idle
|
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
Stoyan Tomov
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Vasil Vasilev
Galya Dimitrova
Stefka Stoyanova
Stoyan Tanev
Jira Cloud
Toast
Messages
Messages
Files
Files
Bookmarks
Bookmarks
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Claire Wincott-Holder
Apr 21st at 2:30:37 PM
2:30 PM
Hi
@here
Please can you let finance know when the onboarding call has happened for a new customer so we know when to send the invoice out.
There is supposed to be an automated workflow from Planhat to the slack channel '1st Client Invoice Ready' but I don't think it is working. When we process a new deal, we set the first invoice up with a date of 1 month after the close date, so, if we are not told when this onboarding meeting has happened, we don't know to send the invoice out earlier.
I would suggest notifying us in this channel while we try and fix the workflow.
Thanks
1 reaction, react with dart emoji
1
Add reaction…
3 replies
Last reply 1 day ago
View thread
Jump to date
Salesforce for Slack
APP
Yesterday at 4:34:06 PM
4:34 PM
Petko Kashinski just closed a renewal with
JPA Workspaces - Renewal (12/06/2025) - Renewal (23/04/2026)
JPA Workspaces - Renewal (12/06/2025) - Renewal (23/04/2026)
. Nice Work!
Amount:
GBP 5,556.6
ARR:
GBP 5,556.6
Close Date:
April 22, 2026
Start Date:
June 17, 2026
Number of Salespeople:
Detraction?
false
Detraction Reason:
Detraction Context:
4 reactions, react with clapping emoji
4
2 reactions, react with happycreeper emoji
2
2 reactions, react with white check mark emoji
2
Add reaction…
2 replies
Last reply 18 hours ago
View thread
Jump to date
New
Salesforce for Slack
APP
Today at 11:14:01 AM
11:14 AM
Oliver Harris just closed a deal with
Referoo-
Referoo-
Amount:
USD 14,868
ARR:
USD 14,868
Close Date:
April 23, 2026
Created Date:
2/16/2026 6:56 AM
CRM:
Lead Source:
1 reaction, react with awesome emoji
1
2 reactions, react with clapping emoji
2
2 reactions, react with fire emoji
2
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
Conversation marked as unread from this message
Channel general
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• •DOCKER981docker-zshX3compiledeventsroutesviewsworker-download:worker-download_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-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-nudges:worker-nudges_00: stoppedworker-emails:worker-emails_00: stoppedworker:worker_00: stoppedworker-calendar:worker-calendar_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-audio:worker-audio_00: stoppedworker-conferences:worker-conferences_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 jiminny:debugCount: 6All count: 6root@docker_lamp_1:/home/jiminny# |Userpilot Introducti….. in 8 mA100% <78docker* Build full day ac.. • X4screenpipe"• 885-zsh86APP (-zsh)2.45ms DONE1.93ms DONE2.01ms DONE9.92ms DONE87Thu 23 Apr 11:22:14181ec2-user@ip-10-...• *8|...
|
73698
|