|
59691
|
1285
|
2
|
2026-04-20T13:56:50.037334+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776693410037_m2.jpg...
|
PhpStorm
|
PhpStorm
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhostormVIewINavigarecodeLaravelFV faVsco.jsProjec PhostormVIewINavigarecodeLaravelFV faVsco.jsProjectM+ WEBHOOK-FILTERING_IMPLEMENTATION.mo>0b External Librariesv E Scratches and Consolesv _ Database consolesV AEU& console (euJA DEAL RISKS (EUJADITEUTA EU (EU#liminny@localhostconsole fliminny@localhost4 D| lliminnv@localhostl4 HS_local jiminny@localhost)4 SF jiminny@localhost]A zoho_dev [jiminny@localhost]V A PRODA console (PROD]A console_1 (PROD]A DIIPRODIServicesv D Databaseconsole#HS localASF 978 msA PROD4 console 1 s 644 msA STAGINGIconsoleDockerKeractor© AskAnythingPromptService.php© AskJiminnyReportsController.phpAutomateakeporskepository.pnpOpportunitysynclrait.phg© Hubspotwebnookbatchsyncstrategy.ongc) SyncObiects.pho©ImportOpportunityBatch.php© ImportContactBatch.php© Client.php© HubspotPaginationService.phd© Service.phpBatchSyncTrait.phpC) FetchSalestorceEntitiesJob.php /AutomatedReportsController.phpphp api v2.php(C) AutomatedReport.ohoclass FetchSalesforceEntitiesJob extends Job implements ShouldQueue, ShouldBeUniquepublic function handle(142144Cevncodit - CanhonImmutahle:.nowdl$config->updateEntitySyncedAt($this->entityType, $syncedAt);146147$logger->info('[FetchSalesforceEntitiesJobl Completed'.'crm confiquration id' => Sthis->crmConfigurationIdOutputII PROFILESliii Result 11 X.Tx.|nW user_idI email Yundated at Y16125jeni.morrison@lesmills.com2026-04-20 01-19:4716156devon.bosley-smith@lesmills.com2026-04-20 01:19:4633 16115jessica.young@lesmills.com2026-04-20 01:19:4016124herschel.elderdlesm1lls.com2026-04-20 01:19:4016389alson.salernodlesmuus.com2026-04-20 01:19:4016117meredith.elumbad.esm.s.com2026-04-20 01.19:2616091nik.heroldalesmills.com2026-04-20 01-19:2316095adrian.heffernan@lesmills.com2024-04-20 01-10-2339 16067 (owner)jiminnvintegration@lesmills.com2004-02.21 04.71.2420609elinor.quavledlesm1lls.com2026-01-29 14:09:5120687ian.mcaregordlesmiuls.com2026-01-29 14:09:3516120jeannine.liu@lesmills.com2026-01-29 14•04•55161042085245 2068416817mario.tarquinio@lesmills.com2024-01.20 14•07•501ollie.thomas@lesmills.com2025-11-04 19:12:01darren.hazel10lesmills.com2025-11-04 19:10:39kriasha.dadiflesmills.com2025-11-04 19:04•5020687martin.franklindlesmills.com2025-02-27 07:48:23= custom.logconsole [PRODI XAconsole [EUi588589591592593594A26 ^ v 595— 596H5985991140d=laravel.log4 SF [jiminny@localhost]A HS_local jiminny@localhost]« console [STAGING]SELECT * FROM autonated_report_results WHERE 1Q = 1919select * from automated_report_results WHERE report id = 54;select * from opportunities where id = 7594349;SELECT * FROM teams WHERE name LIKE '%Les%'; # 711, 692, 16067 -• [EMAIL] * from playbooks where team_id = 711; # event 226147SELECT * FROM playbook categories WHERE playbook id = 5515:SELECT * FROM crm fields WHERE crm configuration id = 692:SELECT * FROM crm fields WHERE id = 226147:SELECT * FROM crm field values WHERE crm_ field id = 226147:SELECT * FROM crm configurations WHERE id = 692:601 VSELECTCONCAT(u.id, CASE WHEN v.id = t.owner_id THEN ' (owner)' ELSE "' END) AS user_idU.emart@provider_user_token T00D90000000fUsz!AQEAQN_BYD6JmiukPpvT12njFcMyon5w60jQBrcNTJfXBM7q9mgqnPkSBDjBzxKGNkPJ0bFfEH3CS.lYwN.saQieAxN7I1D000D90000000fUsz!AQEAQIEePDjR1aW8DBp0mo_cJ7jTp1XTGSMwP5o.T8VydhYmGoI_mMLq.5nhQfagyB4dvPar_KS.g16Y7R_4LeK1HM3dQYoH00D90000000fUsz!AQEAQL05b59R0D3_RenuVQTIqkP2fJB0Gk4trY8ceWzN3ZoXiE7wkaG7UwUTCqtzF2QFduS0j990NxW_nGEcdoCxZXY2.iuh00D90000000fUsz!A0EAQGwXeiZLEVex1wwGeVqoe8iFI8.MSyxM4RiZ7y3ZV147Br0ztxfbwwXRSX4ApCcT4w9ADG9qe.9ZhWqFkM8uji0mFv9n00090000000fUsz!A0EA00JFLnSVTilnDaSkpC3USDtGDbp6MJe2s6vxDvrzF05A8PE84K9Khz10zhZf0DCPj2HiEnHD1KLTOYLTp_RMGkuoU0GaOODSOGGOOOOGISZ IAOFAOCPYRALIYCROIMESZW0650nc swzo8tASvarnLAidd5WKAWLXOMR8GVaNCYWYAL dHOLV COVKDH1 8xc2aH5v27m00D90000000fUsz!AQEAQCB6F7U3jyAVJV7Fz2Gqc62LBiV25UD5NWSPcQ4K7jnXk5sWTF8XqGCKab.yvev0QZL96PZ5tNw8wDLpIo2LmQnRK18p00D90000000fUsz!AQEAQMFWv9CMKZUnfBJBQQiWrA6vD1JbomVnFZi9h4EQi0XGwTZu1KFwfcXnKN_5VHp29sz0Wt0qF1wllctBAMT5irh7BabZ00D90000000fUsz!A0EA0KRIt62MPS0BhF0_SPMdUfRN0aX22hSEy4wwLvkW0y7Y8vtMasenRvudh00G90I81aqNrLu.wGgkCiT09RHg0a0XiF_d00D90000000fUsz!A0EA0D308YDdRotAiKWS5SVuJGBBkBI_nr.qWG_LFmpw.Tna06iUsaVTFkqNx9mp_5RyL0q07fwYqcAhBaG0W0p5AZiaaRmW00090000000fUsz!A0EA0BNF6mVwPT9tYDn_ a9cwXZWLeP 320.shSVVAVJvZ0CHFJWsH6dY608TknD0hD3LSXZ.u4VCvTH6RFsBEHqD10x0 4wE00D90000000Usz AQEAQMTWIqjace9LxNFa73LULA9PS81uPenYu3i8alEZOHU5Q.MPjvclv4e941DX4Sp0tKBwTGvYvwwqhvEuKZpEDRq6PMFk00D90000000fUsz!AQEAQM10W5jadfi24A1jEnnJgVeiQ8bKYX4nq0cpL9KDVJTGV9KQddhC6X31s8xuTvL41hfz.E6JDLLQ0eADxY98YqZt.s4Z00D90000000fUsz!AQEAQKB.ebvRUP_FuVrU6tQZZBnTglR6mx60X6.bzivP0XfYSVKgKIBbiztHLZU21BhtRrp4yjcy0_dKH1XPAJM4vMGf_Sb00090000000fUsz!A0EA0HNp8SVvczrYh17dHik0U3ekL4FzfeZ5DGDGSvTUGfkYVRY4mbblh1St4x0Xansv7GPXWewJrfwUa7NK.kWUe0T0pyw100090000000fUs21A0EA0J_n0.9xL6XGCTvfc1YfSnNccaZ70a0703ha9i1VE000d 000vaS 6uANbDo607V9S1XxcC.Xa1KjazV0.DKq3zF4F1900D90000000£Usz1A0EA0E6≥WaWa57SD4e4JUdmroi0qbcKWUKhiAXZX≥Vz1BKNqbb1E0nLWXtoTs3TRcadu9ivuvTcHhbH awH4R7ac19aq8PMstate 7connectedconnectedconnectedconnectedconnectedconnectedconnectedconnectedfull-refreshfull-refreshfull-refreshfull-refreshfull-refreshfull-refreshfull-refreshfull-refreshMidy /795590856053551715707254392CLOYe4740456047Msociable id YMorovider user id Y16125 0052L000004U5WUDA61615A A0521 A00002-PHd0Aм16115 0052L000004UEyHQAW16124 0052L000004UEx90AG16389 0052L000003qwabOAA16117 00512000002FnvaAAC16091 0052L0000031V7n0AF16A05 AAS1ARAAAA1Zi ЄWAANI16067 0058X00000GHRxg0AH20609 0052L000003M3Xm0AH20687 0051a000002m2KTAAY16120 00590000000knVUAA)1A104 AAsOLadddozepc1nAм20852 0052L000003fzTJQAYМадеОосАаоооооОАМ16817 0052L000004VatUOAS20682 00590000001Sv7nAAC100% C4Mon 20 Apr 16:56:49rliminny034 A1 A34 V 62 ^morovider refresh token Y5Aen8617VFpoP. M.4vdZhne4YEnmiwHviz6n1MVahD12cSr_fAdTV8coFfSAen8417VSnoP.M.Awd7hne/VEnmiw!v776n1MVWadv80l VV7d4610X7725Aep8617VFpoP.M.4vdZhpe4YEnmiwHyjz6p1MVxdyl_Wq6Rb7QPhx0iPT5Aep8617VFpoP.M.4vdZhpe4YEnmiwHyjz6p1MV0HtJyq7RMSzmB8aQwRq5Aep8617VFpoP.M.4vdZhpe4YEnmiwHviz6p1MVTZd489NKV2RAC4.14Cb5Aen8617VFnoP_ M.4vdZhne4YEnmhTaa0xVU6MFVonkY7.h14sH3euBmHa5Aen8617VFooP. M.4vdZhpe4YEnmiwHviz6p1MVYVrq3viAPGF5qJQULyoSAen8417VEnoP M_Zwd7hne//VEnmhTaa0xVIIKMEMvhhn71 RF-PPh£+I HnlSAep8617VFpoP.M.4vdZhpe4YEnmkbe0CK_KX01LAWm2daKop59B5SLr0w5Aep8617VFpoP.M.4vdZhpe4YEnmiwHyiz6p1MVA6mVtoMcERxw®YXBn7h5Aep8617VFpoP.M.4vdZhpe4YEnmhTqa0xVU6MFjP81Us5Kw8RaBD0n0H5Aen8617VEnoP_M.4vdZhne4YEnmaqT~MEA.IdGot-fLXPMBY≥3B1CNX05F.JSAen9417VCnoD_ M Zwd7hne/VEnmiwlv-z/n1MV7vvsM£o£C1a95>^571A5Aep8617VFpoP.M.4vdZhpe4YEnmiwHyjz6p1MVuwE59VsxonQglFclfdY5Aep8617VFpoP.M.4vdZhpe4YEnmhTqa0xVU6MFxCYTWE_rbY4yHD0fifS5Aen8617VFpoP. M.4vdZhoe4YEnmiwHviz6p1MV1NLHLt8ZS0Ghtme0CWh5Aen8617VFpoP.M.4vdZhne4YEnmaqTrMEAJdGoPDP. 17. TlcNxvca. SKIN/ Windeurf Toame 5OG.F0 UTC.e / cnond...
|
NULL
|
-1206163171156266048
|
NULL
|
app_switch
|
ocr
|
NULL
|
PhostormVIewINavigarecodeLaravelFV faVsco.jsProjec PhostormVIewINavigarecodeLaravelFV faVsco.jsProjectM+ WEBHOOK-FILTERING_IMPLEMENTATION.mo>0b External Librariesv E Scratches and Consolesv _ Database consolesV AEU& console (euJA DEAL RISKS (EUJADITEUTA EU (EU#liminny@localhostconsole fliminny@localhost4 D| lliminnv@localhostl4 HS_local jiminny@localhost)4 SF jiminny@localhost]A zoho_dev [jiminny@localhost]V A PRODA console (PROD]A console_1 (PROD]A DIIPRODIServicesv D Databaseconsole#HS localASF 978 msA PROD4 console 1 s 644 msA STAGINGIconsoleDockerKeractor© AskAnythingPromptService.php© AskJiminnyReportsController.phpAutomateakeporskepository.pnpOpportunitysynclrait.phg© Hubspotwebnookbatchsyncstrategy.ongc) SyncObiects.pho©ImportOpportunityBatch.php© ImportContactBatch.php© Client.php© HubspotPaginationService.phd© Service.phpBatchSyncTrait.phpC) FetchSalestorceEntitiesJob.php /AutomatedReportsController.phpphp api v2.php(C) AutomatedReport.ohoclass FetchSalesforceEntitiesJob extends Job implements ShouldQueue, ShouldBeUniquepublic function handle(142144Cevncodit - CanhonImmutahle:.nowdl$config->updateEntitySyncedAt($this->entityType, $syncedAt);146147$logger->info('[FetchSalesforceEntitiesJobl Completed'.'crm confiquration id' => Sthis->crmConfigurationIdOutputII PROFILESliii Result 11 X.Tx.|nW user_idI email Yundated at Y16125jeni.morrison@lesmills.com2026-04-20 01-19:4716156devon.bosley-smith@lesmills.com2026-04-20 01:19:4633 16115jessica.young@lesmills.com2026-04-20 01:19:4016124herschel.elderdlesm1lls.com2026-04-20 01:19:4016389alson.salernodlesmuus.com2026-04-20 01:19:4016117meredith.elumbad.esm.s.com2026-04-20 01.19:2616091nik.heroldalesmills.com2026-04-20 01-19:2316095adrian.heffernan@lesmills.com2024-04-20 01-10-2339 16067 (owner)jiminnvintegration@lesmills.com2004-02.21 04.71.2420609elinor.quavledlesm1lls.com2026-01-29 14:09:5120687ian.mcaregordlesmiuls.com2026-01-29 14:09:3516120jeannine.liu@lesmills.com2026-01-29 14•04•55161042085245 2068416817mario.tarquinio@lesmills.com2024-01.20 14•07•501ollie.thomas@lesmills.com2025-11-04 19:12:01darren.hazel10lesmills.com2025-11-04 19:10:39kriasha.dadiflesmills.com2025-11-04 19:04•5020687martin.franklindlesmills.com2025-02-27 07:48:23= custom.logconsole [PRODI XAconsole [EUi588589591592593594A26 ^ v 595— 596H5985991140d=laravel.log4 SF [jiminny@localhost]A HS_local jiminny@localhost]« console [STAGING]SELECT * FROM autonated_report_results WHERE 1Q = 1919select * from automated_report_results WHERE report id = 54;select * from opportunities where id = 7594349;SELECT * FROM teams WHERE name LIKE '%Les%'; # 711, 692, 16067 -• [EMAIL] * from playbooks where team_id = 711; # event 226147SELECT * FROM playbook categories WHERE playbook id = 5515:SELECT * FROM crm fields WHERE crm configuration id = 692:SELECT * FROM crm fields WHERE id = 226147:SELECT * FROM crm field values WHERE crm_ field id = 226147:SELECT * FROM crm configurations WHERE id = 692:601 VSELECTCONCAT(u.id, CASE WHEN v.id = t.owner_id THEN ' (owner)' ELSE "' END) AS user_idU.emart@provider_user_token T00D90000000fUsz!AQEAQN_BYD6JmiukPpvT12njFcMyon5w60jQBrcNTJfXBM7q9mgqnPkSBDjBzxKGNkPJ0bFfEH3CS.lYwN.saQieAxN7I1D000D90000000fUsz!AQEAQIEePDjR1aW8DBp0mo_cJ7jTp1XTGSMwP5o.T8VydhYmGoI_mMLq.5nhQfagyB4dvPar_KS.g16Y7R_4LeK1HM3dQYoH00D90000000fUsz!AQEAQL05b59R0D3_RenuVQTIqkP2fJB0Gk4trY8ceWzN3ZoXiE7wkaG7UwUTCqtzF2QFduS0j990NxW_nGEcdoCxZXY2.iuh00D90000000fUsz!A0EAQGwXeiZLEVex1wwGeVqoe8iFI8.MSyxM4RiZ7y3ZV147Br0ztxfbwwXRSX4ApCcT4w9ADG9qe.9ZhWqFkM8uji0mFv9n00090000000fUsz!A0EA00JFLnSVTilnDaSkpC3USDtGDbp6MJe2s6vxDvrzF05A8PE84K9Khz10zhZf0DCPj2HiEnHD1KLTOYLTp_RMGkuoU0GaOODSOGGOOOOGISZ IAOFAOCPYRALIYCROIMESZW0650nc swzo8tASvarnLAidd5WKAWLXOMR8GVaNCYWYAL dHOLV COVKDH1 8xc2aH5v27m00D90000000fUsz!AQEAQCB6F7U3jyAVJV7Fz2Gqc62LBiV25UD5NWSPcQ4K7jnXk5sWTF8XqGCKab.yvev0QZL96PZ5tNw8wDLpIo2LmQnRK18p00D90000000fUsz!AQEAQMFWv9CMKZUnfBJBQQiWrA6vD1JbomVnFZi9h4EQi0XGwTZu1KFwfcXnKN_5VHp29sz0Wt0qF1wllctBAMT5irh7BabZ00D90000000fUsz!A0EA0KRIt62MPS0BhF0_SPMdUfRN0aX22hSEy4wwLvkW0y7Y8vtMasenRvudh00G90I81aqNrLu.wGgkCiT09RHg0a0XiF_d00D90000000fUsz!A0EA0D308YDdRotAiKWS5SVuJGBBkBI_nr.qWG_LFmpw.Tna06iUsaVTFkqNx9mp_5RyL0q07fwYqcAhBaG0W0p5AZiaaRmW00090000000fUsz!A0EA0BNF6mVwPT9tYDn_ a9cwXZWLeP 320.shSVVAVJvZ0CHFJWsH6dY608TknD0hD3LSXZ.u4VCvTH6RFsBEHqD10x0 4wE00D90000000Usz AQEAQMTWIqjace9LxNFa73LULA9PS81uPenYu3i8alEZOHU5Q.MPjvclv4e941DX4Sp0tKBwTGvYvwwqhvEuKZpEDRq6PMFk00D90000000fUsz!AQEAQM10W5jadfi24A1jEnnJgVeiQ8bKYX4nq0cpL9KDVJTGV9KQddhC6X31s8xuTvL41hfz.E6JDLLQ0eADxY98YqZt.s4Z00D90000000fUsz!AQEAQKB.ebvRUP_FuVrU6tQZZBnTglR6mx60X6.bzivP0XfYSVKgKIBbiztHLZU21BhtRrp4yjcy0_dKH1XPAJM4vMGf_Sb00090000000fUsz!A0EA0HNp8SVvczrYh17dHik0U3ekL4FzfeZ5DGDGSvTUGfkYVRY4mbblh1St4x0Xansv7GPXWewJrfwUa7NK.kWUe0T0pyw100090000000fUs21A0EA0J_n0.9xL6XGCTvfc1YfSnNccaZ70a0703ha9i1VE000d 000vaS 6uANbDo607V9S1XxcC.Xa1KjazV0.DKq3zF4F1900D90000000£Usz1A0EA0E6≥WaWa57SD4e4JUdmroi0qbcKWUKhiAXZX≥Vz1BKNqbb1E0nLWXtoTs3TRcadu9ivuvTcHhbH awH4R7ac19aq8PMstate 7connectedconnectedconnectedconnectedconnectedconnectedconnectedconnectedfull-refreshfull-refreshfull-refreshfull-refreshfull-refreshfull-refreshfull-refreshfull-refreshMidy /795590856053551715707254392CLOYe4740456047Msociable id YMorovider user id Y16125 0052L000004U5WUDA61615A A0521 A00002-PHd0Aм16115 0052L000004UEyHQAW16124 0052L000004UEx90AG16389 0052L000003qwabOAA16117 00512000002FnvaAAC16091 0052L0000031V7n0AF16A05 AAS1ARAAAA1Zi ЄWAANI16067 0058X00000GHRxg0AH20609 0052L000003M3Xm0AH20687 0051a000002m2KTAAY16120 00590000000knVUAA)1A104 AAsOLadddozepc1nAм20852 0052L000003fzTJQAYМадеОосАаоооооОАМ16817 0052L000004VatUOAS20682 00590000001Sv7nAAC100% C4Mon 20 Apr 16:56:49rliminny034 A1 A34 V 62 ^morovider refresh token Y5Aen8617VFpoP. M.4vdZhne4YEnmiwHviz6n1MVahD12cSr_fAdTV8coFfSAen8417VSnoP.M.Awd7hne/VEnmiw!v776n1MVWadv80l VV7d4610X7725Aep8617VFpoP.M.4vdZhpe4YEnmiwHyjz6p1MVxdyl_Wq6Rb7QPhx0iPT5Aep8617VFpoP.M.4vdZhpe4YEnmiwHyjz6p1MV0HtJyq7RMSzmB8aQwRq5Aep8617VFpoP.M.4vdZhpe4YEnmiwHviz6p1MVTZd489NKV2RAC4.14Cb5Aen8617VFnoP_ M.4vdZhne4YEnmhTaa0xVU6MFVonkY7.h14sH3euBmHa5Aen8617VFooP. M.4vdZhpe4YEnmiwHviz6p1MVYVrq3viAPGF5qJQULyoSAen8417VEnoP M_Zwd7hne//VEnmhTaa0xVIIKMEMvhhn71 RF-PPh£+I HnlSAep8617VFpoP.M.4vdZhpe4YEnmkbe0CK_KX01LAWm2daKop59B5SLr0w5Aep8617VFpoP.M.4vdZhpe4YEnmiwHyiz6p1MVA6mVtoMcERxw®YXBn7h5Aep8617VFpoP.M.4vdZhpe4YEnmhTqa0xVU6MFjP81Us5Kw8RaBD0n0H5Aen8617VEnoP_M.4vdZhne4YEnmaqT~MEA.IdGot-fLXPMBY≥3B1CNX05F.JSAen9417VCnoD_ M Zwd7hne/VEnmiwlv-z/n1MV7vvsM£o£C1a95>^571A5Aep8617VFpoP.M.4vdZhpe4YEnmiwHyjz6p1MVuwE59VsxonQglFclfdY5Aep8617VFpoP.M.4vdZhpe4YEnmhTqa0xVU6MFxCYTWE_rbY4yHD0fifS5Aen8617VFpoP. M.4vdZhoe4YEnmiwHviz6p1MV1NLHLt8ZS0Ghtme0CWh5Aen8617VFpoP.M.4vdZhne4YEnmaqTrMEAJdGoPDP. 17. TlcNxvca. SKIN/ Windeurf Toame 5OG.F0 UTC.e / cnond...
|
NULL
|
|
59701
|
1284
|
10
|
2026-04-20T13:57:18.571463+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776693438571_m1.jpg...
|
Firefox
|
Firefox
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Firefox File EditView<→ GHistoryBookmarksProfil Firefox File EditView<→ GHistoryBookmarksProfilesTools Window Help• • @ meet.google.com/cxs-eips-npt?authuser=0100%с28 Mon 20 Apr 16:57:18Returning to home screen+You left the meetingRejoinReturn to home screenHow was the audio and video?Very badVery goodLộ3• Feedback...
|
NULL
|
-3180689237162149399
|
NULL
|
app_switch
|
ocr
|
NULL
|
Firefox File EditView<→ GHistoryBookmarksProfil Firefox File EditView<→ GHistoryBookmarksProfilesTools Window Help• • @ meet.google.com/cxs-eips-npt?authuser=0100%с28 Mon 20 Apr 16:57:18Returning to home screen+You left the meetingRejoinReturn to home screenHow was the audio and video?Very badVery goodLộ3• Feedback...
|
NULL
|
|
59702
|
1285
|
8
|
2026-04-20T13:57:18.455210+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776693438455_m2.jpg...
|
Firefox
|
Firefox
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
ninny.atlassian.net/browse/JY-20500* Jiminny MCP C ninny.atlassian.net/browse/JY-20500* Jiminny MCP Connector - Product(UY-20676) Notify the user if a Paninbox (1,579) - lukas.kovalik@jimirJiminny - Calendar - Week of April4 (JY-20500] Batch initial sync f: X+ New Tabl 00O JIMINNY@ For you© Recent|# Starred8$ Apps• Spaces+ ...Jiminny (New)I 00 Platform TeamIID SE KanbanII Capture TeamI Enterprise Stability I.W Processing Team( Service-Desk= More spaces— FiltersC Dashboards@ Operations2 Confluence: Teams"= Customise sidebarIQ Search1 114m 15glSpaces / E Jiminny (New) / & Jy-15971 / [ JY-20500Batch initial sync for Salesforcev DescrivtionProblems:• Importing deals can take hoursSolution:Currently synching initial user profile (opportunities) is not working sufficiently when a huge amount of objects are imported from the CRM into Jiminny.• The current syncOpportunities( should only read the batches of deals from Hubspot and store the payload in Redis• There should be a separate job import object per batches of 100 updated deals which reads the info for objects from Redis and import them in Jiminny• There should be retry mechanism of the jobs so that in case they are using spot instance for processing which is turned off, the job will be retried• We should clean the Redis in 24 hours in case there are objects which are still not processedSubtasksAdd subtaskLinked work itemsclones# JY-20200 Batch update deals, leads, accounts and contacts for SalesforceDEPLOYEDis cloned by0 JY-20501 Batch initial sync for HubspotBACKLOGV~ ActivityComments 4 History Work logAdd a comment...Suggest a reply.. Who is working on this.? Status update…Pro tip: press (M) to commentNikolay Nikolov•2 minutes agolImplemement same as SyncObjects - FetchSalesforceEntitiesJob::dispatchc+cA.=OMOA 04 8 Mon20 Apr 16:57:18Ask Rovo ® Ê E++ CreateBacklog~ * Improve StoryDetailsAssigneeReporterDevelopmentComponentsSub-ProductLabelsStory point estimateStory PointsOrganisationsPriorityFix versionsSprintDaysNeed QA& UnassignedAssign to me& Stefka Stoyanova[ Open with VS Code33 Create branch/ Create commitPlatformAdd optionsNoneNoneNoneNone= MediumNonePlatform Sprint 3 Q23(YesParentCanny LinksUY-15971 CRM Synching ImprovementsOpen Canny Links> More fields Original estimate, Time tracking> Automation 4 Rule executions> featureOS Open featureOs022....
|
NULL
|
-6883902443305696353
|
NULL
|
app_switch
|
ocr
|
NULL
|
ninny.atlassian.net/browse/JY-20500* Jiminny MCP C ninny.atlassian.net/browse/JY-20500* Jiminny MCP Connector - Product(UY-20676) Notify the user if a Paninbox (1,579) - lukas.kovalik@jimirJiminny - Calendar - Week of April4 (JY-20500] Batch initial sync f: X+ New Tabl 00O JIMINNY@ For you© Recent|# Starred8$ Apps• Spaces+ ...Jiminny (New)I 00 Platform TeamIID SE KanbanII Capture TeamI Enterprise Stability I.W Processing Team( Service-Desk= More spaces— FiltersC Dashboards@ Operations2 Confluence: Teams"= Customise sidebarIQ Search1 114m 15glSpaces / E Jiminny (New) / & Jy-15971 / [ JY-20500Batch initial sync for Salesforcev DescrivtionProblems:• Importing deals can take hoursSolution:Currently synching initial user profile (opportunities) is not working sufficiently when a huge amount of objects are imported from the CRM into Jiminny.• The current syncOpportunities( should only read the batches of deals from Hubspot and store the payload in Redis• There should be a separate job import object per batches of 100 updated deals which reads the info for objects from Redis and import them in Jiminny• There should be retry mechanism of the jobs so that in case they are using spot instance for processing which is turned off, the job will be retried• We should clean the Redis in 24 hours in case there are objects which are still not processedSubtasksAdd subtaskLinked work itemsclones# JY-20200 Batch update deals, leads, accounts and contacts for SalesforceDEPLOYEDis cloned by0 JY-20501 Batch initial sync for HubspotBACKLOGV~ ActivityComments 4 History Work logAdd a comment...Suggest a reply.. Who is working on this.? Status update…Pro tip: press (M) to commentNikolay Nikolov•2 minutes agolImplemement same as SyncObjects - FetchSalesforceEntitiesJob::dispatchc+cA.=OMOA 04 8 Mon20 Apr 16:57:18Ask Rovo ® Ê E++ CreateBacklog~ * Improve StoryDetailsAssigneeReporterDevelopmentComponentsSub-ProductLabelsStory point estimateStory PointsOrganisationsPriorityFix versionsSprintDaysNeed QA& UnassignedAssign to me& Stefka Stoyanova[ Open with VS Code33 Create branch/ Create commitPlatformAdd optionsNoneNoneNoneNone= MediumNonePlatform Sprint 3 Q23(YesParentCanny LinksUY-15971 CRM Synching ImprovementsOpen Canny Links> More fields Original estimate, Time tracking> Automation 4 Rule executions> featureOS Open featureOs022....
|
NULL
|
|
59713
|
1285
|
13
|
2026-04-20T13:57:36.958581+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776693456958_m2.jpg...
|
iTerm2
|
iTerm2
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FV faVsco.js~Project~M+ WEBHOOK FILTERING_IMPLEMEN FV faVsco.js~Project~M+ WEBHOOK FILTERING_IMPLEMENTATION.mo>0b External Librariesv E Scratches and Consolesv _ Database consolesV A EUconsole IEUlA DEAL RISKS (EU]ADITEUIA EU (EUJv /iminnv@localhostA console [jiminny@localhost]4 D| lliminnv@localhostlA HS_local [jiminny@localhost)4 SF jiminny@localhost]zoho_dev [jiminny@localhost]V A PROD4 console [PROD]A console_1 [PROD]A DI [PROD]+,o,c|~ D Databaseconsolev A liminnv@localhostA HS_localASF 978 ms~ A PROD« console 1 s 630 mgV A STAGINGIconsoleDocker©AskAnythingPromptService.phpAutomatedkeporscommand.pnp© SyncProfileOpportunities.phpOpportunitysynclrait.phpC)Hubspotwebnookbatchsyncstrategy.pnp© WebhookSyncBatchProcessor.pho= custom.logE laravel.log00 • Tx:Auto vA SF (jiminny@localhost]HS_Jocal [jiminny@localhost]A console (PROD] x#console [cu)A console lolAGING.select * trom opportunitles where 10 = 75945491592C) SyncObiects.php©ImportOpportunityBatch.php© ImportContactBatch.php© FetchSalesforceEntitiesJob.php xAutomatedReportsController.php© Client.phpC) HubspotPaqinationService.phoC) Service.php594BatchSyncTrait.php© AutomatedReport.phpphp api_v2.php(C) AutomatedReportResult.pho596vSELECT * FROM teams WHERE name LIKE '%Les%'; # 711, 692, 16067 - [EMAIL] * from playbooks where team_id = 711; # event 226147SGLECT * FROM playbook_categories WHERE playbook_id = 5515;SELECT * FROM crm_fields WHERE crm_configuration_id = 692 and object_type = 'event';SELEC * SROM com Fields WHERE 10 = 2261471SELECT * FROM crm_field_values WHERE crm_field_id = 226147;class FetchSalesforceEntitiesJob extends Job implements ShouldQueue, ShouldBeUniqueA26 A ~142144146147$syncedAt = CarbonImmutable::now();$config->updateEntitySyncedAt($this->entityType, $syncedAt);$logger->info('[FetchSalesforceEntitiesJob] Completed', ['crm confiquration id' => Sthis->crmConfiqurationId& OutputIIT PROFILES@B jiminny.crm_fields84 rowsvДQEEAODid TDuvid (UUID with time-low a..T :crm_configuration_id T238760 fff90e22-7edb-4cd5-a316-2c9dacb88808238715 bc149d92-7a9f-4480-9987-03e96c20671a238769 b687c945-c85b-466c-86f4-2b2a15db2133258779 b8e6ee59-4406-4923-9c28-0e14062d6240138466 [CREDIT_CARD]-98+5-d0abFcd8cefc238712 5efd9f52-8c26-44af-a41c-8d488d31eb99238711 4090eebe-60db-4266-97f9-6a62c4f9a4a3238774 2eb7e9a0-4232-444C-aca0-f83317f79a15238753 bdcef11b-4eef-47b5-91f9-3eda7ce199a9238765 fa8666af-f842-4048-84ec-3a54321Fbf6:238773 a7ac833a-7ccf-49ab-a582-35fea0c6f959238770 89fdc61f-00a6-4ba9-9836-992833f1d21a238758 Se513969-7775-467d-adba-7cef16eeed15238780 66ee9ad0-c503-4c0c-9d78-351798057276238777 af739ed2-bd11-4786-8983-b7773894f81f138756 a5h47805-Feee-4630-h263-07eh98÷638661238725 71417711-651e-4aad-aa40-a515f0603411238724 7f8809ce-934c-4820-885b-273df1f1c0ff238717 456080cc-0970-4c75-ae28-4990ea3d7207226149 f9dd9fad-5ab2-44d3-ae52-0aa739662425238713 3f09eda8-5653-4065-ab15-44b5f6993c4d238714 [CREDIT_CARD]-h938-2d6÷2622420/D crm_provider_id T692 Account__c692 AccountId692 Action_Plan__c692 Activity_ID_18_Char__c692 Activity_Type_Reporting__c692 ActivityDate692 ActivityDateTime692 Agent_Territory__c692 Appointment_Outcome__c692 Assigned_To_Full_Name__c692 Campaign_Name__C692 Challenges__c692 CloudGento__Activity_Date__c692 Connect_Task_Id__c692 COVID_19_Conversation_Outcome__c692 Created_By_Name_.c692 CreatedById692 CreatedDate692 CurrencyIsoCode692 Description692 DurationInMinutes402 Endhate$603— 6065407SELECT * FROM crm_configurations WHERE id = 692;SELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE "' END) AS user_id,U.enast,sa.xt.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable idJOIN teams t 1.n<->1: on t.id = u.team_id# Label YAccountAccount IDAction PlanActivity 1D (18 Char)Activity Type (Reporting)DateTimeAgent TerritoryAopointment OutcomeAssigned To Full NameCampaign NameChallengesActivity DateConnect Task IdCOVID-19 Conversation OutcomeCreated ByCreated By IDCreated DateActivity CurrencyDescriptionOdescription Y<null>SAL-272: Capture more quality information in Salesforce from partnership reviewsFull name of Task Owner to use in outgoing email templatesLink Activity to Campaign, to track the number of New business meetings that result from CWI SAL-447SAL-272: Capture more quality information in Salesforce from partnership reviews<null>Unique id that is received from LMConnect when a task creation request is received.<nul>End NateL AskJiminnyReportActivityServiceTest~100% 52D €MOn ZU AOr 10:0/•30do jiminny034 A1 A34 X62^1 1101111 11111<484+ @ type YtexttexttexttexttextdatetimedatetimetextoIcKLIsttextunsupportedtexttexttextunsupportedteyttextdatetimepicklisttextareaeSVvI length Y<null>• default_value255<null>255o <null>• <null><null><null>255<nul>255<null><nui)<null> <nul>o <null>3 NZD32000 <null>dateSUM: 0W Windsurf Teamso <null>596:84 UTF-84 spaces...
|
NULL
|
3929890185262506303
|
NULL
|
app_switch
|
ocr
|
NULL
|
FV faVsco.js~Project~M+ WEBHOOK FILTERING_IMPLEMEN FV faVsco.js~Project~M+ WEBHOOK FILTERING_IMPLEMENTATION.mo>0b External Librariesv E Scratches and Consolesv _ Database consolesV A EUconsole IEUlA DEAL RISKS (EU]ADITEUIA EU (EUJv /iminnv@localhostA console [jiminny@localhost]4 D| lliminnv@localhostlA HS_local [jiminny@localhost)4 SF jiminny@localhost]zoho_dev [jiminny@localhost]V A PROD4 console [PROD]A console_1 [PROD]A DI [PROD]+,o,c|~ D Databaseconsolev A liminnv@localhostA HS_localASF 978 ms~ A PROD« console 1 s 630 mgV A STAGINGIconsoleDocker©AskAnythingPromptService.phpAutomatedkeporscommand.pnp© SyncProfileOpportunities.phpOpportunitysynclrait.phpC)Hubspotwebnookbatchsyncstrategy.pnp© WebhookSyncBatchProcessor.pho= custom.logE laravel.log00 • Tx:Auto vA SF (jiminny@localhost]HS_Jocal [jiminny@localhost]A console (PROD] x#console [cu)A console lolAGING.select * trom opportunitles where 10 = 75945491592C) SyncObiects.php©ImportOpportunityBatch.php© ImportContactBatch.php© FetchSalesforceEntitiesJob.php xAutomatedReportsController.php© Client.phpC) HubspotPaqinationService.phoC) Service.php594BatchSyncTrait.php© AutomatedReport.phpphp api_v2.php(C) AutomatedReportResult.pho596vSELECT * FROM teams WHERE name LIKE '%Les%'; # 711, 692, 16067 - [EMAIL] * from playbooks where team_id = 711; # event 226147SGLECT * FROM playbook_categories WHERE playbook_id = 5515;SELECT * FROM crm_fields WHERE crm_configuration_id = 692 and object_type = 'event';SELEC * SROM com Fields WHERE 10 = 2261471SELECT * FROM crm_field_values WHERE crm_field_id = 226147;class FetchSalesforceEntitiesJob extends Job implements ShouldQueue, ShouldBeUniqueA26 A ~142144146147$syncedAt = CarbonImmutable::now();$config->updateEntitySyncedAt($this->entityType, $syncedAt);$logger->info('[FetchSalesforceEntitiesJob] Completed', ['crm confiquration id' => Sthis->crmConfiqurationId& OutputIIT PROFILES@B jiminny.crm_fields84 rowsvДQEEAODid TDuvid (UUID with time-low a..T :crm_configuration_id T238760 fff90e22-7edb-4cd5-a316-2c9dacb88808238715 bc149d92-7a9f-4480-9987-03e96c20671a238769 b687c945-c85b-466c-86f4-2b2a15db2133258779 b8e6ee59-4406-4923-9c28-0e14062d6240138466 [CREDIT_CARD]-98+5-d0abFcd8cefc238712 5efd9f52-8c26-44af-a41c-8d488d31eb99238711 4090eebe-60db-4266-97f9-6a62c4f9a4a3238774 2eb7e9a0-4232-444C-aca0-f83317f79a15238753 bdcef11b-4eef-47b5-91f9-3eda7ce199a9238765 fa8666af-f842-4048-84ec-3a54321Fbf6:238773 a7ac833a-7ccf-49ab-a582-35fea0c6f959238770 89fdc61f-00a6-4ba9-9836-992833f1d21a238758 Se513969-7775-467d-adba-7cef16eeed15238780 66ee9ad0-c503-4c0c-9d78-351798057276238777 af739ed2-bd11-4786-8983-b7773894f81f138756 a5h47805-Feee-4630-h263-07eh98÷638661238725 71417711-651e-4aad-aa40-a515f0603411238724 7f8809ce-934c-4820-885b-273df1f1c0ff238717 456080cc-0970-4c75-ae28-4990ea3d7207226149 f9dd9fad-5ab2-44d3-ae52-0aa739662425238713 3f09eda8-5653-4065-ab15-44b5f6993c4d238714 [CREDIT_CARD]-h938-2d6÷2622420/D crm_provider_id T692 Account__c692 AccountId692 Action_Plan__c692 Activity_ID_18_Char__c692 Activity_Type_Reporting__c692 ActivityDate692 ActivityDateTime692 Agent_Territory__c692 Appointment_Outcome__c692 Assigned_To_Full_Name__c692 Campaign_Name__C692 Challenges__c692 CloudGento__Activity_Date__c692 Connect_Task_Id__c692 COVID_19_Conversation_Outcome__c692 Created_By_Name_.c692 CreatedById692 CreatedDate692 CurrencyIsoCode692 Description692 DurationInMinutes402 Endhate$603— 6065407SELECT * FROM crm_configurations WHERE id = 692;SELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE "' END) AS user_id,U.enast,sa.xt.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable idJOIN teams t 1.n<->1: on t.id = u.team_id# Label YAccountAccount IDAction PlanActivity 1D (18 Char)Activity Type (Reporting)DateTimeAgent TerritoryAopointment OutcomeAssigned To Full NameCampaign NameChallengesActivity DateConnect Task IdCOVID-19 Conversation OutcomeCreated ByCreated By IDCreated DateActivity CurrencyDescriptionOdescription Y<null>SAL-272: Capture more quality information in Salesforce from partnership reviewsFull name of Task Owner to use in outgoing email templatesLink Activity to Campaign, to track the number of New business meetings that result from CWI SAL-447SAL-272: Capture more quality information in Salesforce from partnership reviews<null>Unique id that is received from LMConnect when a task creation request is received.<nul>End NateL AskJiminnyReportActivityServiceTest~100% 52D €MOn ZU AOr 10:0/•30do jiminny034 A1 A34 X62^1 1101111 11111<484+ @ type YtexttexttexttexttextdatetimedatetimetextoIcKLIsttextunsupportedtexttexttextunsupportedteyttextdatetimepicklisttextareaeSVvI length Y<null>• default_value255<null>255o <null>• <null><null><null>255<nul>255<null><nui)<null> <nul>o <null>3 NZD32000 <null>dateSUM: 0W Windsurf Teamso <null>596:84 UTF-84 spaces...
|
NULL
|
|
60707
|
1308
|
34
|
2026-04-21T06:14:39.778279+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752079778_m1.jpg...
|
iTerm2
|
DOCKER (-zsh)
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:47:56 on console
Poetry Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work
Menu
⌥1 DOCKER (-zsh)
Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥2 PROD (-zsh)
Last login: Mon Apr 20 19:48:03 on ttys001
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥3 EU (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥4 STAGE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥5 QA (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys004
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥6 FE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys005
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥7 EXT (-zsh)
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
⌥⌘1
DOCKER (-zsh)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work","depth":4,"bounds":{"left":0.0,"top":0.112222224,"width":0.50069445,"height":0.8877778},"value":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work","is_focused":true},{"role":"AXButton","text":"Menu","depth":3,"bounds":{"left":0.4861111,"top":0.08944444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥1 DOCKER (-zsh)","depth":3,"bounds":{"left":0.01875,"top":0.09,"width":0.46388888,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.112222224,"width":0.4986111,"height":0.12222222},"value":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.08944444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥2 PROD (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.09,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:03 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.26222223,"width":0.4986111,"height":0.14222223},"value":"Last login: Mon Apr 20 19:48:03 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.23944445,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥3 EU (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.24,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.43222222,"width":0.4986111,"height":0.12222222},"value":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.40944445,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥4 STAGE (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.41,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.5822222,"width":0.4986111,"height":0.12222222},"value":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.5594444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥5 QA (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.56,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.7322222,"width":0.4986111,"height":0.12222222},"value":"Last login: Mon Apr 20 19:48:04 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.70944446,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥6 FE (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.71,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys005\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.8622222,"width":0.4986111,"height":0.13777778},"value":"Last login: Mon Apr 20 19:48:04 on ttys005\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.85944444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥7 EXT (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.86,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.14097223,"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.14097223,"top":0.05888889,"width":0.14097223,"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.14513889,"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.28194445,"top":0.05888889,"width":0.14097223,"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.28611112,"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 (node)","depth":2,"bounds":{"left":0.42291668,"top":0.05888889,"width":0.14097223,"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.42708334,"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.5638889,"top":0.05888889,"width":0.14097223,"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.56805557,"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.7048611,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70902777,"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.8454861,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.84965277,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95763886,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DOCKER (-zsh)","depth":1,"bounds":{"left":0.4652778,"top":0.033333335,"width":0.07152778,"height":0.017777778},"role_description":"text"}]...
|
-5618287936463319477
|
-1043966294775117799
|
app_switch
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:47:56 on console
Poetry Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work
Menu
⌥1 DOCKER (-zsh)
Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥2 PROD (-zsh)
Last login: Mon Apr 20 19:48:03 on ttys001
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥3 EU (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥4 STAGE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥5 QA (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys004
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥6 FE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys005
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥7 EXT (-zsh)
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
⌥⌘1
DOCKER (-zsh)...
|
NULL
|
|
60708
|
1309
|
40
|
2026-04-21T06:14:39.778289+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752079778_m2.jpg...
|
iTerm2
|
DOCKER (-zsh)
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:47:56 on console
Poetry Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work
Menu
⌥1 DOCKER (-zsh)
Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥2 PROD (-zsh)
Last login: Mon Apr 20 19:48:03 on ttys001
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥3 EU (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥4 STAGE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥5 QA (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys004
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥6 FE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys005
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥7 EXT (-zsh)
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
⌥⌘1
DOCKER (-zsh)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.23969415,"height":-0.08060658},"value":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work","is_focused":true},{"role":"AXButton","text":"Menu","depth":3,"bounds":{"left":0.50299203,"top":1.0,"width":0.004986702,"height":-0.06424582},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥1 DOCKER (-zsh)","depth":3,"bounds":{"left":0.27925533,"top":1.0,"width":0.22207446,"height":-0.06464481},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5103058,"top":1.0,"width":0.2400266,"height":-0.08060658},"value":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.74335104,"top":1.0,"width":0.004986702,"height":-0.06424582},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥2 PROD (-zsh)","depth":4,"bounds":{"left":0.5192819,"top":1.0,"width":0.22240691,"height":-0.06464481},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:03 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Mon Apr 20 19:48:03 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥3 EU (-zsh)","depth":4,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥4 STAGE (-zsh)","depth":4,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥5 QA (-zsh)","depth":4,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Mon Apr 20 19:48:04 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥6 FE (-zsh)","depth":4,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys005\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Mon Apr 20 19:48:04 on ttys005\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥7 EXT (-zsh)","depth":4,"role_description":"text"},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.0674867,"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.33776596,"top":1.0,"width":0.0674867,"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.33976063,"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.40525267,"top":1.0,"width":0.0674867,"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.40724733,"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 (node)","depth":2,"bounds":{"left":0.47273937,"top":1.0,"width":0.0674867,"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.47473404,"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.54022604,"top":1.0,"width":0.0674867,"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.5422208,"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.60771275,"top":1.0,"width":0.06732048,"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.6097075,"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.6750333,"top":1.0,"width":0.06732048,"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.67702794,"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.7287234,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DOCKER (-zsh)","depth":1,"bounds":{"left":0.49301863,"top":1.0,"width":0.034242023,"height":-0.02394259},"role_description":"text"}]...
|
-5618287936463319477
|
-1043966294775117799
|
app_switch
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:47:56 on console
Poetry Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work
Menu
⌥1 DOCKER (-zsh)
Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥2 PROD (-zsh)
Last login: Mon Apr 20 19:48:03 on ttys001
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥3 EU (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥4 STAGE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥5 QA (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys004
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥6 FE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys005
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥7 EXT (-zsh)
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
⌥⌘1
DOCKER (-zsh)...
|
NULL
|
|
60709
|
1308
|
35
|
2026-04-21T06:15:02.592912+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752102592_m1.jpg...
|
Firefox
|
Feed — jiminny — Sentry — Work
|
1
|
jiminny.sentry.io/issues/?environment=production-e jiminny.sentry.io/issues/?environment=production-eu&environment=production&project=82419&query=is%3Aunresolved&referrer=issue-list&sort=date&statsPeriod=1h...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
🚀 Q2 Kick-Off - Local in 🇬🇧 & 🇧🇬 at our 🏢/🏡 - Apr 2 - [EMAIL] - Jiminny Mail
🚀 Q2 Kick-Off - Local in 🇬🇧 & 🇧🇬 at our 🏢/🏡 - Apr 2 - [EMAIL] - Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Close tab
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to main content
Skip to main content
Toggle organization menu
Issues
Issues
Explore
Explore
Dashboards
Dashboards
Monitors
Monitors
Settings
Settings
Try Business
What's New
Help
[EMAIL]
Issues
Expand
Feed
Feed
Errors & Outages
Errors & Outages
Breached Metrics
Breached Metrics
Warnings
Warnings
User Feedback
User Feedback
All Views
All Views
Configure
Alerts Moved
Alerts
Moved
Feed
Feed
Pause real-time updates
app
app
production-eu, production
production-eu, production
1H
1H
Add a search term
Edit operator for filter: is
is
Edit value for filter: is
unresolved
Remove filter: is
Add a search term
Add a search term
Edit operator for filter: is
is
Add a search term
Edit value for filter: is
unresolved
Remove filter: is
Clear search query
Last Seen
Last Seen
Save As
Save As
Select all
Issue
Last Seen
Age
Trend
24h
24h
1h
1h
Events
Users
Priority
Assignee
Select Issue
Jiminny\Http\AccessTokenProvider\TokenException
Jiminny\Http\AccessTokenProvider\TokenException
Level: Error
Token not found.
View Project Details
APP-1BQD
/app/Http/AccessTokenProvider/HubspotAccessTokenProvider.php in Jiminny\Http\AccessTokenProvider\HubspotAccessTokenProvider::getAccessToken
3min ago
1yr
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\JobTimeoutException
Jiminny\Exceptions\JobTimeoutException
Level: Error
Job timed out Jiminny\Jobs\Mailbox\SyncInbox
View Project Details
APP-1BZV
/app/Queue/Worker/Worker.php in Jiminny\Queue\Worker\Worker::Jiminny\Queue\Worker\{closure}
4min ago
1yr
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Symfony\Component\Debug\Exception\FatalThrowableError
Symfony\Component\Debug\Exception\FatalThrowableError
Level: Error
League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218
View Project Details
APP-1DTF
/app/Jobs/AutomatedReports/SendReportJob.php in Jiminny\Jobs\AutomatedReports\SendReportJob::handle
Quick Fix
Quick Fix
14min ago
7mo
Ongoing
2
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\JobTimeoutException
Jiminny\Exceptions\JobTimeoutException
Level: Error
Job timed out Jiminny\Jobs\Activity\HardDeleteActivities
View Project Details
APP-1EH6
/app/Queue/Worker/Worker.php in Jiminny\Queue\Worker\Worker::Jiminny\Queue\Worker\{closure}
24min ago
5mo
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Symfony\Component\ErrorHandler\Error\FatalError
Symfony\Component\ErrorHandler\Error\FatalError
Level: Error
Allowed memory size of 268435456 bytes exhausted (tried to allocate 10485760 bytes)
View Project Details
APP-1FNH
/app/Repositories/Crm/CrmEntityRepository.php in ?
29min ago
5d
New
3
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\SocialAccountTokenInvalidException
Jiminny\Exceptions\SocialAccountTokenInvalidException
Level: Error
Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.
View Project Details
APP-1ET5
/app/Services/Crm/BaseService.php in Jiminny\Services\Crm\BaseService::validateUserAccountExists
40min ago
3mo
Ongoing
6
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\JobTimeoutException
Jiminny\Exceptions\JobTimeoutException
Level: Error
Job timed out Jiminny\Jobs\Mailbox\SyncInbox
View Project Details
APP-1DKY
/app/Queue/Worker/Worker.php in Jiminny\Queue\Worker\Worker::Jiminny\Queue\Worker\{closure}
43min ago
8mo
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Component\ProphetAi\Exceptions\ProphetException
Jiminny\Component\ProphetAi\Exceptions\ProphetException
Level: Error
Unexpected service error.Server error: `POST https://prophet.jiminny.com/crm/deal/extract-field-values` resulted in a `504 Gateway Time-out` response: <html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
</body (truncated...)
View Project Details
APP-1DZ3...
|
[{"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":"Jiminny MCP Connector - Product - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"🚀 Q2 Kick-Off - Local in 🇬🇧 & 🇧🇬 at our 🏢/🏡 - Apr 2 - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"🚀 Q2 Kick-Off - Local in 🇬🇧 & 🇧🇬 at our 🏢/🏡 - Apr 2 - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"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":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to main content","depth":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to main content","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Toggle organization menu","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Issues","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Explore","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Explore","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Dashboards","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dashboards","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Monitors","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Monitors","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":"AXButton","text":"Try Business","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"What's New","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Help","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"lukas.kovalik@jiminny.com","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Issues","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Feed","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Errors & Outages","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Errors & Outages","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Breached Metrics","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Breached Metrics","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Warnings","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Warnings","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"User Feedback","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"User Feedback","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"All Views","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All Views","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Configure","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Alerts Moved","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Alerts","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Moved","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Feed","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Feed","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pause real-time updates","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"app","depth":11,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"app","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"production-eu, production","depth":11,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"production-eu, production","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"1H","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1H","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Add a search term","depth":14,"help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit operator for filter: is","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"is","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit value for filter: is","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"unresolved","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Remove filter: is","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Add a search term","depth":14,"help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"Add a search term","depth":14,"help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit operator for filter: is","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"is","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Add a search term","depth":14,"help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit value for filter: is","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"unresolved","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Remove filter: is","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Clear search query","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Last Seen","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Last Seen","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Save As","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Save As","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Select all","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Issue","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Last Seen","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Age","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trend","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"24h","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"24h","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1h","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1h","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Events","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Users","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Priority","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Assignee","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Select Issue","depth":12,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Jiminny\\Http\\AccessTokenProvider\\TokenException","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Http\\AccessTokenProvider\\TokenException","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Token not found.","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1BQD","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Http/AccessTokenProvider/HubspotAccessTokenProvider.php in Jiminny\\Http\\AccessTokenProvider\\HubspotAccessTokenProvider::getAccessToken","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3min ago","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1yr","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ongoing","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Jiminny\\Exceptions\\JobTimeoutException","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\JobTimeoutException","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Job timed out Jiminny\\Jobs\\Mailbox\\SyncInbox","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1BZV","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Queue/Worker/Worker.php in Jiminny\\Queue\\Worker\\Worker::Jiminny\\Queue\\Worker\\{closure}","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4min ago","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1yr","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ongoing","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1DTF","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Jobs/AutomatedReports/SendReportJob.php in Jiminny\\Jobs\\AutomatedReports\\SendReportJob::handle","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Quick Fix","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Quick Fix","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14min ago","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7mo","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ongoing","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Jiminny\\Exceptions\\JobTimeoutException","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\JobTimeoutException","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Job timed out Jiminny\\Jobs\\Activity\\HardDeleteActivities","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1EH6","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Queue/Worker/Worker.php in Jiminny\\Queue\\Worker\\Worker::Jiminny\\Queue\\Worker\\{closure}","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"24min ago","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5mo","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ongoing","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Symfony\\Component\\ErrorHandler\\Error\\FatalError","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\ErrorHandler\\Error\\FatalError","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Allowed memory size of 268435456 bytes exhausted (tried to allocate 10485760 bytes)","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1FNH","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Repositories/Crm/CrmEntityRepository.php in ?","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"29min ago","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5d","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"New","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Jiminny\\Exceptions\\SocialAccountTokenInvalidException","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\SocialAccountTokenInvalidException","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1ET5","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Services/Crm/BaseService.php in Jiminny\\Services\\Crm\\BaseService::validateUserAccountExists","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"40min ago","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3mo","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ongoing","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Jiminny\\Exceptions\\JobTimeoutException","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\JobTimeoutException","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Job timed out Jiminny\\Jobs\\Mailbox\\SyncInbox","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1DKY","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Queue/Worker/Worker.php in Jiminny\\Queue\\Worker\\Worker::Jiminny\\Queue\\Worker\\{closure}","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"43min ago","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8mo","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ongoing","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unexpected service error.Server error: `POST https://prophet.jiminny.com/crm/deal/extract-field-values` resulted in a `504 Gateway Time-out` response: <html>\r <head><title>504 Gateway Time-out</title></head>\r <body>\r <center><h1>504 Gateway Time-out</h1></center>\r </body (truncated...)","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1DZ3","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8445349818415326798
|
1805726384840277503
|
app_switch
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
🚀 Q2 Kick-Off - Local in 🇬🇧 & 🇧🇬 at our 🏢/🏡 - Apr 2 - [EMAIL] - Jiminny Mail
🚀 Q2 Kick-Off - Local in 🇬🇧 & 🇧🇬 at our 🏢/🏡 - Apr 2 - [EMAIL] - Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Close tab
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to main content
Skip to main content
Toggle organization menu
Issues
Issues
Explore
Explore
Dashboards
Dashboards
Monitors
Monitors
Settings
Settings
Try Business
What's New
Help
[EMAIL]
Issues
Expand
Feed
Feed
Errors & Outages
Errors & Outages
Breached Metrics
Breached Metrics
Warnings
Warnings
User Feedback
User Feedback
All Views
All Views
Configure
Alerts Moved
Alerts
Moved
Feed
Feed
Pause real-time updates
app
app
production-eu, production
production-eu, production
1H
1H
Add a search term
Edit operator for filter: is
is
Edit value for filter: is
unresolved
Remove filter: is
Add a search term
Add a search term
Edit operator for filter: is
is
Add a search term
Edit value for filter: is
unresolved
Remove filter: is
Clear search query
Last Seen
Last Seen
Save As
Save As
Select all
Issue
Last Seen
Age
Trend
24h
24h
1h
1h
Events
Users
Priority
Assignee
Select Issue
Jiminny\Http\AccessTokenProvider\TokenException
Jiminny\Http\AccessTokenProvider\TokenException
Level: Error
Token not found.
View Project Details
APP-1BQD
/app/Http/AccessTokenProvider/HubspotAccessTokenProvider.php in Jiminny\Http\AccessTokenProvider\HubspotAccessTokenProvider::getAccessToken
3min ago
1yr
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\JobTimeoutException
Jiminny\Exceptions\JobTimeoutException
Level: Error
Job timed out Jiminny\Jobs\Mailbox\SyncInbox
View Project Details
APP-1BZV
/app/Queue/Worker/Worker.php in Jiminny\Queue\Worker\Worker::Jiminny\Queue\Worker\{closure}
4min ago
1yr
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Symfony\Component\Debug\Exception\FatalThrowableError
Symfony\Component\Debug\Exception\FatalThrowableError
Level: Error
League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218
View Project Details
APP-1DTF
/app/Jobs/AutomatedReports/SendReportJob.php in Jiminny\Jobs\AutomatedReports\SendReportJob::handle
Quick Fix
Quick Fix
14min ago
7mo
Ongoing
2
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\JobTimeoutException
Jiminny\Exceptions\JobTimeoutException
Level: Error
Job timed out Jiminny\Jobs\Activity\HardDeleteActivities
View Project Details
APP-1EH6
/app/Queue/Worker/Worker.php in Jiminny\Queue\Worker\Worker::Jiminny\Queue\Worker\{closure}
24min ago
5mo
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Symfony\Component\ErrorHandler\Error\FatalError
Symfony\Component\ErrorHandler\Error\FatalError
Level: Error
Allowed memory size of 268435456 bytes exhausted (tried to allocate 10485760 bytes)
View Project Details
APP-1FNH
/app/Repositories/Crm/CrmEntityRepository.php in ?
29min ago
5d
New
3
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\SocialAccountTokenInvalidException
Jiminny\Exceptions\SocialAccountTokenInvalidException
Level: Error
Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.
View Project Details
APP-1ET5
/app/Services/Crm/BaseService.php in Jiminny\Services\Crm\BaseService::validateUserAccountExists
40min ago
3mo
Ongoing
6
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\JobTimeoutException
Jiminny\Exceptions\JobTimeoutException
Level: Error
Job timed out Jiminny\Jobs\Mailbox\SyncInbox
View Project Details
APP-1DKY
/app/Queue/Worker/Worker.php in Jiminny\Queue\Worker\Worker::Jiminny\Queue\Worker\{closure}
43min ago
8mo
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Component\ProphetAi\Exceptions\ProphetException
Jiminny\Component\ProphetAi\Exceptions\ProphetException
Level: Error
Unexpected service error.Server error: `POST https://prophet.jiminny.com/crm/deal/extract-field-values` resulted in a `504 Gateway Time-out` response: <html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
</body (truncated...)
View Project Details
APP-1DZ3...
|
NULL
|
|
60710
|
1309
|
41
|
2026-04-21T06:15:02.646593+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752102646_m2.jpg...
|
Firefox
|
Feed — jiminny — Sentry — Work
|
1
|
jiminny.sentry.io/issues/?environment=production-e jiminny.sentry.io/issues/?environment=production-eu&environment=production&project=82419&query=is%3Aunresolved&referrer=issue-list&sort=date&statsPeriod=1h...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
🚀 Q2 Kick-Off - Local in 🇬🇧 & 🇧🇬 at our 🏢/🏡 - Apr 2 - [EMAIL] - Jiminny Mail
🚀 Q2 Kick-Off - Local in 🇬🇧 & 🇧🇬 at our 🏢/🏡 - Apr 2 - [EMAIL] - Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Close tab
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to main content
Skip to main content
Toggle organization menu
Issues
Issues
Explore
Explore
Dashboards
Dashboards
Monitors
Monitors
Settings
Settings
Try Business
What's New
Help
[EMAIL]
Issues
Expand
Feed
Feed
Errors & Outages
Errors & Outages
Breached Metrics
Breached Metrics
Warnings
Warnings
User Feedback
User Feedback
All Views
All Views
Configure
Alerts Moved
Alerts
Moved
Feed
Feed
Pause real-time updates
app
app
production-eu, production
production-eu, production
1H
1H
Add a search term
Edit operator for filter: is
is
Edit value for filter: is
unresolved
Remove filter: is
Add a search term
Add a search term
Edit operator for filter: is
is
Add a search term
Edit value for filter: is
unresolved
Remove filter: is
Clear search query
Last Seen
Last Seen
Save As
Save As
Select all
Issue
Last Seen
Age
Trend
24h
24h
1h
1h
Events
Users
Priority
Assignee
Select Issue
Jiminny\Http\AccessTokenProvider\TokenException
Jiminny\Http\AccessTokenProvider\TokenException
Level: Error
Token not found.
View Project Details
APP-1BQD
/app/Http/AccessTokenProvider/HubspotAccessTokenProvider.php in Jiminny\Http\AccessTokenProvider\HubspotAccessTokenProvider::getAccessToken
3min ago
1yr
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\JobTimeoutException
Jiminny\Exceptions\JobTimeoutException
Level: Error
Job timed out Jiminny\Jobs\Mailbox\SyncInbox
View Project Details
APP-1BZV
/app/Queue/Worker/Worker.php in Jiminny\Queue\Worker\Worker::Jiminny\Queue\Worker\{closure}
4min ago
1yr
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Symfony\Component\Debug\Exception\FatalThrowableError
Symfony\Component\Debug\Exception\FatalThrowableError
Level: Error
League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218
View Project Details
APP-1DTF
/app/Jobs/AutomatedReports/SendReportJob.php in Jiminny\Jobs\AutomatedReports\SendReportJob::handle
Quick Fix
Quick Fix
14min ago
7mo
Ongoing
2
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\JobTimeoutException
Jiminny\Exceptions\JobTimeoutException
Level: Error
Job timed out Jiminny\Jobs\Activity\HardDeleteActivities
View Project Details
APP-1EH6
/app/Queue/Worker/Worker.php in Jiminny\Queue\Worker\Worker::Jiminny\Queue\Worker\{closure}
24min ago
5mo
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Symfony\Component\ErrorHandler\Error\FatalError
Symfony\Component\ErrorHandler\Error\FatalError
Level: Error
Allowed memory size of 268435456 bytes exhausted (tried to allocate 10485760 bytes)
View Project Details
APP-1FNH
/app/Repositories/Crm/CrmEntityRepository.php in ?
29min ago
5d
New
3
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\SocialAccountTokenInvalidException
Jiminny\Exceptions\SocialAccountTokenInvalidException
Level: Error
Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.
View Project Details
APP-1ET5
/app/Services/Crm/BaseService.php in Jiminny\Services\Crm\BaseService::validateUserAccountExists
40min ago
3mo
Ongoing
6
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\JobTimeoutException
Jiminny\Exceptions\JobTimeoutException
Level: Error
Job timed out Jiminny\Jobs\Mailbox\SyncInbox
View Project Details
APP-1DKY
/app/Queue/Worker/Worker.php in Jiminny\Queue\Worker\Worker::Jiminny\Queue\Worker\{closure}
43min ago
8mo
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Component\ProphetAi\Exceptions\ProphetException
Jiminny\Component\ProphetAi\Exceptions\ProphetException
Level: Error
Unexpected service error.Server error: `POST https://prophet.jiminny.com/crm/deal/extract-field-values` resulted in a `504 Gateway Time-out` response: <html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
</body (truncated...)
View Project Details
APP-1DZ3
/app/Component/ProphetAi/ProphetClient.php in Jiminny\Component\ProphetAi\ProphetClient::sendRequest
44min ago
6mo
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Component\FFMpeg\Exceptions\FFMpegException
Jiminny\Component\FFMpeg\Exceptions\FFMpegException
Level: Error
FFMpeg command failed with exit code 15
View Project Details
APP-1D5W
/app/Component/FFMpeg/Services/GetSpeechIntervalsService.php in Jiminny\Component\FFMpeg\Services\GetSpeechIntervalsService::execute
52min ago
10mo
Ongoing
3
0
Modify issue priority...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.15791224,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"🚀 Q2 Kick-Off - Local in 🇬🇧 & 🇧🇬 at our 🏢/🏡 - Apr 2 - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"🚀 Q2 Kick-Off - Local in 🇬🇧 & 🇧🇬 at our 🏢/🏡 - Apr 2 - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.16589096,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.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":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"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":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.29289705,"width":0.07413564,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to main content","depth":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to main content","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Toggle organization menu","depth":11,"bounds":{"left":0.08577128,"top":0.061452515,"width":0.011968086,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues","depth":12,"bounds":{"left":0.07962101,"top":0.096568234,"width":0.024268618,"height":0.051476456},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Issues","depth":14,"bounds":{"left":0.0866024,"top":0.132083,"width":0.010305851,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Explore","depth":12,"bounds":{"left":0.07962101,"top":0.15123703,"width":0.024268618,"height":0.051476456},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Explore","depth":14,"bounds":{"left":0.08577128,"top":0.1867518,"width":0.011968086,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Dashboards","depth":12,"bounds":{"left":0.07962101,"top":0.20590582,"width":0.024268618,"height":0.051077414},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dashboards","depth":14,"bounds":{"left":0.08211436,"top":0.2414206,"width":0.019281914,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Monitors","depth":12,"bounds":{"left":0.07962101,"top":0.26496407,"width":0.024268618,"height":0.051476456},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Monitors","depth":14,"bounds":{"left":0.084773935,"top":0.30047885,"width":0.013962766,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"bounds":{"left":0.07962101,"top":0.3196329,"width":0.024268618,"height":0.051476456},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"bounds":{"left":0.08494016,"top":0.35514766,"width":0.013630319,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Try Business","depth":10,"bounds":{"left":0.08577128,"top":0.86751795,"width":0.011968086,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"What's New","depth":10,"bounds":{"left":0.08577128,"top":0.8954509,"width":0.011968086,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Help","depth":10,"bounds":{"left":0.08577128,"top":0.9233839,"width":0.011968086,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"lukas.kovalik@jiminny.com","depth":10,"bounds":{"left":0.08577128,"top":0.9584996,"width":0.011968086,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Issues","depth":13,"bounds":{"left":0.04305186,"top":0.06304868,"width":0.014461436,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":13,"bounds":{"left":0.088597074,"top":0.057861134,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Feed","depth":15,"bounds":{"left":0.039727394,"top":0.0933759,"width":0.058843084,"height":0.028332002},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed","depth":17,"bounds":{"left":0.043716755,"top":0.101356745,"width":0.010638298,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Errors & Outages","depth":15,"bounds":{"left":0.039727394,"top":0.13607343,"width":0.058843084,"height":0.028332002},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Errors & Outages","depth":17,"bounds":{"left":0.043716755,"top":0.14405426,"width":0.03673537,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Breached Metrics","depth":15,"bounds":{"left":0.039727394,"top":0.16440542,"width":0.058843084,"height":0.028731046},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Breached Metrics","depth":17,"bounds":{"left":0.043716755,"top":0.17278531,"width":0.037898935,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Warnings","depth":15,"bounds":{"left":0.039727394,"top":0.19313647,"width":0.058843084,"height":0.028332002},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Warnings","depth":17,"bounds":{"left":0.043716755,"top":0.20111732,"width":0.019946808,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"User Feedback","depth":15,"bounds":{"left":0.039727394,"top":0.22146848,"width":0.058843084,"height":0.028332002},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"User Feedback","depth":17,"bounds":{"left":0.043716755,"top":0.22944932,"width":0.032081116,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"All Views","depth":15,"bounds":{"left":0.039727394,"top":0.264166,"width":0.058843084,"height":0.028332002},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All Views","depth":17,"bounds":{"left":0.043716755,"top":0.27214685,"width":0.019281914,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Configure","depth":14,"bounds":{"left":0.043716755,"top":0.31324822,"width":0.021941489,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Alerts Moved","depth":15,"bounds":{"left":0.039727394,"top":0.3320032,"width":0.058843084,"height":0.029130088},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Alerts","depth":17,"bounds":{"left":0.043716755,"top":0.34038308,"width":0.012799202,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Moved","depth":17,"bounds":{"left":0.080784574,"top":0.3415802,"width":0.012466756,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Feed","depth":11,"bounds":{"left":0.11486037,"top":0.06464485,"width":0.86386305,"height":0.031923383},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Feed","depth":12,"bounds":{"left":0.11486037,"top":0.06943336,"width":0.019946808,"height":0.022745412},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pause real-time updates","depth":11,"bounds":{"left":0.9787234,"top":0.06783719,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"app","depth":11,"bounds":{"left":0.11486037,"top":0.11572227,"width":0.032912236,"height":0.028731046},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"app","depth":15,"bounds":{"left":0.12815824,"top":0.122505985,"width":0.00831117,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"production-eu, production","depth":11,"bounds":{"left":0.14744017,"top":0.11572227,"width":0.07646277,"height":0.028731046},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"production-eu, production","depth":15,"bounds":{"left":0.15275931,"top":0.122505985,"width":0.059840426,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"1H","depth":11,"bounds":{"left":0.22357048,"top":0.11572227,"width":0.022107713,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1H","depth":15,"bounds":{"left":0.22888963,"top":0.122505985,"width":0.005485372,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Add a search term","depth":14,"bounds":{"left":0.2599734,"top":0.12051077,"width":0.0029920214,"height":0.01915403},"help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit operator for filter: is","depth":16,"bounds":{"left":0.2632979,"top":0.121308856,"width":0.006150266,"height":0.017557861},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"is","depth":18,"bounds":{"left":0.2649601,"top":0.12410215,"width":0.0034906915,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit value for filter: is","depth":15,"bounds":{"left":0.26944813,"top":0.121308856,"width":0.026097074,"height":0.017557861},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"unresolved","depth":17,"bounds":{"left":0.27044547,"top":0.12410215,"width":0.024102394,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Remove filter: is","depth":15,"bounds":{"left":0.29554522,"top":0.121308856,"width":0.0063164895,"height":0.017557861},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Add a search term","depth":14,"bounds":{"left":0.30219415,"top":0.12051077,"width":0.60255986,"height":0.01915403},"help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"Add a search term","depth":14,"bounds":{"left":0.2599734,"top":0.12051077,"width":0.0029920214,"height":0.01915403},"help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit operator for filter: is","depth":15,"bounds":{"left":0.2632979,"top":0.121308856,"width":0.006150266,"height":0.017557861},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"is","depth":17,"bounds":{"left":0.2649601,"top":0.12410215,"width":0.0034906915,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Add a search term","depth":14,"bounds":{"left":0.30219415,"top":0.12051077,"width":0.60255986,"height":0.01915403},"help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit value for filter: is","depth":14,"bounds":{"left":0.26944813,"top":0.121308856,"width":0.026097074,"height":0.017557861},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"unresolved","depth":16,"bounds":{"left":0.27044547,"top":0.12410215,"width":0.024102394,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Remove filter: is","depth":14,"bounds":{"left":0.29554522,"top":0.121308856,"width":0.0063164895,"height":0.017557861},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Clear search query","depth":12,"bounds":{"left":0.90575135,"top":0.12051077,"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":"Last Seen","depth":11,"bounds":{"left":0.9197141,"top":0.11572227,"width":0.03873005,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Last Seen","depth":14,"bounds":{"left":0.9250333,"top":0.122505985,"width":0.022107713,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Save As","depth":10,"bounds":{"left":0.96110374,"top":0.11572227,"width":0.02825798,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Save As","depth":12,"bounds":{"left":0.96642286,"top":0.122505985,"width":0.01761968,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Select all","depth":11,"bounds":{"left":0.12051197,"top":0.1660016,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Issue","depth":12,"bounds":{"left":0.12849069,"top":0.16679968,"width":0.011136968,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Last Seen","depth":12,"bounds":{"left":0.76795214,"top":0.16679968,"width":0.020611702,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Age","depth":12,"bounds":{"left":0.80236036,"top":0.16679968,"width":0.008144947,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trend","depth":11,"bounds":{"left":0.8211436,"top":0.16679968,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"24h","depth":12,"bounds":{"left":0.85638297,"top":0.16679968,"width":0.010472074,"height":0.011572227},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"24h","depth":13,"bounds":{"left":0.8590425,"top":0.16679968,"width":0.0078125,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1h","depth":12,"bounds":{"left":0.866855,"top":0.16679968,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1h","depth":13,"bounds":{"left":0.86951464,"top":0.16679968,"width":0.004488032,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Events","depth":12,"bounds":{"left":0.8849734,"top":0.16679968,"width":0.014295213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Users","depth":12,"bounds":{"left":0.9125665,"top":0.16679968,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Priority","depth":12,"bounds":{"left":0.93517286,"top":0.16679968,"width":0.015625,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Assignee","depth":12,"bounds":{"left":0.9617686,"top":0.16679968,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Select Issue","depth":12,"bounds":{"left":0.12051197,"top":0.17996807,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Jiminny\\Http\\AccessTokenProvider\\TokenException","depth":12,"bounds":{"left":0.12849069,"top":0.19672786,"width":0.11851729,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Http\\AccessTokenProvider\\TokenException","depth":14,"bounds":{"left":0.12849069,"top":0.19792499,"width":0.11851729,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"bounds":{"left":0.12815824,"top":0.21308859,"width":0.02443484,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Token not found.","depth":14,"bounds":{"left":0.1314827,"top":0.21268955,"width":0.036236703,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"bounds":{"left":0.12849069,"top":0.23144454,"width":0.0039893617,"height":0.009577015},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1BQD","depth":13,"bounds":{"left":0.13347739,"top":0.23144454,"width":0.017785905,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Http/AccessTokenProvider/HubspotAccessTokenProvider.php in Jiminny\\Http\\AccessTokenProvider\\HubspotAccessTokenProvider::getAccessToken","depth":13,"bounds":{"left":0.15525267,"top":0.23104548,"width":0.28573802,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3min ago","depth":12,"bounds":{"left":0.7684508,"top":0.21388668,"width":0.020113032,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1yr","depth":12,"bounds":{"left":0.80418885,"top":0.21388668,"width":0.0063164895,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ongoing","depth":12,"bounds":{"left":0.8211436,"top":0.22905028,"width":0.015625,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":13,"bounds":{"left":0.89644283,"top":0.21308859,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"bounds":{"left":0.92170876,"top":0.21308859,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"bounds":{"left":0.93583775,"top":0.21029529,"width":0.015292553,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"bounds":{"left":0.94414896,"top":0.22067039,"width":0.008976064,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"bounds":{"left":0.9644282,"top":0.21029529,"width":0.013962766,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"bounds":{"left":0.12051197,"top":0.24541101,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Jiminny\\Exceptions\\JobTimeoutException","depth":12,"bounds":{"left":0.12849069,"top":0.2621708,"width":0.09690824,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\JobTimeoutException","depth":14,"bounds":{"left":0.12849069,"top":0.26336792,"width":0.09690824,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"bounds":{"left":0.12815824,"top":0.27853152,"width":0.02443484,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Job timed out Jiminny\\Jobs\\Mailbox\\SyncInbox","depth":14,"bounds":{"left":0.1314827,"top":0.27813247,"width":0.10538564,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"bounds":{"left":0.12849069,"top":0.29688746,"width":0.0039893617,"height":0.009577015},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1BZV","depth":13,"bounds":{"left":0.13347739,"top":0.29688746,"width":0.017287234,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Queue/Worker/Worker.php in Jiminny\\Queue\\Worker\\Worker::Jiminny\\Queue\\Worker\\{closure}","depth":13,"bounds":{"left":0.15475398,"top":0.29648843,"width":0.18517287,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4min ago","depth":12,"bounds":{"left":0.7684508,"top":0.2793296,"width":0.020113032,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1yr","depth":12,"bounds":{"left":0.80418885,"top":0.2793296,"width":0.0063164895,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ongoing","depth":12,"bounds":{"left":0.8211436,"top":0.29449323,"width":0.015625,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":13,"bounds":{"left":0.89644283,"top":0.27853152,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"bounds":{"left":0.92170876,"top":0.27853152,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"bounds":{"left":0.93583775,"top":0.27573824,"width":0.015292553,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"bounds":{"left":0.94414896,"top":0.28611332,"width":0.008976064,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"bounds":{"left":0.9637633,"top":0.27573824,"width":0.01462766,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"bounds":{"left":0.12051197,"top":0.31085396,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError","depth":12,"bounds":{"left":0.12849069,"top":0.32761374,"width":0.13796543,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError","depth":14,"bounds":{"left":0.12849069,"top":0.32881084,"width":0.13796543,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"bounds":{"left":0.12815824,"top":0.34397447,"width":0.02443484,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218","depth":14,"bounds":{"left":0.1314827,"top":0.34357542,"width":0.453125,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"bounds":{"left":0.12849069,"top":0.3623304,"width":0.0039893617,"height":0.009577015},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1DTF","depth":13,"bounds":{"left":0.13347739,"top":0.3623304,"width":0.016954787,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Jobs/AutomatedReports/SendReportJob.php in Jiminny\\Jobs\\AutomatedReports\\SendReportJob::handle","depth":13,"bounds":{"left":0.15442154,"top":0.36193135,"width":0.21027261,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Quick Fix","depth":12,"bounds":{"left":0.36668882,"top":0.3623304,"width":0.024102394,"height":0.009577015},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Quick Fix","depth":14,"bounds":{"left":0.37400267,"top":0.36193135,"width":0.016788565,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14min ago","depth":12,"bounds":{"left":0.7664561,"top":0.34477255,"width":0.022107713,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7mo","depth":12,"bounds":{"left":0.80136305,"top":0.34477255,"width":0.009142287,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ongoing","depth":12,"bounds":{"left":0.8211436,"top":0.35993615,"width":0.015625,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":13,"bounds":{"left":0.89644283,"top":0.34397447,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"bounds":{"left":0.92170876,"top":0.34397447,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"bounds":{"left":0.93583775,"top":0.34118116,"width":0.015292553,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"bounds":{"left":0.94414896,"top":0.35155627,"width":0.008976064,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"bounds":{"left":0.9644282,"top":0.34118116,"width":0.013962766,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"bounds":{"left":0.12051197,"top":0.37629688,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Jiminny\\Exceptions\\JobTimeoutException","depth":12,"bounds":{"left":0.12849069,"top":0.39305666,"width":0.09690824,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\JobTimeoutException","depth":14,"bounds":{"left":0.12849069,"top":0.3942538,"width":0.09690824,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"bounds":{"left":0.12815824,"top":0.4094174,"width":0.02443484,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Job timed out Jiminny\\Jobs\\Activity\\HardDeleteActivities","depth":14,"bounds":{"left":0.1314827,"top":0.40901837,"width":0.12749335,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"bounds":{"left":0.12849069,"top":0.42777336,"width":0.0039893617,"height":0.009577015},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1EH6","depth":13,"bounds":{"left":0.13347739,"top":0.42777336,"width":0.017287234,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Queue/Worker/Worker.php in Jiminny\\Queue\\Worker\\Worker::Jiminny\\Queue\\Worker\\{closure}","depth":13,"bounds":{"left":0.15475398,"top":0.4273743,"width":0.18517287,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"24min ago","depth":12,"bounds":{"left":0.765625,"top":0.4102155,"width":0.022938829,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5mo","depth":12,"bounds":{"left":0.80086434,"top":0.4102155,"width":0.009640957,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ongoing","depth":12,"bounds":{"left":0.8211436,"top":0.4253791,"width":0.015625,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":13,"bounds":{"left":0.89644283,"top":0.4094174,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"bounds":{"left":0.92170876,"top":0.4094174,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"bounds":{"left":0.93583775,"top":0.4066241,"width":0.015292553,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"bounds":{"left":0.94414896,"top":0.4169992,"width":0.008976064,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"bounds":{"left":0.9637633,"top":0.4066241,"width":0.01462766,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"bounds":{"left":0.12051197,"top":0.44173983,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Symfony\\Component\\ErrorHandler\\Error\\FatalError","depth":12,"bounds":{"left":0.12849069,"top":0.4584996,"width":0.118351065,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\ErrorHandler\\Error\\FatalError","depth":14,"bounds":{"left":0.12849069,"top":0.45969674,"width":0.118351065,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"bounds":{"left":0.12815824,"top":0.47486034,"width":0.02443484,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Allowed memory size of 268435456 bytes exhausted (tried to allocate 10485760 bytes)","depth":14,"bounds":{"left":0.1314827,"top":0.4744613,"width":0.1888298,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"bounds":{"left":0.12849069,"top":0.49321628,"width":0.0039893617,"height":0.009577015},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1FNH","depth":13,"bounds":{"left":0.13347739,"top":0.49321628,"width":0.01761968,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Repositories/Crm/CrmEntityRepository.php in ?","depth":13,"bounds":{"left":0.15508644,"top":0.49281725,"width":0.09940159,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"29min ago","depth":12,"bounds":{"left":0.76579124,"top":0.47565842,"width":0.022772606,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5d","depth":12,"bounds":{"left":0.80502,"top":0.47565842,"width":0.005485372,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"New","depth":12,"bounds":{"left":0.8211436,"top":0.49082202,"width":0.008144947,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":13,"bounds":{"left":0.89644283,"top":0.47486034,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"bounds":{"left":0.92170876,"top":0.47486034,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"bounds":{"left":0.93583775,"top":0.47206703,"width":0.015292553,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"bounds":{"left":0.94414896,"top":0.48244214,"width":0.008976064,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"bounds":{"left":0.9637633,"top":0.47206703,"width":0.01462766,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"bounds":{"left":0.12051197,"top":0.53910613,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Jiminny\\Exceptions\\SocialAccountTokenInvalidException","depth":12,"bounds":{"left":0.12849069,"top":0.52394253,"width":0.13048537,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\SocialAccountTokenInvalidException","depth":14,"bounds":{"left":0.12849069,"top":0.5251397,"width":0.13048537,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"bounds":{"left":0.12815824,"top":0.5403033,"width":0.02443484,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.","depth":14,"bounds":{"left":0.1314827,"top":0.53990424,"width":0.19365026,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"bounds":{"left":0.12849069,"top":0.5586592,"width":0.0039893617,"height":0.009577015},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1ET5","depth":13,"bounds":{"left":0.13347739,"top":0.5586592,"width":0.016788565,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Services/Crm/BaseService.php in Jiminny\\Services\\Crm\\BaseService::validateUserAccountExists","depth":13,"bounds":{"left":0.15425532,"top":0.5582602,"width":0.19331782,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"40min ago","depth":12,"bounds":{"left":0.76545876,"top":0.54110134,"width":0.023105053,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3mo","depth":12,"bounds":{"left":0.80086434,"top":0.54110134,"width":0.009640957,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ongoing","depth":12,"bounds":{"left":0.8211436,"top":0.55626494,"width":0.015625,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":13,"bounds":{"left":0.89644283,"top":0.5403033,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"bounds":{"left":0.92170876,"top":0.5403033,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"bounds":{"left":0.93583775,"top":0.53751,"width":0.015292553,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"bounds":{"left":0.94414896,"top":0.54788506,"width":0.008976064,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"bounds":{"left":0.9637633,"top":0.53751,"width":0.01462766,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"bounds":{"left":0.12051197,"top":0.5726257,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Jiminny\\Exceptions\\JobTimeoutException","depth":12,"bounds":{"left":0.12849069,"top":0.58938545,"width":0.09690824,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Exceptions\\JobTimeoutException","depth":14,"bounds":{"left":0.12849069,"top":0.5905826,"width":0.09690824,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"bounds":{"left":0.12815824,"top":0.6057462,"width":0.02443484,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Job timed out Jiminny\\Jobs\\Mailbox\\SyncInbox","depth":14,"bounds":{"left":0.1314827,"top":0.60534716,"width":0.10538564,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"bounds":{"left":0.12849069,"top":0.6241022,"width":0.0039893617,"height":0.009577015},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1DKY","depth":13,"bounds":{"left":0.13347739,"top":0.6241022,"width":0.017453458,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Queue/Worker/Worker.php in Jiminny\\Queue\\Worker\\Worker::Jiminny\\Queue\\Worker\\{closure}","depth":13,"bounds":{"left":0.1549202,"top":0.6237031,"width":0.18500665,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"43min ago","depth":12,"bounds":{"left":0.765625,"top":0.6065443,"width":0.022938829,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8mo","depth":12,"bounds":{"left":0.80069816,"top":0.6065443,"width":0.009807181,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ongoing","depth":12,"bounds":{"left":0.8211436,"top":0.6217079,"width":0.015625,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":13,"bounds":{"left":0.89644283,"top":0.6057462,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"bounds":{"left":0.92170876,"top":0.6057462,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"bounds":{"left":0.93583775,"top":0.6029529,"width":0.015292553,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"bounds":{"left":0.94414896,"top":0.61332804,"width":0.008976064,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"bounds":{"left":0.9637633,"top":0.6029529,"width":0.01462766,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"bounds":{"left":0.12051197,"top":0.6380686,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException","depth":12,"bounds":{"left":0.12849069,"top":0.6548284,"width":0.1419548,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException","depth":14,"bounds":{"left":0.12849069,"top":0.6560255,"width":0.1419548,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"bounds":{"left":0.12815824,"top":0.6711891,"width":0.02443484,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unexpected service error.Server error: `POST https://prophet.jiminny.com/crm/deal/extract-field-values` resulted in a `504 Gateway Time-out` response: <html>\r <head><title>504 Gateway Time-out</title></head>\r <body>\r <center><h1>504 Gateway Time-out</h1></center>\r </body (truncated...)","depth":14,"bounds":{"left":0.1314827,"top":0.6707901,"width":0.63248,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"bounds":{"left":0.12849069,"top":0.6895451,"width":0.0039893617,"height":0.009577015},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1DZ3","depth":13,"bounds":{"left":0.13347739,"top":0.6895451,"width":0.017121011,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Component/ProphetAi/ProphetClient.php in Jiminny\\Component\\ProphetAi\\ProphetClient::sendRequest","depth":13,"bounds":{"left":0.15458776,"top":0.68914604,"width":0.20744681,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"44min ago","depth":12,"bounds":{"left":0.76545876,"top":0.67198724,"width":0.023105053,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6mo","depth":12,"bounds":{"left":0.80086434,"top":0.67198724,"width":0.009640957,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ongoing","depth":12,"bounds":{"left":0.8211436,"top":0.68715084,"width":0.015625,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":13,"bounds":{"left":0.89644283,"top":0.6711891,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"bounds":{"left":0.92170876,"top":0.6711891,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"bounds":{"left":0.93583775,"top":0.6683959,"width":0.015292553,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"High","depth":16,"bounds":{"left":0.94414896,"top":0.67877096,"width":0.008976064,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue assignee","depth":12,"bounds":{"left":0.9637633,"top":0.6683959,"width":0.01462766,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Select Issue","depth":12,"bounds":{"left":0.12051197,"top":0.7035116,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Jiminny\\Component\\FFMpeg\\Exceptions\\FFMpegException","depth":12,"bounds":{"left":0.12849069,"top":0.7206704,"width":0.13630319,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny\\Component\\FFMpeg\\Exceptions\\FFMpegException","depth":14,"bounds":{"left":0.12849069,"top":0.7218675,"width":0.13630319,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level: Error","depth":15,"bounds":{"left":0.12815824,"top":0.7370311,"width":0.02443484,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FFMpeg command failed with exit code 15","depth":14,"bounds":{"left":0.1314827,"top":0.7366321,"width":0.09075798,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"bounds":{"left":0.12849069,"top":0.75538707,"width":0.0039893617,"height":0.009577015},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1D5W","depth":13,"bounds":{"left":0.13347739,"top":0.75538707,"width":0.017952127,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/app/Component/FFMpeg/Services/GetSpeechIntervalsService.php in Jiminny\\Component\\FFMpeg\\Services\\GetSpeechIntervalsService::execute","depth":13,"bounds":{"left":0.15541889,"top":0.754988,"width":0.27443483,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"52min ago","depth":12,"bounds":{"left":0.76579124,"top":0.7378292,"width":0.022772606,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10mo","depth":12,"bounds":{"left":0.79870343,"top":0.7378292,"width":0.011801862,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ongoing","depth":12,"bounds":{"left":0.8211436,"top":0.7529928,"width":0.015625,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":13,"bounds":{"left":0.89644283,"top":0.7370311,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":13,"bounds":{"left":0.92170876,"top":0.7370311,"width":0.0028257978,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Modify issue priority","depth":11,"bounds":{"left":0.93583775,"top":0.73423785,"width":0.015292553,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-7433763389279383724
|
2093956743812636159
|
app_switch
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
🚀 Q2 Kick-Off - Local in 🇬🇧 & 🇧🇬 at our 🏢/🏡 - Apr 2 - [EMAIL] - Jiminny Mail
🚀 Q2 Kick-Off - Local in 🇬🇧 & 🇧🇬 at our 🏢/🏡 - Apr 2 - [EMAIL] - Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Close tab
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to main content
Skip to main content
Toggle organization menu
Issues
Issues
Explore
Explore
Dashboards
Dashboards
Monitors
Monitors
Settings
Settings
Try Business
What's New
Help
[EMAIL]
Issues
Expand
Feed
Feed
Errors & Outages
Errors & Outages
Breached Metrics
Breached Metrics
Warnings
Warnings
User Feedback
User Feedback
All Views
All Views
Configure
Alerts Moved
Alerts
Moved
Feed
Feed
Pause real-time updates
app
app
production-eu, production
production-eu, production
1H
1H
Add a search term
Edit operator for filter: is
is
Edit value for filter: is
unresolved
Remove filter: is
Add a search term
Add a search term
Edit operator for filter: is
is
Add a search term
Edit value for filter: is
unresolved
Remove filter: is
Clear search query
Last Seen
Last Seen
Save As
Save As
Select all
Issue
Last Seen
Age
Trend
24h
24h
1h
1h
Events
Users
Priority
Assignee
Select Issue
Jiminny\Http\AccessTokenProvider\TokenException
Jiminny\Http\AccessTokenProvider\TokenException
Level: Error
Token not found.
View Project Details
APP-1BQD
/app/Http/AccessTokenProvider/HubspotAccessTokenProvider.php in Jiminny\Http\AccessTokenProvider\HubspotAccessTokenProvider::getAccessToken
3min ago
1yr
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\JobTimeoutException
Jiminny\Exceptions\JobTimeoutException
Level: Error
Job timed out Jiminny\Jobs\Mailbox\SyncInbox
View Project Details
APP-1BZV
/app/Queue/Worker/Worker.php in Jiminny\Queue\Worker\Worker::Jiminny\Queue\Worker\{closure}
4min ago
1yr
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Symfony\Component\Debug\Exception\FatalThrowableError
Symfony\Component\Debug\Exception\FatalThrowableError
Level: Error
League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218
View Project Details
APP-1DTF
/app/Jobs/AutomatedReports/SendReportJob.php in Jiminny\Jobs\AutomatedReports\SendReportJob::handle
Quick Fix
Quick Fix
14min ago
7mo
Ongoing
2
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\JobTimeoutException
Jiminny\Exceptions\JobTimeoutException
Level: Error
Job timed out Jiminny\Jobs\Activity\HardDeleteActivities
View Project Details
APP-1EH6
/app/Queue/Worker/Worker.php in Jiminny\Queue\Worker\Worker::Jiminny\Queue\Worker\{closure}
24min ago
5mo
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Symfony\Component\ErrorHandler\Error\FatalError
Symfony\Component\ErrorHandler\Error\FatalError
Level: Error
Allowed memory size of 268435456 bytes exhausted (tried to allocate 10485760 bytes)
View Project Details
APP-1FNH
/app/Repositories/Crm/CrmEntityRepository.php in ?
29min ago
5d
New
3
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\SocialAccountTokenInvalidException
Jiminny\Exceptions\SocialAccountTokenInvalidException
Level: Error
Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.
View Project Details
APP-1ET5
/app/Services/Crm/BaseService.php in Jiminny\Services\Crm\BaseService::validateUserAccountExists
40min ago
3mo
Ongoing
6
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Exceptions\JobTimeoutException
Jiminny\Exceptions\JobTimeoutException
Level: Error
Job timed out Jiminny\Jobs\Mailbox\SyncInbox
View Project Details
APP-1DKY
/app/Queue/Worker/Worker.php in Jiminny\Queue\Worker\Worker::Jiminny\Queue\Worker\{closure}
43min ago
8mo
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Component\ProphetAi\Exceptions\ProphetException
Jiminny\Component\ProphetAi\Exceptions\ProphetException
Level: Error
Unexpected service error.Server error: `POST https://prophet.jiminny.com/crm/deal/extract-field-values` resulted in a `504 Gateway Time-out` response: <html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
</body (truncated...)
View Project Details
APP-1DZ3
/app/Component/ProphetAi/ProphetClient.php in Jiminny\Component\ProphetAi\ProphetClient::sendRequest
44min ago
6mo
Ongoing
1
0
Modify issue priority
High
Modify issue assignee
Select Issue
Jiminny\Component\FFMpeg\Exceptions\FFMpegException
Jiminny\Component\FFMpeg\Exceptions\FFMpegException
Level: Error
FFMpeg command failed with exit code 15
View Project Details
APP-1D5W
/app/Component/FFMpeg/Services/GetSpeechIntervalsService.php in Jiminny\Component\FFMpeg\Services\GetSpeechIntervalsService::execute
52min ago
10mo
Ongoing
3
0
Modify issue priority...
|
NULL
|
|
60746
|
1310
|
4
|
2026-04-21T06:16:07.180522+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752167180_m1.jpg...
|
Firefox
|
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SAT Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com — Personal...
|
1
|
www.pazaruvaj.com/p/western-digital-red-plus-3-5-6 www.pazaruvaj.com/p/western-digital-red-plus-3-5-6tb-5400rpm-256mb-sata3-wd60efpx-pP883930389/#overviews/...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Статус на поръчка в stantek.com - DXP4800PLUS-B5F8
Статус на поръчка в stantek.com - [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
Close tab
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Screenpipe — Archive
Screenpipe — Archive
[IP_ADDRESS]:8768/
[IP_ADDRESS]:8768/
Today's Deals
Today's Deals
Shameless • HBO Max
Shameless • HBO Max
install screenpipe - screenpipe docs
install screenpipe - screenpipe docs
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Pazaruvaj.com - Надежден помощник за покупки, сравнение на цени и продуктови оферти
Какво търсите?
Изтрий
Търсене
Търсене
Намаления
Намаления
Електроника
Електроника
Информатика
Информатика
Здраве и красота
Здраве и красота
Битова техника
Битова техника
Дом и градина
Дом и градина
Още (15)
Още (15)
Pazaruvaj.com
Pazaruvaj.com
Информатика
Информатика
Хардуер
Хардуер
Вътрешен хард диск
Вътрешен хард диск
Вътрешен хард диск Western Digital
Вътрешен хард диск Western Digital
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
previous slide / item
Image 1 of Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Image 1 of Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
next slide / item
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
100
%
5 мнения
5
мнения
Производител: Western Digital Модел: Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) Описание: Високопроизводител ни външни hdd дискове, създадени за надеждност и енергийна...
Пълно описание
Варианти на продукта:
Варианти на продукта
:
2000 GB
2000 GB
3000 GB
3000 GB
4000 GB
4000 GB
6000 GB
8000 GB
8000 GB
289,99 €
|
567,17 лв.
*
(2,59 €)
Доставка
5,07 лв.
,
В наличност
Препоръчана оферта
Plasico IT Superstore
към магазина
към магазина
Оферти с цени
Оферти с цени
Оферти с цени
Описание
Описание
Описание
Мнения (5)
Мнения (5)
Мнения
(
5
)
Препоръчани оферти
Препоръчани оферти
Най-евтини
Най-евтини
Всички филтри
Всички филтри
Препоръчани оферти (3)
Препоръчани оферти
(
3
)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
към магазина Plasico IT Superstore
97%
(
9506
×)
В наличност
В наличност
1 отличие
1
отличие
Red Plus 6TB NAS, 3.5 , 256MB, 5400RPM | WD60EFPX (WD60EFPX)
към магазина Plasico IT Superstore
289,99 €
567,17 лв.
*
Доставка от 2,59 € (5,07 лв.)
Доставка
от
2,59 € (5,07 лв.)
към магазина Plasico IT Superstore
към магазина
към магазина PIC.bg - купи лаптоп изгодно
99%
(
8173
×)
В наличност
В наличност
1 отличие
1
отличие
WD Red Plus 6TB SATA 6Gb (WD60EFPX)
към магазина PIC.bg - купи лаптоп изгодно
299,00 €
584,79 лв.
*
Безплатна доставка
към магазина PIC.bg - купи лаптоп изгодно
към магазина
към магазина МегаМаг България
98%
(
4806
×)
В наличност
В наличност
1 отличие
1
отличие
Твърд диск WD Red Plus 6TB NAS HDD 3.5" SATA 6Gb/s 256MB (WD60EFPX)
към магазина МегаМаг България
292,04 €
571,18 лв.
*
към магазина МегаМаг България
към магазина
Най-евтини оферти (21)
Най-евтини оферти
(
21
)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
към магазина Стантек...
|
[{"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":"Статус на поръчка в stantek.com - 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":true},{"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":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"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":"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":"100.73.206.126:8768/","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"100.73.206.126:8768/","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":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","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: 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":"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.48576388,"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.5086806,"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.53194445,"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.5552083,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.5784722,"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":"Pazaruvaj.com - Надежден помощник за покупки, сравнение на цени и продуктови оферти","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextField","text":"Какво търсите?","depth":10,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Изтрий","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Търсене","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Търсене","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Намаления","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Намаления","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Електроника","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Електроника","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Информатика","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Информатика","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Здраве и красота","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Здраве и красота","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Битова техника","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Битова техника","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Дом и градина","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Дом и градина","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Още (15)","depth":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Още (15)","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pazaruvaj.com","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pazaruvaj.com","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Информатика","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Информатика","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Хардуер","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Хардуер","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Вътрешен хард диск","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Вътрешен хард диск","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Вътрешен хард диск Western Digital","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Вътрешен хард диск Western Digital","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"previous slide / item","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Image 1 of Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Image 1 of Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"next slide / item","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":8,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"%","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"5 мнения","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"5","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"мнения","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Производител: Western Digital Модел: Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) Описание: Високопроизводител ни външни hdd дискове, създадени за надеждност и енергийна...","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Пълно описание","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Варианти на продукта:","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Варианти на продукта","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"2000 GB","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2000 GB","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"3000 GB","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3000 GB","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4000 GB","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4000 GB","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6000 GB","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"8000 GB","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8000 GB","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"289,99 €","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"|","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"567,17 лв.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(2,59 €)","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Доставка","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5,07 лв.","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"В наличност","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Препоръчана оферта","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Plasico IT Superstore","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина","depth":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"към магазина","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Оферти с цени","depth":12,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Оферти с цени","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Оферти с цени","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Описание","depth":12,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Описание","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Описание","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Мнения (5)","depth":12,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Мнения (5)","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"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":"5","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Препоръчани оферти","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Препоръчани оферти","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Най-евтини","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Най-евтини","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Всички филтри","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Всички филтри","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Препоръчани оферти (3)","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Препоръчани оферти","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина Plasico IT Superstore","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"97%","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9506","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×)","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"В наличност","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"В наличност","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"1 отличие","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"отличие","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Red Plus 6TB NAS, 3.5 , 256MB, 5400RPM | WD60EFPX (WD60EFPX)","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина Plasico IT Superstore","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"289,99 €","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"567,17 лв.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Доставка от 2,59 € (5,07 лв.)","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Доставка","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"от","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2,59 € (5,07 лв.)","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина Plasico IT Superstore","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"към магазина","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина PIC.bg - купи лаптоп изгодно","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"99%","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8173","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×)","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"В наличност","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"В наличност","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"1 отличие","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"отличие","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"WD Red Plus 6TB SATA 6Gb (WD60EFPX)","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина PIC.bg - купи лаптоп изгодно","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"299,00 €","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"584,79 лв.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Безплатна доставка","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"към магазина PIC.bg - купи лаптоп изгодно","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"към магазина","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина МегаМаг България","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"98%","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4806","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×)","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"В наличност","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"В наличност","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"1 отличие","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"отличие","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Твърд диск WD Red Plus 6TB NAS HDD 3.5\" SATA 6Gb/s 256MB (WD60EFPX)","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина МегаМаг България","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"292,04 €","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"571,18 лв.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина МегаМаг България","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"към магазина","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Най-евтини оферти (21)","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Най-евтини оферти","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина Стантек","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
6114442194858890057
|
1793565157338169553
|
app_switch
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Статус на поръчка в stantek.com - DXP4800PLUS-B5F8
Статус на поръчка в stantek.com - [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
Close tab
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Screenpipe — Archive
Screenpipe — Archive
[IP_ADDRESS]:8768/
[IP_ADDRESS]:8768/
Today's Deals
Today's Deals
Shameless • HBO Max
Shameless • HBO Max
install screenpipe - screenpipe docs
install screenpipe - screenpipe docs
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Pazaruvaj.com - Надежден помощник за покупки, сравнение на цени и продуктови оферти
Какво търсите?
Изтрий
Търсене
Търсене
Намаления
Намаления
Електроника
Електроника
Информатика
Информатика
Здраве и красота
Здраве и красота
Битова техника
Битова техника
Дом и градина
Дом и градина
Още (15)
Още (15)
Pazaruvaj.com
Pazaruvaj.com
Информатика
Информатика
Хардуер
Хардуер
Вътрешен хард диск
Вътрешен хард диск
Вътрешен хард диск Western Digital
Вътрешен хард диск Western Digital
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
previous slide / item
Image 1 of Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Image 1 of Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
next slide / item
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
100
%
5 мнения
5
мнения
Производител: Western Digital Модел: Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) Описание: Високопроизводител ни външни hdd дискове, създадени за надеждност и енергийна...
Пълно описание
Варианти на продукта:
Варианти на продукта
:
2000 GB
2000 GB
3000 GB
3000 GB
4000 GB
4000 GB
6000 GB
8000 GB
8000 GB
289,99 €
|
567,17 лв.
*
(2,59 €)
Доставка
5,07 лв.
,
В наличност
Препоръчана оферта
Plasico IT Superstore
към магазина
към магазина
Оферти с цени
Оферти с цени
Оферти с цени
Описание
Описание
Описание
Мнения (5)
Мнения (5)
Мнения
(
5
)
Препоръчани оферти
Препоръчани оферти
Най-евтини
Най-евтини
Всички филтри
Всички филтри
Препоръчани оферти (3)
Препоръчани оферти
(
3
)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
към магазина Plasico IT Superstore
97%
(
9506
×)
В наличност
В наличност
1 отличие
1
отличие
Red Plus 6TB NAS, 3.5 , 256MB, 5400RPM | WD60EFPX (WD60EFPX)
към магазина Plasico IT Superstore
289,99 €
567,17 лв.
*
Доставка от 2,59 € (5,07 лв.)
Доставка
от
2,59 € (5,07 лв.)
към магазина Plasico IT Superstore
към магазина
към магазина PIC.bg - купи лаптоп изгодно
99%
(
8173
×)
В наличност
В наличност
1 отличие
1
отличие
WD Red Plus 6TB SATA 6Gb (WD60EFPX)
към магазина PIC.bg - купи лаптоп изгодно
299,00 €
584,79 лв.
*
Безплатна доставка
към магазина PIC.bg - купи лаптоп изгодно
към магазина
към магазина МегаМаг България
98%
(
4806
×)
В наличност
В наличност
1 отличие
1
отличие
Твърд диск WD Red Plus 6TB NAS HDD 3.5" SATA 6Gb/s 256MB (WD60EFPX)
към магазина МегаМаг България
292,04 €
571,18 лв.
*
към магазина МегаМаг България
към магазина
Най-евтини оферти (21)
Най-евтини оферти
(
21
)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
към магазина Стантек...
|
NULL
|
|
60747
|
1311
|
5
|
2026-04-21T06:16:07.180514+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752167180_m2.jpg...
|
Firefox
|
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SAT Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com — Personal...
|
1
|
www.pazaruvaj.com/p/western-digital-red-plus-3-5-6 www.pazaruvaj.com/p/western-digital-red-plus-3-5-6tb-5400rpm-256mb-sata3-wd60efpx-pP883930389/#overviews/...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Статус на поръчка в stantek.com - DXP4800PLUS-B5F8
Статус на поръчка в stantek.com - [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
Close tab
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Screenpipe — Archive
Screenpipe — Archive
[IP_ADDRESS]:8768/
[IP_ADDRESS]:8768/
Today's Deals
Today's Deals
Shameless • HBO Max
Shameless • HBO Max
install screenpipe - screenpipe docs
install screenpipe - screenpipe docs
Close tab
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Pazaruvaj.com - Надежден помощник за покупки, сравнение на цени и продуктови оферти
Какво търсите?
Изтрий
Търсене
Търсене
Намаления
Намаления
Електроника
Електроника
Информатика
Информатика
Здраве и красота
Здраве и красота
Битова техника
Битова техника
Дом и градина
Дом и градина
Още (15)
Още (15)
Pazaruvaj.com
Pazaruvaj.com
Информатика
Информатика
Хардуер
Хардуер
Вътрешен хард диск
Вътрешен хард диск
Вътрешен хард диск Western Digital
Вътрешен хард диск Western Digital
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
previous slide / item
Image 1 of Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Image 1 of Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
next slide / item
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
100
%
5 мнения
5
мнения
Производител: Western Digital Модел: Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) Описание: Високопроизводител ни външни hdd дискове, създадени за надеждност и енергийна...
Пълно описание
Варианти на продукта:
Варианти на продукта
:
2000 GB
2000 GB
3000 GB
3000 GB
4000 GB
4000 GB
6000 GB
8000 GB
8000 GB
289,99 €
|
567,17 лв.
*
(2,59 €)
Доставка
5,07 лв.
,
В наличност
Препоръчана оферта
Plasico IT Superstore
към магазина
към магазина
Оферти с цени
Оферти с цени
Оферти с цени
Описание
Описание
Описание
Мнения (5)
Мнения (5)
Мнения
(
5
)
Препоръчани оферти
Препоръчани оферти
Най-евтини
Най-евтини
Всички филтри
Всички филтри
Препоръчани оферти (3)
Препоръчани оферти
(
3
)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
към магазина Plasico IT Superstore
97%
(
9506
×)
В наличност
В наличност
1 отличие
1
отличие
Red Plus 6TB NAS, 3.5 , 256MB, 5400RPM | WD60EFPX (WD60EFPX)
към магазина Plasico IT Superstore
289,99 €
567,17 лв.
*
Доставка от 2,59 € (5,07 лв.)
Доставка
от
2,59 € (5,07 лв.)
към магазина Plasico IT Superstore
към магазина
към магазина PIC.bg - купи лаптоп изгодно
99%
(
8173
×)
В наличност
В наличност
1 отличие
1
отличие
WD Red Plus 6TB SATA 6Gb (WD60EFPX)
към магазина PIC.bg - купи лаптоп изгодно
299,00 €
584,79 лв.
*
Безплатна доставка
към магазина PIC.bg - купи лаптоп изгодно
към магазина
към магазина МегаМаг България
98%
(
4806
×)
В наличност
В наличност
1 отличие
1
отличие
Твърд диск WD Red Plus 6TB NAS HDD 3.5" SATA 6Gb/s 256MB (WD60EFPX)
към магазина МегаМаг България
292,04 €
571,18 лв.
*
към магазина МегаМаг България
към магазина
Най-евтини оферти (21)
Най-евтини оферти
(
21
)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
към магазина Стантек
17
мнения
В наличност
В наличност
HDD NAS WD Red Plus (3.5'', 6TB, 256MB, 5400 RPM, SATA 6 Gb/s) - WD60EFPX (WD60EFPX)
към магазина Стантек
249,00 €
487,00 лв.
*
Безплатна доставка
към магазина Стантек
към магазина
към магазина Senetic
73
мнения
Информация в магазина
Информация в магазина
Red Plus 6TB WD60EFPX (WD60EFPX)
към магазина Senetic
250,14 €
489,23 лв.
*
Доставка от 9,82 € (19,21 лв.)
Доставка
от
9,82 € (19,21 лв.)
към магазина Senetic
към магазина
към магазина xtreme.bg
99%
(
5953
×)
В наличност
В наличност
1 отличие
1
отличие
Твърд диск, Western Digital Red 6TB Plus ( 3.5", 256MB, 5400 RPM, SATA 6Gb/s ) (WD60EFPX)
към магазина xtreme.bg
272,82 €
533,59 лв.
*
към магазина xtreme.bg
към магазина
към магазина SIGMATRONIC
3
мнения
В наличност
В наличност
HDD NAS WD Red Plus (3.5 (WD60EFPX)
към магазина SIGMATRONIC
272,82 €
533,59 лв.
*
към магазина SIGMATRONIC
към магазина
към магазина Optimal Computers
67
мнения
В наличност
В наличност
HDD NAS WD Red Plus (3.5'', 6TB, 256MB, 5400 RPM, SATA 6 Gb/ (WD60EFPX)
към магазина Optimal Computers
277,09 €
541,94 лв.
*...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.50182843,"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":"Статус на поръчка в stantek.com - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.5568484,"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.5,"top":0.09497207,"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":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":5,"bounds":{"left":0.51329786,"top":0.10614525,"width":0.26263297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.60139626,"top":0.10215483,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.5,"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":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.51329786,"top":0.13886672,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.5,"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":"Screenpipe — Archive","depth":5,"bounds":{"left":0.51329786,"top":0.17158818,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"100.73.206.126:8768/","depth":4,"bounds":{"left":0.5,"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":"100.73.206.126:8768/","depth":5,"bounds":{"left":0.51329786,"top":0.20430966,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Today's Deals","depth":4,"bounds":{"left":0.5,"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":"Today's Deals","depth":5,"bounds":{"left":0.51329786,"top":0.23703113,"width":0.024102394,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"bounds":{"left":0.5,"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":"Shameless • HBO Max","depth":5,"bounds":{"left":0.51329786,"top":0.2697526,"width":0.03873005,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"install screenpipe - screenpipe docs","depth":4,"bounds":{"left":0.5,"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":"install screenpipe - screenpipe docs","depth":5,"bounds":{"left":0.51329786,"top":0.30247405,"width":0.0631649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.60139626,"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":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.5,"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":"New Tab","depth":5,"bounds":{"left":0.51329786,"top":0.33519554,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.5,"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":"Screenpipe — Archive","depth":5,"bounds":{"left":0.51329786,"top":0.367917,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.5,"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":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.51329786,"top":0.40063846,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Platform","depth":4,"bounds":{"left":0.5,"top":0.42218676,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Platform","depth":5,"bounds":{"left":0.51329786,"top":0.43335995,"width":0.027925532,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.5028258,"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.5028258,"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.51379657,"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.5249335,"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.53607047,"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.5472075,"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":"Pazaruvaj.com - Надежден помощник за покупки, сравнение на цени и продуктови оферти","depth":9,"bounds":{"left":0.6253325,"top":0.0726257,"width":0.04488032,"height":0.021548284},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextField","text":"Какво търсите?","depth":10,"bounds":{"left":0.68517286,"top":0.06703911,"width":0.12599733,"height":0.032721467},"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Изтрий","depth":10,"bounds":{"left":0.79870343,"top":0.06703911,"width":0.012466756,"height":0.032721467},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Търсене","depth":10,"bounds":{"left":0.8111702,"top":0.06703911,"width":0.03357713,"height":0.032721467},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Търсене","depth":12,"bounds":{"left":0.8174867,"top":0.07462091,"width":0.019780586,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Намаления","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Намаления","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Електроника","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Електроника","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Информатика","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Информатика","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Здраве и красота","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Здраве и красота","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Битова техника","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Битова техника","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Дом и градина","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Дом и градина","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Още (15)","depth":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Още (15)","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pazaruvaj.com","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pazaruvaj.com","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Информатика","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Информатика","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Хардуер","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Хардуер","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Вътрешен хард диск","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Вътрешен хард диск","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Вътрешен хард диск Western Digital","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Вътрешен хард диск Western Digital","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"previous slide / item","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Image 1 of Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Image 1 of Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"next slide / item","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":8,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"%","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"5 мнения","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"5","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"мнения","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Производител: Western Digital Модел: Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) Описание: Високопроизводител ни външни hdd дискове, създадени за надеждност и енергийна...","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Пълно описание","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Варианти на продукта:","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Варианти на продукта","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"2000 GB","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2000 GB","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"3000 GB","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3000 GB","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4000 GB","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4000 GB","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6000 GB","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"8000 GB","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8000 GB","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"289,99 €","depth":8,"bounds":{"left":0.7825798,"top":0.0,"width":0.026595745,"height":0.02593775},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"|","depth":9,"bounds":{"left":0.81482714,"top":0.0,"width":0.0019946808,"height":0.02593775},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"567,17 лв.","depth":8,"bounds":{"left":0.8224734,"top":0.0,"width":0.03174867,"height":0.02593775},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":8,"bounds":{"left":0.85422206,"top":0.0,"width":0.0031582448,"height":0.02593775},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(2,59 €)","depth":9,"bounds":{"left":0.7825798,"top":0.0,"width":0.016123671,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Доставка","depth":9,"bounds":{"left":0.79870343,"top":0.0,"width":0.020279255,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5,07 лв.","depth":9,"bounds":{"left":0.81998,"top":0.0,"width":0.016123671,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":9,"bounds":{"left":0.83610374,"top":0.0,"width":0.0011635638,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"В наличност","depth":9,"bounds":{"left":0.8387633,"top":0.0,"width":0.027426861,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Препоръчана оферта","depth":8,"bounds":{"left":0.7825798,"top":0.0,"width":0.047041222,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Plasico IT Superstore","depth":8,"bounds":{"left":0.8306183,"top":0.0,"width":0.043550532,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина","depth":8,"bounds":{"left":0.9172208,"top":0.0,"width":0.04537899,"height":0.04708699},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"към магазина","depth":10,"bounds":{"left":0.92170876,"top":0.0,"width":0.036402926,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Оферти с цени","depth":12,"bounds":{"left":0.66389626,"top":0.021947326,"width":0.049700797,"height":0.03431764},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Оферти с цени","depth":13,"bounds":{"left":0.66389626,"top":0.021947326,"width":0.049700797,"height":0.03431764},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Оферти с цени","depth":15,"bounds":{"left":0.67287236,"top":0.030327214,"width":0.03307846,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Описание","depth":12,"bounds":{"left":0.71359706,"top":0.021947326,"width":0.038397606,"height":0.03431764},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Описание","depth":13,"bounds":{"left":0.71359706,"top":0.021947326,"width":0.038397606,"height":0.03431764},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Описание","depth":15,"bounds":{"left":0.72257316,"top":0.030327214,"width":0.021775266,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Мнения (5)","depth":12,"bounds":{"left":0.75199467,"top":0.021947326,"width":0.04055851,"height":0.03431764},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Мнения (5)","depth":13,"bounds":{"left":0.75199467,"top":0.021947326,"width":0.04055851,"height":0.03431764},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Мнения","depth":15,"bounds":{"left":0.7609708,"top":0.030327214,"width":0.017121011,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":15,"bounds":{"left":0.77942157,"top":0.030327214,"width":0.0014960107,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":15,"bounds":{"left":0.7809175,"top":0.030327214,"width":0.002493351,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":15,"bounds":{"left":0.7834109,"top":0.030327214,"width":0.0014960107,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Препоръчани оферти","depth":11,"bounds":{"left":0.66389626,"top":0.07701516,"width":0.065159574,"height":0.026735835},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Препоръчани оферти","depth":12,"bounds":{"left":0.67453456,"top":0.08220271,"width":0.05069814,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Най-евтини","depth":11,"bounds":{"left":0.73038566,"top":0.07701516,"width":0.034906916,"height":0.026735835},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Най-евтини","depth":12,"bounds":{"left":0.7340425,"top":0.08220271,"width":0.027426861,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Всички филтри","depth":11,"bounds":{"left":0.76662236,"top":0.07701516,"width":0.05036569,"height":0.026735835},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Всички филтри","depth":13,"bounds":{"left":0.77726066,"top":0.08220271,"width":0.035904255,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Препоръчани оферти (3)","depth":9,"bounds":{"left":0.66389626,"top":0.123703115,"width":0.0625,"height":0.017956903},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Препоръчани оферти","depth":10,"bounds":{"left":0.66389626,"top":0.12290503,"width":0.054853722,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":10,"bounds":{"left":0.71875,"top":0.12290503,"width":0.0028257978,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":10,"bounds":{"left":0.7215758,"top":0.12290503,"width":0.0029920214,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":10,"bounds":{"left":0.72456783,"top":0.12290503,"width":0.0018284575,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":9,"bounds":{"left":0.66389626,"top":0.14285715,"width":0.28590426,"height":0.01556265},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":10,"bounds":{"left":0.66389626,"top":0.14285715,"width":0.12367021,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина Plasico IT Superstore","depth":10,"bounds":{"left":0.67021275,"top":0.18715084,"width":0.062333778,"height":0.041899443},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"97%","depth":11,"bounds":{"left":0.6753657,"top":0.21308859,"width":0.007978723,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":11,"bounds":{"left":0.6833444,"top":0.21308859,"width":0.0021609042,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9506","depth":11,"bounds":{"left":0.68550533,"top":0.21308859,"width":0.008643617,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×)","depth":11,"bounds":{"left":0.69414896,"top":0.21308859,"width":0.0034906915,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"В наличност","depth":10,"bounds":{"left":0.73254657,"top":0.18515563,"width":0.040226065,"height":0.023543496},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"В наличност","depth":12,"bounds":{"left":0.74268615,"top":0.18834797,"width":0.027260639,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"1 отличие","depth":10,"bounds":{"left":0.77377,"top":0.18515563,"width":0.03357713,"height":0.023543496},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":11,"bounds":{"left":0.78307843,"top":0.18834797,"width":0.002493351,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"отличие","depth":11,"bounds":{"left":0.7865692,"top":0.18834797,"width":0.017952127,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Red Plus 6TB NAS, 3.5 , 256MB, 5400RPM | WD60EFPX (WD60EFPX)","depth":11,"bounds":{"left":0.73254657,"top":0.22027135,"width":0.1015625,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина Plasico IT Superstore","depth":10,"bounds":{"left":0.84956783,"top":0.17797287,"width":0.029089095,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"289,99 €","depth":11,"bounds":{"left":0.84956783,"top":0.1783719,"width":0.022273935,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"567,17 лв.","depth":11,"bounds":{"left":0.84956783,"top":0.20071827,"width":0.02642952,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":11,"bounds":{"left":0.87599736,"top":0.20071827,"width":0.0026595744,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Доставка от 2,59 € (5,07 лв.)","depth":10,"bounds":{"left":0.826629,"top":0.22266561,"width":0.052027926,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Доставка","depth":11,"bounds":{"left":0.826629,"top":0.22306465,"width":0.017785905,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"от","depth":11,"bounds":{"left":0.845246,"top":0.22306465,"width":0.0043218085,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2,59 € (5,07 лв.)","depth":11,"bounds":{"left":0.85039896,"top":0.22306465,"width":0.02825798,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина Plasico IT Superstore","depth":10,"bounds":{"left":0.88863033,"top":0.19233839,"width":0.054853722,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"към магазина","depth":11,"bounds":{"left":0.89793885,"top":0.19832402,"width":0.036402926,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина PIC.bg - купи лаптоп изгодно","depth":10,"bounds":{"left":0.67021275,"top":0.27055067,"width":0.062333778,"height":0.041899443},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"99%","depth":11,"bounds":{"left":0.6753657,"top":0.29648843,"width":0.007978723,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":11,"bounds":{"left":0.6833444,"top":0.29648843,"width":0.0021609042,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8173","depth":11,"bounds":{"left":0.68550533,"top":0.29648843,"width":0.008643617,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×)","depth":11,"bounds":{"left":0.69414896,"top":0.29648843,"width":0.0034906915,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"В наличност","depth":10,"bounds":{"left":0.73254657,"top":0.26855546,"width":0.040226065,"height":0.023543496},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"В наличност","depth":12,"bounds":{"left":0.74268615,"top":0.2717478,"width":0.027260639,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"1 отличие","depth":10,"bounds":{"left":0.77377,"top":0.26855546,"width":0.03357713,"height":0.023543496},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":11,"bounds":{"left":0.78307843,"top":0.2717478,"width":0.002493351,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"отличие","depth":11,"bounds":{"left":0.7865692,"top":0.2717478,"width":0.017952127,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"WD Red Plus 6TB SATA 6Gb (WD60EFPX)","depth":11,"bounds":{"left":0.73254657,"top":0.30367118,"width":0.061336435,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина PIC.bg - купи лаптоп изгодно","depth":10,"bounds":{"left":0.84956783,"top":0.26137272,"width":0.029089095,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"299,00 €","depth":11,"bounds":{"left":0.84956783,"top":0.26177174,"width":0.022273935,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"584,79 лв.","depth":11,"bounds":{"left":0.84956783,"top":0.28411812,"width":0.02642952,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":11,"bounds":{"left":0.87599736,"top":0.28411812,"width":0.0026595744,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Безплатна доставка","depth":10,"bounds":{"left":0.84042555,"top":0.30606544,"width":0.038231384,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"към магазина PIC.bg - купи лаптоп изгодно","depth":10,"bounds":{"left":0.88863033,"top":0.27573824,"width":0.054853722,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"към магазина","depth":11,"bounds":{"left":0.89793885,"top":0.28172386,"width":0.036402926,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина МегаМаг България","depth":10,"bounds":{"left":0.67021275,"top":0.349162,"width":0.062333778,"height":0.041899443},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"98%","depth":11,"bounds":{"left":0.6753657,"top":0.37509975,"width":0.007978723,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":11,"bounds":{"left":0.6833444,"top":0.37509975,"width":0.0021609042,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4806","depth":11,"bounds":{"left":0.68550533,"top":0.37509975,"width":0.008643617,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×)","depth":11,"bounds":{"left":0.69414896,"top":0.37509975,"width":0.0034906915,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"В наличност","depth":10,"bounds":{"left":0.73254657,"top":0.3471668,"width":0.040226065,"height":0.023543496},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"В наличност","depth":12,"bounds":{"left":0.74268615,"top":0.35035914,"width":0.027260639,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"1 отличие","depth":10,"bounds":{"left":0.77377,"top":0.3471668,"width":0.03357713,"height":0.023543496},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":11,"bounds":{"left":0.78307843,"top":0.35035914,"width":0.002493351,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"отличие","depth":11,"bounds":{"left":0.7865692,"top":0.35035914,"width":0.017952127,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Твърд диск WD Red Plus 6TB NAS HDD 3.5\" SATA 6Gb/s 256MB (WD60EFPX)","depth":11,"bounds":{"left":0.73254657,"top":0.38228253,"width":0.1165226,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина МегаМаг България","depth":10,"bounds":{"left":0.84956783,"top":0.34756583,"width":0.029089095,"height":0.045091778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"292,04 €","depth":11,"bounds":{"left":0.84956783,"top":0.34796488,"width":0.022273935,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"571,18 лв.","depth":11,"bounds":{"left":0.84956783,"top":0.37071028,"width":0.02642952,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":11,"bounds":{"left":0.87599736,"top":0.37071028,"width":0.0026595744,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина МегаМаг България","depth":10,"bounds":{"left":0.88863033,"top":0.35395053,"width":0.054853722,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"към магазина","depth":11,"bounds":{"left":0.89793885,"top":0.3603352,"width":0.036402926,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Най-евтини оферти (21)","depth":9,"bounds":{"left":0.66389626,"top":0.4273743,"width":0.060339097,"height":0.018355945},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Най-евтини оферти","depth":10,"bounds":{"left":0.66389626,"top":0.42697525,"width":0.049867023,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":10,"bounds":{"left":0.71492684,"top":0.42697525,"width":0.0016622341,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21","depth":10,"bounds":{"left":0.7165891,"top":0.42697525,"width":0.005817819,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":10,"bounds":{"left":0.7224069,"top":0.42697525,"width":0.0018284575,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":9,"bounds":{"left":0.66389626,"top":0.44573024,"width":0.28590426,"height":0.01556265},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)","depth":10,"bounds":{"left":0.66389626,"top":0.4461293,"width":0.12367021,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина Стантек","depth":10,"bounds":{"left":0.67021275,"top":0.49002394,"width":0.062333778,"height":0.041899443},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17","depth":11,"bounds":{"left":0.67021275,"top":0.5159617,"width":0.0043218085,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"мнения","depth":11,"bounds":{"left":0.6753657,"top":0.5159617,"width":0.01462766,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"В наличност","depth":10,"bounds":{"left":0.73254657,"top":0.48802873,"width":0.040226065,"height":0.023543496},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"В наличност","depth":12,"bounds":{"left":0.74268615,"top":0.49122107,"width":0.027260639,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"HDD NAS WD Red Plus (3.5'', 6TB, 256MB, 5400 RPM, SATA 6 Gb/s) - WD60EFPX (WD60EFPX)","depth":11,"bounds":{"left":0.73254657,"top":0.5231444,"width":0.1392952,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина Стантек","depth":10,"bounds":{"left":0.84956783,"top":0.48084596,"width":0.029089095,"height":0.045091778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"249,00 €","depth":11,"bounds":{"left":0.84956783,"top":0.481245,"width":0.022273935,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"487,00 лв.","depth":11,"bounds":{"left":0.84956783,"top":0.50359136,"width":0.02642952,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":11,"bounds":{"left":0.87599736,"top":0.50359136,"width":0.0026595744,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Безплатна доставка","depth":10,"bounds":{"left":0.84042555,"top":0.52593774,"width":0.038231384,"height":0.01556265},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"към магазина Стантек","depth":10,"bounds":{"left":0.88863033,"top":0.49521148,"width":0.054853722,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"към магазина","depth":11,"bounds":{"left":0.89793885,"top":0.5011971,"width":0.036402926,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина Senetic","depth":10,"bounds":{"left":0.67021275,"top":0.5734238,"width":0.062333778,"height":0.041899443},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"73","depth":11,"bounds":{"left":0.67021275,"top":0.59936154,"width":0.0043218085,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"мнения","depth":11,"bounds":{"left":0.6753657,"top":0.59936154,"width":0.01462766,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Информация в магазина","depth":10,"bounds":{"left":0.73254657,"top":0.5714286,"width":0.06698803,"height":0.023543496},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Информация в магазина","depth":12,"bounds":{"left":0.74268615,"top":0.5746209,"width":0.054022606,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Red Plus 6TB WD60EFPX (WD60EFPX)","depth":11,"bounds":{"left":0.73254657,"top":0.6065443,"width":0.057347074,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина Senetic","depth":10,"bounds":{"left":0.84956783,"top":0.5642458,"width":0.029089095,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"250,14 €","depth":11,"bounds":{"left":0.84956783,"top":0.5646449,"width":0.022273935,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"489,23 лв.","depth":11,"bounds":{"left":0.84956783,"top":0.58699125,"width":0.02642952,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":11,"bounds":{"left":0.87599736,"top":0.58699125,"width":0.0026595744,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Доставка от 9,82 € (19,21 лв.)","depth":10,"bounds":{"left":0.8244681,"top":0.6089386,"width":0.05418883,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Доставка","depth":11,"bounds":{"left":0.8244681,"top":0.60933757,"width":0.017785905,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"от","depth":11,"bounds":{"left":0.8430851,"top":0.60933757,"width":0.0043218085,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9,82 € (19,21 лв.)","depth":11,"bounds":{"left":0.84823805,"top":0.60933757,"width":0.030418882,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина Senetic","depth":10,"bounds":{"left":0.88863033,"top":0.5786113,"width":0.054853722,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"към магазина","depth":11,"bounds":{"left":0.89793885,"top":0.584597,"width":0.036402926,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина xtreme.bg","depth":10,"bounds":{"left":0.67021275,"top":0.6520351,"width":0.062333778,"height":0.041899443},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"99%","depth":11,"bounds":{"left":0.6753657,"top":0.67797285,"width":0.007978723,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":11,"bounds":{"left":0.6833444,"top":0.67797285,"width":0.0021609042,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5953","depth":11,"bounds":{"left":0.68550533,"top":0.67797285,"width":0.008643617,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×)","depth":11,"bounds":{"left":0.69414896,"top":0.67797285,"width":0.0034906915,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"В наличност","depth":10,"bounds":{"left":0.73254657,"top":0.6500399,"width":0.040226065,"height":0.023543496},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"В наличност","depth":12,"bounds":{"left":0.74268615,"top":0.6532322,"width":0.027260639,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"1 отличие","depth":10,"bounds":{"left":0.77377,"top":0.6500399,"width":0.03357713,"height":0.023543496},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":11,"bounds":{"left":0.78307843,"top":0.6532322,"width":0.002493351,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"отличие","depth":11,"bounds":{"left":0.7865692,"top":0.6532322,"width":0.017952127,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Твърд диск, Western Digital Red 6TB Plus ( 3.5\", 256MB, 5400 RPM, SATA 6Gb/s ) (WD60EFPX)","depth":11,"bounds":{"left":0.73254657,"top":0.68515563,"width":0.1427859,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина xtreme.bg","depth":10,"bounds":{"left":0.84956783,"top":0.65043896,"width":0.029089095,"height":0.045091778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"272,82 €","depth":11,"bounds":{"left":0.84956783,"top":0.650838,"width":0.022273935,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"533,59 лв.","depth":11,"bounds":{"left":0.84956783,"top":0.6735834,"width":0.02642952,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":11,"bounds":{"left":0.87599736,"top":0.6735834,"width":0.0026595744,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина xtreme.bg","depth":10,"bounds":{"left":0.88863033,"top":0.65682364,"width":0.054853722,"height":0.032322425},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"към магазина","depth":11,"bounds":{"left":0.89793885,"top":0.6632083,"width":0.036402926,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина SIGMATRONIC","depth":10,"bounds":{"left":0.67021275,"top":0.7254589,"width":0.062333778,"height":0.041899443},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3","depth":11,"bounds":{"left":0.67021275,"top":0.75139666,"width":0.0021609042,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"мнения","depth":11,"bounds":{"left":0.6732048,"top":0.75139666,"width":0.01462766,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"В наличност","depth":10,"bounds":{"left":0.73254657,"top":0.7234637,"width":0.040226065,"height":0.023543496},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"В наличност","depth":12,"bounds":{"left":0.74268615,"top":0.726656,"width":0.027260639,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"HDD NAS WD Red Plus (3.5 (WD60EFPX)","depth":11,"bounds":{"left":0.73254657,"top":0.75857943,"width":0.06067154,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина SIGMATRONIC","depth":10,"bounds":{"left":0.84956783,"top":0.72426176,"width":0.029089095,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"272,82 €","depth":11,"bounds":{"left":0.84956783,"top":0.7246608,"width":0.022273935,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"533,59 лв.","depth":11,"bounds":{"left":0.84956783,"top":0.7470072,"width":0.02642952,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":11,"bounds":{"left":0.87599736,"top":0.7470072,"width":0.0026595744,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина SIGMATRONIC","depth":10,"bounds":{"left":0.88863033,"top":0.73064643,"width":0.054853722,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"към магазина","depth":11,"bounds":{"left":0.89793885,"top":0.7366321,"width":0.036402926,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина Optimal Computers","depth":10,"bounds":{"left":0.67021275,"top":0.80407023,"width":0.062333778,"height":0.041899443},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"67","depth":11,"bounds":{"left":0.67021275,"top":0.830008,"width":0.0043218085,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"мнения","depth":11,"bounds":{"left":0.6753657,"top":0.830008,"width":0.01462766,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"В наличност","depth":10,"bounds":{"left":0.73254657,"top":0.802075,"width":0.040226065,"height":0.023543496},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"В наличност","depth":12,"bounds":{"left":0.74268615,"top":0.80526733,"width":0.027260639,"height":0.01715882},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"HDD NAS WD Red Plus (3.5'', 6TB, 256MB, 5400 RPM, SATA 6 Gb/ (WD60EFPX)","depth":11,"bounds":{"left":0.73254657,"top":0.83719075,"width":0.1171875,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"към магазина Optimal Computers","depth":10,"bounds":{"left":0.84956783,"top":0.7944932,"width":0.029089095,"height":0.045091778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"277,09 €","depth":11,"bounds":{"left":0.84956783,"top":0.7952913,"width":0.022273935,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"541,94 лв.","depth":11,"bounds":{"left":0.84956783,"top":0.8176377,"width":0.02642952,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":11,"bounds":{"left":0.87599736,"top":0.8176377,"width":0.0026595744,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-4224459444098253466
|
-7429809077533095215
|
app_switch
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Статус на поръчка в stantek.com - DXP4800PLUS-B5F8
Статус на поръчка в stantek.com - [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
Close tab
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Screenpipe — Archive
Screenpipe — Archive
[IP_ADDRESS]:8768/
[IP_ADDRESS]:8768/
Today's Deals
Today's Deals
Shameless • HBO Max
Shameless • HBO Max
install screenpipe - screenpipe docs
install screenpipe - screenpipe docs
Close tab
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Pazaruvaj.com - Надежден помощник за покупки, сравнение на цени и продуктови оферти
Какво търсите?
Изтрий
Търсене
Търсене
Намаления
Намаления
Електроника
Електроника
Информатика
Информатика
Здраве и красота
Здраве и красота
Битова техника
Битова техника
Дом и градина
Дом и градина
Още (15)
Още (15)
Pazaruvaj.com
Pazaruvaj.com
Информатика
Информатика
Хардуер
Хардуер
Вътрешен хард диск
Вътрешен хард диск
Вътрешен хард диск Western Digital
Вътрешен хард диск Western Digital
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
previous slide / item
Image 1 of Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Image 1 of Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
next slide / item
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
100
%
5 мнения
5
мнения
Производител: Western Digital Модел: Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) Описание: Високопроизводител ни външни hdd дискове, създадени за надеждност и енергийна...
Пълно описание
Варианти на продукта:
Варианти на продукта
:
2000 GB
2000 GB
3000 GB
3000 GB
4000 GB
4000 GB
6000 GB
8000 GB
8000 GB
289,99 €
|
567,17 лв.
*
(2,59 €)
Доставка
5,07 лв.
,
В наличност
Препоръчана оферта
Plasico IT Superstore
към магазина
към магазина
Оферти с цени
Оферти с цени
Оферти с цени
Описание
Описание
Описание
Мнения (5)
Мнения (5)
Мнения
(
5
)
Препоръчани оферти
Препоръчани оферти
Най-евтини
Най-евтини
Всички филтри
Всички филтри
Препоръчани оферти (3)
Препоръчани оферти
(
3
)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
към магазина Plasico IT Superstore
97%
(
9506
×)
В наличност
В наличност
1 отличие
1
отличие
Red Plus 6TB NAS, 3.5 , 256MB, 5400RPM | WD60EFPX (WD60EFPX)
към магазина Plasico IT Superstore
289,99 €
567,17 лв.
*
Доставка от 2,59 € (5,07 лв.)
Доставка
от
2,59 € (5,07 лв.)
към магазина Plasico IT Superstore
към магазина
към магазина PIC.bg - купи лаптоп изгодно
99%
(
8173
×)
В наличност
В наличност
1 отличие
1
отличие
WD Red Plus 6TB SATA 6Gb (WD60EFPX)
към магазина PIC.bg - купи лаптоп изгодно
299,00 €
584,79 лв.
*
Безплатна доставка
към магазина PIC.bg - купи лаптоп изгодно
към магазина
към магазина МегаМаг България
98%
(
4806
×)
В наличност
В наличност
1 отличие
1
отличие
Твърд диск WD Red Plus 6TB NAS HDD 3.5" SATA 6Gb/s 256MB (WD60EFPX)
към магазина МегаМаг България
292,04 €
571,18 лв.
*
към магазина МегаМаг България
към магазина
Най-евтини оферти (21)
Най-евтини оферти
(
21
)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX)
към магазина Стантек
17
мнения
В наличност
В наличност
HDD NAS WD Red Plus (3.5'', 6TB, 256MB, 5400 RPM, SATA 6 Gb/s) - WD60EFPX (WD60EFPX)
към магазина Стантек
249,00 €
487,00 лв.
*
Безплатна доставка
към магазина Стантек
към магазина
към магазина Senetic
73
мнения
Информация в магазина
Информация в магазина
Red Plus 6TB WD60EFPX (WD60EFPX)
към магазина Senetic
250,14 €
489,23 лв.
*
Доставка от 9,82 € (19,21 лв.)
Доставка
от
9,82 € (19,21 лв.)
към магазина Senetic
към магазина
към магазина xtreme.bg
99%
(
5953
×)
В наличност
В наличност
1 отличие
1
отличие
Твърд диск, Western Digital Red 6TB Plus ( 3.5", 256MB, 5400 RPM, SATA 6Gb/s ) (WD60EFPX)
към магазина xtreme.bg
272,82 €
533,59 лв.
*
към магазина xtreme.bg
към магазина
към магазина SIGMATRONIC
3
мнения
В наличност
В наличност
HDD NAS WD Red Plus (3.5 (WD60EFPX)
към магазина SIGMATRONIC
272,82 €
533,59 лв.
*
към магазина SIGMATRONIC
към магазина
към магазина Optimal Computers
67
мнения
В наличност
В наличност
HDD NAS WD Red Plus (3.5'', 6TB, 256MB, 5400 RPM, SATA 6 Gb/ (WD60EFPX)
към магазина Optimal Computers
277,09 €
541,94 лв.
*...
|
NULL
|
|
60761
|
1310
|
11
|
2026-04-21T06:16:55.140781+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752215140_m1.jpg...
|
Activity Monitor
|
Activity Monitor – All Processes
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Physical Memory:
16,00 GB
Memory Used:
13,25 GB
Ca Physical Memory:
16,00 GB
Memory Used:
13,25 GB
Cached Files:
2,74 GB
Swap Used:
0 bytes
5,15 GB
Wired Memory:
Compressed:
2,43 GB
5,08 GB
App Memory:
MEMORY PRESSURE
Firefox GPU Helper
1,38 GB
33
218
20752
lukas
Virtual Machine Service for Docker
1,06 GB
19
82
18483
lukas
FirefoxCP Isolated Web Content
1 006,2 MB
34
131
21736
lukas
WindowServer
879,4 MB
21
3 128
404
_windowserver
FirefoxCP Isolated Web Content
682,2 MB
24
121
20765
lukas
Firefox GPU Helper
511,6 MB
30
229
10877
lukas
FirefoxCP Isolated Web Content
468,6 MB
24
121
20966
lukas
Firefox
421,7 MB
92
529
20737
lukas
Firefox
411,5 MB
72
682
10868
lukas
claude.exe
362,9 MB
25
79
12929
lukas
Slack Helper (Renderer)
348,6 MB
16
174
11984
lukas
FirefoxCP Isolated Web Content
329,7 MB
24
121
10892
lukas
FirefoxCP Isolated Web Content
273,7 MB
24
122
15392
lukas
FirefoxCP Isolated Web Content
244,6 MB
28
126
20989
lukas
Claude Helper (Renderer)
238,1 MB
15
206
998
lukas
FirefoxCP Isolated Web Content
215,3 MB
24
119
21298
lukas
Claude Helper
202,5 MB
17
202
891
lukas
Claude
190,7 MB
66
758
714
lukas
iTerm2
188,7 MB
6
423
718
lukas
FirefoxCP Isolated Web Content
181,6 MB
23
118
11921
lukas
FirefoxCP Isolated Web Content
175,0 MB
25
122
20766
lukas
FirefoxCP Isolated Web Content
148,4 MB
23
119
10891
lukas
FirefoxCP Isolated Web Content
148,2 MB
23
119
20769
lukas
FirefoxCP Isolated Web Content
140,3 MB
24
120
11851
lukas
Bitwarden Helper (Renderer)
134,4 MB
17
196
9219
lukas
FirefoxCP Isolated Web Content
134,2 MB
24
116
19852
lukas
FirefoxCP WebExtensions
129,7 MB
23
115
10899
lukas
Docker
128,2 MB
149
473
17866
lukas
Slack Helper
110,0 MB
16
177
11982
lukas
FirefoxCP Isolated Web Content
106,1 MB
24
118
21254
lukas
FirefoxCP Isolated Web Content
103,9 MB
26
122
13076
lukas
screenpipe...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Physical Memory:","depth":3,"bounds":{"left":0.6826389,"top":0.8933333,"width":0.06701389,"height":0.015555556},"automation_id":"_NS:456","help_text":"Total amount of memory installed in this computer.","role_description":"text"},{"role":"AXStaticText","text":"16,00 GB","depth":3,"bounds":{"left":0.765625,"top":0.8933333,"width":0.03784722,"height":0.015555556},"automation_id":"_NS:448","help_text":"Total amount of memory installed in this computer.","role_description":"text"},{"role":"AXStaticText","text":"Memory Used:","depth":3,"bounds":{"left":0.6826389,"top":0.91555554,"width":0.05590278,"height":0.015555556},"automation_id":"_NS:441","help_text":"Amount of physical memory that is in use by apps or the system.","role_description":"text"},{"role":"AXStaticText","text":"13,25 GB","depth":3,"bounds":{"left":0.765625,"top":0.91555554,"width":0.03784722,"height":0.015555556},"automation_id":"_NS:435","help_text":"Amount of physical memory that is in use by apps or the system.","role_description":"text"},{"role":"AXStaticText","text":"Cached Files:","depth":3,"bounds":{"left":0.6826389,"top":0.93777776,"width":0.052083332,"height":0.015555556},"automation_id":"_NS:428","help_text":"Size of files cached by the system into unused memory to improve performance.","role_description":"text"},{"role":"AXStaticText","text":"2,74 GB","depth":3,"bounds":{"left":0.7704861,"top":0.93777776,"width":0.032986112,"height":0.015555556},"automation_id":"_NS:422","help_text":"Size of files cached by the system into unused memory to improve performance.","role_description":"text"},{"role":"AXStaticText","text":"Swap Used:","depth":3,"bounds":{"left":0.6826389,"top":0.96,"width":0.046180554,"height":0.015555556},"automation_id":"_NS:415","help_text":"Amount of compressed data temporarily moved to disk to make room in memory for more recently used data.","role_description":"text"},{"role":"AXStaticText","text":"0 bytes","depth":3,"bounds":{"left":0.7736111,"top":0.96,"width":0.029861111,"height":0.015555556},"automation_id":"_NS:409","help_text":"Amount of compressed data temporarily moved to disk to make room in memory for more recently used data.","role_description":"text"},{"role":"AXStaticText","text":"5,15 GB","depth":3,"bounds":{"left":0.9045139,"top":0.9066667,"width":0.032986112,"height":0.015555556},"automation_id":"_NS:400","help_text":"Physical memory allocated by apps and system processes.","role_description":"text"},{"role":"AXStaticText","text":"Wired Memory:","depth":3,"bounds":{"left":0.8173611,"top":0.9266667,"width":0.058333334,"height":0.015555556},"automation_id":"_NS:393","help_text":"Physical memory containing data that cannot be compressed or swapped to disk.","role_description":"text"},{"role":"AXStaticText","text":"Compressed:","depth":3,"bounds":{"left":0.8173611,"top":0.94666666,"width":0.051041666,"height":0.015555556},"automation_id":"_NS:386","help_text":"Physical memory used to store a compressed version of data that has not been used recently.","role_description":"text"},{"role":"AXStaticText","text":"2,43 GB","depth":3,"bounds":{"left":0.9045139,"top":0.9266667,"width":0.032986112,"height":0.015555556},"automation_id":"_NS:380","help_text":"Physical memory containing data that cannot be compressed or swapped to disk.","role_description":"text"},{"role":"AXStaticText","text":"5,08 GB","depth":3,"bounds":{"left":0.9045139,"top":0.94666666,"width":0.032986112,"height":0.015555556},"automation_id":"_NS:374","help_text":"Physical memory used to store a compressed version of data that has not been used recently.","role_description":"text"},{"role":"AXStaticText","text":"App Memory:","depth":3,"bounds":{"left":0.8173611,"top":0.9066667,"width":0.051736113,"height":0.015555556},"automation_id":"_NS:367","help_text":"Physical memory allocated by apps and system processes.","role_description":"text"},{"role":"AXStaticText","text":"MEMORY PRESSURE","depth":3,"bounds":{"left":0.5416667,"top":0.89111114,"width":0.13402778,"height":0.02},"automation_id":"_NS:359","role_description":"text"},{"role":"AXStaticText","text":"Firefox GPU Helper","depth":5,"bounds":{"left":0.52013886,"top":0.12666667,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"1,38 GB","depth":5,"bounds":{"left":0.70694447,"top":0.12666667,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"33","depth":5,"bounds":{"left":0.76319444,"top":0.12666667,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"218","depth":5,"bounds":{"left":0.81666666,"top":0.12666667,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20752","depth":5,"bounds":{"left":0.86180556,"top":0.12666667,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.12666667,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Virtual Machine Service for Docker","depth":5,"bounds":{"left":0.52013886,"top":0.15333334,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"1,06 GB","depth":5,"bounds":{"left":0.70694447,"top":0.15333334,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"19","depth":5,"bounds":{"left":0.76319444,"top":0.15333334,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"82","depth":5,"bounds":{"left":0.81666666,"top":0.15333334,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"18483","depth":5,"bounds":{"left":0.86180556,"top":0.15333334,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.15333334,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.18,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"1 006,2 MB","depth":5,"bounds":{"left":0.70694447,"top":0.18,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"34","depth":5,"bounds":{"left":0.76319444,"top":0.18,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"131","depth":5,"bounds":{"left":0.81666666,"top":0.18,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"21736","depth":5,"bounds":{"left":0.86180556,"top":0.18,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.18,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"WindowServer","depth":5,"bounds":{"left":0.52013886,"top":0.20666666,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"879,4 MB","depth":5,"bounds":{"left":0.70694447,"top":0.20666666,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"21","depth":5,"bounds":{"left":0.76319444,"top":0.20666666,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"3 128","depth":5,"bounds":{"left":0.81666666,"top":0.20666666,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"404","depth":5,"bounds":{"left":0.86180556,"top":0.20666666,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"_windowserver","depth":5,"bounds":{"left":0.9013889,"top":0.20666666,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.23333333,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"682,2 MB","depth":5,"bounds":{"left":0.70694447,"top":0.23333333,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"bounds":{"left":0.76319444,"top":0.23333333,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"121","depth":5,"bounds":{"left":0.81666666,"top":0.23333333,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20765","depth":5,"bounds":{"left":0.86180556,"top":0.23333333,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.23333333,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Firefox GPU Helper","depth":5,"bounds":{"left":0.52013886,"top":0.26,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"511,6 MB","depth":5,"bounds":{"left":0.70694447,"top":0.26,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"30","depth":5,"bounds":{"left":0.76319444,"top":0.26,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"229","depth":5,"bounds":{"left":0.81666666,"top":0.26,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"10877","depth":5,"bounds":{"left":0.86180556,"top":0.26,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.26,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.28666666,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"468,6 MB","depth":5,"bounds":{"left":0.70694447,"top":0.28666666,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"bounds":{"left":0.76319444,"top":0.28666666,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"121","depth":5,"bounds":{"left":0.81666666,"top":0.28666666,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20966","depth":5,"bounds":{"left":0.86180556,"top":0.28666666,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.28666666,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Firefox","depth":5,"bounds":{"left":0.52013886,"top":0.31333333,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"421,7 MB","depth":5,"bounds":{"left":0.70694447,"top":0.31333333,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"92","depth":5,"bounds":{"left":0.76319444,"top":0.31333333,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"529","depth":5,"bounds":{"left":0.81666666,"top":0.31333333,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20737","depth":5,"bounds":{"left":0.86180556,"top":0.31333333,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.31333333,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Firefox","depth":5,"bounds":{"left":0.52013886,"top":0.34,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"411,5 MB","depth":5,"bounds":{"left":0.70694447,"top":0.34,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"72","depth":5,"bounds":{"left":0.76319444,"top":0.34,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"682","depth":5,"bounds":{"left":0.81666666,"top":0.34,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"10868","depth":5,"bounds":{"left":0.86180556,"top":0.34,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.34,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"claude.exe","depth":5,"bounds":{"left":0.52013886,"top":0.36666667,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"362,9 MB","depth":5,"bounds":{"left":0.70694447,"top":0.36666667,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"25","depth":5,"bounds":{"left":0.76319444,"top":0.36666667,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"79","depth":5,"bounds":{"left":0.81666666,"top":0.36666667,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"12929","depth":5,"bounds":{"left":0.86180556,"top":0.36666667,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.36666667,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Slack Helper (Renderer)","depth":5,"bounds":{"left":0.52013886,"top":0.39333335,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"348,6 MB","depth":5,"bounds":{"left":0.70694447,"top":0.39333335,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"16","depth":5,"bounds":{"left":0.76319444,"top":0.39333335,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"174","depth":5,"bounds":{"left":0.81666666,"top":0.39333335,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"11984","depth":5,"bounds":{"left":0.86180556,"top":0.39333335,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.39333335,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.42,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"329,7 MB","depth":5,"bounds":{"left":0.70694447,"top":0.42,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"bounds":{"left":0.76319444,"top":0.42,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"121","depth":5,"bounds":{"left":0.81666666,"top":0.42,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"10892","depth":5,"bounds":{"left":0.86180556,"top":0.42,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.42,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.44666666,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"273,7 MB","depth":5,"bounds":{"left":0.70694447,"top":0.44666666,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"bounds":{"left":0.76319444,"top":0.44666666,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"122","depth":5,"bounds":{"left":0.81666666,"top":0.44666666,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"15392","depth":5,"bounds":{"left":0.86180556,"top":0.44666666,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.44666666,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.47333333,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"244,6 MB","depth":5,"bounds":{"left":0.70694447,"top":0.47333333,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"28","depth":5,"bounds":{"left":0.76319444,"top":0.47333333,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"126","depth":5,"bounds":{"left":0.81666666,"top":0.47333333,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20989","depth":5,"bounds":{"left":0.86180556,"top":0.47333333,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.47333333,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Claude Helper (Renderer)","depth":5,"bounds":{"left":0.52013886,"top":0.5,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"238,1 MB","depth":5,"bounds":{"left":0.70694447,"top":0.5,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"15","depth":5,"bounds":{"left":0.76319444,"top":0.5,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"206","depth":5,"bounds":{"left":0.81666666,"top":0.5,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"998","depth":5,"bounds":{"left":0.86180556,"top":0.5,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.5,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.52666664,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"215,3 MB","depth":5,"bounds":{"left":0.70694447,"top":0.52666664,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"bounds":{"left":0.76319444,"top":0.52666664,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"119","depth":5,"bounds":{"left":0.81666666,"top":0.52666664,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"21298","depth":5,"bounds":{"left":0.86180556,"top":0.52666664,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.52666664,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Claude Helper","depth":5,"bounds":{"left":0.52013886,"top":0.55333334,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"202,5 MB","depth":5,"bounds":{"left":0.70694447,"top":0.55333334,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"17","depth":5,"bounds":{"left":0.76319444,"top":0.55333334,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"202","depth":5,"bounds":{"left":0.81666666,"top":0.55333334,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"891","depth":5,"bounds":{"left":0.86180556,"top":0.55333334,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.55333334,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.52013886,"top":0.58,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"190,7 MB","depth":5,"bounds":{"left":0.70694447,"top":0.58,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"66","depth":5,"bounds":{"left":0.76319444,"top":0.58,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"758","depth":5,"bounds":{"left":0.81666666,"top":0.58,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"714","depth":5,"bounds":{"left":0.86180556,"top":0.58,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.58,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"iTerm2","depth":5,"bounds":{"left":0.52013886,"top":0.6066667,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"188,7 MB","depth":5,"bounds":{"left":0.70694447,"top":0.6066667,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"6","depth":5,"bounds":{"left":0.76319444,"top":0.6066667,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"423","depth":5,"bounds":{"left":0.81666666,"top":0.6066667,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"718","depth":5,"bounds":{"left":0.86180556,"top":0.6066667,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.6066667,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.6333333,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"181,6 MB","depth":5,"bounds":{"left":0.70694447,"top":0.6333333,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"bounds":{"left":0.76319444,"top":0.6333333,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"118","depth":5,"bounds":{"left":0.81666666,"top":0.6333333,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"11921","depth":5,"bounds":{"left":0.86180556,"top":0.6333333,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.6333333,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.66,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"175,0 MB","depth":5,"bounds":{"left":0.70694447,"top":0.66,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"25","depth":5,"bounds":{"left":0.76319444,"top":0.66,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"122","depth":5,"bounds":{"left":0.81666666,"top":0.66,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20766","depth":5,"bounds":{"left":0.86180556,"top":0.66,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.66,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.68666667,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"148,4 MB","depth":5,"bounds":{"left":0.70694447,"top":0.68666667,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"bounds":{"left":0.76319444,"top":0.68666667,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"119","depth":5,"bounds":{"left":0.81666666,"top":0.68666667,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"10891","depth":5,"bounds":{"left":0.86180556,"top":0.68666667,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.68666667,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.7133333,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"148,2 MB","depth":5,"bounds":{"left":0.70694447,"top":0.7133333,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"bounds":{"left":0.76319444,"top":0.7133333,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"119","depth":5,"bounds":{"left":0.81666666,"top":0.7133333,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20769","depth":5,"bounds":{"left":0.86180556,"top":0.7133333,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.7133333,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.74,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"140,3 MB","depth":5,"bounds":{"left":0.70694447,"top":0.74,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"bounds":{"left":0.76319444,"top":0.74,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"120","depth":5,"bounds":{"left":0.81666666,"top":0.74,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"11851","depth":5,"bounds":{"left":0.86180556,"top":0.74,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.74,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Bitwarden Helper (Renderer)","depth":5,"bounds":{"left":0.52013886,"top":0.76666665,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"134,4 MB","depth":5,"bounds":{"left":0.70694447,"top":0.76666665,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"17","depth":5,"bounds":{"left":0.76319444,"top":0.76666665,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"196","depth":5,"bounds":{"left":0.81666666,"top":0.76666665,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"9219","depth":5,"bounds":{"left":0.86180556,"top":0.76666665,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.76666665,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.79333335,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"134,2 MB","depth":5,"bounds":{"left":0.70694447,"top":0.79333335,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"bounds":{"left":0.76319444,"top":0.79333335,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"116","depth":5,"bounds":{"left":0.81666666,"top":0.79333335,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"19852","depth":5,"bounds":{"left":0.86180556,"top":0.79333335,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.79333335,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP WebExtensions","depth":5,"bounds":{"left":0.52013886,"top":0.82,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"129,7 MB","depth":5,"bounds":{"left":0.70694447,"top":0.82,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"bounds":{"left":0.76319444,"top":0.82,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"115","depth":5,"bounds":{"left":0.81666666,"top":0.82,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"10899","depth":5,"bounds":{"left":0.86180556,"top":0.82,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.82,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Docker","depth":5,"bounds":{"left":0.52013886,"top":0.8466667,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"128,2 MB","depth":5,"bounds":{"left":0.70694447,"top":0.8466667,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"149","depth":5,"bounds":{"left":0.76319444,"top":0.8466667,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"473","depth":5,"bounds":{"left":0.81666666,"top":0.8466667,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"17866","depth":5,"bounds":{"left":0.86180556,"top":0.8466667,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.8466667,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Slack Helper","depth":5,"bounds":{"left":0.52013886,"top":0.87333333,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"110,0 MB","depth":5,"bounds":{"left":0.70694447,"top":0.87333333,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"16","depth":5,"bounds":{"left":0.76319444,"top":0.87333333,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"177","depth":5,"bounds":{"left":0.81666666,"top":0.87333333,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"11982","depth":5,"bounds":{"left":0.86180556,"top":0.87333333,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.87333333,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.9,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"106,1 MB","depth":5,"bounds":{"left":0.70694447,"top":0.9,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"bounds":{"left":0.76319444,"top":0.9,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"118","depth":5,"bounds":{"left":0.81666666,"top":0.9,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"21254","depth":5,"bounds":{"left":0.86180556,"top":0.9,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.9,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.9266667,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"103,9 MB","depth":5,"bounds":{"left":0.70694447,"top":0.9266667,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"26","depth":5,"bounds":{"left":0.76319444,"top":0.9266667,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"122","depth":5,"bounds":{"left":0.81666666,"top":0.9266667,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"13076","depth":5,"bounds":{"left":0.86180556,"top":0.9266667,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.9266667,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"screenpipe","depth":5,"bounds":{"left":0.52013886,"top":0.9533333,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"}]...
|
-429088901954356493
|
1723086346716612495
|
app_switch
|
accessibility
|
NULL
|
Physical Memory:
16,00 GB
Memory Used:
13,25 GB
Ca Physical Memory:
16,00 GB
Memory Used:
13,25 GB
Cached Files:
2,74 GB
Swap Used:
0 bytes
5,15 GB
Wired Memory:
Compressed:
2,43 GB
5,08 GB
App Memory:
MEMORY PRESSURE
Firefox GPU Helper
1,38 GB
33
218
20752
lukas
Virtual Machine Service for Docker
1,06 GB
19
82
18483
lukas
FirefoxCP Isolated Web Content
1 006,2 MB
34
131
21736
lukas
WindowServer
879,4 MB
21
3 128
404
_windowserver
FirefoxCP Isolated Web Content
682,2 MB
24
121
20765
lukas
Firefox GPU Helper
511,6 MB
30
229
10877
lukas
FirefoxCP Isolated Web Content
468,6 MB
24
121
20966
lukas
Firefox
421,7 MB
92
529
20737
lukas
Firefox
411,5 MB
72
682
10868
lukas
claude.exe
362,9 MB
25
79
12929
lukas
Slack Helper (Renderer)
348,6 MB
16
174
11984
lukas
FirefoxCP Isolated Web Content
329,7 MB
24
121
10892
lukas
FirefoxCP Isolated Web Content
273,7 MB
24
122
15392
lukas
FirefoxCP Isolated Web Content
244,6 MB
28
126
20989
lukas
Claude Helper (Renderer)
238,1 MB
15
206
998
lukas
FirefoxCP Isolated Web Content
215,3 MB
24
119
21298
lukas
Claude Helper
202,5 MB
17
202
891
lukas
Claude
190,7 MB
66
758
714
lukas
iTerm2
188,7 MB
6
423
718
lukas
FirefoxCP Isolated Web Content
181,6 MB
23
118
11921
lukas
FirefoxCP Isolated Web Content
175,0 MB
25
122
20766
lukas
FirefoxCP Isolated Web Content
148,4 MB
23
119
10891
lukas
FirefoxCP Isolated Web Content
148,2 MB
23
119
20769
lukas
FirefoxCP Isolated Web Content
140,3 MB
24
120
11851
lukas
Bitwarden Helper (Renderer)
134,4 MB
17
196
9219
lukas
FirefoxCP Isolated Web Content
134,2 MB
24
116
19852
lukas
FirefoxCP WebExtensions
129,7 MB
23
115
10899
lukas
Docker
128,2 MB
149
473
17866
lukas
Slack Helper
110,0 MB
16
177
11982
lukas
FirefoxCP Isolated Web Content
106,1 MB
24
118
21254
lukas
FirefoxCP Isolated Web Content
103,9 MB
26
122
13076
lukas
screenpipe...
|
NULL
|
|
60762
|
1311
|
13
|
2026-04-21T06:16:55.202325+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752215202_m2.jpg...
|
Activity Monitor
|
Activity Monitor – All Processes
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Physical Memory:
16,00 GB
Memory Used:
13,25 GB
Ca Physical Memory:
16,00 GB
Memory Used:
13,25 GB
Cached Files:
2,74 GB
Swap Used:
0 bytes
5,15 GB
Wired Memory:
Compressed:
2,43 GB
5,08 GB
App Memory:
MEMORY PRESSURE
Firefox GPU Helper
1,38 GB
33
218
20752
lukas
Virtual Machine Service for Docker
1,06 GB
19
82
18483
lukas
FirefoxCP Isolated Web Content
1 006,2 MB
34
131
21736
lukas
WindowServer
879,4 MB
21
3 128
404
_windowserver
FirefoxCP Isolated Web Content
682,2 MB
24
121
20765
lukas
Firefox GPU Helper
511,6 MB
30
229
10877
lukas
FirefoxCP Isolated Web Content
468,6 MB
24
121
20966
lukas
Firefox
421,7 MB
92
529
20737
lukas
Firefox
411,5 MB
72
682
10868
lukas
claude.exe
362,9 MB
25
79
12929
lukas
Slack Helper (Renderer)
348,6 MB
16
174
11984
lukas
FirefoxCP Isolated Web Content
329,7 MB
24
121
10892
lukas
FirefoxCP Isolated Web Content
273,7 MB
24
122
15392
lukas
FirefoxCP Isolated Web Content
244,6 MB
28
126
20989
lukas
Claude Helper (Renderer)
238,1 MB
15
206
998
lukas
FirefoxCP Isolated Web Content
215,3 MB
24
119
21298
lukas
Claude Helper
202,5 MB
17
202
891
lukas
Claude
190,7 MB
66
758
714
lukas
iTerm2
188,7 MB
6
423
718
lukas
FirefoxCP Isolated Web Content
181,6 MB
23
118
11921
lukas
FirefoxCP Isolated Web Content
175,0 MB
25
122
20766
lukas
FirefoxCP Isolated Web Content
148,4 MB
23
119
10891
lukas
FirefoxCP Isolated Web Content
148,2 MB
23
119
20769
lukas
FirefoxCP Isolated Web Content
140,3 MB
24
120
11851
lukas
Bitwarden Helper (Renderer)
134,4 MB
17
196
9219
lukas
FirefoxCP Isolated Web Content
134,2 MB
24
116
19852
lukas
FirefoxCP WebExtensions
129,7 MB
23
115
10899
lukas
Docker
128,2 MB
149
473
17866
lukas
Slack Helper
110,0 MB
16
177
11982
lukas
FirefoxCP Isolated Web Content
106,1 MB...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Physical Memory:","depth":3,"automation_id":"_NS:456","help_text":"Total amount of memory installed in this computer.","role_description":"text"},{"role":"AXStaticText","text":"16,00 GB","depth":3,"automation_id":"_NS:448","help_text":"Total amount of memory installed in this computer.","role_description":"text"},{"role":"AXStaticText","text":"Memory Used:","depth":3,"automation_id":"_NS:441","help_text":"Amount of physical memory that is in use by apps or the system.","role_description":"text"},{"role":"AXStaticText","text":"13,25 GB","depth":3,"automation_id":"_NS:435","help_text":"Amount of physical memory that is in use by apps or the system.","role_description":"text"},{"role":"AXStaticText","text":"Cached Files:","depth":3,"automation_id":"_NS:428","help_text":"Size of files cached by the system into unused memory to improve performance.","role_description":"text"},{"role":"AXStaticText","text":"2,74 GB","depth":3,"automation_id":"_NS:422","help_text":"Size of files cached by the system into unused memory to improve performance.","role_description":"text"},{"role":"AXStaticText","text":"Swap Used:","depth":3,"automation_id":"_NS:415","help_text":"Amount of compressed data temporarily moved to disk to make room in memory for more recently used data.","role_description":"text"},{"role":"AXStaticText","text":"0 bytes","depth":3,"automation_id":"_NS:409","help_text":"Amount of compressed data temporarily moved to disk to make room in memory for more recently used data.","role_description":"text"},{"role":"AXStaticText","text":"5,15 GB","depth":3,"automation_id":"_NS:400","help_text":"Physical memory allocated by apps and system processes.","role_description":"text"},{"role":"AXStaticText","text":"Wired Memory:","depth":3,"automation_id":"_NS:393","help_text":"Physical memory containing data that cannot be compressed or swapped to disk.","role_description":"text"},{"role":"AXStaticText","text":"Compressed:","depth":3,"automation_id":"_NS:386","help_text":"Physical memory used to store a compressed version of data that has not been used recently.","role_description":"text"},{"role":"AXStaticText","text":"2,43 GB","depth":3,"automation_id":"_NS:380","help_text":"Physical memory containing data that cannot be compressed or swapped to disk.","role_description":"text"},{"role":"AXStaticText","text":"5,08 GB","depth":3,"automation_id":"_NS:374","help_text":"Physical memory used to store a compressed version of data that has not been used recently.","role_description":"text"},{"role":"AXStaticText","text":"App Memory:","depth":3,"automation_id":"_NS:367","help_text":"Physical memory allocated by apps and system processes.","role_description":"text"},{"role":"AXStaticText","text":"MEMORY PRESSURE","depth":3,"automation_id":"_NS:359","role_description":"text"},{"role":"AXStaticText","text":"Firefox GPU Helper","depth":5,"bounds":{"left":0.5192819,"top":1.0,"width":0.08377659,"height":-0.0909816},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"1,38 GB","depth":5,"bounds":{"left":0.6087101,"top":1.0,"width":0.021276595,"height":-0.0909816},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"33","depth":5,"bounds":{"left":0.6356383,"top":1.0,"width":0.019946808,"height":-0.0909816},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"218","depth":5,"bounds":{"left":0.6612367,"top":1.0,"width":0.015957447,"height":-0.0909816},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20752","depth":5,"bounds":{"left":0.6828458,"top":1.0,"width":0.013297873,"height":-0.0909816},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.7017952,"top":1.0,"width":0.026595745,"height":-0.0909816},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Virtual Machine Service for Docker","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"1,06 GB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"19","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"82","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"18483","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"1 006,2 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"34","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"131","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"21736","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"WindowServer","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"879,4 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"21","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"3 128","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"404","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"_windowserver","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"682,2 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"121","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20765","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Firefox GPU Helper","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"511,6 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"30","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"229","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"10877","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"468,6 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"121","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20966","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Firefox","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"421,7 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"92","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"529","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20737","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Firefox","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"411,5 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"72","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"682","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"10868","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"claude.exe","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"362,9 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"25","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"79","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"12929","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Slack Helper (Renderer)","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"348,6 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"16","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"174","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"11984","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"329,7 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"121","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"10892","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"273,7 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"122","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"15392","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"244,6 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"28","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"126","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20989","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Claude Helper (Renderer)","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"238,1 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"15","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"206","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"998","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"215,3 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"119","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"21298","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Claude Helper","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"202,5 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"17","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"202","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"891","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Claude","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"190,7 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"66","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"758","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"714","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"iTerm2","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"188,7 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"6","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"423","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"718","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"181,6 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"118","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"11921","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"175,0 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"25","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"122","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20766","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"148,4 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"119","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"10891","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"148,2 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"119","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20769","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"140,3 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"120","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"11851","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Bitwarden Helper (Renderer)","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"134,4 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"17","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"196","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"9219","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"134,2 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"116","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"19852","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP WebExtensions","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"129,7 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"115","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"10899","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Docker","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"128,2 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"149","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"473","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"17866","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Slack Helper","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"110,0 MB","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"16","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"177","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"11982","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"106,1 MB","depth":5,"automation_id":"_NS:9","role_description":"text"}]...
|
8135403681814435068
|
1723086346716579743
|
app_switch
|
accessibility
|
NULL
|
Physical Memory:
16,00 GB
Memory Used:
13,25 GB
Ca Physical Memory:
16,00 GB
Memory Used:
13,25 GB
Cached Files:
2,74 GB
Swap Used:
0 bytes
5,15 GB
Wired Memory:
Compressed:
2,43 GB
5,08 GB
App Memory:
MEMORY PRESSURE
Firefox GPU Helper
1,38 GB
33
218
20752
lukas
Virtual Machine Service for Docker
1,06 GB
19
82
18483
lukas
FirefoxCP Isolated Web Content
1 006,2 MB
34
131
21736
lukas
WindowServer
879,4 MB
21
3 128
404
_windowserver
FirefoxCP Isolated Web Content
682,2 MB
24
121
20765
lukas
Firefox GPU Helper
511,6 MB
30
229
10877
lukas
FirefoxCP Isolated Web Content
468,6 MB
24
121
20966
lukas
Firefox
421,7 MB
92
529
20737
lukas
Firefox
411,5 MB
72
682
10868
lukas
claude.exe
362,9 MB
25
79
12929
lukas
Slack Helper (Renderer)
348,6 MB
16
174
11984
lukas
FirefoxCP Isolated Web Content
329,7 MB
24
121
10892
lukas
FirefoxCP Isolated Web Content
273,7 MB
24
122
15392
lukas
FirefoxCP Isolated Web Content
244,6 MB
28
126
20989
lukas
Claude Helper (Renderer)
238,1 MB
15
206
998
lukas
FirefoxCP Isolated Web Content
215,3 MB
24
119
21298
lukas
Claude Helper
202,5 MB
17
202
891
lukas
Claude
190,7 MB
66
758
714
lukas
iTerm2
188,7 MB
6
423
718
lukas
FirefoxCP Isolated Web Content
181,6 MB
23
118
11921
lukas
FirefoxCP Isolated Web Content
175,0 MB
25
122
20766
lukas
FirefoxCP Isolated Web Content
148,4 MB
23
119
10891
lukas
FirefoxCP Isolated Web Content
148,2 MB
23
119
20769
lukas
FirefoxCP Isolated Web Content
140,3 MB
24
120
11851
lukas
Bitwarden Helper (Renderer)
134,4 MB
17
196
9219
lukas
FirefoxCP Isolated Web Content
134,2 MB
24
116
19852
lukas
FirefoxCP WebExtensions
129,7 MB
23
115
10899
lukas
Docker
128,2 MB
149
473
17866
lukas
Slack Helper
110,0 MB
16
177
11982
lukas
FirefoxCP Isolated Web Content
106,1 MB...
|
NULL
|
|
60764
|
1310
|
13
|
2026-04-21T06:16:57.470467+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752217470_m1.jpg...
|
iTerm2
|
DOCKER (-zsh)
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:47:56 on console
Poetry Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work
Menu
⌥1 DOCKER (-zsh)
Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥2 PROD (-zsh)
Last login: Mon Apr 20 19:48:03 on ttys001
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥3 EU (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥4 STAGE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥5 QA (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys004
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥6 FE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys005
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥7 EXT (-zsh)
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
⌥⌘1
DOCKER (-zsh)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work","depth":4,"bounds":{"left":0.0,"top":0.112222224,"width":0.50069445,"height":0.8877778},"value":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work","is_focused":true},{"role":"AXButton","text":"Menu","depth":3,"bounds":{"left":0.4861111,"top":0.08944444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥1 DOCKER (-zsh)","depth":3,"bounds":{"left":0.01875,"top":0.09,"width":0.46388888,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.112222224,"width":0.4986111,"height":0.12222222},"value":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.08944444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥2 PROD (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.09,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:03 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.26222223,"width":0.4986111,"height":0.14222223},"value":"Last login: Mon Apr 20 19:48:03 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.23944445,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥3 EU (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.24,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.43222222,"width":0.4986111,"height":0.12222222},"value":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.40944445,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥4 STAGE (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.41,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.5822222,"width":0.4986111,"height":0.12222222},"value":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.5594444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥5 QA (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.56,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.7322222,"width":0.4986111,"height":0.12222222},"value":"Last login: Mon Apr 20 19:48:04 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.70944446,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥6 FE (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.71,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys005\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.8622222,"width":0.4986111,"height":0.13777778},"value":"Last login: Mon Apr 20 19:48:04 on ttys005\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.85944444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥7 EXT (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.86,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.14097223,"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.14097223,"top":0.05888889,"width":0.14097223,"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.14513889,"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.28194445,"top":0.05888889,"width":0.14097223,"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.28611112,"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 (node)","depth":2,"bounds":{"left":0.42291668,"top":0.05888889,"width":0.14097223,"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.42708334,"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.5638889,"top":0.05888889,"width":0.14097223,"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.56805557,"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.7048611,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70902777,"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.8454861,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.84965277,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95763886,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DOCKER (-zsh)","depth":1,"bounds":{"left":0.4652778,"top":0.033333335,"width":0.07152778,"height":0.017777778},"role_description":"text"}]...
|
-5618287936463319477
|
-1043966294775117799
|
app_switch
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:47:56 on console
Poetry Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work
Menu
⌥1 DOCKER (-zsh)
Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥2 PROD (-zsh)
Last login: Mon Apr 20 19:48:03 on ttys001
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥3 EU (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥4 STAGE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥5 QA (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys004
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥6 FE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys005
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥7 EXT (-zsh)
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
⌥⌘1
DOCKER (-zsh)...
|
NULL
|
|
60765
|
1311
|
14
|
2026-04-21T06:16:57.410660+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752217410_m2.jpg...
|
iTerm2
|
DOCKER (-zsh)
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:47:56 on console
Poetry Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work
Menu
⌥1 DOCKER (-zsh)
Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥2 PROD (-zsh)
Last login: Mon Apr 20 19:48:03 on ttys001
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥3 EU (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥4 STAGE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥5 QA (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys004
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥6 FE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys005
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥7 EXT (-zsh)
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
⌥⌘1
DOCKER (-zsh)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.23969415,"height":-0.08060658},"value":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work","is_focused":true},{"role":"AXButton","text":"Menu","depth":3,"bounds":{"left":0.50299203,"top":1.0,"width":0.004986702,"height":-0.06424582},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥1 DOCKER (-zsh)","depth":3,"bounds":{"left":0.27925533,"top":1.0,"width":0.22207446,"height":-0.06464481},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5103058,"top":1.0,"width":0.2400266,"height":-0.08060658},"value":"Last login: Mon Apr 20 19:47:56 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.74335104,"top":1.0,"width":0.004986702,"height":-0.06424582},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥2 PROD (-zsh)","depth":4,"bounds":{"left":0.5192819,"top":1.0,"width":0.22240691,"height":-0.06464481},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:03 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Mon Apr 20 19:48:03 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥3 EU (-zsh)","depth":4,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥4 STAGE (-zsh)","depth":4,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Mon Apr 20 19:48:04 on ttys002\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥5 QA (-zsh)","depth":4,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Mon Apr 20 19:48:04 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥6 FE (-zsh)","depth":4,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:48:04 on ttys005\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Mon Apr 20 19:48:04 on ttys005\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥7 EXT (-zsh)","depth":4,"role_description":"text"},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.0674867,"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.33776596,"top":1.0,"width":0.0674867,"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.33976063,"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.40525267,"top":1.0,"width":0.0674867,"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.40724733,"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 (node)","depth":2,"bounds":{"left":0.47273937,"top":1.0,"width":0.0674867,"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.47473404,"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.54022604,"top":1.0,"width":0.0674867,"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.5422208,"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.60771275,"top":1.0,"width":0.06732048,"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.6097075,"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.6750333,"top":1.0,"width":0.06732048,"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.67702794,"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.7287234,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DOCKER (-zsh)","depth":1,"bounds":{"left":0.49301863,"top":1.0,"width":0.034242023,"height":-0.02394259},"role_description":"text"}]...
|
-5618287936463319477
|
-1043966294775117799
|
app_switch
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:47:56 on console
Poetry Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work
Menu
⌥1 DOCKER (-zsh)
Last login: Mon Apr 20 19:47:56 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥2 PROD (-zsh)
Last login: Mon Apr 20 19:48:03 on ttys001
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥3 EU (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥4 STAGE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys002
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥5 QA (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys004
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥6 FE (-zsh)
Last login: Mon Apr 20 19:48:04 on ttys005
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥7 EXT (-zsh)
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
⌥⌘1
DOCKER (-zsh)...
|
NULL
|
|
60820
|
1310
|
41
|
2026-04-21T06:19:52.245176+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752392245_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Tue Apr 21 09:09:08 on ttys010
Poetry Last login: Tue Apr 21 09:09:08 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 ~ $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
9.5G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ~/.screenpipe/*
cd: too many arguments
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
5.2G /Users/lukas/.screenpipe/data
4.3G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
204K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
64K /Users/lukas/.screenpipe/screenpipe.2026-04-18.0.log
352K /Users/lukas/.screenpipe/screenpipe.2026-04-20.0.log
16K /Users/lukas/.screenpipe/screenpipe.2026-04-21.0.log
16K /Users/lukas/.screenpipe/screenpipe_sync.sh
24K /Users/lukas/.screenpipe/sync.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data/data/2026-04-20
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $ ll
total 1028152
drwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 .
drwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..
-rw-r--r-- 1 lukas staff 693554 20 Apr 09:20 compact_monitor_1_1776666027568.mp4
-rw-r--r-- 1 lukas staff 2292711 20 Apr 09:25 compact_monitor_1_1776666335423.mp4
-rw-r--r-- 1 lukas staff 3373751 20 Apr 09:30 compact_monitor_1_1776666644694.mp4
-rw-r--r-- 1 lukas staff 1141798 20 Apr 09:36 compact_monitor_1_1776666964111.mp4
-rw-r--r-- 1 lukas staff 1116735 20 Apr 09:41 compact_monitor_1_1776667280362.mp4
-rw-r--r-- 1 lukas staff 312074 20 Apr 09:46 compact_monitor_1_1776667610890.mp4
-rw-r--r-- 1 lukas staff 2540109 20 Apr 09:52 compact_monitor_1_1776667932459.mp4
-rw-r--r-- 1 lukas staff 4258007 20 Apr 09:58 compact_monitor_1_1776668266614.mp4
-rw-r--r-- 1 lukas staff 3672899 20 Apr 10:03 compact_monitor_1_1776668602756.mp4
-rw-r--r-- 1 lukas staff 6736829 20 Apr 10:18 compact_monitor_1_1776669493360.mp4
-rw-r--r-- 1 lukas staff 515278 20 Apr 10:28 compact_monitor_1_1776670108337.mp4
-rw-r--r-- 1 lukas staff 4563425 20 Apr 10:33 compact_monitor_1_1776670414205.mp4
-rw-r--r-- 1 lukas staff 2773923 20 Apr 10:38 compact_monitor_1_1776670720980.mp4
-rw-r--r-- 1 lukas staff 144316 20 Apr 10:43 compact_monitor_1_1776671028184.mp4
-rw-r--r-- 1 lukas staff 114593 20 Apr 10:48 compact_monitor_1_1776671337226.mp4
-rw-r--r-- 1 lukas staff 84061 20 Apr 10:54 compact_monitor_1_1776671645099.mp4
-rw-r--r-- 1 lukas staff 138837 20 Apr 10:59 compact_monitor_1_1776671948570.mp4
-rw-r--r-- 1 lukas staff 922928 20 Apr 11:04 compact_monitor_1_1776672259288.mp4
-rw-r--r-- 1 lukas staff 202502 20 Apr 11:09 compact_monitor_1_1776672573034.mp4
-rw-r--r-- 1 lukas staff 161221 20 Apr 11:14 compact_monitor_1_1776672880999.mp4
-rw-r--r-- 1 lukas staff 722270 20 Apr 11:19 compact_monitor_1_1776673195531.mp4
-rw-r--r-- 1 lukas staff 927507 20 Apr 11:25 compact_monitor_1_1776673511487.mp4
-rw-r--r-- 1 lukas staff 1946362 20 Apr 11:30 compact_monitor_1_1776673825191.mp4
-rw-r--r-- 1 lukas staff 2262449 20 Apr 11:35 compact_monitor_1_1776674135008.mp4
-rw-r--r-- 1 lukas staff 2673064 20 Apr 11:40 compact_monitor_1_1776674443695.mp4
-rw-r--r-- 1 lukas staff 3385935 20 Apr 11:45 compact_monitor_1_1776674753075.mp4
-rw-r--r-- 1 lukas staff 3970196 20 Apr 11:51 compact_monitor_1_1776675069567.mp4
-rw-r--r-- 1 lukas staff 180069 20 Apr 11:51 compact_monitor_1_1776675080259.mp4
-rw-r--r-- 1 lukas staff 183982 20 Apr 11:56 compact_monitor_1_1776675388576.mp4
-rw-r--r-- 1 lukas staff 2412845 20 Apr 12:01 compact_monitor_1_1776675694882.mp4
-rw-r--r-- 1 lukas staff 1852048 20 Apr 12:06 compact_monitor_1_1776676010514.mp4
-rw-r--r-- 1 lukas staff 4474440 20 Apr 12:11 compact_monitor_1_1776676315785.mp4
-rw-r--r-- 1 lukas staff 3041244 20 Apr 12:17 compact_monitor_1_1776676624932.mp4
-rw-r--r-- 1 lukas staff 953703 20 Apr 12:22 compact_monitor_1_1776676935457.mp4
-rw-r--r-- 1 lukas staff 204639 20 Apr 12:27 compact_monitor_1_1776677243573.mp4
-rw-r--r-- 1 lukas staff 1047573 20 Apr 12:32 compact_monitor_1_1776677555968.mp4
-rw-r--r-- 1 lukas staff 410146 20 Apr 12:37 compact_monitor_1_1776677869651.mp4
-rw-r--r-- 1 lukas staff 1097017 20 Apr 12:43 compact_monitor_1_1776678179263.mp4
-rw-r--r-- 1 lukas staff 649528 20 Apr 12:48 compact_monitor_1_1776678488504.mp4
-rw-r--r-- 1 lukas staff 620278 20 Apr 12:53 compact_monitor_1_1776678801739.mp4
-rw-r--r-- 1 lukas staff 1497201 20 Apr 12:58 compact_monitor_1_1776679110088.mp4
-rw-r--r-- 1 lukas staff 434578 20 Apr 13:03 compact_monitor_1_1776679419906.mp4
-rw-r--r-- 1 lukas staff 341751 20 Apr 13:08 compact_monitor_1_1776679730068.mp4
-rw-r--r-- 1 lukas staff 346717 20 Apr 13:14 compact_monitor_1_1776680038703.mp4
-rw-r--r-- 1 lukas staff 340310 20 Apr 13:19 compact_monitor_1_1776680350917.mp4
-rw-r--r-- 1 lukas staff 432905 20 Apr 13:40 compact_monitor_1_1776681603125.mp4
-rw-r--r-- 1 lukas staff 1500908 20 Apr 13:50 compact_monitor_1_1776682206178.mp4
-rw-r--r-- 1 lukas staff 1146740 20 Apr 13:55 compact_monitor_1_1776682513428.mp4
-rw-r--r-- 1 lukas staff 634904 20 Apr 14:00 compact_monitor_1_1776682818338.mp4
-rw-r--r-- 1 lukas staff 1582832 20 Apr 14:05 compact_monitor_1_1776683127297.mp4
-rw-r--r-- 1 lukas staff 144970 20 Apr 14:10 compact_monitor_1_1776683431892.mp4
-rw-r--r-- 1 lukas staff 145139 20 Apr 14:15 compact_monitor_1_1776683738252.mp4
-rw-r--r-- 1 lukas staff 2321625 20 Apr 14:20 compact_monitor_1_1776684048360.mp4
-rw-r--r-- 1 lukas staff 3285900 20 Apr 14:26 compact_monitor_1_1776684358328.mp4
-rw-r--r-- 1 lukas staff 2180592 20 Apr 14:31 compact_monitor_1_1776684672448.mp4
-rw-r--r-- 1 lukas staff 1008178 20 Apr 14:36 compact_monitor_1_1776684985706.mp4
-rw-r--r-- 1 lukas staff 6232717 20 Apr 14:41 compact_monitor_1_1776685289456.mp4
-rw-r--r-- 1 lukas staff 1201267 20 Apr 14:46 compact_monitor_1_1776685609078.mp4
-rw-r--r-- 1 lukas staff 697069 20 Apr 14:52 compact_monitor_1_1776685924555.mp4
-rw-r--r-- 1 lukas staff 4205892 20 Apr 14:57 compact_monitor_1_1776686234752.mp4
-rw-r--r-- 1 lukas staff 1734015 20 Apr 15:02 compact_monitor_1_1776686548275.mp4
-rw-r--r-- 1 lukas staff 742602 20 Apr 15:07 compact_monitor_1_1776686874783.mp4
-rw-r--r-- 1 lukas staff 5624641 20 Apr 15:13 compact_monitor_1_1776687183276.mp4
-rw-r--r-- 1 lukas staff 5148295 20 Apr 15:18 compact_monitor_1_1776687502643.mp4
-rw-r--r-- 1 lukas staff 3357773 20 Apr 15:23 compact_monitor_1_1776687821494.mp4
-rw-r--r-- 1 lukas staff 4647742 20 Apr 15:28 compact_monitor_1_1776688128104.mp4
-rw-r--r-- 1 lukas staff 5124594 20 Apr 15:34 compact_monitor_1_1776688435924.mp4
-rw-r--r-- 1 lukas staff 3299421 20 Apr 15:39 compact_monitor_1_1776688745956.mp4
-rw-r--r-- 1 lukas staff 2438350 20 Apr 15:44 compact_monitor_1_1776689051698.mp4
-rw-r--r-- 1 lukas staff 2544311 20 Apr 15:49 compact_monitor_1_1776689358807.mp4
-rw-r--r-- 1 lukas staff 4934970 20 Apr 15:54 compact_monitor_1_1776689666677.mp4
-rw-r--r-- 1 lukas staff 3876837 20 Apr 15:59 compact_monitor_1_1776689975475.mp4
-rw-r--r-- 1 lukas staff 4939907 20 Apr 16:04 compact_monitor_1_1776690284639.mp4
-rw-r--r-- 1 lukas staff 5387913 20 Apr 16:10 compact_monitor_1_1776690597076.mp4
-rw-r--r-- 1 lukas staff 5918302 20 Apr 16:15 compact_monitor_1_1776690904422.mp4
-rw-r--r-- 1 lukas staff 3763719 20 Apr 16:20 compact_monitor_1_1776691212778.mp4
-rw-r--r-- 1 lukas staff 2668710 20 Apr 16:25 compact_monitor_1_1776691518074.mp4
-rw-r--r-- 1 lukas staff 1343489 20 Apr 16:30 compact_monitor_1_1776691827057.mp4
-rw-r--r-- 1 lukas staff 2669705 20 Apr 16:35 compact_monitor_1_1776692135254.mp4
-rw-r--r-- 1 lukas staff 3572963 20 Apr 16:40 compact_monitor_1_1776692442143.mp4
-rw-r--r-- 1 lukas staff 4745615 20 Apr 16:45 compact_monitor_1_1776692748574.mp4
-rw-r--r-- 1 lukas staff 3651920 20 Apr 16:51 compact_monitor_1_1776693058709.mp4
-rw-r--r-- 1 lukas staff 2336269 20 Apr 16:56 compact_monitor_1_1776693372981.mp4
-rw-r--r-- 1 lukas staff 3422245 20 Apr 17:01 compact_monitor_1_1776693680907.mp4
-rw-r--r-- 1 lukas staff 6584256 20 Apr 17:06 compact_monitor_1_1776693988164.mp4
-rw-r--r-- 1 lukas staff 6800476 20 Apr 17:11 compact_monitor_1_1776694300969.mp4
-rw-r--r-- 1 lukas staff 859311 20 Apr 17:16 compact_monitor_1_1776694607311.mp4
-rw-r--r-- 1 lukas staff 1991675 20 Apr 17:21 compact_monitor_1_1776694910016.mp4
-rw-r--r-- 1 lukas staff 670169 20 Apr 18:17 compact_monitor_1_1776698266692.mp4
-rw-r--r-- 1 lukas staff 2064979 20 Apr 18:27 compact_monitor_1_1776698875029.mp4
-rw-r--r-- 1 lukas staff 1765910 20 Apr 18:33 compact_monitor_1_1776699180706.mp4
-rw-r--r-- 1 lukas staff 1832195 20 Apr 18:38 compact_monitor_1_1776699488879.mp4
-rw-r--r-- 1 lukas staff 532237 20 Apr 18:43 compact_monitor_1_1776699797513.mp4
-rw-r--r-- 1 lukas staff 354899 20 Apr 18:47 compact_monitor_1_1776700038195.mp4
-rw-r--r-- 1 lukas staff 426016 20 Apr 18:52 compact_monitor_1_1776700345586.mp4
-rw-r--r-- 1 lukas staff 1502142 21 Apr 09:10 compact_monitor_1_1776751830793.mp4
-rw-r--r-- 1 lukas staff 1151283 20 Apr 09:20 compact_monitor_2_1776666028589.mp4
-rw-r--r-- 1 lukas staff 3922416 20 Apr 09:25 compact_monitor_2_1776666337400.mp4
-rw-r--r-- 1 lukas staff 6099157 20 Apr 09:31 compact_monitor_2_1776666649455.mp4
-rw-r--r-- 1 lukas staff 4465951 20 Apr 09:36 compact_monitor_2_1776666967290.mp4
-rw-r--r-- 1 lukas staff 3546165 20 Apr 09:41 compact_monitor_2_1776667285800.mp4
-rw-r--r-- 1 lukas staff 1917417 20 Apr 09:47 compact_monitor_2_1776667615139.mp4
-rw-r--r-- 1 lukas staff 2954961 20 Apr 09:52 compact_monitor_2_1776667943132.mp4
-rw-r--r-- 1 lukas staff 1934343 20 Apr 09:58 compact_monitor_2_1776668283739.mp4
-rw-r--r-- 1 lukas staff 1177513 20 Apr 10:03 compact_monitor_2_1776668620257.mp4
-rw-r--r-- 1 lukas staff 2147789 20 Apr 10:18 compact_monitor_2_1776669498937.mp4
-rw-r--r-- 1 lukas staff 740309 20 Apr 10:28 compact_monitor_2_1776670109608.mp4
-rw-r--r-- 1 lukas staff 3567504 20 Apr 10:33 compact_monitor_2_1776670417134.mp4
-rw-r--r-- 1 lukas staff 2982135 20 Apr 10:38 compact_monitor_2_1776670723346.mp4
-rw-r--r-- 1 lukas staff 3348097 20 Apr 10:43 compact_monitor_2_1776671030235.mp4
-rw-r--r-- 1 lukas staff 2837678 20 Apr 10:49 compact_monitor_2_1776671338266.mp4
-rw-r--r-- 1 lukas staff 2233867 20 Apr 10:54 compact_monitor_2_1776671646503.mp4
-rw-r--r-- 1 lukas staff 4947326 20 Apr 10:59 compact_monitor_2_1776671950567.mp4
-rw-r--r-- 1 lukas staff 5266402 20 Apr 11:04 compact_monitor_2_1776672263365.mp4
-rw-r--r-- 1 lukas staff 3801403 20 Apr 11:09 compact_monitor_2_1776672575558.mp4
-rw-r--r-- 1 lukas staff 6986490 20 Apr 11:14 compact_monitor_2_1776672883717.mp4
-rw-r--r-- 1 lukas staff 6043634 20 Apr 11:20 compact_monitor_2_1776673199069.mp4
-rw-r--r-- 1 lukas staff 3820880 20 Apr 11:25 compact_monitor_2_1776673514302.mp4
-rw-r--r-- 1 lukas staff 6492119 20 Apr 11:30 compact_monitor_2_1776673828645.mp4
-rw-r--r-- 1 lukas staff 3132510 20 Apr 11:35 compact_monitor_2_1776674137449.mp4
-rw-r--r-- 1 lukas staff 3612810 20 Apr 11:40 compact_monitor_2_1776674447649.mp4
-rw-r--r-- 1 lukas staff 4349270 20 Apr 11:46 compact_monitor_2_1776674758735.mp4
-rw-r--r-- 1 lukas staff 2397151 20 Apr 11:51 compact_monitor_2_1776675081239.mp4
-rw-r--r-- 1 lukas staff 2608050 20 Apr 11:56 compact_monitor_2_1776675389836.mp4
-rw-r--r-- 1 lukas staff 4271268 20 Apr 12:01 compact_monitor_2_1776675697375.mp4
-rw-r--r-- 1 lukas staff 2737153 20 Apr 12:06 compact_monitor_2_1776676012452.mp4
-rw-r--r-- 1 lukas staff 6545978 20 Apr 12:12 compact_monitor_2_1776676319355.mp4
-rw-r--r-- 1 lukas staff 2249881 20 Apr 12:17 compact_monitor_2_1776676627546.mp4
-rw-r--r-- 1 lukas staff 1995078 20 Apr 12:22 compact_monitor_2_1776676937565.mp4
-rw-r--r-- 1 lukas staff 3219551 20 Apr 12:27 compact_monitor_2_1776677245735.mp4
-rw-r--r-- 1 lukas staff 4294306 20 Apr 12:32 compact_monitor_2_1776677559935.mp4
-rw-r--r-- 1 lukas staff 4436497 20 Apr 12:37 compact_monitor_2_1776677872661.mp4
-rw-r--r-- 1 lukas staff 2697561 20 Apr 12:43 compact_monitor_2_1776678182031.mp4
-rw-r--r-- 1 lukas staff 2771589 20 Apr 12:48 compact_monitor_2_1776678492118.mp4
-rw-r--r-- 1 lukas staff 6696423 20 Apr 12:53 compact_monitor_2_1776678803761.mp4
-rw-r--r-- 1 lukas staff 5464611 20 Apr 12:58 compact_monitor_2_1776679111812.mp4
-rw-r--r-- 1 lukas staff 7181188 20 Apr 13:03 compact_monitor_2_1776679423402.mp4
-rw-r--r-- 1 lukas staff 5123182 20 Apr 13:08 compact_monitor_2_1776679731833.mp4
-rw-r--r-- 1 lukas staff 5654139 20 Apr 13:14 compact_monitor_2_1776680041318.mp4
-rw-r--r-- 1 lukas staff 3710649 20 Apr 13:19 compact_monitor_2_1776680352572.mp4
-rw-r--r-- 1 lukas staff 637175 20 Apr 13:40 compact_monitor_2_1776681604586.mp4
-rw-r--r-- 1 lukas staff 1331158 20 Apr 13:50 compact_monitor_2_1776682207482.mp4
-rw-r--r-- 1 lukas staff 2470366 20 Apr 13:55 compact_monitor_2_1776682515468.mp4
-rw-r--r-- 1 lukas staff 3743514 20 Apr 14:00 compact_monitor_2_1776682820185.mp4
-rw-r--r-- 1 lukas staff 1845046 20 Apr 14:05 compact_monitor_2_1776683129378.mp4
-rw-r--r-- 1 lukas staff 4349352 20 Apr 14:10 compact_monitor_2_1776683433639.mp4
-rw-r--r-- 1 lukas staff 6169839 20 Apr 14:15 compact_monitor_2_1776683740511.mp4
-rw-r--r-- 1 lukas staff 7618797 20 Apr 14:20 compact_monitor_2_1776684052092.mp4
-rw-r--r-- 1 lukas staff 5221568 20 Apr 14:26 compact_monitor_2_1776684362336.mp4
-rw-r--r-- 1 lukas staff 4891906 20 Apr 14:31 compact_monitor_2_1776684674762.mp4
-rw-r--r-- 1 lukas staff 705871 20 Apr 14:36 compact_monitor_2_1776684986928.mp4
-rw-r--r-- 1 lukas staff 3797177 20 Apr 14:41 compact_monitor_2_1776685297300.mp4
-rw-r--r-- 1 lukas staff 5206650 20 Apr 14:46 compact_monitor_2_1776685613835.mp4
-rw-r--r-- 1 lukas staff 3560709 20 Apr 14:52 compact_monitor_2_1776685927877.mp4
-rw-r--r-- 1 lukas staff 3054774 20 Apr 14:57 compact_monitor_2_1776686237953.mp4
-rw-r--r-- 1 lukas staff 5624059 20 Apr 15:02 compact_monitor_2_1776686554842.mp4
-rw-r--r-- 1 lukas staff 981456 20 Apr 15:02 compact_monitor_2_1776686566986.mp4
-rw-r--r-- 1 lukas staff 3813865 20 Apr 15:08 compact_monitor_2_1776686877747.mp4
-rw-r--r-- 1 lukas staff 4434608 20 Apr 15:13 compact_monitor_2_1776687192583.mp4
-rw-r--r-- 1 lukas staff 1912795 20 Apr 15:18 compact_monitor_2_1776687512417.mp4
-rw-r--r-- 1 lukas staff 362639 20 Apr 15:23 compact_monitor_2_1776687826917.mp4
-rw-r--r-- 1 lukas staff 2587214 20 Apr 15:28 compact_monitor_2_1776688132900.mp4
-rw-r--r-- 1 lukas staff 4444884 20 Apr 15:34 compact_monitor_2_1776688441330.mp4
-rw-r--r-- 1 lukas staff 2273805 20 Apr 15:39 compact_monitor_2_1776688749248.mp4
-rw-r--r-- 1 lukas staff 1472500 20 Apr 15:44 compact_monitor_2_1776689055232.mp4
-rw-r--r-- 1 lukas staff 773818 20 Apr 15:49 compact_monitor_2_1776689362170.mp4
-rw-r--r-- 1 lukas staff 2559460 20 Apr 15:54 compact_monitor_2_1776689672041.mp4
-rw-r--r-- 1 lukas staff 2344294 20 Apr 15:59 compact_monitor_2_1776689979563.mp4
-rw-r--r-- 1 lukas staff 4007787 20 Apr 16:04 compact_monitor_2_1776690291326.mp4
-rw-r--r-- 1 lukas staff 1819239 20 Apr 16:10 compact_monitor_2_1776690601791.mp4
-rw-r--r-- 1 lukas staff 2353532 20 Apr 16:15 compact_monitor_2_1776690909468.mp4
-rw-r--r-- 1 lukas staff 838923 20 Apr 16:20 compact_monitor_2_1776691216464.mp4
-rw-r--r-- 1 lukas staff 392421 20 Apr 16:25 compact_monitor_2_1776691524797.mp4
-rw-r--r-- 1 lukas staff 419825 20 Apr 16:30 compact_monitor_2_1776691830343.mp4
-rw-r--r-- 1 lukas staff 1311278 20 Apr 16:35 compact_monitor_2_1776692138776.mp4
-rw-r--r-- 1 lukas staff 2113227 20 Apr 16:40 compact_monitor_2_1776692445996.mp4
-rw-r--r-- 1 lukas staff 2836435 20 Apr 16:45 compact_monitor_2_1776692753037.mp4
-rw-r--r-- 1 lukas staff 896192 20 Apr 16:51 compact_monitor_2_1776693062948.mp4
-rw-r--r-- 1 lukas staff 430668 20 Apr 16:56 compact_monitor_2_1776693378064.mp4
-rw-r--r-- 1 lukas staff 5400273 20 Apr 17:01 compact_monitor_2_1776693684394.mp4
-rw-r--r-- 1 lukas staff 11097706 20 Apr 17:06 compact_monitor_2_1776693994199.mp4
-rw-r--r-- 1 lukas staff 2777663 20 Apr 17:11 compact_monitor_2_1776694304409.mp4
-rw-r--r-- 1 lukas staff 1170557 20 Apr 17:16 compact_monitor_2_1776694608505.mp4
-rw-r--r-- 1 lukas staff 1670866 20 Apr 17:21 compact_monitor_2_1776694911248.mp4
-rw-r--r-- 1 lukas staff 894067 20 Apr 18:17 compact_monitor_2_1776698268984.mp4
-rw-r--r-- 1 lukas staff 145618 20 Apr 18:27 compact_monitor_2_1776698876572.mp4
-rw-r--r-- 1 lukas staff 3307440 20 Apr 18:33 compact_monitor_2_1776699183611.mp4
-rw-r--r-- 1 lukas staff 3178239 20 Apr 18:38 compact_monitor_2_1776699492586.mp4
-rw-r--r-- 1 lukas staff 4180957 20 Apr 18:43 compact_monitor_2_1776699800287.mp4
-rw-r--r-- 1 lukas staff 2802374 20 Apr 18:47 compact_monitor_2_1776700041626.mp4
-rw-r--r-- 1 lukas staff 3153626 20 Apr 18:52 compact_monitor_2_1776700348038.mp4
-rw-r--r-- 1 lukas staff 755181 21 Apr 09:10 compact_monitor_2_1776751832783.mp4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Tue Apr 21 09:09:08 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 ~ $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe \n9.5G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ~/.screenpipe/* \ncd: too many arguments\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n5.2G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n4.3G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n 16M\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\n 16K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-21.0.log\n 16K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe_sync.sh\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data/data/2026-04-20\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $ ll\ntotal 1028152\ndrwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 .\ndrwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..\n-rw-r--r-- 1 lukas staff 693554 20 Apr 09:20 compact_monitor_1_1776666027568.mp4\n-rw-r--r-- 1 lukas staff 2292711 20 Apr 09:25 compact_monitor_1_1776666335423.mp4\n-rw-r--r-- 1 lukas staff 3373751 20 Apr 09:30 compact_monitor_1_1776666644694.mp4\n-rw-r--r-- 1 lukas staff 1141798 20 Apr 09:36 compact_monitor_1_1776666964111.mp4\n-rw-r--r-- 1 lukas staff 1116735 20 Apr 09:41 compact_monitor_1_1776667280362.mp4\n-rw-r--r-- 1 lukas staff 312074 20 Apr 09:46 compact_monitor_1_1776667610890.mp4\n-rw-r--r-- 1 lukas staff 2540109 20 Apr 09:52 compact_monitor_1_1776667932459.mp4\n-rw-r--r-- 1 lukas staff 4258007 20 Apr 09:58 compact_monitor_1_1776668266614.mp4\n-rw-r--r-- 1 lukas staff 3672899 20 Apr 10:03 compact_monitor_1_1776668602756.mp4\n-rw-r--r-- 1 lukas staff 6736829 20 Apr 10:18 compact_monitor_1_1776669493360.mp4\n-rw-r--r-- 1 lukas staff 515278 20 Apr 10:28 compact_monitor_1_1776670108337.mp4\n-rw-r--r-- 1 lukas staff 4563425 20 Apr 10:33 compact_monitor_1_1776670414205.mp4\n-rw-r--r-- 1 lukas staff 2773923 20 Apr 10:38 compact_monitor_1_1776670720980.mp4\n-rw-r--r-- 1 lukas staff 144316 20 Apr 10:43 compact_monitor_1_1776671028184.mp4\n-rw-r--r-- 1 lukas staff 114593 20 Apr 10:48 compact_monitor_1_1776671337226.mp4\n-rw-r--r-- 1 lukas staff 84061 20 Apr 10:54 compact_monitor_1_1776671645099.mp4\n-rw-r--r-- 1 lukas staff 138837 20 Apr 10:59 compact_monitor_1_1776671948570.mp4\n-rw-r--r-- 1 lukas staff 922928 20 Apr 11:04 compact_monitor_1_1776672259288.mp4\n-rw-r--r-- 1 lukas staff 202502 20 Apr 11:09 compact_monitor_1_1776672573034.mp4\n-rw-r--r-- 1 lukas staff 161221 20 Apr 11:14 compact_monitor_1_1776672880999.mp4\n-rw-r--r-- 1 lukas staff 722270 20 Apr 11:19 compact_monitor_1_1776673195531.mp4\n-rw-r--r-- 1 lukas staff 927507 20 Apr 11:25 compact_monitor_1_1776673511487.mp4\n-rw-r--r-- 1 lukas staff 1946362 20 Apr 11:30 compact_monitor_1_1776673825191.mp4\n-rw-r--r-- 1 lukas staff 2262449 20 Apr 11:35 compact_monitor_1_1776674135008.mp4\n-rw-r--r-- 1 lukas staff 2673064 20 Apr 11:40 compact_monitor_1_1776674443695.mp4\n-rw-r--r-- 1 lukas staff 3385935 20 Apr 11:45 compact_monitor_1_1776674753075.mp4\n-rw-r--r-- 1 lukas staff 3970196 20 Apr 11:51 compact_monitor_1_1776675069567.mp4\n-rw-r--r-- 1 lukas staff 180069 20 Apr 11:51 compact_monitor_1_1776675080259.mp4\n-rw-r--r-- 1 lukas staff 183982 20 Apr 11:56 compact_monitor_1_1776675388576.mp4\n-rw-r--r-- 1 lukas staff 2412845 20 Apr 12:01 compact_monitor_1_1776675694882.mp4\n-rw-r--r-- 1 lukas staff 1852048 20 Apr 12:06 compact_monitor_1_1776676010514.mp4\n-rw-r--r-- 1 lukas staff 4474440 20 Apr 12:11 compact_monitor_1_1776676315785.mp4\n-rw-r--r-- 1 lukas staff 3041244 20 Apr 12:17 compact_monitor_1_1776676624932.mp4\n-rw-r--r-- 1 lukas staff 953703 20 Apr 12:22 compact_monitor_1_1776676935457.mp4\n-rw-r--r-- 1 lukas staff 204639 20 Apr 12:27 compact_monitor_1_1776677243573.mp4\n-rw-r--r-- 1 lukas staff 1047573 20 Apr 12:32 compact_monitor_1_1776677555968.mp4\n-rw-r--r-- 1 lukas staff 410146 20 Apr 12:37 compact_monitor_1_1776677869651.mp4\n-rw-r--r-- 1 lukas staff 1097017 20 Apr 12:43 compact_monitor_1_1776678179263.mp4\n-rw-r--r-- 1 lukas staff 649528 20 Apr 12:48 compact_monitor_1_1776678488504.mp4\n-rw-r--r-- 1 lukas staff 620278 20 Apr 12:53 compact_monitor_1_1776678801739.mp4\n-rw-r--r-- 1 lukas staff 1497201 20 Apr 12:58 compact_monitor_1_1776679110088.mp4\n-rw-r--r-- 1 lukas staff 434578 20 Apr 13:03 compact_monitor_1_1776679419906.mp4\n-rw-r--r-- 1 lukas staff 341751 20 Apr 13:08 compact_monitor_1_1776679730068.mp4\n-rw-r--r-- 1 lukas staff 346717 20 Apr 13:14 compact_monitor_1_1776680038703.mp4\n-rw-r--r-- 1 lukas staff 340310 20 Apr 13:19 compact_monitor_1_1776680350917.mp4\n-rw-r--r-- 1 lukas staff 432905 20 Apr 13:40 compact_monitor_1_1776681603125.mp4\n-rw-r--r-- 1 lukas staff 1500908 20 Apr 13:50 compact_monitor_1_1776682206178.mp4\n-rw-r--r-- 1 lukas staff 1146740 20 Apr 13:55 compact_monitor_1_1776682513428.mp4\n-rw-r--r-- 1 lukas staff 634904 20 Apr 14:00 compact_monitor_1_1776682818338.mp4\n-rw-r--r-- 1 lukas staff 1582832 20 Apr 14:05 compact_monitor_1_1776683127297.mp4\n-rw-r--r-- 1 lukas staff 144970 20 Apr 14:10 compact_monitor_1_1776683431892.mp4\n-rw-r--r-- 1 lukas staff 145139 20 Apr 14:15 compact_monitor_1_1776683738252.mp4\n-rw-r--r-- 1 lukas staff 2321625 20 Apr 14:20 compact_monitor_1_1776684048360.mp4\n-rw-r--r-- 1 lukas staff 3285900 20 Apr 14:26 compact_monitor_1_1776684358328.mp4\n-rw-r--r-- 1 lukas staff 2180592 20 Apr 14:31 compact_monitor_1_1776684672448.mp4\n-rw-r--r-- 1 lukas staff 1008178 20 Apr 14:36 compact_monitor_1_1776684985706.mp4\n-rw-r--r-- 1 lukas staff 6232717 20 Apr 14:41 compact_monitor_1_1776685289456.mp4\n-rw-r--r-- 1 lukas staff 1201267 20 Apr 14:46 compact_monitor_1_1776685609078.mp4\n-rw-r--r-- 1 lukas staff 697069 20 Apr 14:52 compact_monitor_1_1776685924555.mp4\n-rw-r--r-- 1 lukas staff 4205892 20 Apr 14:57 compact_monitor_1_1776686234752.mp4\n-rw-r--r-- 1 lukas staff 1734015 20 Apr 15:02 compact_monitor_1_1776686548275.mp4\n-rw-r--r-- 1 lukas staff 742602 20 Apr 15:07 compact_monitor_1_1776686874783.mp4\n-rw-r--r-- 1 lukas staff 5624641 20 Apr 15:13 compact_monitor_1_1776687183276.mp4\n-rw-r--r-- 1 lukas staff 5148295 20 Apr 15:18 compact_monitor_1_1776687502643.mp4\n-rw-r--r-- 1 lukas staff 3357773 20 Apr 15:23 compact_monitor_1_1776687821494.mp4\n-rw-r--r-- 1 lukas staff 4647742 20 Apr 15:28 compact_monitor_1_1776688128104.mp4\n-rw-r--r-- 1 lukas staff 5124594 20 Apr 15:34 compact_monitor_1_1776688435924.mp4\n-rw-r--r-- 1 lukas staff 3299421 20 Apr 15:39 compact_monitor_1_1776688745956.mp4\n-rw-r--r-- 1 lukas staff 2438350 20 Apr 15:44 compact_monitor_1_1776689051698.mp4\n-rw-r--r-- 1 lukas staff 2544311 20 Apr 15:49 compact_monitor_1_1776689358807.mp4\n-rw-r--r-- 1 lukas staff 4934970 20 Apr 15:54 compact_monitor_1_1776689666677.mp4\n-rw-r--r-- 1 lukas staff 3876837 20 Apr 15:59 compact_monitor_1_1776689975475.mp4\n-rw-r--r-- 1 lukas staff 4939907 20 Apr 16:04 compact_monitor_1_1776690284639.mp4\n-rw-r--r-- 1 lukas staff 5387913 20 Apr 16:10 compact_monitor_1_1776690597076.mp4\n-rw-r--r-- 1 lukas staff 5918302 20 Apr 16:15 compact_monitor_1_1776690904422.mp4\n-rw-r--r-- 1 lukas staff 3763719 20 Apr 16:20 compact_monitor_1_1776691212778.mp4\n-rw-r--r-- 1 lukas staff 2668710 20 Apr 16:25 compact_monitor_1_1776691518074.mp4\n-rw-r--r-- 1 lukas staff 1343489 20 Apr 16:30 compact_monitor_1_1776691827057.mp4\n-rw-r--r-- 1 lukas staff 2669705 20 Apr 16:35 compact_monitor_1_1776692135254.mp4\n-rw-r--r-- 1 lukas staff 3572963 20 Apr 16:40 compact_monitor_1_1776692442143.mp4\n-rw-r--r-- 1 lukas staff 4745615 20 Apr 16:45 compact_monitor_1_1776692748574.mp4\n-rw-r--r-- 1 lukas staff 3651920 20 Apr 16:51 compact_monitor_1_1776693058709.mp4\n-rw-r--r-- 1 lukas staff 2336269 20 Apr 16:56 compact_monitor_1_1776693372981.mp4\n-rw-r--r-- 1 lukas staff 3422245 20 Apr 17:01 compact_monitor_1_1776693680907.mp4\n-rw-r--r-- 1 lukas staff 6584256 20 Apr 17:06 compact_monitor_1_1776693988164.mp4\n-rw-r--r-- 1 lukas staff 6800476 20 Apr 17:11 compact_monitor_1_1776694300969.mp4\n-rw-r--r-- 1 lukas staff 859311 20 Apr 17:16 compact_monitor_1_1776694607311.mp4\n-rw-r--r-- 1 lukas staff 1991675 20 Apr 17:21 compact_monitor_1_1776694910016.mp4\n-rw-r--r-- 1 lukas staff 670169 20 Apr 18:17 compact_monitor_1_1776698266692.mp4\n-rw-r--r-- 1 lukas staff 2064979 20 Apr 18:27 compact_monitor_1_1776698875029.mp4\n-rw-r--r-- 1 lukas staff 1765910 20 Apr 18:33 compact_monitor_1_1776699180706.mp4\n-rw-r--r-- 1 lukas staff 1832195 20 Apr 18:38 compact_monitor_1_1776699488879.mp4\n-rw-r--r-- 1 lukas staff 532237 20 Apr 18:43 compact_monitor_1_1776699797513.mp4\n-rw-r--r-- 1 lukas staff 354899 20 Apr 18:47 compact_monitor_1_1776700038195.mp4\n-rw-r--r-- 1 lukas staff 426016 20 Apr 18:52 compact_monitor_1_1776700345586.mp4\n-rw-r--r-- 1 lukas staff 1502142 21 Apr 09:10 compact_monitor_1_1776751830793.mp4\n-rw-r--r-- 1 lukas staff 1151283 20 Apr 09:20 compact_monitor_2_1776666028589.mp4\n-rw-r--r-- 1 lukas staff 3922416 20 Apr 09:25 compact_monitor_2_1776666337400.mp4\n-rw-r--r-- 1 lukas staff 6099157 20 Apr 09:31 compact_monitor_2_1776666649455.mp4\n-rw-r--r-- 1 lukas staff 4465951 20 Apr 09:36 compact_monitor_2_1776666967290.mp4\n-rw-r--r-- 1 lukas staff 3546165 20 Apr 09:41 compact_monitor_2_1776667285800.mp4\n-rw-r--r-- 1 lukas staff 1917417 20 Apr 09:47 compact_monitor_2_1776667615139.mp4\n-rw-r--r-- 1 lukas staff 2954961 20 Apr 09:52 compact_monitor_2_1776667943132.mp4\n-rw-r--r-- 1 lukas staff 1934343 20 Apr 09:58 compact_monitor_2_1776668283739.mp4\n-rw-r--r-- 1 lukas staff 1177513 20 Apr 10:03 compact_monitor_2_1776668620257.mp4\n-rw-r--r-- 1 lukas staff 2147789 20 Apr 10:18 compact_monitor_2_1776669498937.mp4\n-rw-r--r-- 1 lukas staff 740309 20 Apr 10:28 compact_monitor_2_1776670109608.mp4\n-rw-r--r-- 1 lukas staff 3567504 20 Apr 10:33 compact_monitor_2_1776670417134.mp4\n-rw-r--r-- 1 lukas staff 2982135 20 Apr 10:38 compact_monitor_2_1776670723346.mp4\n-rw-r--r-- 1 lukas staff 3348097 20 Apr 10:43 compact_monitor_2_1776671030235.mp4\n-rw-r--r-- 1 lukas staff 2837678 20 Apr 10:49 compact_monitor_2_1776671338266.mp4\n-rw-r--r-- 1 lukas staff 2233867 20 Apr 10:54 compact_monitor_2_1776671646503.mp4\n-rw-r--r-- 1 lukas staff 4947326 20 Apr 10:59 compact_monitor_2_1776671950567.mp4\n-rw-r--r-- 1 lukas staff 5266402 20 Apr 11:04 compact_monitor_2_1776672263365.mp4\n-rw-r--r-- 1 lukas staff 3801403 20 Apr 11:09 compact_monitor_2_1776672575558.mp4\n-rw-r--r-- 1 lukas staff 6986490 20 Apr 11:14 compact_monitor_2_1776672883717.mp4\n-rw-r--r-- 1 lukas staff 6043634 20 Apr 11:20 compact_monitor_2_1776673199069.mp4\n-rw-r--r-- 1 lukas staff 3820880 20 Apr 11:25 compact_monitor_2_1776673514302.mp4\n-rw-r--r-- 1 lukas staff 6492119 20 Apr 11:30 compact_monitor_2_1776673828645.mp4\n-rw-r--r-- 1 lukas staff 3132510 20 Apr 11:35 compact_monitor_2_1776674137449.mp4\n-rw-r--r-- 1 lukas staff 3612810 20 Apr 11:40 compact_monitor_2_1776674447649.mp4\n-rw-r--r-- 1 lukas staff 4349270 20 Apr 11:46 compact_monitor_2_1776674758735.mp4\n-rw-r--r-- 1 lukas staff 2397151 20 Apr 11:51 compact_monitor_2_1776675081239.mp4\n-rw-r--r-- 1 lukas staff 2608050 20 Apr 11:56 compact_monitor_2_1776675389836.mp4\n-rw-r--r-- 1 lukas staff 4271268 20 Apr 12:01 compact_monitor_2_1776675697375.mp4\n-rw-r--r-- 1 lukas staff 2737153 20 Apr 12:06 compact_monitor_2_1776676012452.mp4\n-rw-r--r-- 1 lukas staff 6545978 20 Apr 12:12 compact_monitor_2_1776676319355.mp4\n-rw-r--r-- 1 lukas staff 2249881 20 Apr 12:17 compact_monitor_2_1776676627546.mp4\n-rw-r--r-- 1 lukas staff 1995078 20 Apr 12:22 compact_monitor_2_1776676937565.mp4\n-rw-r--r-- 1 lukas staff 3219551 20 Apr 12:27 compact_monitor_2_1776677245735.mp4\n-rw-r--r-- 1 lukas staff 4294306 20 Apr 12:32 compact_monitor_2_1776677559935.mp4\n-rw-r--r-- 1 lukas staff 4436497 20 Apr 12:37 compact_monitor_2_1776677872661.mp4\n-rw-r--r-- 1 lukas staff 2697561 20 Apr 12:43 compact_monitor_2_1776678182031.mp4\n-rw-r--r-- 1 lukas staff 2771589 20 Apr 12:48 compact_monitor_2_1776678492118.mp4\n-rw-r--r-- 1 lukas staff 6696423 20 Apr 12:53 compact_monitor_2_1776678803761.mp4\n-rw-r--r-- 1 lukas staff 5464611 20 Apr 12:58 compact_monitor_2_1776679111812.mp4\n-rw-r--r-- 1 lukas staff 7181188 20 Apr 13:03 compact_monitor_2_1776679423402.mp4\n-rw-r--r-- 1 lukas staff 5123182 20 Apr 13:08 compact_monitor_2_1776679731833.mp4\n-rw-r--r-- 1 lukas staff 5654139 20 Apr 13:14 compact_monitor_2_1776680041318.mp4\n-rw-r--r-- 1 lukas staff 3710649 20 Apr 13:19 compact_monitor_2_1776680352572.mp4\n-rw-r--r-- 1 lukas staff 637175 20 Apr 13:40 compact_monitor_2_1776681604586.mp4\n-rw-r--r-- 1 lukas staff 1331158 20 Apr 13:50 compact_monitor_2_1776682207482.mp4\n-rw-r--r-- 1 lukas staff 2470366 20 Apr 13:55 compact_monitor_2_1776682515468.mp4\n-rw-r--r-- 1 lukas staff 3743514 20 Apr 14:00 compact_monitor_2_1776682820185.mp4\n-rw-r--r-- 1 lukas staff 1845046 20 Apr 14:05 compact_monitor_2_1776683129378.mp4\n-rw-r--r-- 1 lukas staff 4349352 20 Apr 14:10 compact_monitor_2_1776683433639.mp4\n-rw-r--r-- 1 lukas staff 6169839 20 Apr 14:15 compact_monitor_2_1776683740511.mp4\n-rw-r--r-- 1 lukas staff 7618797 20 Apr 14:20 compact_monitor_2_1776684052092.mp4\n-rw-r--r-- 1 lukas staff 5221568 20 Apr 14:26 compact_monitor_2_1776684362336.mp4\n-rw-r--r-- 1 lukas staff 4891906 20 Apr 14:31 compact_monitor_2_1776684674762.mp4\n-rw-r--r-- 1 lukas staff 705871 20 Apr 14:36 compact_monitor_2_1776684986928.mp4\n-rw-r--r-- 1 lukas staff 3797177 20 Apr 14:41 compact_monitor_2_1776685297300.mp4\n-rw-r--r-- 1 lukas staff 5206650 20 Apr 14:46 compact_monitor_2_1776685613835.mp4\n-rw-r--r-- 1 lukas staff 3560709 20 Apr 14:52 compact_monitor_2_1776685927877.mp4\n-rw-r--r-- 1 lukas staff 3054774 20 Apr 14:57 compact_monitor_2_1776686237953.mp4\n-rw-r--r-- 1 lukas staff 5624059 20 Apr 15:02 compact_monitor_2_1776686554842.mp4\n-rw-r--r-- 1 lukas staff 981456 20 Apr 15:02 compact_monitor_2_1776686566986.mp4\n-rw-r--r-- 1 lukas staff 3813865 20 Apr 15:08 compact_monitor_2_1776686877747.mp4\n-rw-r--r-- 1 lukas staff 4434608 20 Apr 15:13 compact_monitor_2_1776687192583.mp4\n-rw-r--r-- 1 lukas staff 1912795 20 Apr 15:18 compact_monitor_2_1776687512417.mp4\n-rw-r--r-- 1 lukas staff 362639 20 Apr 15:23 compact_monitor_2_1776687826917.mp4\n-rw-r--r-- 1 lukas staff 2587214 20 Apr 15:28 compact_monitor_2_1776688132900.mp4\n-rw-r--r-- 1 lukas staff 4444884 20 Apr 15:34 compact_monitor_2_1776688441330.mp4\n-rw-r--r-- 1 lukas staff 2273805 20 Apr 15:39 compact_monitor_2_1776688749248.mp4\n-rw-r--r-- 1 lukas staff 1472500 20 Apr 15:44 compact_monitor_2_1776689055232.mp4\n-rw-r--r-- 1 lukas staff 773818 20 Apr 15:49 compact_monitor_2_1776689362170.mp4\n-rw-r--r-- 1 lukas staff 2559460 20 Apr 15:54 compact_monitor_2_1776689672041.mp4\n-rw-r--r-- 1 lukas staff 2344294 20 Apr 15:59 compact_monitor_2_1776689979563.mp4\n-rw-r--r-- 1 lukas staff 4007787 20 Apr 16:04 compact_monitor_2_1776690291326.mp4\n-rw-r--r-- 1 lukas staff 1819239 20 Apr 16:10 compact_monitor_2_1776690601791.mp4\n-rw-r--r-- 1 lukas staff 2353532 20 Apr 16:15 compact_monitor_2_1776690909468.mp4\n-rw-r--r-- 1 lukas staff 838923 20 Apr 16:20 compact_monitor_2_1776691216464.mp4\n-rw-r--r-- 1 lukas staff 392421 20 Apr 16:25 compact_monitor_2_1776691524797.mp4\n-rw-r--r-- 1 lukas staff 419825 20 Apr 16:30 compact_monitor_2_1776691830343.mp4\n-rw-r--r-- 1 lukas staff 1311278 20 Apr 16:35 compact_monitor_2_1776692138776.mp4\n-rw-r--r-- 1 lukas staff 2113227 20 Apr 16:40 compact_monitor_2_1776692445996.mp4\n-rw-r--r-- 1 lukas staff 2836435 20 Apr 16:45 compact_monitor_2_1776692753037.mp4\n-rw-r--r-- 1 lukas staff 896192 20 Apr 16:51 compact_monitor_2_1776693062948.mp4\n-rw-r--r-- 1 lukas staff 430668 20 Apr 16:56 compact_monitor_2_1776693378064.mp4\n-rw-r--r-- 1 lukas staff 5400273 20 Apr 17:01 compact_monitor_2_1776693684394.mp4\n-rw-r--r-- 1 lukas staff 11097706 20 Apr 17:06 compact_monitor_2_1776693994199.mp4\n-rw-r--r-- 1 lukas staff 2777663 20 Apr 17:11 compact_monitor_2_1776694304409.mp4\n-rw-r--r-- 1 lukas staff 1170557 20 Apr 17:16 compact_monitor_2_1776694608505.mp4\n-rw-r--r-- 1 lukas staff 1670866 20 Apr 17:21 compact_monitor_2_1776694911248.mp4\n-rw-r--r-- 1 lukas staff 894067 20 Apr 18:17 compact_monitor_2_1776698268984.mp4\n-rw-r--r-- 1 lukas staff 145618 20 Apr 18:27 compact_monitor_2_1776698876572.mp4\n-rw-r--r-- 1 lukas staff 3307440 20 Apr 18:33 compact_monitor_2_1776699183611.mp4\n-rw-r--r-- 1 lukas staff 3178239 20 Apr 18:38 compact_monitor_2_1776699492586.mp4\n-rw-r--r-- 1 lukas staff 4180957 20 Apr 18:43 compact_monitor_2_1776699800287.mp4\n-rw-r--r-- 1 lukas staff 2802374 20 Apr 18:47 compact_monitor_2_1776700041626.mp4\n-rw-r--r-- 1 lukas staff 3153626 20 Apr 18:52 compact_monitor_2_1776700348038.mp4\n-rw-r--r-- 1 lukas staff 755181 21 Apr 09:10 compact_monitor_2_1776751832783.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $","depth":4,"bounds":{"left":0.0,"top":0.08777778,"width":1.0,"height":0.9122222},"value":"Last login: Tue Apr 21 09:09:08 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 ~ $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe \n9.5G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ~/.screenpipe/* \ncd: too many arguments\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n5.2G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n4.3G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n 16M\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\n 16K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-21.0.log\n 16K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe_sync.sh\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data/data/2026-04-20\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $ ll\ntotal 1028152\ndrwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 .\ndrwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..\n-rw-r--r-- 1 lukas staff 693554 20 Apr 09:20 compact_monitor_1_1776666027568.mp4\n-rw-r--r-- 1 lukas staff 2292711 20 Apr 09:25 compact_monitor_1_1776666335423.mp4\n-rw-r--r-- 1 lukas staff 3373751 20 Apr 09:30 compact_monitor_1_1776666644694.mp4\n-rw-r--r-- 1 lukas staff 1141798 20 Apr 09:36 compact_monitor_1_1776666964111.mp4\n-rw-r--r-- 1 lukas staff 1116735 20 Apr 09:41 compact_monitor_1_1776667280362.mp4\n-rw-r--r-- 1 lukas staff 312074 20 Apr 09:46 compact_monitor_1_1776667610890.mp4\n-rw-r--r-- 1 lukas staff 2540109 20 Apr 09:52 compact_monitor_1_1776667932459.mp4\n-rw-r--r-- 1 lukas staff 4258007 20 Apr 09:58 compact_monitor_1_1776668266614.mp4\n-rw-r--r-- 1 lukas staff 3672899 20 Apr 10:03 compact_monitor_1_1776668602756.mp4\n-rw-r--r-- 1 lukas staff 6736829 20 Apr 10:18 compact_monitor_1_1776669493360.mp4\n-rw-r--r-- 1 lukas staff 515278 20 Apr 10:28 compact_monitor_1_1776670108337.mp4\n-rw-r--r-- 1 lukas staff 4563425 20 Apr 10:33 compact_monitor_1_1776670414205.mp4\n-rw-r--r-- 1 lukas staff 2773923 20 Apr 10:38 compact_monitor_1_1776670720980.mp4\n-rw-r--r-- 1 lukas staff 144316 20 Apr 10:43 compact_monitor_1_1776671028184.mp4\n-rw-r--r-- 1 lukas staff 114593 20 Apr 10:48 compact_monitor_1_1776671337226.mp4\n-rw-r--r-- 1 lukas staff 84061 20 Apr 10:54 compact_monitor_1_1776671645099.mp4\n-rw-r--r-- 1 lukas staff 138837 20 Apr 10:59 compact_monitor_1_1776671948570.mp4\n-rw-r--r-- 1 lukas staff 922928 20 Apr 11:04 compact_monitor_1_1776672259288.mp4\n-rw-r--r-- 1 lukas staff 202502 20 Apr 11:09 compact_monitor_1_1776672573034.mp4\n-rw-r--r-- 1 lukas staff 161221 20 Apr 11:14 compact_monitor_1_1776672880999.mp4\n-rw-r--r-- 1 lukas staff 722270 20 Apr 11:19 compact_monitor_1_1776673195531.mp4\n-rw-r--r-- 1 lukas staff 927507 20 Apr 11:25 compact_monitor_1_1776673511487.mp4\n-rw-r--r-- 1 lukas staff 1946362 20 Apr 11:30 compact_monitor_1_1776673825191.mp4\n-rw-r--r-- 1 lukas staff 2262449 20 Apr 11:35 compact_monitor_1_1776674135008.mp4\n-rw-r--r-- 1 lukas staff 2673064 20 Apr 11:40 compact_monitor_1_1776674443695.mp4\n-rw-r--r-- 1 lukas staff 3385935 20 Apr 11:45 compact_monitor_1_1776674753075.mp4\n-rw-r--r-- 1 lukas staff 3970196 20 Apr 11:51 compact_monitor_1_1776675069567.mp4\n-rw-r--r-- 1 lukas staff 180069 20 Apr 11:51 compact_monitor_1_1776675080259.mp4\n-rw-r--r-- 1 lukas staff 183982 20 Apr 11:56 compact_monitor_1_1776675388576.mp4\n-rw-r--r-- 1 lukas staff 2412845 20 Apr 12:01 compact_monitor_1_1776675694882.mp4\n-rw-r--r-- 1 lukas staff 1852048 20 Apr 12:06 compact_monitor_1_1776676010514.mp4\n-rw-r--r-- 1 lukas staff 4474440 20 Apr 12:11 compact_monitor_1_1776676315785.mp4\n-rw-r--r-- 1 lukas staff 3041244 20 Apr 12:17 compact_monitor_1_1776676624932.mp4\n-rw-r--r-- 1 lukas staff 953703 20 Apr 12:22 compact_monitor_1_1776676935457.mp4\n-rw-r--r-- 1 lukas staff 204639 20 Apr 12:27 compact_monitor_1_1776677243573.mp4\n-rw-r--r-- 1 lukas staff 1047573 20 Apr 12:32 compact_monitor_1_1776677555968.mp4\n-rw-r--r-- 1 lukas staff 410146 20 Apr 12:37 compact_monitor_1_1776677869651.mp4\n-rw-r--r-- 1 lukas staff 1097017 20 Apr 12:43 compact_monitor_1_1776678179263.mp4\n-rw-r--r-- 1 lukas staff 649528 20 Apr 12:48 compact_monitor_1_1776678488504.mp4\n-rw-r--r-- 1 lukas staff 620278 20 Apr 12:53 compact_monitor_1_1776678801739.mp4\n-rw-r--r-- 1 lukas staff 1497201 20 Apr 12:58 compact_monitor_1_1776679110088.mp4\n-rw-r--r-- 1 lukas staff 434578 20 Apr 13:03 compact_monitor_1_1776679419906.mp4\n-rw-r--r-- 1 lukas staff 341751 20 Apr 13:08 compact_monitor_1_1776679730068.mp4\n-rw-r--r-- 1 lukas staff 346717 20 Apr 13:14 compact_monitor_1_1776680038703.mp4\n-rw-r--r-- 1 lukas staff 340310 20 Apr 13:19 compact_monitor_1_1776680350917.mp4\n-rw-r--r-- 1 lukas staff 432905 20 Apr 13:40 compact_monitor_1_1776681603125.mp4\n-rw-r--r-- 1 lukas staff 1500908 20 Apr 13:50 compact_monitor_1_1776682206178.mp4\n-rw-r--r-- 1 lukas staff 1146740 20 Apr 13:55 compact_monitor_1_1776682513428.mp4\n-rw-r--r-- 1 lukas staff 634904 20 Apr 14:00 compact_monitor_1_1776682818338.mp4\n-rw-r--r-- 1 lukas staff 1582832 20 Apr 14:05 compact_monitor_1_1776683127297.mp4\n-rw-r--r-- 1 lukas staff 144970 20 Apr 14:10 compact_monitor_1_1776683431892.mp4\n-rw-r--r-- 1 lukas staff 145139 20 Apr 14:15 compact_monitor_1_1776683738252.mp4\n-rw-r--r-- 1 lukas staff 2321625 20 Apr 14:20 compact_monitor_1_1776684048360.mp4\n-rw-r--r-- 1 lukas staff 3285900 20 Apr 14:26 compact_monitor_1_1776684358328.mp4\n-rw-r--r-- 1 lukas staff 2180592 20 Apr 14:31 compact_monitor_1_1776684672448.mp4\n-rw-r--r-- 1 lukas staff 1008178 20 Apr 14:36 compact_monitor_1_1776684985706.mp4\n-rw-r--r-- 1 lukas staff 6232717 20 Apr 14:41 compact_monitor_1_1776685289456.mp4\n-rw-r--r-- 1 lukas staff 1201267 20 Apr 14:46 compact_monitor_1_1776685609078.mp4\n-rw-r--r-- 1 lukas staff 697069 20 Apr 14:52 compact_monitor_1_1776685924555.mp4\n-rw-r--r-- 1 lukas staff 4205892 20 Apr 14:57 compact_monitor_1_1776686234752.mp4\n-rw-r--r-- 1 lukas staff 1734015 20 Apr 15:02 compact_monitor_1_1776686548275.mp4\n-rw-r--r-- 1 lukas staff 742602 20 Apr 15:07 compact_monitor_1_1776686874783.mp4\n-rw-r--r-- 1 lukas staff 5624641 20 Apr 15:13 compact_monitor_1_1776687183276.mp4\n-rw-r--r-- 1 lukas staff 5148295 20 Apr 15:18 compact_monitor_1_1776687502643.mp4\n-rw-r--r-- 1 lukas staff 3357773 20 Apr 15:23 compact_monitor_1_1776687821494.mp4\n-rw-r--r-- 1 lukas staff 4647742 20 Apr 15:28 compact_monitor_1_1776688128104.mp4\n-rw-r--r-- 1 lukas staff 5124594 20 Apr 15:34 compact_monitor_1_1776688435924.mp4\n-rw-r--r-- 1 lukas staff 3299421 20 Apr 15:39 compact_monitor_1_1776688745956.mp4\n-rw-r--r-- 1 lukas staff 2438350 20 Apr 15:44 compact_monitor_1_1776689051698.mp4\n-rw-r--r-- 1 lukas staff 2544311 20 Apr 15:49 compact_monitor_1_1776689358807.mp4\n-rw-r--r-- 1 lukas staff 4934970 20 Apr 15:54 compact_monitor_1_1776689666677.mp4\n-rw-r--r-- 1 lukas staff 3876837 20 Apr 15:59 compact_monitor_1_1776689975475.mp4\n-rw-r--r-- 1 lukas staff 4939907 20 Apr 16:04 compact_monitor_1_1776690284639.mp4\n-rw-r--r-- 1 lukas staff 5387913 20 Apr 16:10 compact_monitor_1_1776690597076.mp4\n-rw-r--r-- 1 lukas staff 5918302 20 Apr 16:15 compact_monitor_1_1776690904422.mp4\n-rw-r--r-- 1 lukas staff 3763719 20 Apr 16:20 compact_monitor_1_1776691212778.mp4\n-rw-r--r-- 1 lukas staff 2668710 20 Apr 16:25 compact_monitor_1_1776691518074.mp4\n-rw-r--r-- 1 lukas staff 1343489 20 Apr 16:30 compact_monitor_1_1776691827057.mp4\n-rw-r--r-- 1 lukas staff 2669705 20 Apr 16:35 compact_monitor_1_1776692135254.mp4\n-rw-r--r-- 1 lukas staff 3572963 20 Apr 16:40 compact_monitor_1_1776692442143.mp4\n-rw-r--r-- 1 lukas staff 4745615 20 Apr 16:45 compact_monitor_1_1776692748574.mp4\n-rw-r--r-- 1 lukas staff 3651920 20 Apr 16:51 compact_monitor_1_1776693058709.mp4\n-rw-r--r-- 1 lukas staff 2336269 20 Apr 16:56 compact_monitor_1_1776693372981.mp4\n-rw-r--r-- 1 lukas staff 3422245 20 Apr 17:01 compact_monitor_1_1776693680907.mp4\n-rw-r--r-- 1 lukas staff 6584256 20 Apr 17:06 compact_monitor_1_1776693988164.mp4\n-rw-r--r-- 1 lukas staff 6800476 20 Apr 17:11 compact_monitor_1_1776694300969.mp4\n-rw-r--r-- 1 lukas staff 859311 20 Apr 17:16 compact_monitor_1_1776694607311.mp4\n-rw-r--r-- 1 lukas staff 1991675 20 Apr 17:21 compact_monitor_1_1776694910016.mp4\n-rw-r--r-- 1 lukas staff 670169 20 Apr 18:17 compact_monitor_1_1776698266692.mp4\n-rw-r--r-- 1 lukas staff 2064979 20 Apr 18:27 compact_monitor_1_1776698875029.mp4\n-rw-r--r-- 1 lukas staff 1765910 20 Apr 18:33 compact_monitor_1_1776699180706.mp4\n-rw-r--r-- 1 lukas staff 1832195 20 Apr 18:38 compact_monitor_1_1776699488879.mp4\n-rw-r--r-- 1 lukas staff 532237 20 Apr 18:43 compact_monitor_1_1776699797513.mp4\n-rw-r--r-- 1 lukas staff 354899 20 Apr 18:47 compact_monitor_1_1776700038195.mp4\n-rw-r--r-- 1 lukas staff 426016 20 Apr 18:52 compact_monitor_1_1776700345586.mp4\n-rw-r--r-- 1 lukas staff 1502142 21 Apr 09:10 compact_monitor_1_1776751830793.mp4\n-rw-r--r-- 1 lukas staff 1151283 20 Apr 09:20 compact_monitor_2_1776666028589.mp4\n-rw-r--r-- 1 lukas staff 3922416 20 Apr 09:25 compact_monitor_2_1776666337400.mp4\n-rw-r--r-- 1 lukas staff 6099157 20 Apr 09:31 compact_monitor_2_1776666649455.mp4\n-rw-r--r-- 1 lukas staff 4465951 20 Apr 09:36 compact_monitor_2_1776666967290.mp4\n-rw-r--r-- 1 lukas staff 3546165 20 Apr 09:41 compact_monitor_2_1776667285800.mp4\n-rw-r--r-- 1 lukas staff 1917417 20 Apr 09:47 compact_monitor_2_1776667615139.mp4\n-rw-r--r-- 1 lukas staff 2954961 20 Apr 09:52 compact_monitor_2_1776667943132.mp4\n-rw-r--r-- 1 lukas staff 1934343 20 Apr 09:58 compact_monitor_2_1776668283739.mp4\n-rw-r--r-- 1 lukas staff 1177513 20 Apr 10:03 compact_monitor_2_1776668620257.mp4\n-rw-r--r-- 1 lukas staff 2147789 20 Apr 10:18 compact_monitor_2_1776669498937.mp4\n-rw-r--r-- 1 lukas staff 740309 20 Apr 10:28 compact_monitor_2_1776670109608.mp4\n-rw-r--r-- 1 lukas staff 3567504 20 Apr 10:33 compact_monitor_2_1776670417134.mp4\n-rw-r--r-- 1 lukas staff 2982135 20 Apr 10:38 compact_monitor_2_1776670723346.mp4\n-rw-r--r-- 1 lukas staff 3348097 20 Apr 10:43 compact_monitor_2_1776671030235.mp4\n-rw-r--r-- 1 lukas staff 2837678 20 Apr 10:49 compact_monitor_2_1776671338266.mp4\n-rw-r--r-- 1 lukas staff 2233867 20 Apr 10:54 compact_monitor_2_1776671646503.mp4\n-rw-r--r-- 1 lukas staff 4947326 20 Apr 10:59 compact_monitor_2_1776671950567.mp4\n-rw-r--r-- 1 lukas staff 5266402 20 Apr 11:04 compact_monitor_2_1776672263365.mp4\n-rw-r--r-- 1 lukas staff 3801403 20 Apr 11:09 compact_monitor_2_1776672575558.mp4\n-rw-r--r-- 1 lukas staff 6986490 20 Apr 11:14 compact_monitor_2_1776672883717.mp4\n-rw-r--r-- 1 lukas staff 6043634 20 Apr 11:20 compact_monitor_2_1776673199069.mp4\n-rw-r--r-- 1 lukas staff 3820880 20 Apr 11:25 compact_monitor_2_1776673514302.mp4\n-rw-r--r-- 1 lukas staff 6492119 20 Apr 11:30 compact_monitor_2_1776673828645.mp4\n-rw-r--r-- 1 lukas staff 3132510 20 Apr 11:35 compact_monitor_2_1776674137449.mp4\n-rw-r--r-- 1 lukas staff 3612810 20 Apr 11:40 compact_monitor_2_1776674447649.mp4\n-rw-r--r-- 1 lukas staff 4349270 20 Apr 11:46 compact_monitor_2_1776674758735.mp4\n-rw-r--r-- 1 lukas staff 2397151 20 Apr 11:51 compact_monitor_2_1776675081239.mp4\n-rw-r--r-- 1 lukas staff 2608050 20 Apr 11:56 compact_monitor_2_1776675389836.mp4\n-rw-r--r-- 1 lukas staff 4271268 20 Apr 12:01 compact_monitor_2_1776675697375.mp4\n-rw-r--r-- 1 lukas staff 2737153 20 Apr 12:06 compact_monitor_2_1776676012452.mp4\n-rw-r--r-- 1 lukas staff 6545978 20 Apr 12:12 compact_monitor_2_1776676319355.mp4\n-rw-r--r-- 1 lukas staff 2249881 20 Apr 12:17 compact_monitor_2_1776676627546.mp4\n-rw-r--r-- 1 lukas staff 1995078 20 Apr 12:22 compact_monitor_2_1776676937565.mp4\n-rw-r--r-- 1 lukas staff 3219551 20 Apr 12:27 compact_monitor_2_1776677245735.mp4\n-rw-r--r-- 1 lukas staff 4294306 20 Apr 12:32 compact_monitor_2_1776677559935.mp4\n-rw-r--r-- 1 lukas staff 4436497 20 Apr 12:37 compact_monitor_2_1776677872661.mp4\n-rw-r--r-- 1 lukas staff 2697561 20 Apr 12:43 compact_monitor_2_1776678182031.mp4\n-rw-r--r-- 1 lukas staff 2771589 20 Apr 12:48 compact_monitor_2_1776678492118.mp4\n-rw-r--r-- 1 lukas staff 6696423 20 Apr 12:53 compact_monitor_2_1776678803761.mp4\n-rw-r--r-- 1 lukas staff 5464611 20 Apr 12:58 compact_monitor_2_1776679111812.mp4\n-rw-r--r-- 1 lukas staff 7181188 20 Apr 13:03 compact_monitor_2_1776679423402.mp4\n-rw-r--r-- 1 lukas staff 5123182 20 Apr 13:08 compact_monitor_2_1776679731833.mp4\n-rw-r--r-- 1 lukas staff 5654139 20 Apr 13:14 compact_monitor_2_1776680041318.mp4\n-rw-r--r-- 1 lukas staff 3710649 20 Apr 13:19 compact_monitor_2_1776680352572.mp4\n-rw-r--r-- 1 lukas staff 637175 20 Apr 13:40 compact_monitor_2_1776681604586.mp4\n-rw-r--r-- 1 lukas staff 1331158 20 Apr 13:50 compact_monitor_2_1776682207482.mp4\n-rw-r--r-- 1 lukas staff 2470366 20 Apr 13:55 compact_monitor_2_1776682515468.mp4\n-rw-r--r-- 1 lukas staff 3743514 20 Apr 14:00 compact_monitor_2_1776682820185.mp4\n-rw-r--r-- 1 lukas staff 1845046 20 Apr 14:05 compact_monitor_2_1776683129378.mp4\n-rw-r--r-- 1 lukas staff 4349352 20 Apr 14:10 compact_monitor_2_1776683433639.mp4\n-rw-r--r-- 1 lukas staff 6169839 20 Apr 14:15 compact_monitor_2_1776683740511.mp4\n-rw-r--r-- 1 lukas staff 7618797 20 Apr 14:20 compact_monitor_2_1776684052092.mp4\n-rw-r--r-- 1 lukas staff 5221568 20 Apr 14:26 compact_monitor_2_1776684362336.mp4\n-rw-r--r-- 1 lukas staff 4891906 20 Apr 14:31 compact_monitor_2_1776684674762.mp4\n-rw-r--r-- 1 lukas staff 705871 20 Apr 14:36 compact_monitor_2_1776684986928.mp4\n-rw-r--r-- 1 lukas staff 3797177 20 Apr 14:41 compact_monitor_2_1776685297300.mp4\n-rw-r--r-- 1 lukas staff 5206650 20 Apr 14:46 compact_monitor_2_1776685613835.mp4\n-rw-r--r-- 1 lukas staff 3560709 20 Apr 14:52 compact_monitor_2_1776685927877.mp4\n-rw-r--r-- 1 lukas staff 3054774 20 Apr 14:57 compact_monitor_2_1776686237953.mp4\n-rw-r--r-- 1 lukas staff 5624059 20 Apr 15:02 compact_monitor_2_1776686554842.mp4\n-rw-r--r-- 1 lukas staff 981456 20 Apr 15:02 compact_monitor_2_1776686566986.mp4\n-rw-r--r-- 1 lukas staff 3813865 20 Apr 15:08 compact_monitor_2_1776686877747.mp4\n-rw-r--r-- 1 lukas staff 4434608 20 Apr 15:13 compact_monitor_2_1776687192583.mp4\n-rw-r--r-- 1 lukas staff 1912795 20 Apr 15:18 compact_monitor_2_1776687512417.mp4\n-rw-r--r-- 1 lukas staff 362639 20 Apr 15:23 compact_monitor_2_1776687826917.mp4\n-rw-r--r-- 1 lukas staff 2587214 20 Apr 15:28 compact_monitor_2_1776688132900.mp4\n-rw-r--r-- 1 lukas staff 4444884 20 Apr 15:34 compact_monitor_2_1776688441330.mp4\n-rw-r--r-- 1 lukas staff 2273805 20 Apr 15:39 compact_monitor_2_1776688749248.mp4\n-rw-r--r-- 1 lukas staff 1472500 20 Apr 15:44 compact_monitor_2_1776689055232.mp4\n-rw-r--r-- 1 lukas staff 773818 20 Apr 15:49 compact_monitor_2_1776689362170.mp4\n-rw-r--r-- 1 lukas staff 2559460 20 Apr 15:54 compact_monitor_2_1776689672041.mp4\n-rw-r--r-- 1 lukas staff 2344294 20 Apr 15:59 compact_monitor_2_1776689979563.mp4\n-rw-r--r-- 1 lukas staff 4007787 20 Apr 16:04 compact_monitor_2_1776690291326.mp4\n-rw-r--r-- 1 lukas staff 1819239 20 Apr 16:10 compact_monitor_2_1776690601791.mp4\n-rw-r--r-- 1 lukas staff 2353532 20 Apr 16:15 compact_monitor_2_1776690909468.mp4\n-rw-r--r-- 1 lukas staff 838923 20 Apr 16:20 compact_monitor_2_1776691216464.mp4\n-rw-r--r-- 1 lukas staff 392421 20 Apr 16:25 compact_monitor_2_1776691524797.mp4\n-rw-r--r-- 1 lukas staff 419825 20 Apr 16:30 compact_monitor_2_1776691830343.mp4\n-rw-r--r-- 1 lukas staff 1311278 20 Apr 16:35 compact_monitor_2_1776692138776.mp4\n-rw-r--r-- 1 lukas staff 2113227 20 Apr 16:40 compact_monitor_2_1776692445996.mp4\n-rw-r--r-- 1 lukas staff 2836435 20 Apr 16:45 compact_monitor_2_1776692753037.mp4\n-rw-r--r-- 1 lukas staff 896192 20 Apr 16:51 compact_monitor_2_1776693062948.mp4\n-rw-r--r-- 1 lukas staff 430668 20 Apr 16:56 compact_monitor_2_1776693378064.mp4\n-rw-r--r-- 1 lukas staff 5400273 20 Apr 17:01 compact_monitor_2_1776693684394.mp4\n-rw-r--r-- 1 lukas staff 11097706 20 Apr 17:06 compact_monitor_2_1776693994199.mp4\n-rw-r--r-- 1 lukas staff 2777663 20 Apr 17:11 compact_monitor_2_1776694304409.mp4\n-rw-r--r-- 1 lukas staff 1170557 20 Apr 17:16 compact_monitor_2_1776694608505.mp4\n-rw-r--r-- 1 lukas staff 1670866 20 Apr 17:21 compact_monitor_2_1776694911248.mp4\n-rw-r--r-- 1 lukas staff 894067 20 Apr 18:17 compact_monitor_2_1776698268984.mp4\n-rw-r--r-- 1 lukas staff 145618 20 Apr 18:27 compact_monitor_2_1776698876572.mp4\n-rw-r--r-- 1 lukas staff 3307440 20 Apr 18:33 compact_monitor_2_1776699183611.mp4\n-rw-r--r-- 1 lukas staff 3178239 20 Apr 18:38 compact_monitor_2_1776699492586.mp4\n-rw-r--r-- 1 lukas staff 4180957 20 Apr 18:43 compact_monitor_2_1776699800287.mp4\n-rw-r--r-- 1 lukas staff 2802374 20 Apr 18:47 compact_monitor_2_1776700041626.mp4\n-rw-r--r-- 1 lukas staff 3153626 20 Apr 18:52 compact_monitor_2_1776700348038.mp4\n-rw-r--r-- 1 lukas staff 755181 21 Apr 09:10 compact_monitor_2_1776751832783.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.14097223,"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.14097223,"top":0.05888889,"width":0.14097223,"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.14513889,"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.28194445,"top":0.05888889,"width":0.14097223,"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.28611112,"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 (node)","depth":2,"bounds":{"left":0.42291668,"top":0.05888889,"width":0.14097223,"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.42708334,"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.5638889,"top":0.05888889,"width":0.14097223,"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.56805557,"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.7048611,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70902777,"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.8454861,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.84965277,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95763886,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48958334,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
1104388310719845288
|
-3716007189283964767
|
app_switch
|
accessibility
|
NULL
|
Last login: Tue Apr 21 09:09:08 on ttys010
Poetry Last login: Tue Apr 21 09:09:08 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 ~ $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
9.5G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ~/.screenpipe/*
cd: too many arguments
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
5.2G /Users/lukas/.screenpipe/data
4.3G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
204K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
64K /Users/lukas/.screenpipe/screenpipe.2026-04-18.0.log
352K /Users/lukas/.screenpipe/screenpipe.2026-04-20.0.log
16K /Users/lukas/.screenpipe/screenpipe.2026-04-21.0.log
16K /Users/lukas/.screenpipe/screenpipe_sync.sh
24K /Users/lukas/.screenpipe/sync.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data/data/2026-04-20
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $ ll
total 1028152
drwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 .
drwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..
-rw-r--r-- 1 lukas staff 693554 20 Apr 09:20 compact_monitor_1_1776666027568.mp4
-rw-r--r-- 1 lukas staff 2292711 20 Apr 09:25 compact_monitor_1_1776666335423.mp4
-rw-r--r-- 1 lukas staff 3373751 20 Apr 09:30 compact_monitor_1_1776666644694.mp4
-rw-r--r-- 1 lukas staff 1141798 20 Apr 09:36 compact_monitor_1_1776666964111.mp4
-rw-r--r-- 1 lukas staff 1116735 20 Apr 09:41 compact_monitor_1_1776667280362.mp4
-rw-r--r-- 1 lukas staff 312074 20 Apr 09:46 compact_monitor_1_1776667610890.mp4
-rw-r--r-- 1 lukas staff 2540109 20 Apr 09:52 compact_monitor_1_1776667932459.mp4
-rw-r--r-- 1 lukas staff 4258007 20 Apr 09:58 compact_monitor_1_1776668266614.mp4
-rw-r--r-- 1 lukas staff 3672899 20 Apr 10:03 compact_monitor_1_1776668602756.mp4
-rw-r--r-- 1 lukas staff 6736829 20 Apr 10:18 compact_monitor_1_1776669493360.mp4
-rw-r--r-- 1 lukas staff 515278 20 Apr 10:28 compact_monitor_1_1776670108337.mp4
-rw-r--r-- 1 lukas staff 4563425 20 Apr 10:33 compact_monitor_1_1776670414205.mp4
-rw-r--r-- 1 lukas staff 2773923 20 Apr 10:38 compact_monitor_1_1776670720980.mp4
-rw-r--r-- 1 lukas staff 144316 20 Apr 10:43 compact_monitor_1_1776671028184.mp4
-rw-r--r-- 1 lukas staff 114593 20 Apr 10:48 compact_monitor_1_1776671337226.mp4
-rw-r--r-- 1 lukas staff 84061 20 Apr 10:54 compact_monitor_1_1776671645099.mp4
-rw-r--r-- 1 lukas staff 138837 20 Apr 10:59 compact_monitor_1_1776671948570.mp4
-rw-r--r-- 1 lukas staff 922928 20 Apr 11:04 compact_monitor_1_1776672259288.mp4
-rw-r--r-- 1 lukas staff 202502 20 Apr 11:09 compact_monitor_1_1776672573034.mp4
-rw-r--r-- 1 lukas staff 161221 20 Apr 11:14 compact_monitor_1_1776672880999.mp4
-rw-r--r-- 1 lukas staff 722270 20 Apr 11:19 compact_monitor_1_1776673195531.mp4
-rw-r--r-- 1 lukas staff 927507 20 Apr 11:25 compact_monitor_1_1776673511487.mp4
-rw-r--r-- 1 lukas staff 1946362 20 Apr 11:30 compact_monitor_1_1776673825191.mp4
-rw-r--r-- 1 lukas staff 2262449 20 Apr 11:35 compact_monitor_1_1776674135008.mp4
-rw-r--r-- 1 lukas staff 2673064 20 Apr 11:40 compact_monitor_1_1776674443695.mp4
-rw-r--r-- 1 lukas staff 3385935 20 Apr 11:45 compact_monitor_1_1776674753075.mp4
-rw-r--r-- 1 lukas staff 3970196 20 Apr 11:51 compact_monitor_1_1776675069567.mp4
-rw-r--r-- 1 lukas staff 180069 20 Apr 11:51 compact_monitor_1_1776675080259.mp4
-rw-r--r-- 1 lukas staff 183982 20 Apr 11:56 compact_monitor_1_1776675388576.mp4
-rw-r--r-- 1 lukas staff 2412845 20 Apr 12:01 compact_monitor_1_1776675694882.mp4
-rw-r--r-- 1 lukas staff 1852048 20 Apr 12:06 compact_monitor_1_1776676010514.mp4
-rw-r--r-- 1 lukas staff 4474440 20 Apr 12:11 compact_monitor_1_1776676315785.mp4
-rw-r--r-- 1 lukas staff 3041244 20 Apr 12:17 compact_monitor_1_1776676624932.mp4
-rw-r--r-- 1 lukas staff 953703 20 Apr 12:22 compact_monitor_1_1776676935457.mp4
-rw-r--r-- 1 lukas staff 204639 20 Apr 12:27 compact_monitor_1_1776677243573.mp4
-rw-r--r-- 1 lukas staff 1047573 20 Apr 12:32 compact_monitor_1_1776677555968.mp4
-rw-r--r-- 1 lukas staff 410146 20 Apr 12:37 compact_monitor_1_1776677869651.mp4
-rw-r--r-- 1 lukas staff 1097017 20 Apr 12:43 compact_monitor_1_1776678179263.mp4
-rw-r--r-- 1 lukas staff 649528 20 Apr 12:48 compact_monitor_1_1776678488504.mp4
-rw-r--r-- 1 lukas staff 620278 20 Apr 12:53 compact_monitor_1_1776678801739.mp4
-rw-r--r-- 1 lukas staff 1497201 20 Apr 12:58 compact_monitor_1_1776679110088.mp4
-rw-r--r-- 1 lukas staff 434578 20 Apr 13:03 compact_monitor_1_1776679419906.mp4
-rw-r--r-- 1 lukas staff 341751 20 Apr 13:08 compact_monitor_1_1776679730068.mp4
-rw-r--r-- 1 lukas staff 346717 20 Apr 13:14 compact_monitor_1_1776680038703.mp4
-rw-r--r-- 1 lukas staff 340310 20 Apr 13:19 compact_monitor_1_1776680350917.mp4
-rw-r--r-- 1 lukas staff 432905 20 Apr 13:40 compact_monitor_1_1776681603125.mp4
-rw-r--r-- 1 lukas staff 1500908 20 Apr 13:50 compact_monitor_1_1776682206178.mp4
-rw-r--r-- 1 lukas staff 1146740 20 Apr 13:55 compact_monitor_1_1776682513428.mp4
-rw-r--r-- 1 lukas staff 634904 20 Apr 14:00 compact_monitor_1_1776682818338.mp4
-rw-r--r-- 1 lukas staff 1582832 20 Apr 14:05 compact_monitor_1_1776683127297.mp4
-rw-r--r-- 1 lukas staff 144970 20 Apr 14:10 compact_monitor_1_1776683431892.mp4
-rw-r--r-- 1 lukas staff 145139 20 Apr 14:15 compact_monitor_1_1776683738252.mp4
-rw-r--r-- 1 lukas staff 2321625 20 Apr 14:20 compact_monitor_1_1776684048360.mp4
-rw-r--r-- 1 lukas staff 3285900 20 Apr 14:26 compact_monitor_1_1776684358328.mp4
-rw-r--r-- 1 lukas staff 2180592 20 Apr 14:31 compact_monitor_1_1776684672448.mp4
-rw-r--r-- 1 lukas staff 1008178 20 Apr 14:36 compact_monitor_1_1776684985706.mp4
-rw-r--r-- 1 lukas staff 6232717 20 Apr 14:41 compact_monitor_1_1776685289456.mp4
-rw-r--r-- 1 lukas staff 1201267 20 Apr 14:46 compact_monitor_1_1776685609078.mp4
-rw-r--r-- 1 lukas staff 697069 20 Apr 14:52 compact_monitor_1_1776685924555.mp4
-rw-r--r-- 1 lukas staff 4205892 20 Apr 14:57 compact_monitor_1_1776686234752.mp4
-rw-r--r-- 1 lukas staff 1734015 20 Apr 15:02 compact_monitor_1_1776686548275.mp4
-rw-r--r-- 1 lukas staff 742602 20 Apr 15:07 compact_monitor_1_1776686874783.mp4
-rw-r--r-- 1 lukas staff 5624641 20 Apr 15:13 compact_monitor_1_1776687183276.mp4
-rw-r--r-- 1 lukas staff 5148295 20 Apr 15:18 compact_monitor_1_1776687502643.mp4
-rw-r--r-- 1 lukas staff 3357773 20 Apr 15:23 compact_monitor_1_1776687821494.mp4
-rw-r--r-- 1 lukas staff 4647742 20 Apr 15:28 compact_monitor_1_1776688128104.mp4
-rw-r--r-- 1 lukas staff 5124594 20 Apr 15:34 compact_monitor_1_1776688435924.mp4
-rw-r--r-- 1 lukas staff 3299421 20 Apr 15:39 compact_monitor_1_1776688745956.mp4
-rw-r--r-- 1 lukas staff 2438350 20 Apr 15:44 compact_monitor_1_1776689051698.mp4
-rw-r--r-- 1 lukas staff 2544311 20 Apr 15:49 compact_monitor_1_1776689358807.mp4
-rw-r--r-- 1 lukas staff 4934970 20 Apr 15:54 compact_monitor_1_1776689666677.mp4
-rw-r--r-- 1 lukas staff 3876837 20 Apr 15:59 compact_monitor_1_1776689975475.mp4
-rw-r--r-- 1 lukas staff 4939907 20 Apr 16:04 compact_monitor_1_1776690284639.mp4
-rw-r--r-- 1 lukas staff 5387913 20 Apr 16:10 compact_monitor_1_1776690597076.mp4
-rw-r--r-- 1 lukas staff 5918302 20 Apr 16:15 compact_monitor_1_1776690904422.mp4
-rw-r--r-- 1 lukas staff 3763719 20 Apr 16:20 compact_monitor_1_1776691212778.mp4
-rw-r--r-- 1 lukas staff 2668710 20 Apr 16:25 compact_monitor_1_1776691518074.mp4
-rw-r--r-- 1 lukas staff 1343489 20 Apr 16:30 compact_monitor_1_1776691827057.mp4
-rw-r--r-- 1 lukas staff 2669705 20 Apr 16:35 compact_monitor_1_1776692135254.mp4
-rw-r--r-- 1 lukas staff 3572963 20 Apr 16:40 compact_monitor_1_1776692442143.mp4
-rw-r--r-- 1 lukas staff 4745615 20 Apr 16:45 compact_monitor_1_1776692748574.mp4
-rw-r--r-- 1 lukas staff 3651920 20 Apr 16:51 compact_monitor_1_1776693058709.mp4
-rw-r--r-- 1 lukas staff 2336269 20 Apr 16:56 compact_monitor_1_1776693372981.mp4
-rw-r--r-- 1 lukas staff 3422245 20 Apr 17:01 compact_monitor_1_1776693680907.mp4
-rw-r--r-- 1 lukas staff 6584256 20 Apr 17:06 compact_monitor_1_1776693988164.mp4
-rw-r--r-- 1 lukas staff 6800476 20 Apr 17:11 compact_monitor_1_1776694300969.mp4
-rw-r--r-- 1 lukas staff 859311 20 Apr 17:16 compact_monitor_1_1776694607311.mp4
-rw-r--r-- 1 lukas staff 1991675 20 Apr 17:21 compact_monitor_1_1776694910016.mp4
-rw-r--r-- 1 lukas staff 670169 20 Apr 18:17 compact_monitor_1_1776698266692.mp4
-rw-r--r-- 1 lukas staff 2064979 20 Apr 18:27 compact_monitor_1_1776698875029.mp4
-rw-r--r-- 1 lukas staff 1765910 20 Apr 18:33 compact_monitor_1_1776699180706.mp4
-rw-r--r-- 1 lukas staff 1832195 20 Apr 18:38 compact_monitor_1_1776699488879.mp4
-rw-r--r-- 1 lukas staff 532237 20 Apr 18:43 compact_monitor_1_1776699797513.mp4
-rw-r--r-- 1 lukas staff 354899 20 Apr 18:47 compact_monitor_1_1776700038195.mp4
-rw-r--r-- 1 lukas staff 426016 20 Apr 18:52 compact_monitor_1_1776700345586.mp4
-rw-r--r-- 1 lukas staff 1502142 21 Apr 09:10 compact_monitor_1_1776751830793.mp4
-rw-r--r-- 1 lukas staff 1151283 20 Apr 09:20 compact_monitor_2_1776666028589.mp4
-rw-r--r-- 1 lukas staff 3922416 20 Apr 09:25 compact_monitor_2_1776666337400.mp4
-rw-r--r-- 1 lukas staff 6099157 20 Apr 09:31 compact_monitor_2_1776666649455.mp4
-rw-r--r-- 1 lukas staff 4465951 20 Apr 09:36 compact_monitor_2_1776666967290.mp4
-rw-r--r-- 1 lukas staff 3546165 20 Apr 09:41 compact_monitor_2_1776667285800.mp4
-rw-r--r-- 1 lukas staff 1917417 20 Apr 09:47 compact_monitor_2_1776667615139.mp4
-rw-r--r-- 1 lukas staff 2954961 20 Apr 09:52 compact_monitor_2_1776667943132.mp4
-rw-r--r-- 1 lukas staff 1934343 20 Apr 09:58 compact_monitor_2_1776668283739.mp4
-rw-r--r-- 1 lukas staff 1177513 20 Apr 10:03 compact_monitor_2_1776668620257.mp4
-rw-r--r-- 1 lukas staff 2147789 20 Apr 10:18 compact_monitor_2_1776669498937.mp4
-rw-r--r-- 1 lukas staff 740309 20 Apr 10:28 compact_monitor_2_1776670109608.mp4
-rw-r--r-- 1 lukas staff 3567504 20 Apr 10:33 compact_monitor_2_1776670417134.mp4
-rw-r--r-- 1 lukas staff 2982135 20 Apr 10:38 compact_monitor_2_1776670723346.mp4
-rw-r--r-- 1 lukas staff 3348097 20 Apr 10:43 compact_monitor_2_1776671030235.mp4
-rw-r--r-- 1 lukas staff 2837678 20 Apr 10:49 compact_monitor_2_1776671338266.mp4
-rw-r--r-- 1 lukas staff 2233867 20 Apr 10:54 compact_monitor_2_1776671646503.mp4
-rw-r--r-- 1 lukas staff 4947326 20 Apr 10:59 compact_monitor_2_1776671950567.mp4
-rw-r--r-- 1 lukas staff 5266402 20 Apr 11:04 compact_monitor_2_1776672263365.mp4
-rw-r--r-- 1 lukas staff 3801403 20 Apr 11:09 compact_monitor_2_1776672575558.mp4
-rw-r--r-- 1 lukas staff 6986490 20 Apr 11:14 compact_monitor_2_1776672883717.mp4
-rw-r--r-- 1 lukas staff 6043634 20 Apr 11:20 compact_monitor_2_1776673199069.mp4
-rw-r--r-- 1 lukas staff 3820880 20 Apr 11:25 compact_monitor_2_1776673514302.mp4
-rw-r--r-- 1 lukas staff 6492119 20 Apr 11:30 compact_monitor_2_1776673828645.mp4
-rw-r--r-- 1 lukas staff 3132510 20 Apr 11:35 compact_monitor_2_1776674137449.mp4
-rw-r--r-- 1 lukas staff 3612810 20 Apr 11:40 compact_monitor_2_1776674447649.mp4
-rw-r--r-- 1 lukas staff 4349270 20 Apr 11:46 compact_monitor_2_1776674758735.mp4
-rw-r--r-- 1 lukas staff 2397151 20 Apr 11:51 compact_monitor_2_1776675081239.mp4
-rw-r--r-- 1 lukas staff 2608050 20 Apr 11:56 compact_monitor_2_1776675389836.mp4
-rw-r--r-- 1 lukas staff 4271268 20 Apr 12:01 compact_monitor_2_1776675697375.mp4
-rw-r--r-- 1 lukas staff 2737153 20 Apr 12:06 compact_monitor_2_1776676012452.mp4
-rw-r--r-- 1 lukas staff 6545978 20 Apr 12:12 compact_monitor_2_1776676319355.mp4
-rw-r--r-- 1 lukas staff 2249881 20 Apr 12:17 compact_monitor_2_1776676627546.mp4
-rw-r--r-- 1 lukas staff 1995078 20 Apr 12:22 compact_monitor_2_1776676937565.mp4
-rw-r--r-- 1 lukas staff 3219551 20 Apr 12:27 compact_monitor_2_1776677245735.mp4
-rw-r--r-- 1 lukas staff 4294306 20 Apr 12:32 compact_monitor_2_1776677559935.mp4
-rw-r--r-- 1 lukas staff 4436497 20 Apr 12:37 compact_monitor_2_1776677872661.mp4
-rw-r--r-- 1 lukas staff 2697561 20 Apr 12:43 compact_monitor_2_1776678182031.mp4
-rw-r--r-- 1 lukas staff 2771589 20 Apr 12:48 compact_monitor_2_1776678492118.mp4
-rw-r--r-- 1 lukas staff 6696423 20 Apr 12:53 compact_monitor_2_1776678803761.mp4
-rw-r--r-- 1 lukas staff 5464611 20 Apr 12:58 compact_monitor_2_1776679111812.mp4
-rw-r--r-- 1 lukas staff 7181188 20 Apr 13:03 compact_monitor_2_1776679423402.mp4
-rw-r--r-- 1 lukas staff 5123182 20 Apr 13:08 compact_monitor_2_1776679731833.mp4
-rw-r--r-- 1 lukas staff 5654139 20 Apr 13:14 compact_monitor_2_1776680041318.mp4
-rw-r--r-- 1 lukas staff 3710649 20 Apr 13:19 compact_monitor_2_1776680352572.mp4
-rw-r--r-- 1 lukas staff 637175 20 Apr 13:40 compact_monitor_2_1776681604586.mp4
-rw-r--r-- 1 lukas staff 1331158 20 Apr 13:50 compact_monitor_2_1776682207482.mp4
-rw-r--r-- 1 lukas staff 2470366 20 Apr 13:55 compact_monitor_2_1776682515468.mp4
-rw-r--r-- 1 lukas staff 3743514 20 Apr 14:00 compact_monitor_2_1776682820185.mp4
-rw-r--r-- 1 lukas staff 1845046 20 Apr 14:05 compact_monitor_2_1776683129378.mp4
-rw-r--r-- 1 lukas staff 4349352 20 Apr 14:10 compact_monitor_2_1776683433639.mp4
-rw-r--r-- 1 lukas staff 6169839 20 Apr 14:15 compact_monitor_2_1776683740511.mp4
-rw-r--r-- 1 lukas staff 7618797 20 Apr 14:20 compact_monitor_2_1776684052092.mp4
-rw-r--r-- 1 lukas staff 5221568 20 Apr 14:26 compact_monitor_2_1776684362336.mp4
-rw-r--r-- 1 lukas staff 4891906 20 Apr 14:31 compact_monitor_2_1776684674762.mp4
-rw-r--r-- 1 lukas staff 705871 20 Apr 14:36 compact_monitor_2_1776684986928.mp4
-rw-r--r-- 1 lukas staff 3797177 20 Apr 14:41 compact_monitor_2_1776685297300.mp4
-rw-r--r-- 1 lukas staff 5206650 20 Apr 14:46 compact_monitor_2_1776685613835.mp4
-rw-r--r-- 1 lukas staff 3560709 20 Apr 14:52 compact_monitor_2_1776685927877.mp4
-rw-r--r-- 1 lukas staff 3054774 20 Apr 14:57 compact_monitor_2_1776686237953.mp4
-rw-r--r-- 1 lukas staff 5624059 20 Apr 15:02 compact_monitor_2_1776686554842.mp4
-rw-r--r-- 1 lukas staff 981456 20 Apr 15:02 compact_monitor_2_1776686566986.mp4
-rw-r--r-- 1 lukas staff 3813865 20 Apr 15:08 compact_monitor_2_1776686877747.mp4
-rw-r--r-- 1 lukas staff 4434608 20 Apr 15:13 compact_monitor_2_1776687192583.mp4
-rw-r--r-- 1 lukas staff 1912795 20 Apr 15:18 compact_monitor_2_1776687512417.mp4
-rw-r--r-- 1 lukas staff 362639 20 Apr 15:23 compact_monitor_2_1776687826917.mp4
-rw-r--r-- 1 lukas staff 2587214 20 Apr 15:28 compact_monitor_2_1776688132900.mp4
-rw-r--r-- 1 lukas staff 4444884 20 Apr 15:34 compact_monitor_2_1776688441330.mp4
-rw-r--r-- 1 lukas staff 2273805 20 Apr 15:39 compact_monitor_2_1776688749248.mp4
-rw-r--r-- 1 lukas staff 1472500 20 Apr 15:44 compact_monitor_2_1776689055232.mp4
-rw-r--r-- 1 lukas staff 773818 20 Apr 15:49 compact_monitor_2_1776689362170.mp4
-rw-r--r-- 1 lukas staff 2559460 20 Apr 15:54 compact_monitor_2_1776689672041.mp4
-rw-r--r-- 1 lukas staff 2344294 20 Apr 15:59 compact_monitor_2_1776689979563.mp4
-rw-r--r-- 1 lukas staff 4007787 20 Apr 16:04 compact_monitor_2_1776690291326.mp4
-rw-r--r-- 1 lukas staff 1819239 20 Apr 16:10 compact_monitor_2_1776690601791.mp4
-rw-r--r-- 1 lukas staff 2353532 20 Apr 16:15 compact_monitor_2_1776690909468.mp4
-rw-r--r-- 1 lukas staff 838923 20 Apr 16:20 compact_monitor_2_1776691216464.mp4
-rw-r--r-- 1 lukas staff 392421 20 Apr 16:25 compact_monitor_2_1776691524797.mp4
-rw-r--r-- 1 lukas staff 419825 20 Apr 16:30 compact_monitor_2_1776691830343.mp4
-rw-r--r-- 1 lukas staff 1311278 20 Apr 16:35 compact_monitor_2_1776692138776.mp4
-rw-r--r-- 1 lukas staff 2113227 20 Apr 16:40 compact_monitor_2_1776692445996.mp4
-rw-r--r-- 1 lukas staff 2836435 20 Apr 16:45 compact_monitor_2_1776692753037.mp4
-rw-r--r-- 1 lukas staff 896192 20 Apr 16:51 compact_monitor_2_1776693062948.mp4
-rw-r--r-- 1 lukas staff 430668 20 Apr 16:56 compact_monitor_2_1776693378064.mp4
-rw-r--r-- 1 lukas staff 5400273 20 Apr 17:01 compact_monitor_2_1776693684394.mp4
-rw-r--r-- 1 lukas staff 11097706 20 Apr 17:06 compact_monitor_2_1776693994199.mp4
-rw-r--r-- 1 lukas staff 2777663 20 Apr 17:11 compact_monitor_2_1776694304409.mp4
-rw-r--r-- 1 lukas staff 1170557 20 Apr 17:16 compact_monitor_2_1776694608505.mp4
-rw-r--r-- 1 lukas staff 1670866 20 Apr 17:21 compact_monitor_2_1776694911248.mp4
-rw-r--r-- 1 lukas staff 894067 20 Apr 18:17 compact_monitor_2_1776698268984.mp4
-rw-r--r-- 1 lukas staff 145618 20 Apr 18:27 compact_monitor_2_1776698876572.mp4
-rw-r--r-- 1 lukas staff 3307440 20 Apr 18:33 compact_monitor_2_1776699183611.mp4
-rw-r--r-- 1 lukas staff 3178239 20 Apr 18:38 compact_monitor_2_1776699492586.mp4
-rw-r--r-- 1 lukas staff 4180957 20 Apr 18:43 compact_monitor_2_1776699800287.mp4
-rw-r--r-- 1 lukas staff 2802374 20 Apr 18:47 compact_monitor_2_1776700041626.mp4
-rw-r--r-- 1 lukas staff 3153626 20 Apr 18:52 compact_monitor_2_1776700348038.mp4
-rw-r--r-- 1 lukas staff 755181 21 Apr 09:10 compact_monitor_2_1776751832783.mp4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
60821
|
1311
|
42
|
2026-04-21T06:19:52.245163+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752392245_m2.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Tue Apr 21 09:09:08 on ttys010
Poetry Last login: Tue Apr 21 09:09:08 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 ~ $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
9.5G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ~/.screenpipe/*
cd: too many arguments
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
5.2G /Users/lukas/.screenpipe/data
4.3G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
204K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
64K /Users/lukas/.screenpipe/screenpipe.2026-04-18.0.log
352K /Users/lukas/.screenpipe/screenpipe.2026-04-20.0.log
16K /Users/lukas/.screenpipe/screenpipe.2026-04-21.0.log
16K /Users/lukas/.screenpipe/screenpipe_sync.sh
24K /Users/lukas/.screenpipe/sync.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data/data/2026-04-20
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $ ll
total 1028152
drwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 .
drwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..
-rw-r--r-- 1 lukas staff 693554 20 Apr 09:20 compact_monitor_1_1776666027568.mp4
-rw-r--r-- 1 lukas staff 2292711 20 Apr 09:25 compact_monitor_1_1776666335423.mp4
-rw-r--r-- 1 lukas staff 3373751 20 Apr 09:30 compact_monitor_1_1776666644694.mp4
-rw-r--r-- 1 lukas staff 1141798 20 Apr 09:36 compact_monitor_1_1776666964111.mp4
-rw-r--r-- 1 lukas staff 1116735 20 Apr 09:41 compact_monitor_1_1776667280362.mp4
-rw-r--r-- 1 lukas staff 312074 20 Apr 09:46 compact_monitor_1_1776667610890.mp4
-rw-r--r-- 1 lukas staff 2540109 20 Apr 09:52 compact_monitor_1_1776667932459.mp4
-rw-r--r-- 1 lukas staff 4258007 20 Apr 09:58 compact_monitor_1_1776668266614.mp4
-rw-r--r-- 1 lukas staff 3672899 20 Apr 10:03 compact_monitor_1_1776668602756.mp4
-rw-r--r-- 1 lukas staff 6736829 20 Apr 10:18 compact_monitor_1_1776669493360.mp4
-rw-r--r-- 1 lukas staff 515278 20 Apr 10:28 compact_monitor_1_1776670108337.mp4
-rw-r--r-- 1 lukas staff 4563425 20 Apr 10:33 compact_monitor_1_1776670414205.mp4
-rw-r--r-- 1 lukas staff 2773923 20 Apr 10:38 compact_monitor_1_1776670720980.mp4
-rw-r--r-- 1 lukas staff 144316 20 Apr 10:43 compact_monitor_1_1776671028184.mp4
-rw-r--r-- 1 lukas staff 114593 20 Apr 10:48 compact_monitor_1_1776671337226.mp4
-rw-r--r-- 1 lukas staff 84061 20 Apr 10:54 compact_monitor_1_1776671645099.mp4
-rw-r--r-- 1 lukas staff 138837 20 Apr 10:59 compact_monitor_1_1776671948570.mp4
-rw-r--r-- 1 lukas staff 922928 20 Apr 11:04 compact_monitor_1_1776672259288.mp4
-rw-r--r-- 1 lukas staff 202502 20 Apr 11:09 compact_monitor_1_1776672573034.mp4
-rw-r--r-- 1 lukas staff 161221 20 Apr 11:14 compact_monitor_1_1776672880999.mp4
-rw-r--r-- 1 lukas staff 722270 20 Apr 11:19 compact_monitor_1_1776673195531.mp4
-rw-r--r-- 1 lukas staff 927507 20 Apr 11:25 compact_monitor_1_1776673511487.mp4
-rw-r--r-- 1 lukas staff 1946362 20 Apr 11:30 compact_monitor_1_1776673825191.mp4
-rw-r--r-- 1 lukas staff 2262449 20 Apr 11:35 compact_monitor_1_1776674135008.mp4
-rw-r--r-- 1 lukas staff 2673064 20 Apr 11:40 compact_monitor_1_1776674443695.mp4
-rw-r--r-- 1 lukas staff 3385935 20 Apr 11:45 compact_monitor_1_1776674753075.mp4
-rw-r--r-- 1 lukas staff 3970196 20 Apr 11:51 compact_monitor_1_1776675069567.mp4
-rw-r--r-- 1 lukas staff 180069 20 Apr 11:51 compact_monitor_1_1776675080259.mp4
-rw-r--r-- 1 lukas staff 183982 20 Apr 11:56 compact_monitor_1_1776675388576.mp4
-rw-r--r-- 1 lukas staff 2412845 20 Apr 12:01 compact_monitor_1_1776675694882.mp4
-rw-r--r-- 1 lukas staff 1852048 20 Apr 12:06 compact_monitor_1_1776676010514.mp4
-rw-r--r-- 1 lukas staff 4474440 20 Apr 12:11 compact_monitor_1_1776676315785.mp4
-rw-r--r-- 1 lukas staff 3041244 20 Apr 12:17 compact_monitor_1_1776676624932.mp4
-rw-r--r-- 1 lukas staff 953703 20 Apr 12:22 compact_monitor_1_1776676935457.mp4
-rw-r--r-- 1 lukas staff 204639 20 Apr 12:27 compact_monitor_1_1776677243573.mp4
-rw-r--r-- 1 lukas staff 1047573 20 Apr 12:32 compact_monitor_1_1776677555968.mp4
-rw-r--r-- 1 lukas staff 410146 20 Apr 12:37 compact_monitor_1_1776677869651.mp4
-rw-r--r-- 1 lukas staff 1097017 20 Apr 12:43 compact_monitor_1_1776678179263.mp4
-rw-r--r-- 1 lukas staff 649528 20 Apr 12:48 compact_monitor_1_1776678488504.mp4
-rw-r--r-- 1 lukas staff 620278 20 Apr 12:53 compact_monitor_1_1776678801739.mp4
-rw-r--r-- 1 lukas staff 1497201 20 Apr 12:58 compact_monitor_1_1776679110088.mp4
-rw-r--r-- 1 lukas staff 434578 20 Apr 13:03 compact_monitor_1_1776679419906.mp4
-rw-r--r-- 1 lukas staff 341751 20 Apr 13:08 compact_monitor_1_1776679730068.mp4
-rw-r--r-- 1 lukas staff 346717 20 Apr 13:14 compact_monitor_1_1776680038703.mp4
-rw-r--r-- 1 lukas staff 340310 20 Apr 13:19 compact_monitor_1_1776680350917.mp4
-rw-r--r-- 1 lukas staff 432905 20 Apr 13:40 compact_monitor_1_1776681603125.mp4
-rw-r--r-- 1 lukas staff 1500908 20 Apr 13:50 compact_monitor_1_1776682206178.mp4
-rw-r--r-- 1 lukas staff 1146740 20 Apr 13:55 compact_monitor_1_1776682513428.mp4
-rw-r--r-- 1 lukas staff 634904 20 Apr 14:00 compact_monitor_1_1776682818338.mp4
-rw-r--r-- 1 lukas staff 1582832 20 Apr 14:05 compact_monitor_1_1776683127297.mp4
-rw-r--r-- 1 lukas staff 144970 20 Apr 14:10 compact_monitor_1_1776683431892.mp4
-rw-r--r-- 1 lukas staff 145139 20 Apr 14:15 compact_monitor_1_1776683738252.mp4
-rw-r--r-- 1 lukas staff 2321625 20 Apr 14:20 compact_monitor_1_1776684048360.mp4
-rw-r--r-- 1 lukas staff 3285900 20 Apr 14:26 compact_monitor_1_1776684358328.mp4
-rw-r--r-- 1 lukas staff 2180592 20 Apr 14:31 compact_monitor_1_1776684672448.mp4
-rw-r--r-- 1 lukas staff 1008178 20 Apr 14:36 compact_monitor_1_1776684985706.mp4
-rw-r--r-- 1 lukas staff 6232717 20 Apr 14:41 compact_monitor_1_1776685289456.mp4
-rw-r--r-- 1 lukas staff 1201267 20 Apr 14:46 compact_monitor_1_1776685609078.mp4
-rw-r--r-- 1 lukas staff 697069 20 Apr 14:52 compact_monitor_1_1776685924555.mp4
-rw-r--r-- 1 lukas staff 4205892 20 Apr 14:57 compact_monitor_1_1776686234752.mp4
-rw-r--r-- 1 lukas staff 1734015 20 Apr 15:02 compact_monitor_1_1776686548275.mp4
-rw-r--r-- 1 lukas staff 742602 20 Apr 15:07 compact_monitor_1_1776686874783.mp4
-rw-r--r-- 1 lukas staff 5624641 20 Apr 15:13 compact_monitor_1_1776687183276.mp4
-rw-r--r-- 1 lukas staff 5148295 20 Apr 15:18 compact_monitor_1_1776687502643.mp4
-rw-r--r-- 1 lukas staff 3357773 20 Apr 15:23 compact_monitor_1_1776687821494.mp4
-rw-r--r-- 1 lukas staff 4647742 20 Apr 15:28 compact_monitor_1_1776688128104.mp4
-rw-r--r-- 1 lukas staff 5124594 20 Apr 15:34 compact_monitor_1_1776688435924.mp4
-rw-r--r-- 1 lukas staff 3299421 20 Apr 15:39 compact_monitor_1_1776688745956.mp4
-rw-r--r-- 1 lukas staff 2438350 20 Apr 15:44 compact_monitor_1_1776689051698.mp4
-rw-r--r-- 1 lukas staff 2544311 20 Apr 15:49 compact_monitor_1_1776689358807.mp4
-rw-r--r-- 1 lukas staff 4934970 20 Apr 15:54 compact_monitor_1_1776689666677.mp4
-rw-r--r-- 1 lukas staff 3876837 20 Apr 15:59 compact_monitor_1_1776689975475.mp4
-rw-r--r-- 1 lukas staff 4939907 20 Apr 16:04 compact_monitor_1_1776690284639.mp4
-rw-r--r-- 1 lukas staff 5387913 20 Apr 16:10 compact_monitor_1_1776690597076.mp4
-rw-r--r-- 1 lukas staff 5918302 20 Apr 16:15 compact_monitor_1_1776690904422.mp4
-rw-r--r-- 1 lukas staff 3763719 20 Apr 16:20 compact_monitor_1_1776691212778.mp4
-rw-r--r-- 1 lukas staff 2668710 20 Apr 16:25 compact_monitor_1_1776691518074.mp4
-rw-r--r-- 1 lukas staff 1343489 20 Apr 16:30 compact_monitor_1_1776691827057.mp4
-rw-r--r-- 1 lukas staff 2669705 20 Apr 16:35 compact_monitor_1_1776692135254.mp4
-rw-r--r-- 1 lukas staff 3572963 20 Apr 16:40 compact_monitor_1_1776692442143.mp4
-rw-r--r-- 1 lukas staff 4745615 20 Apr 16:45 compact_monitor_1_1776692748574.mp4
-rw-r--r-- 1 lukas staff 3651920 20 Apr 16:51 compact_monitor_1_1776693058709.mp4
-rw-r--r-- 1 lukas staff 2336269 20 Apr 16:56 compact_monitor_1_1776693372981.mp4
-rw-r--r-- 1 lukas staff 3422245 20 Apr 17:01 compact_monitor_1_1776693680907.mp4
-rw-r--r-- 1 lukas staff 6584256 20 Apr 17:06 compact_monitor_1_1776693988164.mp4
-rw-r--r-- 1 lukas staff 6800476 20 Apr 17:11 compact_monitor_1_1776694300969.mp4
-rw-r--r-- 1 lukas staff 859311 20 Apr 17:16 compact_monitor_1_1776694607311.mp4
-rw-r--r-- 1 lukas staff 1991675 20 Apr 17:21 compact_monitor_1_1776694910016.mp4
-rw-r--r-- 1 lukas staff 670169 20 Apr 18:17 compact_monitor_1_1776698266692.mp4
-rw-r--r-- 1 lukas staff 2064979 20 Apr 18:27 compact_monitor_1_1776698875029.mp4
-rw-r--r-- 1 lukas staff 1765910 20 Apr 18:33 compact_monitor_1_1776699180706.mp4
-rw-r--r-- 1 lukas staff 1832195 20 Apr 18:38 compact_monitor_1_1776699488879.mp4
-rw-r--r-- 1 lukas staff 532237 20 Apr 18:43 compact_monitor_1_1776699797513.mp4
-rw-r--r-- 1 lukas staff 354899 20 Apr 18:47 compact_monitor_1_1776700038195.mp4
-rw-r--r-- 1 lukas staff 426016 20 Apr 18:52 compact_monitor_1_1776700345586.mp4
-rw-r--r-- 1 lukas staff 1502142 21 Apr 09:10 compact_monitor_1_1776751830793.mp4
-rw-r--r-- 1 lukas staff 1151283 20 Apr 09:20 compact_monitor_2_1776666028589.mp4
-rw-r--r-- 1 lukas staff 3922416 20 Apr 09:25 compact_monitor_2_1776666337400.mp4
-rw-r--r-- 1 lukas staff 6099157 20 Apr 09:31 compact_monitor_2_1776666649455.mp4
-rw-r--r-- 1 lukas staff 4465951 20 Apr 09:36 compact_monitor_2_1776666967290.mp4
-rw-r--r-- 1 lukas staff 3546165 20 Apr 09:41 compact_monitor_2_1776667285800.mp4
-rw-r--r-- 1 lukas staff 1917417 20 Apr 09:47 compact_monitor_2_1776667615139.mp4
-rw-r--r-- 1 lukas staff 2954961 20 Apr 09:52 compact_monitor_2_1776667943132.mp4
-rw-r--r-- 1 lukas staff 1934343 20 Apr 09:58 compact_monitor_2_1776668283739.mp4
-rw-r--r-- 1 lukas staff 1177513 20 Apr 10:03 compact_monitor_2_1776668620257.mp4
-rw-r--r-- 1 lukas staff 2147789 20 Apr 10:18 compact_monitor_2_1776669498937.mp4
-rw-r--r-- 1 lukas staff 740309 20 Apr 10:28 compact_monitor_2_1776670109608.mp4
-rw-r--r-- 1 lukas staff 3567504 20 Apr 10:33 compact_monitor_2_1776670417134.mp4
-rw-r--r-- 1 lukas staff 2982135 20 Apr 10:38 compact_monitor_2_1776670723346.mp4
-rw-r--r-- 1 lukas staff 3348097 20 Apr 10:43 compact_monitor_2_1776671030235.mp4
-rw-r--r-- 1 lukas staff 2837678 20 Apr 10:49 compact_monitor_2_1776671338266.mp4
-rw-r--r-- 1 lukas staff 2233867 20 Apr 10:54 compact_monitor_2_1776671646503.mp4
-rw-r--r-- 1 lukas staff 4947326 20 Apr 10:59 compact_monitor_2_1776671950567.mp4
-rw-r--r-- 1 lukas staff 5266402 20 Apr 11:04 compact_monitor_2_1776672263365.mp4
-rw-r--r-- 1 lukas staff 3801403 20 Apr 11:09 compact_monitor_2_1776672575558.mp4
-rw-r--r-- 1 lukas staff 6986490 20 Apr 11:14 compact_monitor_2_1776672883717.mp4
-rw-r--r-- 1 lukas staff 6043634 20 Apr 11:20 compact_monitor_2_1776673199069.mp4
-rw-r--r-- 1 lukas staff 3820880 20 Apr 11:25 compact_monitor_2_1776673514302.mp4
-rw-r--r-- 1 lukas staff 6492119 20 Apr 11:30 compact_monitor_2_1776673828645.mp4
-rw-r--r-- 1 lukas staff 3132510 20 Apr 11:35 compact_monitor_2_1776674137449.mp4
-rw-r--r-- 1 lukas staff 3612810 20 Apr 11:40 compact_monitor_2_1776674447649.mp4
-rw-r--r-- 1 lukas staff 4349270 20 Apr 11:46 compact_monitor_2_1776674758735.mp4
-rw-r--r-- 1 lukas staff 2397151 20 Apr 11:51 compact_monitor_2_1776675081239.mp4
-rw-r--r-- 1 lukas staff 2608050 20 Apr 11:56 compact_monitor_2_1776675389836.mp4
-rw-r--r-- 1 lukas staff 4271268 20 Apr 12:01 compact_monitor_2_1776675697375.mp4
-rw-r--r-- 1 lukas staff 2737153 20 Apr 12:06 compact_monitor_2_1776676012452.mp4
-rw-r--r-- 1 lukas staff 6545978 20 Apr 12:12 compact_monitor_2_1776676319355.mp4
-rw-r--r-- 1 lukas staff 2249881 20 Apr 12:17 compact_monitor_2_1776676627546.mp4
-rw-r--r-- 1 lukas staff 1995078 20 Apr 12:22 compact_monitor_2_1776676937565.mp4
-rw-r--r-- 1 lukas staff 3219551 20 Apr 12:27 compact_monitor_2_1776677245735.mp4
-rw-r--r-- 1 lukas staff 4294306 20 Apr 12:32 compact_monitor_2_1776677559935.mp4
-rw-r--r-- 1 lukas staff 4436497 20 Apr 12:37 compact_monitor_2_1776677872661.mp4
-rw-r--r-- 1 lukas staff 2697561 20 Apr 12:43 compact_monitor_2_1776678182031.mp4
-rw-r--r-- 1 lukas staff 2771589 20 Apr 12:48 compact_monitor_2_1776678492118.mp4
-rw-r--r-- 1 lukas staff 6696423 20 Apr 12:53 compact_monitor_2_1776678803761.mp4
-rw-r--r-- 1 lukas staff 5464611 20 Apr 12:58 compact_monitor_2_1776679111812.mp4
-rw-r--r-- 1 lukas staff 7181188 20 Apr 13:03 compact_monitor_2_1776679423402.mp4
-rw-r--r-- 1 lukas staff 5123182 20 Apr 13:08 compact_monitor_2_1776679731833.mp4
-rw-r--r-- 1 lukas staff 5654139 20 Apr 13:14 compact_monitor_2_1776680041318.mp4
-rw-r--r-- 1 lukas staff 3710649 20 Apr 13:19 compact_monitor_2_1776680352572.mp4
-rw-r--r-- 1 lukas staff 637175 20 Apr 13:40 compact_monitor_2_1776681604586.mp4
-rw-r--r-- 1 lukas staff 1331158 20 Apr 13:50 compact_monitor_2_1776682207482.mp4
-rw-r--r-- 1 lukas staff 2470366 20 Apr 13:55 compact_monitor_2_1776682515468.mp4
-rw-r--r-- 1 lukas staff 3743514 20 Apr 14:00 compact_monitor_2_1776682820185.mp4
-rw-r--r-- 1 lukas staff 1845046 20 Apr 14:05 compact_monitor_2_1776683129378.mp4
-rw-r--r-- 1 lukas staff 4349352 20 Apr 14:10 compact_monitor_2_1776683433639.mp4
-rw-r--r-- 1 lukas staff 6169839 20 Apr 14:15 compact_monitor_2_1776683740511.mp4
-rw-r--r-- 1 lukas staff 7618797 20 Apr 14:20 compact_monitor_2_1776684052092.mp4
-rw-r--r-- 1 lukas staff 5221568 20 Apr 14:26 compact_monitor_2_1776684362336.mp4
-rw-r--r-- 1 lukas staff 4891906 20 Apr 14:31 compact_monitor_2_1776684674762.mp4
-rw-r--r-- 1 lukas staff 705871 20 Apr 14:36 compact_monitor_2_1776684986928.mp4
-rw-r--r-- 1 lukas staff 3797177 20 Apr 14:41 compact_monitor_2_1776685297300.mp4
-rw-r--r-- 1 lukas staff 5206650 20 Apr 14:46 compact_monitor_2_1776685613835.mp4
-rw-r--r-- 1 lukas staff 3560709 20 Apr 14:52 compact_monitor_2_1776685927877.mp4
-rw-r--r-- 1 lukas staff 3054774 20 Apr 14:57 compact_monitor_2_1776686237953.mp4
-rw-r--r-- 1 lukas staff 5624059 20 Apr 15:02 compact_monitor_2_1776686554842.mp4
-rw-r--r-- 1 lukas staff 981456 20 Apr 15:02 compact_monitor_2_1776686566986.mp4
-rw-r--r-- 1 lukas staff 3813865 20 Apr 15:08 compact_monitor_2_1776686877747.mp4
-rw-r--r-- 1 lukas staff 4434608 20 Apr 15:13 compact_monitor_2_1776687192583.mp4
-rw-r--r-- 1 lukas staff 1912795 20 Apr 15:18 compact_monitor_2_1776687512417.mp4
-rw-r--r-- 1 lukas staff 362639 20 Apr 15:23 compact_monitor_2_1776687826917.mp4
-rw-r--r-- 1 lukas staff 2587214 20 Apr 15:28 compact_monitor_2_1776688132900.mp4
-rw-r--r-- 1 lukas staff 4444884 20 Apr 15:34 compact_monitor_2_1776688441330.mp4
-rw-r--r-- 1 lukas staff 2273805 20 Apr 15:39 compact_monitor_2_1776688749248.mp4
-rw-r--r-- 1 lukas staff 1472500 20 Apr 15:44 compact_monitor_2_1776689055232.mp4
-rw-r--r-- 1 lukas staff 773818 20 Apr 15:49 compact_monitor_2_1776689362170.mp4
-rw-r--r-- 1 lukas staff 2559460 20 Apr 15:54 compact_monitor_2_1776689672041.mp4
-rw-r--r-- 1 lukas staff 2344294 20 Apr 15:59 compact_monitor_2_1776689979563.mp4
-rw-r--r-- 1 lukas staff 4007787 20 Apr 16:04 compact_monitor_2_1776690291326.mp4
-rw-r--r-- 1 lukas staff 1819239 20 Apr 16:10 compact_monitor_2_1776690601791.mp4
-rw-r--r-- 1 lukas staff 2353532 20 Apr 16:15 compact_monitor_2_1776690909468.mp4
-rw-r--r-- 1 lukas staff 838923 20 Apr 16:20 compact_monitor_2_1776691216464.mp4
-rw-r--r-- 1 lukas staff 392421 20 Apr 16:25 compact_monitor_2_1776691524797.mp4
-rw-r--r-- 1 lukas staff 419825 20 Apr 16:30 compact_monitor_2_1776691830343.mp4
-rw-r--r-- 1 lukas staff 1311278 20 Apr 16:35 compact_monitor_2_1776692138776.mp4
-rw-r--r-- 1 lukas staff 2113227 20 Apr 16:40 compact_monitor_2_1776692445996.mp4
-rw-r--r-- 1 lukas staff 2836435 20 Apr 16:45 compact_monitor_2_1776692753037.mp4
-rw-r--r-- 1 lukas staff 896192 20 Apr 16:51 compact_monitor_2_1776693062948.mp4
-rw-r--r-- 1 lukas staff 430668 20 Apr 16:56 compact_monitor_2_1776693378064.mp4
-rw-r--r-- 1 lukas staff 5400273 20 Apr 17:01 compact_monitor_2_1776693684394.mp4
-rw-r--r-- 1 lukas staff 11097706 20 Apr 17:06 compact_monitor_2_1776693994199.mp4
-rw-r--r-- 1 lukas staff 2777663 20 Apr 17:11 compact_monitor_2_1776694304409.mp4
-rw-r--r-- 1 lukas staff 1170557 20 Apr 17:16 compact_monitor_2_1776694608505.mp4
-rw-r--r-- 1 lukas staff 1670866 20 Apr 17:21 compact_monitor_2_1776694911248.mp4
-rw-r--r-- 1 lukas staff 894067 20 Apr 18:17 compact_monitor_2_1776698268984.mp4
-rw-r--r-- 1 lukas staff 145618 20 Apr 18:27 compact_monitor_2_1776698876572.mp4
-rw-r--r-- 1 lukas staff 3307440 20 Apr 18:33 compact_monitor_2_1776699183611.mp4
-rw-r--r-- 1 lukas staff 3178239 20 Apr 18:38 compact_monitor_2_1776699492586.mp4
-rw-r--r-- 1 lukas staff 4180957 20 Apr 18:43 compact_monitor_2_1776699800287.mp4
-rw-r--r-- 1 lukas staff 2802374 20 Apr 18:47 compact_monitor_2_1776700041626.mp4
-rw-r--r-- 1 lukas staff 3153626 20 Apr 18:52 compact_monitor_2_1776700348038.mp4
-rw-r--r-- 1 lukas staff 755181 21 Apr 09:10 compact_monitor_2_1776751832783.mp4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Tue Apr 21 09:09:08 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 ~ $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe \n9.5G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ~/.screenpipe/* \ncd: too many arguments\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n5.2G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n4.3G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n 16M\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\n 16K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-21.0.log\n 16K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe_sync.sh\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data/data/2026-04-20\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $ ll\ntotal 1028152\ndrwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 .\ndrwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..\n-rw-r--r-- 1 lukas staff 693554 20 Apr 09:20 compact_monitor_1_1776666027568.mp4\n-rw-r--r-- 1 lukas staff 2292711 20 Apr 09:25 compact_monitor_1_1776666335423.mp4\n-rw-r--r-- 1 lukas staff 3373751 20 Apr 09:30 compact_monitor_1_1776666644694.mp4\n-rw-r--r-- 1 lukas staff 1141798 20 Apr 09:36 compact_monitor_1_1776666964111.mp4\n-rw-r--r-- 1 lukas staff 1116735 20 Apr 09:41 compact_monitor_1_1776667280362.mp4\n-rw-r--r-- 1 lukas staff 312074 20 Apr 09:46 compact_monitor_1_1776667610890.mp4\n-rw-r--r-- 1 lukas staff 2540109 20 Apr 09:52 compact_monitor_1_1776667932459.mp4\n-rw-r--r-- 1 lukas staff 4258007 20 Apr 09:58 compact_monitor_1_1776668266614.mp4\n-rw-r--r-- 1 lukas staff 3672899 20 Apr 10:03 compact_monitor_1_1776668602756.mp4\n-rw-r--r-- 1 lukas staff 6736829 20 Apr 10:18 compact_monitor_1_1776669493360.mp4\n-rw-r--r-- 1 lukas staff 515278 20 Apr 10:28 compact_monitor_1_1776670108337.mp4\n-rw-r--r-- 1 lukas staff 4563425 20 Apr 10:33 compact_monitor_1_1776670414205.mp4\n-rw-r--r-- 1 lukas staff 2773923 20 Apr 10:38 compact_monitor_1_1776670720980.mp4\n-rw-r--r-- 1 lukas staff 144316 20 Apr 10:43 compact_monitor_1_1776671028184.mp4\n-rw-r--r-- 1 lukas staff 114593 20 Apr 10:48 compact_monitor_1_1776671337226.mp4\n-rw-r--r-- 1 lukas staff 84061 20 Apr 10:54 compact_monitor_1_1776671645099.mp4\n-rw-r--r-- 1 lukas staff 138837 20 Apr 10:59 compact_monitor_1_1776671948570.mp4\n-rw-r--r-- 1 lukas staff 922928 20 Apr 11:04 compact_monitor_1_1776672259288.mp4\n-rw-r--r-- 1 lukas staff 202502 20 Apr 11:09 compact_monitor_1_1776672573034.mp4\n-rw-r--r-- 1 lukas staff 161221 20 Apr 11:14 compact_monitor_1_1776672880999.mp4\n-rw-r--r-- 1 lukas staff 722270 20 Apr 11:19 compact_monitor_1_1776673195531.mp4\n-rw-r--r-- 1 lukas staff 927507 20 Apr 11:25 compact_monitor_1_1776673511487.mp4\n-rw-r--r-- 1 lukas staff 1946362 20 Apr 11:30 compact_monitor_1_1776673825191.mp4\n-rw-r--r-- 1 lukas staff 2262449 20 Apr 11:35 compact_monitor_1_1776674135008.mp4\n-rw-r--r-- 1 lukas staff 2673064 20 Apr 11:40 compact_monitor_1_1776674443695.mp4\n-rw-r--r-- 1 lukas staff 3385935 20 Apr 11:45 compact_monitor_1_1776674753075.mp4\n-rw-r--r-- 1 lukas staff 3970196 20 Apr 11:51 compact_monitor_1_1776675069567.mp4\n-rw-r--r-- 1 lukas staff 180069 20 Apr 11:51 compact_monitor_1_1776675080259.mp4\n-rw-r--r-- 1 lukas staff 183982 20 Apr 11:56 compact_monitor_1_1776675388576.mp4\n-rw-r--r-- 1 lukas staff 2412845 20 Apr 12:01 compact_monitor_1_1776675694882.mp4\n-rw-r--r-- 1 lukas staff 1852048 20 Apr 12:06 compact_monitor_1_1776676010514.mp4\n-rw-r--r-- 1 lukas staff 4474440 20 Apr 12:11 compact_monitor_1_1776676315785.mp4\n-rw-r--r-- 1 lukas staff 3041244 20 Apr 12:17 compact_monitor_1_1776676624932.mp4\n-rw-r--r-- 1 lukas staff 953703 20 Apr 12:22 compact_monitor_1_1776676935457.mp4\n-rw-r--r-- 1 lukas staff 204639 20 Apr 12:27 compact_monitor_1_1776677243573.mp4\n-rw-r--r-- 1 lukas staff 1047573 20 Apr 12:32 compact_monitor_1_1776677555968.mp4\n-rw-r--r-- 1 lukas staff 410146 20 Apr 12:37 compact_monitor_1_1776677869651.mp4\n-rw-r--r-- 1 lukas staff 1097017 20 Apr 12:43 compact_monitor_1_1776678179263.mp4\n-rw-r--r-- 1 lukas staff 649528 20 Apr 12:48 compact_monitor_1_1776678488504.mp4\n-rw-r--r-- 1 lukas staff 620278 20 Apr 12:53 compact_monitor_1_1776678801739.mp4\n-rw-r--r-- 1 lukas staff 1497201 20 Apr 12:58 compact_monitor_1_1776679110088.mp4\n-rw-r--r-- 1 lukas staff 434578 20 Apr 13:03 compact_monitor_1_1776679419906.mp4\n-rw-r--r-- 1 lukas staff 341751 20 Apr 13:08 compact_monitor_1_1776679730068.mp4\n-rw-r--r-- 1 lukas staff 346717 20 Apr 13:14 compact_monitor_1_1776680038703.mp4\n-rw-r--r-- 1 lukas staff 340310 20 Apr 13:19 compact_monitor_1_1776680350917.mp4\n-rw-r--r-- 1 lukas staff 432905 20 Apr 13:40 compact_monitor_1_1776681603125.mp4\n-rw-r--r-- 1 lukas staff 1500908 20 Apr 13:50 compact_monitor_1_1776682206178.mp4\n-rw-r--r-- 1 lukas staff 1146740 20 Apr 13:55 compact_monitor_1_1776682513428.mp4\n-rw-r--r-- 1 lukas staff 634904 20 Apr 14:00 compact_monitor_1_1776682818338.mp4\n-rw-r--r-- 1 lukas staff 1582832 20 Apr 14:05 compact_monitor_1_1776683127297.mp4\n-rw-r--r-- 1 lukas staff 144970 20 Apr 14:10 compact_monitor_1_1776683431892.mp4\n-rw-r--r-- 1 lukas staff 145139 20 Apr 14:15 compact_monitor_1_1776683738252.mp4\n-rw-r--r-- 1 lukas staff 2321625 20 Apr 14:20 compact_monitor_1_1776684048360.mp4\n-rw-r--r-- 1 lukas staff 3285900 20 Apr 14:26 compact_monitor_1_1776684358328.mp4\n-rw-r--r-- 1 lukas staff 2180592 20 Apr 14:31 compact_monitor_1_1776684672448.mp4\n-rw-r--r-- 1 lukas staff 1008178 20 Apr 14:36 compact_monitor_1_1776684985706.mp4\n-rw-r--r-- 1 lukas staff 6232717 20 Apr 14:41 compact_monitor_1_1776685289456.mp4\n-rw-r--r-- 1 lukas staff 1201267 20 Apr 14:46 compact_monitor_1_1776685609078.mp4\n-rw-r--r-- 1 lukas staff 697069 20 Apr 14:52 compact_monitor_1_1776685924555.mp4\n-rw-r--r-- 1 lukas staff 4205892 20 Apr 14:57 compact_monitor_1_1776686234752.mp4\n-rw-r--r-- 1 lukas staff 1734015 20 Apr 15:02 compact_monitor_1_1776686548275.mp4\n-rw-r--r-- 1 lukas staff 742602 20 Apr 15:07 compact_monitor_1_1776686874783.mp4\n-rw-r--r-- 1 lukas staff 5624641 20 Apr 15:13 compact_monitor_1_1776687183276.mp4\n-rw-r--r-- 1 lukas staff 5148295 20 Apr 15:18 compact_monitor_1_1776687502643.mp4\n-rw-r--r-- 1 lukas staff 3357773 20 Apr 15:23 compact_monitor_1_1776687821494.mp4\n-rw-r--r-- 1 lukas staff 4647742 20 Apr 15:28 compact_monitor_1_1776688128104.mp4\n-rw-r--r-- 1 lukas staff 5124594 20 Apr 15:34 compact_monitor_1_1776688435924.mp4\n-rw-r--r-- 1 lukas staff 3299421 20 Apr 15:39 compact_monitor_1_1776688745956.mp4\n-rw-r--r-- 1 lukas staff 2438350 20 Apr 15:44 compact_monitor_1_1776689051698.mp4\n-rw-r--r-- 1 lukas staff 2544311 20 Apr 15:49 compact_monitor_1_1776689358807.mp4\n-rw-r--r-- 1 lukas staff 4934970 20 Apr 15:54 compact_monitor_1_1776689666677.mp4\n-rw-r--r-- 1 lukas staff 3876837 20 Apr 15:59 compact_monitor_1_1776689975475.mp4\n-rw-r--r-- 1 lukas staff 4939907 20 Apr 16:04 compact_monitor_1_1776690284639.mp4\n-rw-r--r-- 1 lukas staff 5387913 20 Apr 16:10 compact_monitor_1_1776690597076.mp4\n-rw-r--r-- 1 lukas staff 5918302 20 Apr 16:15 compact_monitor_1_1776690904422.mp4\n-rw-r--r-- 1 lukas staff 3763719 20 Apr 16:20 compact_monitor_1_1776691212778.mp4\n-rw-r--r-- 1 lukas staff 2668710 20 Apr 16:25 compact_monitor_1_1776691518074.mp4\n-rw-r--r-- 1 lukas staff 1343489 20 Apr 16:30 compact_monitor_1_1776691827057.mp4\n-rw-r--r-- 1 lukas staff 2669705 20 Apr 16:35 compact_monitor_1_1776692135254.mp4\n-rw-r--r-- 1 lukas staff 3572963 20 Apr 16:40 compact_monitor_1_1776692442143.mp4\n-rw-r--r-- 1 lukas staff 4745615 20 Apr 16:45 compact_monitor_1_1776692748574.mp4\n-rw-r--r-- 1 lukas staff 3651920 20 Apr 16:51 compact_monitor_1_1776693058709.mp4\n-rw-r--r-- 1 lukas staff 2336269 20 Apr 16:56 compact_monitor_1_1776693372981.mp4\n-rw-r--r-- 1 lukas staff 3422245 20 Apr 17:01 compact_monitor_1_1776693680907.mp4\n-rw-r--r-- 1 lukas staff 6584256 20 Apr 17:06 compact_monitor_1_1776693988164.mp4\n-rw-r--r-- 1 lukas staff 6800476 20 Apr 17:11 compact_monitor_1_1776694300969.mp4\n-rw-r--r-- 1 lukas staff 859311 20 Apr 17:16 compact_monitor_1_1776694607311.mp4\n-rw-r--r-- 1 lukas staff 1991675 20 Apr 17:21 compact_monitor_1_1776694910016.mp4\n-rw-r--r-- 1 lukas staff 670169 20 Apr 18:17 compact_monitor_1_1776698266692.mp4\n-rw-r--r-- 1 lukas staff 2064979 20 Apr 18:27 compact_monitor_1_1776698875029.mp4\n-rw-r--r-- 1 lukas staff 1765910 20 Apr 18:33 compact_monitor_1_1776699180706.mp4\n-rw-r--r-- 1 lukas staff 1832195 20 Apr 18:38 compact_monitor_1_1776699488879.mp4\n-rw-r--r-- 1 lukas staff 532237 20 Apr 18:43 compact_monitor_1_1776699797513.mp4\n-rw-r--r-- 1 lukas staff 354899 20 Apr 18:47 compact_monitor_1_1776700038195.mp4\n-rw-r--r-- 1 lukas staff 426016 20 Apr 18:52 compact_monitor_1_1776700345586.mp4\n-rw-r--r-- 1 lukas staff 1502142 21 Apr 09:10 compact_monitor_1_1776751830793.mp4\n-rw-r--r-- 1 lukas staff 1151283 20 Apr 09:20 compact_monitor_2_1776666028589.mp4\n-rw-r--r-- 1 lukas staff 3922416 20 Apr 09:25 compact_monitor_2_1776666337400.mp4\n-rw-r--r-- 1 lukas staff 6099157 20 Apr 09:31 compact_monitor_2_1776666649455.mp4\n-rw-r--r-- 1 lukas staff 4465951 20 Apr 09:36 compact_monitor_2_1776666967290.mp4\n-rw-r--r-- 1 lukas staff 3546165 20 Apr 09:41 compact_monitor_2_1776667285800.mp4\n-rw-r--r-- 1 lukas staff 1917417 20 Apr 09:47 compact_monitor_2_1776667615139.mp4\n-rw-r--r-- 1 lukas staff 2954961 20 Apr 09:52 compact_monitor_2_1776667943132.mp4\n-rw-r--r-- 1 lukas staff 1934343 20 Apr 09:58 compact_monitor_2_1776668283739.mp4\n-rw-r--r-- 1 lukas staff 1177513 20 Apr 10:03 compact_monitor_2_1776668620257.mp4\n-rw-r--r-- 1 lukas staff 2147789 20 Apr 10:18 compact_monitor_2_1776669498937.mp4\n-rw-r--r-- 1 lukas staff 740309 20 Apr 10:28 compact_monitor_2_1776670109608.mp4\n-rw-r--r-- 1 lukas staff 3567504 20 Apr 10:33 compact_monitor_2_1776670417134.mp4\n-rw-r--r-- 1 lukas staff 2982135 20 Apr 10:38 compact_monitor_2_1776670723346.mp4\n-rw-r--r-- 1 lukas staff 3348097 20 Apr 10:43 compact_monitor_2_1776671030235.mp4\n-rw-r--r-- 1 lukas staff 2837678 20 Apr 10:49 compact_monitor_2_1776671338266.mp4\n-rw-r--r-- 1 lukas staff 2233867 20 Apr 10:54 compact_monitor_2_1776671646503.mp4\n-rw-r--r-- 1 lukas staff 4947326 20 Apr 10:59 compact_monitor_2_1776671950567.mp4\n-rw-r--r-- 1 lukas staff 5266402 20 Apr 11:04 compact_monitor_2_1776672263365.mp4\n-rw-r--r-- 1 lukas staff 3801403 20 Apr 11:09 compact_monitor_2_1776672575558.mp4\n-rw-r--r-- 1 lukas staff 6986490 20 Apr 11:14 compact_monitor_2_1776672883717.mp4\n-rw-r--r-- 1 lukas staff 6043634 20 Apr 11:20 compact_monitor_2_1776673199069.mp4\n-rw-r--r-- 1 lukas staff 3820880 20 Apr 11:25 compact_monitor_2_1776673514302.mp4\n-rw-r--r-- 1 lukas staff 6492119 20 Apr 11:30 compact_monitor_2_1776673828645.mp4\n-rw-r--r-- 1 lukas staff 3132510 20 Apr 11:35 compact_monitor_2_1776674137449.mp4\n-rw-r--r-- 1 lukas staff 3612810 20 Apr 11:40 compact_monitor_2_1776674447649.mp4\n-rw-r--r-- 1 lukas staff 4349270 20 Apr 11:46 compact_monitor_2_1776674758735.mp4\n-rw-r--r-- 1 lukas staff 2397151 20 Apr 11:51 compact_monitor_2_1776675081239.mp4\n-rw-r--r-- 1 lukas staff 2608050 20 Apr 11:56 compact_monitor_2_1776675389836.mp4\n-rw-r--r-- 1 lukas staff 4271268 20 Apr 12:01 compact_monitor_2_1776675697375.mp4\n-rw-r--r-- 1 lukas staff 2737153 20 Apr 12:06 compact_monitor_2_1776676012452.mp4\n-rw-r--r-- 1 lukas staff 6545978 20 Apr 12:12 compact_monitor_2_1776676319355.mp4\n-rw-r--r-- 1 lukas staff 2249881 20 Apr 12:17 compact_monitor_2_1776676627546.mp4\n-rw-r--r-- 1 lukas staff 1995078 20 Apr 12:22 compact_monitor_2_1776676937565.mp4\n-rw-r--r-- 1 lukas staff 3219551 20 Apr 12:27 compact_monitor_2_1776677245735.mp4\n-rw-r--r-- 1 lukas staff 4294306 20 Apr 12:32 compact_monitor_2_1776677559935.mp4\n-rw-r--r-- 1 lukas staff 4436497 20 Apr 12:37 compact_monitor_2_1776677872661.mp4\n-rw-r--r-- 1 lukas staff 2697561 20 Apr 12:43 compact_monitor_2_1776678182031.mp4\n-rw-r--r-- 1 lukas staff 2771589 20 Apr 12:48 compact_monitor_2_1776678492118.mp4\n-rw-r--r-- 1 lukas staff 6696423 20 Apr 12:53 compact_monitor_2_1776678803761.mp4\n-rw-r--r-- 1 lukas staff 5464611 20 Apr 12:58 compact_monitor_2_1776679111812.mp4\n-rw-r--r-- 1 lukas staff 7181188 20 Apr 13:03 compact_monitor_2_1776679423402.mp4\n-rw-r--r-- 1 lukas staff 5123182 20 Apr 13:08 compact_monitor_2_1776679731833.mp4\n-rw-r--r-- 1 lukas staff 5654139 20 Apr 13:14 compact_monitor_2_1776680041318.mp4\n-rw-r--r-- 1 lukas staff 3710649 20 Apr 13:19 compact_monitor_2_1776680352572.mp4\n-rw-r--r-- 1 lukas staff 637175 20 Apr 13:40 compact_monitor_2_1776681604586.mp4\n-rw-r--r-- 1 lukas staff 1331158 20 Apr 13:50 compact_monitor_2_1776682207482.mp4\n-rw-r--r-- 1 lukas staff 2470366 20 Apr 13:55 compact_monitor_2_1776682515468.mp4\n-rw-r--r-- 1 lukas staff 3743514 20 Apr 14:00 compact_monitor_2_1776682820185.mp4\n-rw-r--r-- 1 lukas staff 1845046 20 Apr 14:05 compact_monitor_2_1776683129378.mp4\n-rw-r--r-- 1 lukas staff 4349352 20 Apr 14:10 compact_monitor_2_1776683433639.mp4\n-rw-r--r-- 1 lukas staff 6169839 20 Apr 14:15 compact_monitor_2_1776683740511.mp4\n-rw-r--r-- 1 lukas staff 7618797 20 Apr 14:20 compact_monitor_2_1776684052092.mp4\n-rw-r--r-- 1 lukas staff 5221568 20 Apr 14:26 compact_monitor_2_1776684362336.mp4\n-rw-r--r-- 1 lukas staff 4891906 20 Apr 14:31 compact_monitor_2_1776684674762.mp4\n-rw-r--r-- 1 lukas staff 705871 20 Apr 14:36 compact_monitor_2_1776684986928.mp4\n-rw-r--r-- 1 lukas staff 3797177 20 Apr 14:41 compact_monitor_2_1776685297300.mp4\n-rw-r--r-- 1 lukas staff 5206650 20 Apr 14:46 compact_monitor_2_1776685613835.mp4\n-rw-r--r-- 1 lukas staff 3560709 20 Apr 14:52 compact_monitor_2_1776685927877.mp4\n-rw-r--r-- 1 lukas staff 3054774 20 Apr 14:57 compact_monitor_2_1776686237953.mp4\n-rw-r--r-- 1 lukas staff 5624059 20 Apr 15:02 compact_monitor_2_1776686554842.mp4\n-rw-r--r-- 1 lukas staff 981456 20 Apr 15:02 compact_monitor_2_1776686566986.mp4\n-rw-r--r-- 1 lukas staff 3813865 20 Apr 15:08 compact_monitor_2_1776686877747.mp4\n-rw-r--r-- 1 lukas staff 4434608 20 Apr 15:13 compact_monitor_2_1776687192583.mp4\n-rw-r--r-- 1 lukas staff 1912795 20 Apr 15:18 compact_monitor_2_1776687512417.mp4\n-rw-r--r-- 1 lukas staff 362639 20 Apr 15:23 compact_monitor_2_1776687826917.mp4\n-rw-r--r-- 1 lukas staff 2587214 20 Apr 15:28 compact_monitor_2_1776688132900.mp4\n-rw-r--r-- 1 lukas staff 4444884 20 Apr 15:34 compact_monitor_2_1776688441330.mp4\n-rw-r--r-- 1 lukas staff 2273805 20 Apr 15:39 compact_monitor_2_1776688749248.mp4\n-rw-r--r-- 1 lukas staff 1472500 20 Apr 15:44 compact_monitor_2_1776689055232.mp4\n-rw-r--r-- 1 lukas staff 773818 20 Apr 15:49 compact_monitor_2_1776689362170.mp4\n-rw-r--r-- 1 lukas staff 2559460 20 Apr 15:54 compact_monitor_2_1776689672041.mp4\n-rw-r--r-- 1 lukas staff 2344294 20 Apr 15:59 compact_monitor_2_1776689979563.mp4\n-rw-r--r-- 1 lukas staff 4007787 20 Apr 16:04 compact_monitor_2_1776690291326.mp4\n-rw-r--r-- 1 lukas staff 1819239 20 Apr 16:10 compact_monitor_2_1776690601791.mp4\n-rw-r--r-- 1 lukas staff 2353532 20 Apr 16:15 compact_monitor_2_1776690909468.mp4\n-rw-r--r-- 1 lukas staff 838923 20 Apr 16:20 compact_monitor_2_1776691216464.mp4\n-rw-r--r-- 1 lukas staff 392421 20 Apr 16:25 compact_monitor_2_1776691524797.mp4\n-rw-r--r-- 1 lukas staff 419825 20 Apr 16:30 compact_monitor_2_1776691830343.mp4\n-rw-r--r-- 1 lukas staff 1311278 20 Apr 16:35 compact_monitor_2_1776692138776.mp4\n-rw-r--r-- 1 lukas staff 2113227 20 Apr 16:40 compact_monitor_2_1776692445996.mp4\n-rw-r--r-- 1 lukas staff 2836435 20 Apr 16:45 compact_monitor_2_1776692753037.mp4\n-rw-r--r-- 1 lukas staff 896192 20 Apr 16:51 compact_monitor_2_1776693062948.mp4\n-rw-r--r-- 1 lukas staff 430668 20 Apr 16:56 compact_monitor_2_1776693378064.mp4\n-rw-r--r-- 1 lukas staff 5400273 20 Apr 17:01 compact_monitor_2_1776693684394.mp4\n-rw-r--r-- 1 lukas staff 11097706 20 Apr 17:06 compact_monitor_2_1776693994199.mp4\n-rw-r--r-- 1 lukas staff 2777663 20 Apr 17:11 compact_monitor_2_1776694304409.mp4\n-rw-r--r-- 1 lukas staff 1170557 20 Apr 17:16 compact_monitor_2_1776694608505.mp4\n-rw-r--r-- 1 lukas staff 1670866 20 Apr 17:21 compact_monitor_2_1776694911248.mp4\n-rw-r--r-- 1 lukas staff 894067 20 Apr 18:17 compact_monitor_2_1776698268984.mp4\n-rw-r--r-- 1 lukas staff 145618 20 Apr 18:27 compact_monitor_2_1776698876572.mp4\n-rw-r--r-- 1 lukas staff 3307440 20 Apr 18:33 compact_monitor_2_1776699183611.mp4\n-rw-r--r-- 1 lukas staff 3178239 20 Apr 18:38 compact_monitor_2_1776699492586.mp4\n-rw-r--r-- 1 lukas staff 4180957 20 Apr 18:43 compact_monitor_2_1776699800287.mp4\n-rw-r--r-- 1 lukas staff 2802374 20 Apr 18:47 compact_monitor_2_1776700041626.mp4\n-rw-r--r-- 1 lukas staff 3153626 20 Apr 18:52 compact_monitor_2_1776700348038.mp4\n-rw-r--r-- 1 lukas staff 755181 21 Apr 09:10 compact_monitor_2_1776751832783.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.4800532,"height":-0.06304872},"value":"Last login: Tue Apr 21 09:09:08 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 ~ $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe \n9.5G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ~/.screenpipe/* \ncd: too many arguments\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*\n4.0K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/config.json\n5.2G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/data\n4.3G\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite\n 64K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/db.sqlite-shm\n 16M\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\n 16K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe.2026-04-21.0.log\n 16K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/screenpipe_sync.sh\n 24K\u0000\u0000\u0000\t/Users/lukas/.screenpipe/sync.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data/data/2026-04-20\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $ ll\ntotal 1028152\ndrwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 .\ndrwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..\n-rw-r--r-- 1 lukas staff 693554 20 Apr 09:20 compact_monitor_1_1776666027568.mp4\n-rw-r--r-- 1 lukas staff 2292711 20 Apr 09:25 compact_monitor_1_1776666335423.mp4\n-rw-r--r-- 1 lukas staff 3373751 20 Apr 09:30 compact_monitor_1_1776666644694.mp4\n-rw-r--r-- 1 lukas staff 1141798 20 Apr 09:36 compact_monitor_1_1776666964111.mp4\n-rw-r--r-- 1 lukas staff 1116735 20 Apr 09:41 compact_monitor_1_1776667280362.mp4\n-rw-r--r-- 1 lukas staff 312074 20 Apr 09:46 compact_monitor_1_1776667610890.mp4\n-rw-r--r-- 1 lukas staff 2540109 20 Apr 09:52 compact_monitor_1_1776667932459.mp4\n-rw-r--r-- 1 lukas staff 4258007 20 Apr 09:58 compact_monitor_1_1776668266614.mp4\n-rw-r--r-- 1 lukas staff 3672899 20 Apr 10:03 compact_monitor_1_1776668602756.mp4\n-rw-r--r-- 1 lukas staff 6736829 20 Apr 10:18 compact_monitor_1_1776669493360.mp4\n-rw-r--r-- 1 lukas staff 515278 20 Apr 10:28 compact_monitor_1_1776670108337.mp4\n-rw-r--r-- 1 lukas staff 4563425 20 Apr 10:33 compact_monitor_1_1776670414205.mp4\n-rw-r--r-- 1 lukas staff 2773923 20 Apr 10:38 compact_monitor_1_1776670720980.mp4\n-rw-r--r-- 1 lukas staff 144316 20 Apr 10:43 compact_monitor_1_1776671028184.mp4\n-rw-r--r-- 1 lukas staff 114593 20 Apr 10:48 compact_monitor_1_1776671337226.mp4\n-rw-r--r-- 1 lukas staff 84061 20 Apr 10:54 compact_monitor_1_1776671645099.mp4\n-rw-r--r-- 1 lukas staff 138837 20 Apr 10:59 compact_monitor_1_1776671948570.mp4\n-rw-r--r-- 1 lukas staff 922928 20 Apr 11:04 compact_monitor_1_1776672259288.mp4\n-rw-r--r-- 1 lukas staff 202502 20 Apr 11:09 compact_monitor_1_1776672573034.mp4\n-rw-r--r-- 1 lukas staff 161221 20 Apr 11:14 compact_monitor_1_1776672880999.mp4\n-rw-r--r-- 1 lukas staff 722270 20 Apr 11:19 compact_monitor_1_1776673195531.mp4\n-rw-r--r-- 1 lukas staff 927507 20 Apr 11:25 compact_monitor_1_1776673511487.mp4\n-rw-r--r-- 1 lukas staff 1946362 20 Apr 11:30 compact_monitor_1_1776673825191.mp4\n-rw-r--r-- 1 lukas staff 2262449 20 Apr 11:35 compact_monitor_1_1776674135008.mp4\n-rw-r--r-- 1 lukas staff 2673064 20 Apr 11:40 compact_monitor_1_1776674443695.mp4\n-rw-r--r-- 1 lukas staff 3385935 20 Apr 11:45 compact_monitor_1_1776674753075.mp4\n-rw-r--r-- 1 lukas staff 3970196 20 Apr 11:51 compact_monitor_1_1776675069567.mp4\n-rw-r--r-- 1 lukas staff 180069 20 Apr 11:51 compact_monitor_1_1776675080259.mp4\n-rw-r--r-- 1 lukas staff 183982 20 Apr 11:56 compact_monitor_1_1776675388576.mp4\n-rw-r--r-- 1 lukas staff 2412845 20 Apr 12:01 compact_monitor_1_1776675694882.mp4\n-rw-r--r-- 1 lukas staff 1852048 20 Apr 12:06 compact_monitor_1_1776676010514.mp4\n-rw-r--r-- 1 lukas staff 4474440 20 Apr 12:11 compact_monitor_1_1776676315785.mp4\n-rw-r--r-- 1 lukas staff 3041244 20 Apr 12:17 compact_monitor_1_1776676624932.mp4\n-rw-r--r-- 1 lukas staff 953703 20 Apr 12:22 compact_monitor_1_1776676935457.mp4\n-rw-r--r-- 1 lukas staff 204639 20 Apr 12:27 compact_monitor_1_1776677243573.mp4\n-rw-r--r-- 1 lukas staff 1047573 20 Apr 12:32 compact_monitor_1_1776677555968.mp4\n-rw-r--r-- 1 lukas staff 410146 20 Apr 12:37 compact_monitor_1_1776677869651.mp4\n-rw-r--r-- 1 lukas staff 1097017 20 Apr 12:43 compact_monitor_1_1776678179263.mp4\n-rw-r--r-- 1 lukas staff 649528 20 Apr 12:48 compact_monitor_1_1776678488504.mp4\n-rw-r--r-- 1 lukas staff 620278 20 Apr 12:53 compact_monitor_1_1776678801739.mp4\n-rw-r--r-- 1 lukas staff 1497201 20 Apr 12:58 compact_monitor_1_1776679110088.mp4\n-rw-r--r-- 1 lukas staff 434578 20 Apr 13:03 compact_monitor_1_1776679419906.mp4\n-rw-r--r-- 1 lukas staff 341751 20 Apr 13:08 compact_monitor_1_1776679730068.mp4\n-rw-r--r-- 1 lukas staff 346717 20 Apr 13:14 compact_monitor_1_1776680038703.mp4\n-rw-r--r-- 1 lukas staff 340310 20 Apr 13:19 compact_monitor_1_1776680350917.mp4\n-rw-r--r-- 1 lukas staff 432905 20 Apr 13:40 compact_monitor_1_1776681603125.mp4\n-rw-r--r-- 1 lukas staff 1500908 20 Apr 13:50 compact_monitor_1_1776682206178.mp4\n-rw-r--r-- 1 lukas staff 1146740 20 Apr 13:55 compact_monitor_1_1776682513428.mp4\n-rw-r--r-- 1 lukas staff 634904 20 Apr 14:00 compact_monitor_1_1776682818338.mp4\n-rw-r--r-- 1 lukas staff 1582832 20 Apr 14:05 compact_monitor_1_1776683127297.mp4\n-rw-r--r-- 1 lukas staff 144970 20 Apr 14:10 compact_monitor_1_1776683431892.mp4\n-rw-r--r-- 1 lukas staff 145139 20 Apr 14:15 compact_monitor_1_1776683738252.mp4\n-rw-r--r-- 1 lukas staff 2321625 20 Apr 14:20 compact_monitor_1_1776684048360.mp4\n-rw-r--r-- 1 lukas staff 3285900 20 Apr 14:26 compact_monitor_1_1776684358328.mp4\n-rw-r--r-- 1 lukas staff 2180592 20 Apr 14:31 compact_monitor_1_1776684672448.mp4\n-rw-r--r-- 1 lukas staff 1008178 20 Apr 14:36 compact_monitor_1_1776684985706.mp4\n-rw-r--r-- 1 lukas staff 6232717 20 Apr 14:41 compact_monitor_1_1776685289456.mp4\n-rw-r--r-- 1 lukas staff 1201267 20 Apr 14:46 compact_monitor_1_1776685609078.mp4\n-rw-r--r-- 1 lukas staff 697069 20 Apr 14:52 compact_monitor_1_1776685924555.mp4\n-rw-r--r-- 1 lukas staff 4205892 20 Apr 14:57 compact_monitor_1_1776686234752.mp4\n-rw-r--r-- 1 lukas staff 1734015 20 Apr 15:02 compact_monitor_1_1776686548275.mp4\n-rw-r--r-- 1 lukas staff 742602 20 Apr 15:07 compact_monitor_1_1776686874783.mp4\n-rw-r--r-- 1 lukas staff 5624641 20 Apr 15:13 compact_monitor_1_1776687183276.mp4\n-rw-r--r-- 1 lukas staff 5148295 20 Apr 15:18 compact_monitor_1_1776687502643.mp4\n-rw-r--r-- 1 lukas staff 3357773 20 Apr 15:23 compact_monitor_1_1776687821494.mp4\n-rw-r--r-- 1 lukas staff 4647742 20 Apr 15:28 compact_monitor_1_1776688128104.mp4\n-rw-r--r-- 1 lukas staff 5124594 20 Apr 15:34 compact_monitor_1_1776688435924.mp4\n-rw-r--r-- 1 lukas staff 3299421 20 Apr 15:39 compact_monitor_1_1776688745956.mp4\n-rw-r--r-- 1 lukas staff 2438350 20 Apr 15:44 compact_monitor_1_1776689051698.mp4\n-rw-r--r-- 1 lukas staff 2544311 20 Apr 15:49 compact_monitor_1_1776689358807.mp4\n-rw-r--r-- 1 lukas staff 4934970 20 Apr 15:54 compact_monitor_1_1776689666677.mp4\n-rw-r--r-- 1 lukas staff 3876837 20 Apr 15:59 compact_monitor_1_1776689975475.mp4\n-rw-r--r-- 1 lukas staff 4939907 20 Apr 16:04 compact_monitor_1_1776690284639.mp4\n-rw-r--r-- 1 lukas staff 5387913 20 Apr 16:10 compact_monitor_1_1776690597076.mp4\n-rw-r--r-- 1 lukas staff 5918302 20 Apr 16:15 compact_monitor_1_1776690904422.mp4\n-rw-r--r-- 1 lukas staff 3763719 20 Apr 16:20 compact_monitor_1_1776691212778.mp4\n-rw-r--r-- 1 lukas staff 2668710 20 Apr 16:25 compact_monitor_1_1776691518074.mp4\n-rw-r--r-- 1 lukas staff 1343489 20 Apr 16:30 compact_monitor_1_1776691827057.mp4\n-rw-r--r-- 1 lukas staff 2669705 20 Apr 16:35 compact_monitor_1_1776692135254.mp4\n-rw-r--r-- 1 lukas staff 3572963 20 Apr 16:40 compact_monitor_1_1776692442143.mp4\n-rw-r--r-- 1 lukas staff 4745615 20 Apr 16:45 compact_monitor_1_1776692748574.mp4\n-rw-r--r-- 1 lukas staff 3651920 20 Apr 16:51 compact_monitor_1_1776693058709.mp4\n-rw-r--r-- 1 lukas staff 2336269 20 Apr 16:56 compact_monitor_1_1776693372981.mp4\n-rw-r--r-- 1 lukas staff 3422245 20 Apr 17:01 compact_monitor_1_1776693680907.mp4\n-rw-r--r-- 1 lukas staff 6584256 20 Apr 17:06 compact_monitor_1_1776693988164.mp4\n-rw-r--r-- 1 lukas staff 6800476 20 Apr 17:11 compact_monitor_1_1776694300969.mp4\n-rw-r--r-- 1 lukas staff 859311 20 Apr 17:16 compact_monitor_1_1776694607311.mp4\n-rw-r--r-- 1 lukas staff 1991675 20 Apr 17:21 compact_monitor_1_1776694910016.mp4\n-rw-r--r-- 1 lukas staff 670169 20 Apr 18:17 compact_monitor_1_1776698266692.mp4\n-rw-r--r-- 1 lukas staff 2064979 20 Apr 18:27 compact_monitor_1_1776698875029.mp4\n-rw-r--r-- 1 lukas staff 1765910 20 Apr 18:33 compact_monitor_1_1776699180706.mp4\n-rw-r--r-- 1 lukas staff 1832195 20 Apr 18:38 compact_monitor_1_1776699488879.mp4\n-rw-r--r-- 1 lukas staff 532237 20 Apr 18:43 compact_monitor_1_1776699797513.mp4\n-rw-r--r-- 1 lukas staff 354899 20 Apr 18:47 compact_monitor_1_1776700038195.mp4\n-rw-r--r-- 1 lukas staff 426016 20 Apr 18:52 compact_monitor_1_1776700345586.mp4\n-rw-r--r-- 1 lukas staff 1502142 21 Apr 09:10 compact_monitor_1_1776751830793.mp4\n-rw-r--r-- 1 lukas staff 1151283 20 Apr 09:20 compact_monitor_2_1776666028589.mp4\n-rw-r--r-- 1 lukas staff 3922416 20 Apr 09:25 compact_monitor_2_1776666337400.mp4\n-rw-r--r-- 1 lukas staff 6099157 20 Apr 09:31 compact_monitor_2_1776666649455.mp4\n-rw-r--r-- 1 lukas staff 4465951 20 Apr 09:36 compact_monitor_2_1776666967290.mp4\n-rw-r--r-- 1 lukas staff 3546165 20 Apr 09:41 compact_monitor_2_1776667285800.mp4\n-rw-r--r-- 1 lukas staff 1917417 20 Apr 09:47 compact_monitor_2_1776667615139.mp4\n-rw-r--r-- 1 lukas staff 2954961 20 Apr 09:52 compact_monitor_2_1776667943132.mp4\n-rw-r--r-- 1 lukas staff 1934343 20 Apr 09:58 compact_monitor_2_1776668283739.mp4\n-rw-r--r-- 1 lukas staff 1177513 20 Apr 10:03 compact_monitor_2_1776668620257.mp4\n-rw-r--r-- 1 lukas staff 2147789 20 Apr 10:18 compact_monitor_2_1776669498937.mp4\n-rw-r--r-- 1 lukas staff 740309 20 Apr 10:28 compact_monitor_2_1776670109608.mp4\n-rw-r--r-- 1 lukas staff 3567504 20 Apr 10:33 compact_monitor_2_1776670417134.mp4\n-rw-r--r-- 1 lukas staff 2982135 20 Apr 10:38 compact_monitor_2_1776670723346.mp4\n-rw-r--r-- 1 lukas staff 3348097 20 Apr 10:43 compact_monitor_2_1776671030235.mp4\n-rw-r--r-- 1 lukas staff 2837678 20 Apr 10:49 compact_monitor_2_1776671338266.mp4\n-rw-r--r-- 1 lukas staff 2233867 20 Apr 10:54 compact_monitor_2_1776671646503.mp4\n-rw-r--r-- 1 lukas staff 4947326 20 Apr 10:59 compact_monitor_2_1776671950567.mp4\n-rw-r--r-- 1 lukas staff 5266402 20 Apr 11:04 compact_monitor_2_1776672263365.mp4\n-rw-r--r-- 1 lukas staff 3801403 20 Apr 11:09 compact_monitor_2_1776672575558.mp4\n-rw-r--r-- 1 lukas staff 6986490 20 Apr 11:14 compact_monitor_2_1776672883717.mp4\n-rw-r--r-- 1 lukas staff 6043634 20 Apr 11:20 compact_monitor_2_1776673199069.mp4\n-rw-r--r-- 1 lukas staff 3820880 20 Apr 11:25 compact_monitor_2_1776673514302.mp4\n-rw-r--r-- 1 lukas staff 6492119 20 Apr 11:30 compact_monitor_2_1776673828645.mp4\n-rw-r--r-- 1 lukas staff 3132510 20 Apr 11:35 compact_monitor_2_1776674137449.mp4\n-rw-r--r-- 1 lukas staff 3612810 20 Apr 11:40 compact_monitor_2_1776674447649.mp4\n-rw-r--r-- 1 lukas staff 4349270 20 Apr 11:46 compact_monitor_2_1776674758735.mp4\n-rw-r--r-- 1 lukas staff 2397151 20 Apr 11:51 compact_monitor_2_1776675081239.mp4\n-rw-r--r-- 1 lukas staff 2608050 20 Apr 11:56 compact_monitor_2_1776675389836.mp4\n-rw-r--r-- 1 lukas staff 4271268 20 Apr 12:01 compact_monitor_2_1776675697375.mp4\n-rw-r--r-- 1 lukas staff 2737153 20 Apr 12:06 compact_monitor_2_1776676012452.mp4\n-rw-r--r-- 1 lukas staff 6545978 20 Apr 12:12 compact_monitor_2_1776676319355.mp4\n-rw-r--r-- 1 lukas staff 2249881 20 Apr 12:17 compact_monitor_2_1776676627546.mp4\n-rw-r--r-- 1 lukas staff 1995078 20 Apr 12:22 compact_monitor_2_1776676937565.mp4\n-rw-r--r-- 1 lukas staff 3219551 20 Apr 12:27 compact_monitor_2_1776677245735.mp4\n-rw-r--r-- 1 lukas staff 4294306 20 Apr 12:32 compact_monitor_2_1776677559935.mp4\n-rw-r--r-- 1 lukas staff 4436497 20 Apr 12:37 compact_monitor_2_1776677872661.mp4\n-rw-r--r-- 1 lukas staff 2697561 20 Apr 12:43 compact_monitor_2_1776678182031.mp4\n-rw-r--r-- 1 lukas staff 2771589 20 Apr 12:48 compact_monitor_2_1776678492118.mp4\n-rw-r--r-- 1 lukas staff 6696423 20 Apr 12:53 compact_monitor_2_1776678803761.mp4\n-rw-r--r-- 1 lukas staff 5464611 20 Apr 12:58 compact_monitor_2_1776679111812.mp4\n-rw-r--r-- 1 lukas staff 7181188 20 Apr 13:03 compact_monitor_2_1776679423402.mp4\n-rw-r--r-- 1 lukas staff 5123182 20 Apr 13:08 compact_monitor_2_1776679731833.mp4\n-rw-r--r-- 1 lukas staff 5654139 20 Apr 13:14 compact_monitor_2_1776680041318.mp4\n-rw-r--r-- 1 lukas staff 3710649 20 Apr 13:19 compact_monitor_2_1776680352572.mp4\n-rw-r--r-- 1 lukas staff 637175 20 Apr 13:40 compact_monitor_2_1776681604586.mp4\n-rw-r--r-- 1 lukas staff 1331158 20 Apr 13:50 compact_monitor_2_1776682207482.mp4\n-rw-r--r-- 1 lukas staff 2470366 20 Apr 13:55 compact_monitor_2_1776682515468.mp4\n-rw-r--r-- 1 lukas staff 3743514 20 Apr 14:00 compact_monitor_2_1776682820185.mp4\n-rw-r--r-- 1 lukas staff 1845046 20 Apr 14:05 compact_monitor_2_1776683129378.mp4\n-rw-r--r-- 1 lukas staff 4349352 20 Apr 14:10 compact_monitor_2_1776683433639.mp4\n-rw-r--r-- 1 lukas staff 6169839 20 Apr 14:15 compact_monitor_2_1776683740511.mp4\n-rw-r--r-- 1 lukas staff 7618797 20 Apr 14:20 compact_monitor_2_1776684052092.mp4\n-rw-r--r-- 1 lukas staff 5221568 20 Apr 14:26 compact_monitor_2_1776684362336.mp4\n-rw-r--r-- 1 lukas staff 4891906 20 Apr 14:31 compact_monitor_2_1776684674762.mp4\n-rw-r--r-- 1 lukas staff 705871 20 Apr 14:36 compact_monitor_2_1776684986928.mp4\n-rw-r--r-- 1 lukas staff 3797177 20 Apr 14:41 compact_monitor_2_1776685297300.mp4\n-rw-r--r-- 1 lukas staff 5206650 20 Apr 14:46 compact_monitor_2_1776685613835.mp4\n-rw-r--r-- 1 lukas staff 3560709 20 Apr 14:52 compact_monitor_2_1776685927877.mp4\n-rw-r--r-- 1 lukas staff 3054774 20 Apr 14:57 compact_monitor_2_1776686237953.mp4\n-rw-r--r-- 1 lukas staff 5624059 20 Apr 15:02 compact_monitor_2_1776686554842.mp4\n-rw-r--r-- 1 lukas staff 981456 20 Apr 15:02 compact_monitor_2_1776686566986.mp4\n-rw-r--r-- 1 lukas staff 3813865 20 Apr 15:08 compact_monitor_2_1776686877747.mp4\n-rw-r--r-- 1 lukas staff 4434608 20 Apr 15:13 compact_monitor_2_1776687192583.mp4\n-rw-r--r-- 1 lukas staff 1912795 20 Apr 15:18 compact_monitor_2_1776687512417.mp4\n-rw-r--r-- 1 lukas staff 362639 20 Apr 15:23 compact_monitor_2_1776687826917.mp4\n-rw-r--r-- 1 lukas staff 2587214 20 Apr 15:28 compact_monitor_2_1776688132900.mp4\n-rw-r--r-- 1 lukas staff 4444884 20 Apr 15:34 compact_monitor_2_1776688441330.mp4\n-rw-r--r-- 1 lukas staff 2273805 20 Apr 15:39 compact_monitor_2_1776688749248.mp4\n-rw-r--r-- 1 lukas staff 1472500 20 Apr 15:44 compact_monitor_2_1776689055232.mp4\n-rw-r--r-- 1 lukas staff 773818 20 Apr 15:49 compact_monitor_2_1776689362170.mp4\n-rw-r--r-- 1 lukas staff 2559460 20 Apr 15:54 compact_monitor_2_1776689672041.mp4\n-rw-r--r-- 1 lukas staff 2344294 20 Apr 15:59 compact_monitor_2_1776689979563.mp4\n-rw-r--r-- 1 lukas staff 4007787 20 Apr 16:04 compact_monitor_2_1776690291326.mp4\n-rw-r--r-- 1 lukas staff 1819239 20 Apr 16:10 compact_monitor_2_1776690601791.mp4\n-rw-r--r-- 1 lukas staff 2353532 20 Apr 16:15 compact_monitor_2_1776690909468.mp4\n-rw-r--r-- 1 lukas staff 838923 20 Apr 16:20 compact_monitor_2_1776691216464.mp4\n-rw-r--r-- 1 lukas staff 392421 20 Apr 16:25 compact_monitor_2_1776691524797.mp4\n-rw-r--r-- 1 lukas staff 419825 20 Apr 16:30 compact_monitor_2_1776691830343.mp4\n-rw-r--r-- 1 lukas staff 1311278 20 Apr 16:35 compact_monitor_2_1776692138776.mp4\n-rw-r--r-- 1 lukas staff 2113227 20 Apr 16:40 compact_monitor_2_1776692445996.mp4\n-rw-r--r-- 1 lukas staff 2836435 20 Apr 16:45 compact_monitor_2_1776692753037.mp4\n-rw-r--r-- 1 lukas staff 896192 20 Apr 16:51 compact_monitor_2_1776693062948.mp4\n-rw-r--r-- 1 lukas staff 430668 20 Apr 16:56 compact_monitor_2_1776693378064.mp4\n-rw-r--r-- 1 lukas staff 5400273 20 Apr 17:01 compact_monitor_2_1776693684394.mp4\n-rw-r--r-- 1 lukas staff 11097706 20 Apr 17:06 compact_monitor_2_1776693994199.mp4\n-rw-r--r-- 1 lukas staff 2777663 20 Apr 17:11 compact_monitor_2_1776694304409.mp4\n-rw-r--r-- 1 lukas staff 1170557 20 Apr 17:16 compact_monitor_2_1776694608505.mp4\n-rw-r--r-- 1 lukas staff 1670866 20 Apr 17:21 compact_monitor_2_1776694911248.mp4\n-rw-r--r-- 1 lukas staff 894067 20 Apr 18:17 compact_monitor_2_1776698268984.mp4\n-rw-r--r-- 1 lukas staff 145618 20 Apr 18:27 compact_monitor_2_1776698876572.mp4\n-rw-r--r-- 1 lukas staff 3307440 20 Apr 18:33 compact_monitor_2_1776699183611.mp4\n-rw-r--r-- 1 lukas staff 3178239 20 Apr 18:38 compact_monitor_2_1776699492586.mp4\n-rw-r--r-- 1 lukas staff 4180957 20 Apr 18:43 compact_monitor_2_1776699800287.mp4\n-rw-r--r-- 1 lukas staff 2802374 20 Apr 18:47 compact_monitor_2_1776700041626.mp4\n-rw-r--r-- 1 lukas staff 3153626 20 Apr 18:52 compact_monitor_2_1776700348038.mp4\n-rw-r--r-- 1 lukas staff 755181 21 Apr 09:10 compact_monitor_2_1776751832783.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.0674867,"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.33776596,"top":1.0,"width":0.0674867,"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.33976063,"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.40525267,"top":1.0,"width":0.0674867,"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.40724733,"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 (node)","depth":2,"bounds":{"left":0.47273937,"top":1.0,"width":0.0674867,"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.47473404,"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.54022604,"top":1.0,"width":0.0674867,"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.5422208,"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.60771275,"top":1.0,"width":0.06732048,"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.6097075,"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.6750333,"top":1.0,"width":0.06732048,"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.67702794,"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.7287234,"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.5046542,"top":1.0,"width":0.010970744,"height":-0.02394259},"role_description":"text"}]...
|
1104388310719845288
|
-3716007189283964767
|
app_switch
|
accessibility
|
NULL
|
Last login: Tue Apr 21 09:09:08 on ttys010
Poetry Last login: Tue Apr 21 09:09:08 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 ~ $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
9.5G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ~/.screenpipe/*
cd: too many arguments
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
5.2G /Users/lukas/.screenpipe/data
4.3G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
204K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
64K /Users/lukas/.screenpipe/screenpipe.2026-04-18.0.log
352K /Users/lukas/.screenpipe/screenpipe.2026-04-20.0.log
16K /Users/lukas/.screenpipe/screenpipe.2026-04-21.0.log
16K /Users/lukas/.screenpipe/screenpipe_sync.sh
24K /Users/lukas/.screenpipe/sync.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data/data/2026-04-20
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $ ll
total 1028152
drwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 .
drwxr-xr-x 14 lukas staff 448 21 Apr 09:09 ..
-rw-r--r-- 1 lukas staff 693554 20 Apr 09:20 compact_monitor_1_1776666027568.mp4
-rw-r--r-- 1 lukas staff 2292711 20 Apr 09:25 compact_monitor_1_1776666335423.mp4
-rw-r--r-- 1 lukas staff 3373751 20 Apr 09:30 compact_monitor_1_1776666644694.mp4
-rw-r--r-- 1 lukas staff 1141798 20 Apr 09:36 compact_monitor_1_1776666964111.mp4
-rw-r--r-- 1 lukas staff 1116735 20 Apr 09:41 compact_monitor_1_1776667280362.mp4
-rw-r--r-- 1 lukas staff 312074 20 Apr 09:46 compact_monitor_1_1776667610890.mp4
-rw-r--r-- 1 lukas staff 2540109 20 Apr 09:52 compact_monitor_1_1776667932459.mp4
-rw-r--r-- 1 lukas staff 4258007 20 Apr 09:58 compact_monitor_1_1776668266614.mp4
-rw-r--r-- 1 lukas staff 3672899 20 Apr 10:03 compact_monitor_1_1776668602756.mp4
-rw-r--r-- 1 lukas staff 6736829 20 Apr 10:18 compact_monitor_1_1776669493360.mp4
-rw-r--r-- 1 lukas staff 515278 20 Apr 10:28 compact_monitor_1_1776670108337.mp4
-rw-r--r-- 1 lukas staff 4563425 20 Apr 10:33 compact_monitor_1_1776670414205.mp4
-rw-r--r-- 1 lukas staff 2773923 20 Apr 10:38 compact_monitor_1_1776670720980.mp4
-rw-r--r-- 1 lukas staff 144316 20 Apr 10:43 compact_monitor_1_1776671028184.mp4
-rw-r--r-- 1 lukas staff 114593 20 Apr 10:48 compact_monitor_1_1776671337226.mp4
-rw-r--r-- 1 lukas staff 84061 20 Apr 10:54 compact_monitor_1_1776671645099.mp4
-rw-r--r-- 1 lukas staff 138837 20 Apr 10:59 compact_monitor_1_1776671948570.mp4
-rw-r--r-- 1 lukas staff 922928 20 Apr 11:04 compact_monitor_1_1776672259288.mp4
-rw-r--r-- 1 lukas staff 202502 20 Apr 11:09 compact_monitor_1_1776672573034.mp4
-rw-r--r-- 1 lukas staff 161221 20 Apr 11:14 compact_monitor_1_1776672880999.mp4
-rw-r--r-- 1 lukas staff 722270 20 Apr 11:19 compact_monitor_1_1776673195531.mp4
-rw-r--r-- 1 lukas staff 927507 20 Apr 11:25 compact_monitor_1_1776673511487.mp4
-rw-r--r-- 1 lukas staff 1946362 20 Apr 11:30 compact_monitor_1_1776673825191.mp4
-rw-r--r-- 1 lukas staff 2262449 20 Apr 11:35 compact_monitor_1_1776674135008.mp4
-rw-r--r-- 1 lukas staff 2673064 20 Apr 11:40 compact_monitor_1_1776674443695.mp4
-rw-r--r-- 1 lukas staff 3385935 20 Apr 11:45 compact_monitor_1_1776674753075.mp4
-rw-r--r-- 1 lukas staff 3970196 20 Apr 11:51 compact_monitor_1_1776675069567.mp4
-rw-r--r-- 1 lukas staff 180069 20 Apr 11:51 compact_monitor_1_1776675080259.mp4
-rw-r--r-- 1 lukas staff 183982 20 Apr 11:56 compact_monitor_1_1776675388576.mp4
-rw-r--r-- 1 lukas staff 2412845 20 Apr 12:01 compact_monitor_1_1776675694882.mp4
-rw-r--r-- 1 lukas staff 1852048 20 Apr 12:06 compact_monitor_1_1776676010514.mp4
-rw-r--r-- 1 lukas staff 4474440 20 Apr 12:11 compact_monitor_1_1776676315785.mp4
-rw-r--r-- 1 lukas staff 3041244 20 Apr 12:17 compact_monitor_1_1776676624932.mp4
-rw-r--r-- 1 lukas staff 953703 20 Apr 12:22 compact_monitor_1_1776676935457.mp4
-rw-r--r-- 1 lukas staff 204639 20 Apr 12:27 compact_monitor_1_1776677243573.mp4
-rw-r--r-- 1 lukas staff 1047573 20 Apr 12:32 compact_monitor_1_1776677555968.mp4
-rw-r--r-- 1 lukas staff 410146 20 Apr 12:37 compact_monitor_1_1776677869651.mp4
-rw-r--r-- 1 lukas staff 1097017 20 Apr 12:43 compact_monitor_1_1776678179263.mp4
-rw-r--r-- 1 lukas staff 649528 20 Apr 12:48 compact_monitor_1_1776678488504.mp4
-rw-r--r-- 1 lukas staff 620278 20 Apr 12:53 compact_monitor_1_1776678801739.mp4
-rw-r--r-- 1 lukas staff 1497201 20 Apr 12:58 compact_monitor_1_1776679110088.mp4
-rw-r--r-- 1 lukas staff 434578 20 Apr 13:03 compact_monitor_1_1776679419906.mp4
-rw-r--r-- 1 lukas staff 341751 20 Apr 13:08 compact_monitor_1_1776679730068.mp4
-rw-r--r-- 1 lukas staff 346717 20 Apr 13:14 compact_monitor_1_1776680038703.mp4
-rw-r--r-- 1 lukas staff 340310 20 Apr 13:19 compact_monitor_1_1776680350917.mp4
-rw-r--r-- 1 lukas staff 432905 20 Apr 13:40 compact_monitor_1_1776681603125.mp4
-rw-r--r-- 1 lukas staff 1500908 20 Apr 13:50 compact_monitor_1_1776682206178.mp4
-rw-r--r-- 1 lukas staff 1146740 20 Apr 13:55 compact_monitor_1_1776682513428.mp4
-rw-r--r-- 1 lukas staff 634904 20 Apr 14:00 compact_monitor_1_1776682818338.mp4
-rw-r--r-- 1 lukas staff 1582832 20 Apr 14:05 compact_monitor_1_1776683127297.mp4
-rw-r--r-- 1 lukas staff 144970 20 Apr 14:10 compact_monitor_1_1776683431892.mp4
-rw-r--r-- 1 lukas staff 145139 20 Apr 14:15 compact_monitor_1_1776683738252.mp4
-rw-r--r-- 1 lukas staff 2321625 20 Apr 14:20 compact_monitor_1_1776684048360.mp4
-rw-r--r-- 1 lukas staff 3285900 20 Apr 14:26 compact_monitor_1_1776684358328.mp4
-rw-r--r-- 1 lukas staff 2180592 20 Apr 14:31 compact_monitor_1_1776684672448.mp4
-rw-r--r-- 1 lukas staff 1008178 20 Apr 14:36 compact_monitor_1_1776684985706.mp4
-rw-r--r-- 1 lukas staff 6232717 20 Apr 14:41 compact_monitor_1_1776685289456.mp4
-rw-r--r-- 1 lukas staff 1201267 20 Apr 14:46 compact_monitor_1_1776685609078.mp4
-rw-r--r-- 1 lukas staff 697069 20 Apr 14:52 compact_monitor_1_1776685924555.mp4
-rw-r--r-- 1 lukas staff 4205892 20 Apr 14:57 compact_monitor_1_1776686234752.mp4
-rw-r--r-- 1 lukas staff 1734015 20 Apr 15:02 compact_monitor_1_1776686548275.mp4
-rw-r--r-- 1 lukas staff 742602 20 Apr 15:07 compact_monitor_1_1776686874783.mp4
-rw-r--r-- 1 lukas staff 5624641 20 Apr 15:13 compact_monitor_1_1776687183276.mp4
-rw-r--r-- 1 lukas staff 5148295 20 Apr 15:18 compact_monitor_1_1776687502643.mp4
-rw-r--r-- 1 lukas staff 3357773 20 Apr 15:23 compact_monitor_1_1776687821494.mp4
-rw-r--r-- 1 lukas staff 4647742 20 Apr 15:28 compact_monitor_1_1776688128104.mp4
-rw-r--r-- 1 lukas staff 5124594 20 Apr 15:34 compact_monitor_1_1776688435924.mp4
-rw-r--r-- 1 lukas staff 3299421 20 Apr 15:39 compact_monitor_1_1776688745956.mp4
-rw-r--r-- 1 lukas staff 2438350 20 Apr 15:44 compact_monitor_1_1776689051698.mp4
-rw-r--r-- 1 lukas staff 2544311 20 Apr 15:49 compact_monitor_1_1776689358807.mp4
-rw-r--r-- 1 lukas staff 4934970 20 Apr 15:54 compact_monitor_1_1776689666677.mp4
-rw-r--r-- 1 lukas staff 3876837 20 Apr 15:59 compact_monitor_1_1776689975475.mp4
-rw-r--r-- 1 lukas staff 4939907 20 Apr 16:04 compact_monitor_1_1776690284639.mp4
-rw-r--r-- 1 lukas staff 5387913 20 Apr 16:10 compact_monitor_1_1776690597076.mp4
-rw-r--r-- 1 lukas staff 5918302 20 Apr 16:15 compact_monitor_1_1776690904422.mp4
-rw-r--r-- 1 lukas staff 3763719 20 Apr 16:20 compact_monitor_1_1776691212778.mp4
-rw-r--r-- 1 lukas staff 2668710 20 Apr 16:25 compact_monitor_1_1776691518074.mp4
-rw-r--r-- 1 lukas staff 1343489 20 Apr 16:30 compact_monitor_1_1776691827057.mp4
-rw-r--r-- 1 lukas staff 2669705 20 Apr 16:35 compact_monitor_1_1776692135254.mp4
-rw-r--r-- 1 lukas staff 3572963 20 Apr 16:40 compact_monitor_1_1776692442143.mp4
-rw-r--r-- 1 lukas staff 4745615 20 Apr 16:45 compact_monitor_1_1776692748574.mp4
-rw-r--r-- 1 lukas staff 3651920 20 Apr 16:51 compact_monitor_1_1776693058709.mp4
-rw-r--r-- 1 lukas staff 2336269 20 Apr 16:56 compact_monitor_1_1776693372981.mp4
-rw-r--r-- 1 lukas staff 3422245 20 Apr 17:01 compact_monitor_1_1776693680907.mp4
-rw-r--r-- 1 lukas staff 6584256 20 Apr 17:06 compact_monitor_1_1776693988164.mp4
-rw-r--r-- 1 lukas staff 6800476 20 Apr 17:11 compact_monitor_1_1776694300969.mp4
-rw-r--r-- 1 lukas staff 859311 20 Apr 17:16 compact_monitor_1_1776694607311.mp4
-rw-r--r-- 1 lukas staff 1991675 20 Apr 17:21 compact_monitor_1_1776694910016.mp4
-rw-r--r-- 1 lukas staff 670169 20 Apr 18:17 compact_monitor_1_1776698266692.mp4
-rw-r--r-- 1 lukas staff 2064979 20 Apr 18:27 compact_monitor_1_1776698875029.mp4
-rw-r--r-- 1 lukas staff 1765910 20 Apr 18:33 compact_monitor_1_1776699180706.mp4
-rw-r--r-- 1 lukas staff 1832195 20 Apr 18:38 compact_monitor_1_1776699488879.mp4
-rw-r--r-- 1 lukas staff 532237 20 Apr 18:43 compact_monitor_1_1776699797513.mp4
-rw-r--r-- 1 lukas staff 354899 20 Apr 18:47 compact_monitor_1_1776700038195.mp4
-rw-r--r-- 1 lukas staff 426016 20 Apr 18:52 compact_monitor_1_1776700345586.mp4
-rw-r--r-- 1 lukas staff 1502142 21 Apr 09:10 compact_monitor_1_1776751830793.mp4
-rw-r--r-- 1 lukas staff 1151283 20 Apr 09:20 compact_monitor_2_1776666028589.mp4
-rw-r--r-- 1 lukas staff 3922416 20 Apr 09:25 compact_monitor_2_1776666337400.mp4
-rw-r--r-- 1 lukas staff 6099157 20 Apr 09:31 compact_monitor_2_1776666649455.mp4
-rw-r--r-- 1 lukas staff 4465951 20 Apr 09:36 compact_monitor_2_1776666967290.mp4
-rw-r--r-- 1 lukas staff 3546165 20 Apr 09:41 compact_monitor_2_1776667285800.mp4
-rw-r--r-- 1 lukas staff 1917417 20 Apr 09:47 compact_monitor_2_1776667615139.mp4
-rw-r--r-- 1 lukas staff 2954961 20 Apr 09:52 compact_monitor_2_1776667943132.mp4
-rw-r--r-- 1 lukas staff 1934343 20 Apr 09:58 compact_monitor_2_1776668283739.mp4
-rw-r--r-- 1 lukas staff 1177513 20 Apr 10:03 compact_monitor_2_1776668620257.mp4
-rw-r--r-- 1 lukas staff 2147789 20 Apr 10:18 compact_monitor_2_1776669498937.mp4
-rw-r--r-- 1 lukas staff 740309 20 Apr 10:28 compact_monitor_2_1776670109608.mp4
-rw-r--r-- 1 lukas staff 3567504 20 Apr 10:33 compact_monitor_2_1776670417134.mp4
-rw-r--r-- 1 lukas staff 2982135 20 Apr 10:38 compact_monitor_2_1776670723346.mp4
-rw-r--r-- 1 lukas staff 3348097 20 Apr 10:43 compact_monitor_2_1776671030235.mp4
-rw-r--r-- 1 lukas staff 2837678 20 Apr 10:49 compact_monitor_2_1776671338266.mp4
-rw-r--r-- 1 lukas staff 2233867 20 Apr 10:54 compact_monitor_2_1776671646503.mp4
-rw-r--r-- 1 lukas staff 4947326 20 Apr 10:59 compact_monitor_2_1776671950567.mp4
-rw-r--r-- 1 lukas staff 5266402 20 Apr 11:04 compact_monitor_2_1776672263365.mp4
-rw-r--r-- 1 lukas staff 3801403 20 Apr 11:09 compact_monitor_2_1776672575558.mp4
-rw-r--r-- 1 lukas staff 6986490 20 Apr 11:14 compact_monitor_2_1776672883717.mp4
-rw-r--r-- 1 lukas staff 6043634 20 Apr 11:20 compact_monitor_2_1776673199069.mp4
-rw-r--r-- 1 lukas staff 3820880 20 Apr 11:25 compact_monitor_2_1776673514302.mp4
-rw-r--r-- 1 lukas staff 6492119 20 Apr 11:30 compact_monitor_2_1776673828645.mp4
-rw-r--r-- 1 lukas staff 3132510 20 Apr 11:35 compact_monitor_2_1776674137449.mp4
-rw-r--r-- 1 lukas staff 3612810 20 Apr 11:40 compact_monitor_2_1776674447649.mp4
-rw-r--r-- 1 lukas staff 4349270 20 Apr 11:46 compact_monitor_2_1776674758735.mp4
-rw-r--r-- 1 lukas staff 2397151 20 Apr 11:51 compact_monitor_2_1776675081239.mp4
-rw-r--r-- 1 lukas staff 2608050 20 Apr 11:56 compact_monitor_2_1776675389836.mp4
-rw-r--r-- 1 lukas staff 4271268 20 Apr 12:01 compact_monitor_2_1776675697375.mp4
-rw-r--r-- 1 lukas staff 2737153 20 Apr 12:06 compact_monitor_2_1776676012452.mp4
-rw-r--r-- 1 lukas staff 6545978 20 Apr 12:12 compact_monitor_2_1776676319355.mp4
-rw-r--r-- 1 lukas staff 2249881 20 Apr 12:17 compact_monitor_2_1776676627546.mp4
-rw-r--r-- 1 lukas staff 1995078 20 Apr 12:22 compact_monitor_2_1776676937565.mp4
-rw-r--r-- 1 lukas staff 3219551 20 Apr 12:27 compact_monitor_2_1776677245735.mp4
-rw-r--r-- 1 lukas staff 4294306 20 Apr 12:32 compact_monitor_2_1776677559935.mp4
-rw-r--r-- 1 lukas staff 4436497 20 Apr 12:37 compact_monitor_2_1776677872661.mp4
-rw-r--r-- 1 lukas staff 2697561 20 Apr 12:43 compact_monitor_2_1776678182031.mp4
-rw-r--r-- 1 lukas staff 2771589 20 Apr 12:48 compact_monitor_2_1776678492118.mp4
-rw-r--r-- 1 lukas staff 6696423 20 Apr 12:53 compact_monitor_2_1776678803761.mp4
-rw-r--r-- 1 lukas staff 5464611 20 Apr 12:58 compact_monitor_2_1776679111812.mp4
-rw-r--r-- 1 lukas staff 7181188 20 Apr 13:03 compact_monitor_2_1776679423402.mp4
-rw-r--r-- 1 lukas staff 5123182 20 Apr 13:08 compact_monitor_2_1776679731833.mp4
-rw-r--r-- 1 lukas staff 5654139 20 Apr 13:14 compact_monitor_2_1776680041318.mp4
-rw-r--r-- 1 lukas staff 3710649 20 Apr 13:19 compact_monitor_2_1776680352572.mp4
-rw-r--r-- 1 lukas staff 637175 20 Apr 13:40 compact_monitor_2_1776681604586.mp4
-rw-r--r-- 1 lukas staff 1331158 20 Apr 13:50 compact_monitor_2_1776682207482.mp4
-rw-r--r-- 1 lukas staff 2470366 20 Apr 13:55 compact_monitor_2_1776682515468.mp4
-rw-r--r-- 1 lukas staff 3743514 20 Apr 14:00 compact_monitor_2_1776682820185.mp4
-rw-r--r-- 1 lukas staff 1845046 20 Apr 14:05 compact_monitor_2_1776683129378.mp4
-rw-r--r-- 1 lukas staff 4349352 20 Apr 14:10 compact_monitor_2_1776683433639.mp4
-rw-r--r-- 1 lukas staff 6169839 20 Apr 14:15 compact_monitor_2_1776683740511.mp4
-rw-r--r-- 1 lukas staff 7618797 20 Apr 14:20 compact_monitor_2_1776684052092.mp4
-rw-r--r-- 1 lukas staff 5221568 20 Apr 14:26 compact_monitor_2_1776684362336.mp4
-rw-r--r-- 1 lukas staff 4891906 20 Apr 14:31 compact_monitor_2_1776684674762.mp4
-rw-r--r-- 1 lukas staff 705871 20 Apr 14:36 compact_monitor_2_1776684986928.mp4
-rw-r--r-- 1 lukas staff 3797177 20 Apr 14:41 compact_monitor_2_1776685297300.mp4
-rw-r--r-- 1 lukas staff 5206650 20 Apr 14:46 compact_monitor_2_1776685613835.mp4
-rw-r--r-- 1 lukas staff 3560709 20 Apr 14:52 compact_monitor_2_1776685927877.mp4
-rw-r--r-- 1 lukas staff 3054774 20 Apr 14:57 compact_monitor_2_1776686237953.mp4
-rw-r--r-- 1 lukas staff 5624059 20 Apr 15:02 compact_monitor_2_1776686554842.mp4
-rw-r--r-- 1 lukas staff 981456 20 Apr 15:02 compact_monitor_2_1776686566986.mp4
-rw-r--r-- 1 lukas staff 3813865 20 Apr 15:08 compact_monitor_2_1776686877747.mp4
-rw-r--r-- 1 lukas staff 4434608 20 Apr 15:13 compact_monitor_2_1776687192583.mp4
-rw-r--r-- 1 lukas staff 1912795 20 Apr 15:18 compact_monitor_2_1776687512417.mp4
-rw-r--r-- 1 lukas staff 362639 20 Apr 15:23 compact_monitor_2_1776687826917.mp4
-rw-r--r-- 1 lukas staff 2587214 20 Apr 15:28 compact_monitor_2_1776688132900.mp4
-rw-r--r-- 1 lukas staff 4444884 20 Apr 15:34 compact_monitor_2_1776688441330.mp4
-rw-r--r-- 1 lukas staff 2273805 20 Apr 15:39 compact_monitor_2_1776688749248.mp4
-rw-r--r-- 1 lukas staff 1472500 20 Apr 15:44 compact_monitor_2_1776689055232.mp4
-rw-r--r-- 1 lukas staff 773818 20 Apr 15:49 compact_monitor_2_1776689362170.mp4
-rw-r--r-- 1 lukas staff 2559460 20 Apr 15:54 compact_monitor_2_1776689672041.mp4
-rw-r--r-- 1 lukas staff 2344294 20 Apr 15:59 compact_monitor_2_1776689979563.mp4
-rw-r--r-- 1 lukas staff 4007787 20 Apr 16:04 compact_monitor_2_1776690291326.mp4
-rw-r--r-- 1 lukas staff 1819239 20 Apr 16:10 compact_monitor_2_1776690601791.mp4
-rw-r--r-- 1 lukas staff 2353532 20 Apr 16:15 compact_monitor_2_1776690909468.mp4
-rw-r--r-- 1 lukas staff 838923 20 Apr 16:20 compact_monitor_2_1776691216464.mp4
-rw-r--r-- 1 lukas staff 392421 20 Apr 16:25 compact_monitor_2_1776691524797.mp4
-rw-r--r-- 1 lukas staff 419825 20 Apr 16:30 compact_monitor_2_1776691830343.mp4
-rw-r--r-- 1 lukas staff 1311278 20 Apr 16:35 compact_monitor_2_1776692138776.mp4
-rw-r--r-- 1 lukas staff 2113227 20 Apr 16:40 compact_monitor_2_1776692445996.mp4
-rw-r--r-- 1 lukas staff 2836435 20 Apr 16:45 compact_monitor_2_1776692753037.mp4
-rw-r--r-- 1 lukas staff 896192 20 Apr 16:51 compact_monitor_2_1776693062948.mp4
-rw-r--r-- 1 lukas staff 430668 20 Apr 16:56 compact_monitor_2_1776693378064.mp4
-rw-r--r-- 1 lukas staff 5400273 20 Apr 17:01 compact_monitor_2_1776693684394.mp4
-rw-r--r-- 1 lukas staff 11097706 20 Apr 17:06 compact_monitor_2_1776693994199.mp4
-rw-r--r-- 1 lukas staff 2777663 20 Apr 17:11 compact_monitor_2_1776694304409.mp4
-rw-r--r-- 1 lukas staff 1170557 20 Apr 17:16 compact_monitor_2_1776694608505.mp4
-rw-r--r-- 1 lukas staff 1670866 20 Apr 17:21 compact_monitor_2_1776694911248.mp4
-rw-r--r-- 1 lukas staff 894067 20 Apr 18:17 compact_monitor_2_1776698268984.mp4
-rw-r--r-- 1 lukas staff 145618 20 Apr 18:27 compact_monitor_2_1776698876572.mp4
-rw-r--r-- 1 lukas staff 3307440 20 Apr 18:33 compact_monitor_2_1776699183611.mp4
-rw-r--r-- 1 lukas staff 3178239 20 Apr 18:38 compact_monitor_2_1776699492586.mp4
-rw-r--r-- 1 lukas staff 4180957 20 Apr 18:43 compact_monitor_2_1776699800287.mp4
-rw-r--r-- 1 lukas staff 2802374 20 Apr 18:47 compact_monitor_2_1776700041626.mp4
-rw-r--r-- 1 lukas staff 3153626 20 Apr 18:52 compact_monitor_2_1776700348038.mp4
-rw-r--r-- 1 lukas staff 755181 21 Apr 09:10 compact_monitor_2_1776751832783.mp4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-20 $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
60841
|
1310
|
51
|
2026-04-21T06:20:31.248249+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752431248_m1.jpg...
|
Firefox
|
[SRD-6787] Issue with reconnecting Zoho - Jira — W [SRD-6787] Issue with reconnecting Zoho - Jira — Work...
|
1
|
jiminny.atlassian.net/browse/SRD-6787
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Close tab
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
Queues
Queues
Create
Create
More for queues
More for queues
Service requests
Service requests
Create
Create
More for service requests
More for service requests
Incidents
Incidents
Create
Create
More for incidents
More for incidents
Reports
Reports
More actions for reports
More actions for reports
Operations
Operations
More actions for operations
More actions for operations
Knowledge Base
Knowledge Base
More actions for knowledge base
More actions for knowledge base
Customers
Customers
More actions for customers
More actions for customers
Channels...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Switch sites or apps","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Search, press enter to navigate to advanced search with your text query","depth":11,"help_text":"","placeholder":"Search","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":14,"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":"AXStaticText","text":"Notifications","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Starred","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","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":"More actions for Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","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":"More actions for spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create board","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create board","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Queues","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Queues","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":22,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for queues","depth":22,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for queues","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service requests","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service requests","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":22,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for service requests","depth":22,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for service requests","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Incidents","depth":22,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Incidents","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":23,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for incidents","depth":23,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for incidents","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reports","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reports","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for reports","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for reports","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Operations","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Operations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for operations","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for operations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Knowledge Base","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Knowledge Base","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for knowledge base","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for knowledge base","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Customers","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customers","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for customers","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for customers","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Channels","depth":19,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-3604375476376285819
|
1333405825943360744
|
app_switch
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Close tab
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
Queues
Queues
Create
Create
More for queues
More for queues
Service requests
Service requests
Create
Create
More for service requests
More for service requests
Incidents
Incidents
Create
Create
More for incidents
More for incidents
Reports
Reports
More actions for reports
More actions for reports
Operations
Operations
More actions for operations
More actions for operations
Knowledge Base
Knowledge Base
More actions for knowledge base
More actions for knowledge base
Customers
Customers
More actions for customers
More actions for customers
Channels...
|
NULL
|
|
60842
|
1311
|
53
|
2026-04-21T06:20:31.326737+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752431326_m2.jpg...
|
Firefox
|
[SRD-6787] Issue with reconnecting Zoho - Jira — W [SRD-6787] Issue with reconnecting Zoho - Jira — Work...
|
1
|
jiminny.atlassian.net/browse/SRD-6787
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Close tab
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
Queues
Queues
Create
Create
More for queues
More for queues
Service requests
Service requests
Create
Create
More for service requests
More for service requests
Incidents
Incidents
Create
Create
More for incidents
More for incidents
Reports
Reports
More actions for reports...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.08344415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.10215483,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.19963431,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.15791224,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.02144282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.35834,"width":0.07413564,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":9,"bounds":{"left":0.090259306,"top":0.07861133,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":10,"bounds":{"left":0.090259306,"top":0.097765364,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":11,"bounds":{"left":0.090259306,"top":0.097765364,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":10,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":11,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":10,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":11,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":9,"bounds":{"left":0.08361037,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":11,"bounds":{"left":0.0887633,"top":0.06344773,"width":0.039727394,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":10,"bounds":{"left":0.095578454,"top":0.057861134,"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":"AXStaticText","text":"Switch sites or apps","depth":12,"bounds":{"left":0.10073138,"top":0.06344773,"width":0.044215426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":9,"bounds":{"left":0.10887633,"top":0.057861134,"width":0.029421542,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Search, press enter to navigate to advanced search with your text query","depth":11,"bounds":{"left":0.40475398,"top":0.06264964,"width":0.24268617,"height":0.015961692},"help_text":"","placeholder":"Search","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create","depth":10,"bounds":{"left":0.65575135,"top":0.057861134,"width":0.030086435,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":12,"bounds":{"left":0.66705453,"top":0.06384677,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":12,"bounds":{"left":0.91223407,"top":0.057861134,"width":0.035904255,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":14,"bounds":{"left":0.92353725,"top":0.06384677,"width":0.020611702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":12,"bounds":{"left":0.9494681,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":14,"bounds":{"left":0.954621,"top":0.06344773,"width":0.027759308,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":12,"bounds":{"left":0.96143615,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":14,"bounds":{"left":0.9665891,"top":0.06344773,"width":0.010139627,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":12,"bounds":{"left":0.9734042,"top":0.057861134,"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":"AXStaticText","text":"Settings","depth":14,"bounds":{"left":0.97855717,"top":0.06344773,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.98537236,"top":0.057861134,"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":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":14,"bounds":{"left":0.99052525,"top":0.06344773,"width":0.009474754,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":12,"bounds":{"left":0.08361037,"top":0.09976058,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":15,"bounds":{"left":0.09424867,"top":0.10574621,"width":0.01662234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent","depth":12,"bounds":{"left":0.08361037,"top":0.12529927,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":15,"bounds":{"left":0.09424867,"top":0.13128492,"width":0.015458777,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Starred","depth":12,"bounds":{"left":0.08361037,"top":0.15083799,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":15,"bounds":{"left":0.09424867,"top":0.15682362,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":12,"bounds":{"left":0.08361037,"top":0.1763767,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":15,"bounds":{"left":0.09424867,"top":0.18236233,"width":0.011635638,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":13,"bounds":{"left":0.15309176,"top":0.17956904,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":12,"bounds":{"left":0.08361037,"top":0.2019154,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":15,"bounds":{"left":0.09424867,"top":0.20790103,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":13,"bounds":{"left":0.13646941,"top":0.20510775,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":13,"bounds":{"left":0.14577793,"top":0.20510775,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":16,"bounds":{"left":0.08959442,"top":0.23423783,"width":0.013464096,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":17,"bounds":{"left":0.08759973,"top":0.2529928,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":20,"bounds":{"left":0.09823803,"top":0.25897846,"width":0.032081116,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":18,"bounds":{"left":0.08892952,"top":0.25618514,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create board","depth":18,"bounds":{"left":0.15508644,"top":0.25618514,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create board","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":18,"bounds":{"left":0.16240026,"top":0.25618514,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":17,"bounds":{"left":0.08759973,"top":0.27853152,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Service-Desk","depth":20,"bounds":{"left":0.09823803,"top":0.28451717,"width":0.03025266,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":18,"bounds":{"left":0.14577793,"top":0.28172386,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Queues","depth":21,"bounds":{"left":0.09158909,"top":0.30407023,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Queues","depth":24,"bounds":{"left":0.1022274,"top":0.31005585,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":22,"bounds":{"left":0.15309176,"top":0.30726257,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for queues","depth":22,"bounds":{"left":0.15442154,"top":0.30726257,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for queues","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service requests","depth":21,"bounds":{"left":0.09158909,"top":0.32960895,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service requests","depth":24,"bounds":{"left":0.1022274,"top":0.33559456,"width":0.03756649,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":22,"bounds":{"left":0.15309176,"top":0.33280128,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for service requests","depth":22,"bounds":{"left":0.15442154,"top":0.33280128,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for service requests","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Incidents","depth":22,"bounds":{"left":0.09158909,"top":0.35514766,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Incidents","depth":25,"bounds":{"left":0.1022274,"top":0.36113328,"width":0.021276595,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":23,"bounds":{"left":0.15309176,"top":0.35834,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for incidents","depth":23,"bounds":{"left":0.15442154,"top":0.35834,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for incidents","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reports","depth":19,"bounds":{"left":0.09158909,"top":0.38068634,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reports","depth":22,"bounds":{"left":0.1022274,"top":0.386672,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for reports","depth":20,"bounds":{"left":0.15309176,"top":0.38387868,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
1090950355427110740
|
1353671998498829473
|
app_switch
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Close tab
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
Queues
Queues
Create
Create
More for queues
More for queues
Service requests
Service requests
Create
Create
More for service requests
More for service requests
Incidents
Incidents
Create
Create
More for incidents
More for incidents
Reports
Reports
More actions for reports...
|
NULL
|
|
60856
|
1312
|
4
|
2026-04-21T06:21:48.046179+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752508046_m1.jpg...
|
PhpStorm
|
faVsco.js – console [EU]
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
2
47
3
11
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\AjReportsRepository;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
private readonly AjReportsRepository $ajReportsRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
$ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());
if ($ajReportCount > 0) {
return $this->response->errorWrongArgs(
"This saved search is used by {$ajReportCount} active AJ report(s). "
. 'Please remove or update those reports before deleting this saved search.'
);
}
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$crmService = $this->providerRegistry->get($team->crm->provider);
if (! $user->isCrmRequired()) {
$crmService->setUser($team->getOwner());
} else {
$crmService->setUser($user);
}
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
}
/**
* Remove activity from this user's favorite...
|
[{"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":"master, menu","depth":5,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"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":"2","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"47","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"11","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\nnamespace Jiminny\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AjReportsRepository;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n private readonly AjReportsRepository $ajReportsRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n $ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());\n if ($ajReportCount > 0) {\n return $this->response->errorWrongArgs(\n \"This saved search is used by {$ajReportCount} active AJ report(s). \"\n . 'Please remove or update those reports before deleting this saved search.'\n );\n }\n\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n if (! $user->isCrmRequired()) {\n $crmService->setUser($team->getOwner());\n } else {\n $crmService->setUser($user);\n }\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n if ($coachingFeedback->delete()) {\n $activity->documentUpdate();\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete opration failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresIn' => 'required|in:' . implode(',', Nudge::MAP_EXPIRES),\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\n }\n}","depth":4,"value":"<?php\n\nnamespace Jiminny\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AjReportsRepository;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n private readonly AjReportsRepository $ajReportsRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n $ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());\n if ($ajReportCount > 0) {\n return $this->response->errorWrongArgs(\n \"This saved search is used by {$ajReportCount} active AJ report(s). \"\n . 'Please remove or update those reports before deleting this saved search.'\n );\n }\n\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n if (! $user->isCrmRequired()) {\n $crmService->setUser($team->getOwner());\n } else {\n $crmService->setUser($user);\n }\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n if ($coachingFeedback->delete()) {\n $activity->documentUpdate();\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete opration failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresIn' => 'required|in:' . implode(',', Nudge::MAP_EXPIRES),\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\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":"27","depth":4,"role_description":"text"}]...
|
-3293064906782757730
|
-8385861013498915692
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
2
47
3
11
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\AjReportsRepository;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
private readonly AjReportsRepository $ajReportsRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
$ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());
if ($ajReportCount > 0) {
return $this->response->errorWrongArgs(
"This saved search is used by {$ajReportCount} active AJ report(s). "
. 'Please remove or update those reports before deleting this saved search.'
);
}
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$crmService = $this->providerRegistry->get($team->crm->provider);
if (! $user->isCrmRequired()) {
$crmService->setUser($team->getOwner());
} else {
$crmService->setUser($user);
}
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
}
/**
* Remove activity from this user's favorite...
|
NULL
|
|
60857
|
1313
|
6
|
2026-04-21T06:21:48.046143+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752508046_m2.jpg...
|
PhpStorm
|
faVsco.js – console [EU]
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
2
47
3
11
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\AjReportsRepository;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
private readonly AjReportsRepository $ajReportsRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
$ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());
if ($ajReportCount > 0) {
return $this->response->errorWrongArgs(
"This saved search is used by {$ajReportCount} active AJ report(s). "
. 'Please remove or update those reports before deleting this saved search.'
);
}
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$crmService = $this->providerRegistry->get($team->crm->provider);
if (! $user->isCrmRequired()) {
$crmService->setUser($team->getOwner());
} else {
$crmService->setUser($user);
}
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
}
/**
* Remove activity from this user's favorite...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"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":"2","depth":4,"bounds":{"left":0.4587766,"top":0.12529927,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"47","depth":4,"bounds":{"left":0.46875,"top":0.12529927,"width":0.009973404,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.48071808,"top":0.12529927,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"11","depth":4,"bounds":{"left":0.49069148,"top":0.12529927,"width":0.008976064,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.50166225,"top":0.12529927,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.5106383,"top":0.123703115,"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.51795214,"top":0.123703115,"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\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AjReportsRepository;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n private readonly AjReportsRepository $ajReportsRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n $ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());\n if ($ajReportCount > 0) {\n return $this->response->errorWrongArgs(\n \"This saved search is used by {$ajReportCount} active AJ report(s). \"\n . 'Please remove or update those reports before deleting this saved search.'\n );\n }\n\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n if (! $user->isCrmRequired()) {\n $crmService->setUser($team->getOwner());\n } else {\n $crmService->setUser($user);\n }\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n if ($coachingFeedback->delete()) {\n $activity->documentUpdate();\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete opration failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresIn' => 'required|in:' . implode(',', Nudge::MAP_EXPIRES),\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\n }\n}","depth":4,"value":"<?php\n\nnamespace Jiminny\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AjReportsRepository;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n private readonly AjReportsRepository $ajReportsRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n $ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());\n if ($ajReportCount > 0) {\n return $this->response->errorWrongArgs(\n \"This saved search is used by {$ajReportCount} active AJ report(s). \"\n . 'Please remove or update those reports before deleting this saved search.'\n );\n }\n\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n if (! $user->isCrmRequired()) {\n $crmService->setUser($team->getOwner());\n } else {\n $crmService->setUser($user);\n }\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n if ($coachingFeedback->delete()) {\n $activity->documentUpdate();\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete opration failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresIn' => 'required|in:' . implode(',', Nudge::MAP_EXPIRES),\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\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.5265958,"top":0.074221864,"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.53523934,"top":0.074221864,"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.5462101,"top":0.074221864,"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.55485374,"top":0.074221864,"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.56349736,"top":0.074221864,"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.5744681,"top":0.074221864,"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.58543885,"top":0.074221864,"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.61203456,"top":0.074221864,"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.62300533,"top":0.074221864,"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.074221864,"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":"27","depth":4,"bounds":{"left":0.9162234,"top":0.09896249,"width":0.009973404,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.9281915,"top":0.09896249,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"23","depth":4,"bounds":{"left":0.9381649,"top":0.09896249,"width":0.010305851,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.95046544,"top":0.09896249,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"105","depth":4,"bounds":{"left":0.96043885,"top":0.09896249,"width":0.011968086,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9740692,"top":0.09736632,"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.09736632,"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 * FROM team_features where team_id = 1;\n\nSELECT * FROM teams WHERE name LIKE '%Vixio%'; # 340,270,11922\nSELECT * FROM users WHERE team_id = 340; # 12015\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 340\nand sa.provider = 'salesforce';\n# and sa.provider = 'salesloft';\n\nselect * from crm_fields where crm_configuration_id = 270 and object_type = 'event';\n# 125558 - Event Type - Event_Type__c\n# 125552 - Event Status - Event_Status__c\n\nSELECT * FROM sidekick_settings WHERE team_id = 340;\n\nSELECT * FROM crm_field_values WHERE crm_field_id in (125552);\n\nselect * from activities where crm_configuration_id = 270\nand type = 'conference' and crm_provider_id IS NOT NULL\nand actual_start_time > '2024-09-16 09:00:00' order by scheduled_start_time;\n\nSELECT * FROM activities WHERE id = 20871677;\nSELECT * FROM crm_field_data WHERE activity_id = 20871677;\n\nselect * from crm_layouts where crm_configuration_id = 270;\nselect * from crm_layout_entities where crm_layout_id in (886,887);\n\nSELECT * FROM crm_configurations WHERE id = 270;\n\nselect * from playbooks where team_id = 340; # 1514\nselect * from groups where team_id = 340;\nSELECT * FROM crm_fields WHERE id IN (125393, 125401);\n\nselect g.name as 'team name', p.name as 'playbook name', f.label as 'activity type field' from groups g\njoin playbooks p on g.playbook_id = p.id\njoin crm_fields f on p.activity_field_id = f.id\nwhere g.team_id = 340;\n\nSELECT * FROM activities WHERE uuid_to_bin('0c180357-67d2-419e-a8c3-b832a3490770') = uuid; # 20448716\nselect * from crm_field_data where object_id = 20448716;\n\nselect * from activities where crm_configuration_id = 270 and provider = 'salesloft' order by id desc;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%CybSafe%'; # 343,273,12008\nselect * from opportunities where team_id = 343;\nselect * from opportunities where team_id = 343 and crm_provider_id = '18099102526';\nselect * from opportunities where team_id = 343 and account_id = 945217482;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from accounts where team_id = 343 order by name asc;\n\nselect * from stages where crm_configuration_id = 273 and type = 'opportunity';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Voyado%'; # 353,283,12143\nSELECT * FROM activities WHERE crm_configuration_id = 283 and account_id = 3777844 order by id desc;\nSELECT * FROM accounts WHERE team_id = 353 AND name LIKE '%Salesloft%';\nSELECT * FROM activities WHERE id = 20717903;\n\nselect * from participants where activity_id IN (20929172,20928605,20928468,20926272,20926271,20926270,20926269,20916499,20916454,20916436,20916435,20900015,20900014,20900013,20897312,20897243,20897241,20897237,20897232,20897229,20893648,20893231,20893230,20893229,20893228,20889784,20885039,20885038,20885037,20885036,20885035,20882728,20882708,20882703,20882702,20869828,20869811,20869806,20869801,20869799,20869798,20869796,20869795,20869794,20869761,20869760,20869759,20868688,20868687,20850340,20847195,20841710,20833967,20827021,20825307,20825305,20825297,20824615,20824400,20823927,20821760,20795588,20794233,20794057,20793710,20785811,20781789,20781394,20781307,20762651,20758453,20758282,20757323,20756643,20756636,20756629,20756627,20756606,20756605,20756604,20756603,20756602,20756600,20756599,20756598,20756595,20756594,20756589,20756587,20756577,20756573,20748918,20748386,20748385,20748384,20748383,20748382,20748381,20748380,20748379,20748377,20748375,20748373,20743301,20717905,20717904,20717903,20717901,20717899);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 353\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%modern world business solutions%'; # 345,275,12016, l.atkinson@mwbsolutions.co.uk\nSELECT * FROM activities WHERE uuid_to_bin('3921d399-3fef-4609-a291-b0097a166d43') = uuid;\n# id: 20940638, user: 12022, contact: 5305871\nSELECT * FROM activity_summary_logs WHERE activity_id = 20940638;\nselect * from contacts where team_id = 345 and crm_provider_id = '30891432415' order by name asc; # 5305871\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 345\nand sa.provider = 'hubspot';\n\nselect * from users where team_id = 345 and id = 12022;\nSELECT * FROM crm_profiles WHERE user_id = 12022;\nSELECT * FROM participants WHERE activity_id = 20940638;\nSELECT * FROM users u\nJOIN crm_profiles cp ON u.id = cp.user_id\nWHERE u.team_id = 345;\n\nselect * from contacts where team_id = 345 and crm_provider_id = '30880813535' order by name desc; # 5305871\n\nselect * from team_features where team_id = 345;\nSELECT * FROM activities WHERE uuid_to_bin('11701e2d-2f82-4dab-a616-1db4fad238df') = uuid; # 21115197\nSELECT * FROM participants WHERE activity_id = 20897406;\n\n\n\nSELECT * FROM activities WHERE uuid_to_bin('63ba55cd-1abc-447d-83da-0137000005b7') = uuid; # 20953912\nSELECT * FROM activities WHERE crm_configuration_id = 275 and provider = 'ringcentral' and title like '%1252629100%';\n\n\nSELECT * FROM activities WHERE id = 20946641;\nSELECT * FROM crm_profiles WHERE user_id = 10211;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120,97,10984, triger@lunio.ai\nSELECT * FROM opportunities WHERE crm_configuration_id = 97 and crm_provider_id = '006N1000006c5PpIAI';\nselect * from stages where crm_configuration_id = 97 and type = 'opportunity';\nselect * from opportunities where team_id = 120;\n\n\nselect * from crm_configurations crm join teams t on crm.id = t.crm_id\nwhere 1=1\nAND t.current_billing_plan IS NOT NULL\nAND crm.auto_sync_activity = 0\nand crm.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Exclaimer%'; # 270,205,10053,james.lewendon@exclaimer.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 270\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b54df794-2a9a-4957-8d80-09a600ead5f8') = uuid; # 21637956\nSELECT * FROM crm_profiles WHERE user_id = 11446;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cygnetise%'; # 372,300,12554, alex.chikly@cygnetise.com\nselect * from playbooks where team_id = 372;\nselect * from crm_fields where crm_configuration_id = 300 and object_type = 'event'; # 141340\nSELECT * FROM crm_field_values WHERE crm_field_id = 141340;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 372\nand sa.provider = 'salesforce';\n\nselect * from crm_profiles where crm_configuration_id = 300;\nSELECT * FROM crm_configurations WHERE team_id = 372;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Planday%'; # 291,242,11501,mfa@planday.com\nSELECT * FROM opportunities WHERE team_id = 291 and crm_provider_id = '006bG000005DO86QAG'; # 3207756\nselect * from crm_field_data where object_id = 3207756;\nSELECT * FROM crm_fields WHERE id = 111834;\n\nselect f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value\nFROM crm_fields f\nJOIN crm_field_data fd ON f.id = fd.crm_field_id\nWHERE f.crm_configuration_id = 242\nAND f.object_type = 'opportunity'\nAND fd.object_id IN (3207756)\nORDER BY fd.object_id, fd.updated_at;\n\nSELECT * FROM crm_configurations WHERE auto_connect = 1;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150,salesforce-admin@tourlane.com\nselect * from group_deal_risk_types drgt join groups g on drgt.group_id = g.id\nwhere g.team_id = 187;\n\nselect * from `groups` where team_id = 187;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 187\nand sa.provider = 'salesforce';\n\n# Destination - 98870 - Destination__c\n# Stage - 79014 - StageName\n# Land Arrangement - 98856 - Land_Arrangement__c\n# Flight - 98848 - Flight__c\n# Last activity date - 98812 - LastActivityDate\n# Last modified date - 98809 - LastModifiedDate\n# Last inbound mail timestamp - 99151 - Last_Inbound_Mail_Timestamp__c\n# next call - 98864 - Next_Call__c\n\nselect * from crm_fields where crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\nselect * from opportunities where team_id = 187 and name LIKE'%Muriel Sal%';\nselect * from opportunities where team_id = 187 and user_id = 9951 and is_closed = 0;\nselect * from activities where opportunity_id = 3538248;\n\nSELECT * FROM crm_profiles WHERE user_id = 8150;\n\nselect * from deal_risks where opportunity_id = 3538248;\n\nselect * from teams where crm_id IS NULL;\n\nSELECT opp.id AS opportunity_id,\n u.group_id AS group_id,\n MAX(\n CASE\n WHEN a.type IN (\"sms-inbound\", \"sms-outbound\") THEN a.created_at\n ELSE a.actual_end_time\n END) as last_date\nFROM opportunities opp\nleft join activities a on a.opportunity_id = opp.id\ninner join users u on opp.user_id = u.id\nwhere opp.user_id IN (9951)\n\nAND opp.is_closed = 0\nand a.status IN ('completed', 'received', 'delivered') OR a.status IS NULL\ngroup by opp.id;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cybsafe%'; # 343,301,12008,polly.morphew@cybsafe.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 301;\nSELECT * FROM contacts WHERE id = 6612363;\nSELECT * FROM accounts WHERE id = 4235676;\nSELECT * FROM opportunities WHERE crm_configuration_id = 301 and crm_provider_id = 32983784868;\nselect * from opportunity_stages where opportunity_id = 4503759;\n# SELECT * FROM opportunities WHERE id = 4569937;\n\nselect * from activities where crm_configuration_id = 301;\nSELECT * FROM activities WHERE uuid_to_bin('d3b2b28b-c3d0-4c2d-8ed0-eef42855278a') = uuid; # 26330370\nSELECT * FROM participants WHERE activity_id = 26330370;\n\nSELECT * FROM teams WHERE id = 375;\nselect * from playbooks where team_id = 375;\n\nselect * from stages where crm_configuration_id = 301 and type = 'opportunity';\n\nselect * from teams;\nselect * from contact_roles;\n\nSELECT * FROM opportunities WHERE team_id = 343 and user_id = 12871 and close_date >= '2024-11-01';\n\nselect * from users u join crm_profiles cp on cp.user_id = u.id where u.team_id = 343;\n\nSELECT * FROM crm_field_data WHERE object_id = 3771706;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 301 and object_type = 'opportunity'\nand crm_provider_id LIKE \"%traffic_light%\";\nSELECT * FROM crm_field_values WHERE crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531);\n\nSELECT fd.* FROM opportunities o\nJOIN crm_field_data fd ON o.id = fd.object_id\nWHERE o.team_id = 343\n# and o.user_id IS NOT NULL\nand fd.crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531)\nand fd.value != ''\norder by value desc\n# group by o.id\n;\n\nSELECT * FROM opportunities WHERE id = 3769843;\n\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150, salesforce-admin@tourlane.com\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding Circle%'; # 220,177,8603,aswini.mishra@fundingcircle.com\nSELECT * FROM activities WHERE uuid_to_bin('7a40e99b-3b37-4bb1-b983-325b81801c01') = uuid; # 23139839\n\n\nSELECT * FROM opportunities WHERE id = 3855992;\n\nSELECT * FROM users WHERE name LIKE '%Angus Pollard%'; # 8988\n\nSELECT * FROM teams WHERE name LIKE '%Story Terrace%'; # 379, 307, 12894\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307 and object_type != 'opportunity';\n\nselect * from contacts where team_id = 379 and name like '%bebro%'; # 5874411, crm: 77229348507\nSELECT * FROM crm_field_data WHERE object_id = 5874411;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379\nand sa.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%mentio%'; # 117, 94, 6371, nikhil.kumar@mention-me.com\nSELECT * FROM activities WHERE uuid_to_bin('82939311-1af0-4506-8546-21e8d1fdf2c1') = uuid;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tourlane%'; # 187, 209, 8150, salesforce-admin@tourlane.com\nSELECT * FROM opportunities WHERE team_id = 187 and crm_provider_id = '006Se000008xfvNIAQ'; # 3537793\nselect * from generic_ai_prompts where subject_id = 3537793;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120, 97, 10984, triger@lunio.ai\nSELECT * FROM crm_configurations WHERE id = 97;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 97;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 355;\nSELECT * FROM crm_fields WHERE id = 32682;\n\nselect cfd.value, o.* from opportunities o\njoin crm_field_data cfd on o.id = cfd.object_id and cfd.crm_field_id = 32682\nwhere team_id = 120\nand cfd.value != ''\n;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 120\nand sa.provider = 'salesforce';\n\nselect * from opportunities where team_id = 120 and crm_provider_id = '006N1000007X8MAIA0';\nSELECT * FROM crm_field_data WHERE object_id = 2313439;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 410;\nSELECT * FROM teams WHERE name LIKE '%Local Business Oxford%';\nselect * from scorecards where team_id = 410;\nselect * from scorecard_rules;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding%'; # 220, 177, 8603, aswini.mishra@fundingcircle.com\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\njoin users u on o.user_id = u.id\nwhere a.crm_configuration_id = 177 and a.type LIKE '%email-out%'\n# and a.actual_end_time > '2024-12-16 00:00:00'\n# and o.remotely_created_at > '2024-12-01 00:00:00'\n# and u.group_id = 1014\nand u.id = 9021\norder by a.id desc;\nSELECT * FROM opportunities WHERE id in (3981384,4017346);\nSELECT * FROM users WHERE team_id = 220 and id IN (8775, 11435);\n\nselect * from users where id = 9021;\nselect * from inboxes where user_id = 9021;\n\nselect * from inbox_emails where inbox_id = 1349 and email_date > '2024-12-18 00:00:00';\n\nselect * from email_messages where team_id = 220\nand orig_date > '2024-12-16 00:00:00' and orig_date < '2024-12-19 00:00:00'\nand subject LIKE '%Personal%'\n# and 'from' = 'credit@fundingcircle.com'\n;\n\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\nwhere a.user_id = 9021 and a.type LIKE '%email-out%'\nand a.actual_end_time > '2024-12-18 00:00:00'\nand o.user_id IS NOT NULL\nand o.remotely_created_at > '2024-12-01 00:00:00'\norder by a.id desc;\n\nSELECT * FROM opportunities WHERE team_id = 220 and name LIKE '%Right Car move Limited%' and id = 3966852;\nselect * from activities where crm_configuration_id = 177 and type LIKE '%email%' and opportunity_id = 3966852 order by id desc;\n\nselect * from team_settings where name IN ('useCloseDate');\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hurree%'; # 104, 81, 6175, jfarrell@hurree.co\nSELECT * FROM opportunities WHERE team_id = 104 and name = 'PropOp';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 104\nand sa.provider = 'hubspot';\n\nselect * from crm_configurations where last_synced_at > '2025-01-19 01:00:00'\nselect * from teams where crm_id IS NULL;\n\nselect t.name as 'team', u.name as 'owner', u.email, u.phone\nfrom teams t\njoin activity_providers ap on t.id = ap.team_id\njoin users u on t.owner_id = u.id\nwhere 1=1\n and t.status = 'active'\n and ap.is_enabled = 1\n# and u.status = 1\n and ap.provider = 'ms-teams';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nSELECT * FROM teams WHERE id = 442; # 14293\nselect * from users where team_id = 442;\nselect * from social_accounts sa where sa.sociable_id = 14293;\nselect * from invitations where team_id = 442;\n\n# ********************************************************************************************************\nSELECT * FROM users WHERE email LIKE '%nea.liikamaa@eletive.com%'; # 14022\nSELECT * FROM teams WHERE id = 429;\nselect * from opportunities where team_id = 429 and crm_provider_id IN (16157415775, 22246219645);\nselect * from activities where opportunity_id in (4340436,4353519);\n\nselect * from transcription where activity_id IN (25630961,25381771);\nselect * from generic_ai_prompts where subject_id IN (4353519);\n\nSELECT\n a.id as activity_id,\n a.opportunity_id,\n a.type as activity_type,\n a.language,\n CONCAT(a.title, a.description) AS mail_content,\n e.from AS mail_from,\n e.to AS mail_to,\n e.subject AS mail_subject,\n e.body AS mail_body,\n p.type as prompt_type,\n p.status as prompt_status,\n p.content AS prompt_content,\n a.actual_start_time as created_at\nFROM activities a\n LEFT JOIN ai_prompts p ON a.transcription_id = p.transcription_id AND p.deleted_at IS NULL\n LEFT JOIN email_messages e ON a.id = e.activity_id\nWHERE a.actual_start_time > '2024-01-01 00:00:00'\n AND a.opportunity_id IN (4353519)\n AND a.status IN ('completed', 'received', 'delivered')\n AND a.deleted_at IS NULL\n AND a.type NOT IN ('sms-inbound', 'sms-outbound')\nORDER BY a.opportunity_id ASC, a.id ASC;\n\nSELECT * FROM users WHERE name LIKE '%George Fierstone%'; # 14293\nSELECT * FROM teams WHERE id = 442;\nSELECT * FROM crm_configurations WHERE id = 344;\nselect * from team_features where team_id = 442;\nselect * from groups where team_id = 442;\nselect * from playbooks where team_id = 442;\nselect * from playbook_categories where playbook_id = 1729;\nselect * from crm_fields where crm_configuration_id = 344 and id = 172024;\nSELECT * FROM crm_field_values WHERE crm_field_id = 172024;\nselect * from crm_layouts where crm_configuration_id = 344;\nselect * from playbook_layouts where playbook_id = 1729;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 221, 9444\n\nselect s.*\n# , s.sent_at, u.name, a.*\nfrom activity_summary_logs s\ninner join activities a on a.id = s.activity_id\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 356\nand s.sent_at > date_sub(now(), interval 60 day)\norder by a.actual_end_time desc;\n\nselect * from activities a\n# inner join activity_summary_logs s on s.activity_id = a.id\nwhere a.crm_configuration_id = 356 and a.actual_end_time > date_sub(now(), interval 60 day)\n# and a.crm_provider_id is not null\n# and provider <> 'ringcentral'\nand status = 'completed'\norder by a.actual_end_time desc;\n\nselect * from teams order by id desc; # 17328, 32, 17830, integration-account@jiminny.com\nSELECT * FROM users;\nSELECT * FROM users where team_id = 260 and status = 1; # 201 - 150 active\nSELECT * FROM teams WHERE id = 260;\nselect * from team_settings where team_id = 260;\nselect * from crm_configurations where team_id = 260;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 356;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1184;\n\nselect * from accounts where crm_configuration_id = 221 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 221 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 221 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 221 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 221 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 221;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 221 order by id desc;\nselect * from stages where crm_configuration_id = 221 order by id desc;\n\nselect * from accounts where crm_configuration_id = 356 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 356 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 356 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 356 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 356 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 356;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 356 order by id desc;\nselect * from stages where crm_configuration_id = 356 order by id desc;\n\nselect * from playbooks where team_id = 260 order by id desc; # 4 (2 deleted)\nselect * from groups where team_id = 260 order by id desc; # 27 groups, (2 deleted)\nselect * from playbook_layouts where playbook_id IN (1410,1409,1276,1254); # 4\nselect ce.* from calendars c\njoin users u on c.user_id = u.id\njoin calendar_events ce on c.id = ce.calendar_id\nwhere u.team_id = 260\nand (ce.start_time > '2025-02-21 00:00:00')\n;\n# calendar events 1207\n#\n\nselect * from opportunities where team_id = 260;\nSELECT * FROM crm_field_data WHERE object_id = 4696496;\n\nselect * from activities where crm_configuration_id = 356 and crm_provider_id IS NOT NULL;\nselect * from activities where crm_configuration_id IN (221) and provider NOT IN ('ms-teams', 'uploader', 'zoom-bot')\n# and type = 'conference' and status = 'scheduled' and activities.is_internal = 0\nand created_at > '2024-03-01 00:00:00'\norder by id desc; # 880 000, ringcentral, avaya\nSELECT * FROM participants WHERE activity_id = 26371744;\n\n# all activities 942 000 +\n# conference 7385 - scheduled 984 - external 343\n\nselect * from activities where id = 26321812;\nselect * from participants where activity_id = 26321812;\nselect * from participants where activity_id in (26414510,26414514,26414516,26414604,26414653,26414655);\nselect * from leads where id in (720428,689175,731546,645866,621037);\n\nselect * from users where id = 13841;\nselect * from opportunities where user_id = 9541;\nselect * from stages where id = 15900;\n\nselect * from accounts where\n# id IN (4160055,5053725,4965303,4896434)\nid in (4584518,3249934,3218025,3891133,3399450,4172999,4485161,3101785,4587203,3070816,2870343,2870341,3563940,4550846,3424464,3249963,2870342)\n;\n\nselect * from activities where id = 26654935;\nSELECT * FROM opportunities WHERE id = 4803458;\n\nSELECT * FROM opportunities where team_id = 260 and user_id = 13841 AND stage_id = 15900;\nSELECT id, uuid, provider, type, lead_id, account_id, contact_id, opportunity_id, stage_id, status, recording_state, title, actual_start_time, actual_end_time\nFROM activities WHERE user_id = 13841 AND opportunity_id IN (4729783, 4731717, 4731726, 4732064, 4732849, 4803458, 4813213);\n\nSELECT DISTINCT\n o.id, o.stage_id, s.name, a.title,\n a.*\nFROM activities a\n# INNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nINNER JOIN groups g ON u.group_id = g.id\nINNER JOIN opportunities o ON a.opportunity_id = o.id\nINNER JOIN stages s ON o.stage_id = s.id\nWHERE\n a.crm_configuration_id = 356\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 13841\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n AND team.uuid = uuid_to_bin('a607fba7-452e-4683-b2af-00d6cb52c93c')\n AND g.uuid = uuid_to_bin('b5d69e40-24a0-4c16-810b-5fa462299f94')\n\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n )\n )\n AND (\n# s.id = 15900\n s.uuid = uuid_to_bin('04ca1c26-c666-4268-a129-419c0acffd73')\n OR s.uuid IS NULL -- Include records without opportunity stage\n )\n\nORDER BY a.actual_end_time DESC;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%'; # 190, 162, 8474, willsc@leadforensics.com\nSELECT * FROM users WHERE team_id = 190;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 190\nand sa.provider = 'hubspot';\n\nselect * from role_user where user_id = 8474;\n\nselect * from crm_configurations where provider = 'bullhorn';\n\nSELECT * FROM opportunities WHERE uuid_to_bin('94578249-65ec-4205-90f2-7d1a7d5ab64a') = uuid;\nSELECT * FROM users WHERE uuid_to_bin('26dbadeb-926f-4150-b11b-771b9d4c2f9a') = uuid;\n\nSELECT * FROM opportunities WHERE id = 4732493;\nselect * from activities where opportunity_id = 4732493;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 443; # 358, 14315, andrea.romano@correrenaturale.com\nSELECT * FROM opportunities WHERE team_id = 443;\n\nSELECT a.id, a.type, a.user_id, a.status, a.deleted_at, u.name, u.email, u.team_id as activity_team_id, u.status, u.deleted_at, t.name, t.status, s.team_id as stage_team_id\nFROM activities AS a\nJOIN stages AS s ON a.stage_id = s.id\nJOIN users AS u ON u.id = a.user_id\nJOIN teams AS t ON t.id = s.team_id\nWHERE u.team_id <> s.team_id and t.id > 135;\n\n\nSELECT\n crm_configuration_id,\n crm_provider_id,\n COUNT(*) as duplicate_count,\n GROUP_CONCAT(id) as stage_ids,\n GROUP_CONCAT(name) as stage_names\nFROM stages\nGROUP BY crm_configuration_id, crm_provider_id\nHAVING COUNT(*) > 1\nORDER BY duplicate_count DESC;\n\nselect * from stages where id IN (14898,14907);\n\nselect * from business_processes;\n\nSELECT *\nFROM crm_configurations\nWHERE team_id IN (\n SELECT team_id\n FROM crm_configurations\n GROUP BY team_id\n HAVING COUNT(*) > 1\n)\nORDER BY team_id;\n\nSELECT *\nFROM teams\nWHERE crm_id IN (\n SELECT crm_id\n FROM teams\n GROUP BY crm_id\n HAVING COUNT(*) > 1\n)\nORDER BY crm_id;\n\n# ***************************************************************************\nselect * from crm_configurations where provider = 'integration-app';\nSELECT * FROM teams WHERE id = 443; # Correre Naturale 358 14315 andrea.romano@correrenaturale.com\nselect * from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect id, uuid, actual_end_time, crm_provider_id, is_internal, playbook_category_id, type, user_id, lead_id, contact_id, account_id, opportunity_id, status, title from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect * from team_features where team_id = 358;\nselect * from activity_summary_logs;\n\nselect * from teams where id = 406;\n\n# ************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sportfive%'; # 267, 202, 14637, srv.salesforce@sportfive.com\nselect * from activities where crm_configuration_id = 202 order by actual_end_time desc;\n\nSELECT * FROM users where id = 14637;\nSELECT * FROM teams where id = 267;\nSELECT * FROM groups where id = 1118;\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 202\n AND status IN ('completed', 'failed')\n AND recording_state != 'stopped'\n AND type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n AND (is_private = 0 OR user_id = 14637)\n AND (\n (\n actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n ) OR (\n actual_start_time IS NULL\n AND type IN ('sms-outbound', 'sms-inbound')\n AND created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND NOT EXISTS (\n SELECT 1\n FROM tracks\n WHERE\n tracks.activity_id = activities.id\n AND tracks.type IN ('audio', 'video')\n )\nORDER BY actual_end_time DESC;\n\nSELECT DISTINCT\n a.*\nFROM activities a\nINNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nWHERE\n a.crm_configuration_id = 202\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 14637\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND a.user_id = 14637\n )\n )\n\nORDER BY a.actual_end_time DESC\n;\n\nSELECT DISTINCT a.*\nFROM activities a\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams t ON u.team_id = t.id\n# INNER JOIN tracks tr ON a.id = tr.activity_id\n# INNER JOIN groups g ON u.group_id = g.id\nWHERE 1=1\n AND t.id = 267\n# AND t.uuid = uuid_to_bin('aed4927b-f1ea-499e-94c3-83762fd233e8')\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND tr.type NOT IN ('audio', 'video')\n AND (\n a.is_private = 0\n OR a.user_id = 14637\n )\n AND (\n (a.actual_start_time BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59')\n OR (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59'\n )\n )\n# and NOT EXISTS (\n# SELECT 1\n# FROM tracks t\n# WHERE t.activity_id = a.id\n# AND t.type IN ('audio', 'video')\n# )\n\nORDER BY a.actual_end_time DESC;\n\nSELECT * FROM tracks WHERE activity_id = 26485995;\n\nselect a.is_private, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 202\n# and a.is_internal = 0\nand (a.actual_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type IN (\"softphone\",\"softphone-inbound\",\"conference\",\"sms-inbound\")\nand a.status IN ('completed', 'failed')\n# and a.external_id is not null\norder by a.actual_end_time desc;\n\nselect * from activities a where a.crm_configuration_id = 202\nand a.actual_start_time between '2025-03-20 00:00:00' and '2025-03-21 00:00:00'\n# AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM teams WHERE name LIKE '%Tourlane%';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_field_data WHERE crm_field_id = 98809;\n\nselect * from users where status = 1 AND timezone = 'MDT';\n\nselect * from opportunities where id = 3769814;\nselect * from deal_risks where opportunity_id = 3769814;\n\nselect cp.* from crm_profiles cp\njoin users u on cp.user_id = u.id\njoin crm_configurations crm on cp.crm_configuration_id = crm.id\nwhere crm.provider = 'hubspot' AND u.status = 1 AND log_notes != 'none';\n\nselect * from crm_fields where id = 154575;\n\nselect * from team_features where feature = 'SUPPORTS_SYNC_MISSING_CALL_DISPOSITIONS';\nSELECT * FROM teams WHERE id = 176; # crm 148\nselect * from activities where crm_configuration_id = 148 and provider = 'hubspot' order by id desc;\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nselect * from crm_fields cf\njoin crm_configurations crm on crm.id = cf.crm_configuration_id\nwhere crm.provider = 'hubspot' and cf.object_type IN ('account', 'contact');\n\n# *********************************************************************************************\nSELECT * FROM users WHERE id IN (15415, 15418);\nSELECT * FROM groups WHERE id IN (1805,1806);\nSELECT * FROM playbooks WHERE id = 1860;\nSELECT * FROM playbook_categories WHERE id = 38634;\nSELECT * FROM crm_fields WHERE id = 189962;\n\nSELECT * FROM teams WHERE name = 'Pulsar Group'; # 472, 380, 15138 raza.gilani@vuelio.com\n\nSELECT * FROM crm_profiles WHERE user_id = 15415;\nSELECT * FROM social_accounts WHERE sociable_id = 15415 and provider = 'salesforce';\n\nselect * from sidekick_settings where team_id = 472;\n\nSELECT * FROM activities WHERE uuid_to_bin('452c58c7-b87c-4fdd-953e-d7af185e9588') = uuid; # 28617536, user: 15418\nSELECT * FROM activities WHERE uuid_to_bin('399114ee-d3a8-458c-bff5-5f654658db0a') = uuid; # 28344407, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('f0aa567f-0ab1-4bbb-96aa-37dcf184676b') = uuid; # 28580288, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('50c086b1-2770-4bca-b5ae-6bac22ec426b') = uuid; # 28566069, user: 15415\n\n# *********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%TeamTailor%'; # 109, 218, 13969, salesforce-integrations@teamtailor.com\nselect * from crm_configurations where id = 218;\nSELECT * FROM activities WHERE uuid_to_bin('e39b5857-7fdb-4f5a-951a-8d3ca69bb1b0') = uuid; # 28338765\nSELECT * FROM users WHERE id IN (13232, 13230);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n0057R00000EPL5HQAX Inez Ekblad\n\n1091cb81-5ea1-4951-a0ed-f00b568f0140 Triman Kaur\n\nSELECT * FROM crm_profiles WHERE user_id IN (13232, 13230);\n\n############################################################################################\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939 00UVg00000FLvnSMAT\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id IN (94491,94493,94498);\nSELECT * FROM users WHERE id = 13658;\nSELECT * FROM teams WHERE id = 109;\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Strengthscope%'; # 481, 390, 15420, katy.holden@strengthscope.comk\nSELECT * FROM stages WHERE crm_configuration_id = 390;\nselect * from business_processes where team_id = 481 and crm_configuration_id = 390;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 481\nand sa.provider = 'salesforce';\n\n\nSELECT * FROM users WHERE id = 15780; # team 462\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 462\nand sa.provider = 'hubspot';\n\n\nselect * from teams where id = 495;\nSELECT * FROM users WHERE id = 15794;\nselect * from social_accounts where sociable_id = 15794;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Flight%'; # 427, 333, 13752\nSELECT * FROM accounts WHERE team_id = 427 and crm_provider_id = '668731000183444517';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Group GTI%'; # 495, 407, 15794\nSELECT * FROM activities WHERE crm_configuration_id = 407\nand status = 'completed' and type = 'conference'\norder by id desc;\n\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from permission_role;\n\nselect * from activities where crm_configuration_id = 407 and status = 'completed' order by id desc;\nSELECT * FROM activities WHERE id = 29512773;\nSELECT * FROM activities WHERE id IN (29042721,28991325,29002874);\n\nSELECT al.* from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 407\n# and a.id IN (29042721,28991325,29002874);\n\nSELECT * FROM users WHERE id = 15794;\nSELECT * FROM users WHERE team_id = 495;\nSELECT * FROM social_accounts WHERE sociable_id = 15794;\nSELECT * FROM opportunities WHERE team_id = 495 and name like '%OC:%';\nSELECT * FROM contacts WHERE team_id = 495;\nSELECT * FROM leads WHERE team_id = 495;\nSELECT * FROM accounts WHERE team_id = 495;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 407;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 407;\nSELECT * FROM crm_configurations WHERE id = 407;\nSELECT * FROM opportunities WHERE team_id = 495 and close_date BETWEEN '2025-06-01' AND '2025-07-01'\nand user_id IS NOT NULL and is_closed = 1 and is_won = 1;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hamilton Court FX LLP%'; # 249, 187, 10103\nSELECT * FROM activities WHERE uuid_to_bin('4659c2bb-9a49-484e-9327-a3d66f1e028c') = uuid; # 28951064\nSELECT * FROM crm_fields WHERE crm_configuration_id = 187 and object_type IN ('tasks', 'event');\n\n# *********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Checkstep%'; # 325, 256, 11753\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 325\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid; # 28611085\nSELECT * FROM activities WHERE uuid_to_bin('980f0336-840b-4185-a5a9-30cf8b0749a8') = uuid; # 28719733\nSELECT * FROM activity_summary_logs where activity_id = 28719733;\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 356, 9444\nSELECT * FROM activity_summary_logs where sent_at BETWEEN '2025-06-09 11:38:00' AND '2025-06-09 11:40:00';\nSELECT * FROM leads WHERE crm_configuration_id = 356 and crm_provider_id = '230045001502770504'; # 823630\nselect * from activities where crm_configuration_id = 356 and lead_id = 841732;\n\nSELECT * from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 356;\n\nselect * from activities where crm_configuration_id = 356\nand actual_end_time between '2025-06-09 11:00:00' and '2025-06-09 12:00:00'\norder by id desc;\n\nselect * from accounts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from leads where crm_configuration_id = 356 and crm_provider_id = '230045001514275654' order by id desc;\nselect * from contacts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from opportunities where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\n\nselect * from team_features where team_id = 260;\nselect * from features where id IN (1,2,4,6,18,19,20,9,10,3,23,24,25,26,27);\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid;\n\nselect * from crm_fields;\nselect * from crm_layout_entities;\n\nSELECT * FROM teams WHERE name LIKE '%Optable%';\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Teamtailor%'; # 109, 218, 13969\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id in (94491,94493,94498);\n\nselect * from teams where crm_id IS NULL;\n\nSELECT * FROM activities WHERE uuid_to_bin('71aa8a0c-9652-4ff6-bee7-d98ae60abef6') = uuid;\n\n# *************************************************************************************************\nselect * from team_domains where team_id = 399;\nSELECT * FROM teams WHERE name LIKE '%Rydoo%'; # 399, 318, 13207\n\nselect * from calendar_events where id = 5163781;\nSELECT * FROM activities WHERE uuid_to_bin('be2cbc52-7fda-46a0-9ae0-25d9553eafc0') = uuid; # 29443896\nSELECT * FROM participants WHERE activity_id = 29443896;\nselect * from contacts where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\nselect * from leads where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\n\nselect * from activities where user_id = 14937 order by created_at ;\n\nselect * from users where id = 14937;\n\nselect * from contacts where crm_configuration_id = 318 and email LIKE '%@strawberry.se';\nselect * from opportunities where crm_configuration_id = 318 and crm_provider_id = '006Sf00000D1WOAIA3';\n\nselect * from activities a join participants p on a.id = p.activity_id\nwhere crm_configuration_id = 318 and a.updated_at > '2025-06-23T08:18:43Z';\n\n# *************************************************************************************************\nSELECT * FROM opportunities WHERE team_id = 379 and crm_provider_id = '39334518886';\nSELECT * FROM opportunities WHERE team_id = 379 order by id desc;\nSELECT * FROM teams WHERE id = 379;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379 and sociable_id = 13852\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations WHERE id = 307;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 307;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1027;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307\n and id IN (144750,144855,145158,155227);\n\nSELECT * FROM activities;\n\n\nselect * from activities\nwhere created_at > '2025-07-01 00:00:00'\n# and created_at < '2025-08-01 00:00:00'\nand type not in ('email-outbound', 'email-inbound')\nand account_id is null\nand contact_id is null\nand lead_id is null\nand opportunity_id is not null\n;\nSELECT * FROM activities WHERE id IN (25344155, 25344296, 25501909, 28692187);\nSELECT * FROM crm_configurations WHERE id in (335,301,200);\n\nselect * from crm_fields where crm_configuration_id = 230 and crm_provider_id = 'Age2__c';\n\nSELECT * FROM teams WHERE name LIKE '%Resights%';\nselect * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nselect * from teams where id IN (442);\n\nselect * from activities\nwhere crm_configuration_id = 177\nand provider = 'amazon-connect'\n order by id desc;\n# and source <> 'gong';\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nSELECT * FROM activities WHERE uuid_to_bin('cec1993b-a7e5-4164-b74d-d680ea51d2f2') = uuid;\n\n\nselect * from crm_configurations where store_transcript = 1;\nSELECT * FROM teams WHERE id IN (80);\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sedna%'; # 277, 213, 12594\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 277\nand sa.provider = 'salesforce';\n\nselect * from activities where crm_configuration_id = 213 and account_id = 2511502;\n\nselect * from crm_configurations where id = 213;\n\nSELECT * FROM activities WHERE uuid_to_bin('35aa790a-8569-4544-8268-66f9a4a26804') = uuid; # 33981604\nSELECT * FROM participants WHERE activity_id = 33981604;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 337 and object_type = 'task';\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 431\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b5476c7d-19a8-491b-869d-676ea1e857b6') = uuid; # 33997223\nselect * from activity_summary_logs where activity_id = 33997223;\nselect * from activity_notes where activity_id = 33997223;\n\n# ***********************************\nSELECT * FROM teams WHERE name LIKE '%Abode%';\n\n\nselect * from features;\nselect * from teams t\nwhere t.status = 'active'\nand id NOT IN (select team_id from team_features where feature_id = 9)\n;\n\n\nselect * from playbook_layouts where playbook_id = 1725;\nSELECT * FROM activities WHERE uuid_to_bin('65cc283c-4849-49e6-927f-4c281c8fea19') = uuid; # 34297473\nselect * from teams where id = 318;\nselect * from crm_configurations where team_id = 318;\nselect * from playbooks where team_id = 318;\nSELECT * FROM crm_layouts where crm_configuration_id = 381;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1259;\nSELECT * FROM crm_fields WHERE id IN (192938,192936,192939);\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1266;\nSELECT * FROM crm_fields WHERE id IN (192980,192991,192997,192998,193064,193067);\n\nSELECT * FROM activities WHERE uuid_to_bin('a902289b-285c-48eb-9cc2-6ad6c5d938f5') = uuid; # 34297533\n\n\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nSELECT * FROM crm_fields WHERE id IN (131668,131669,131670,131671,131676,131797);\n\nSELECT * FROM teams WHERE name LIKE '%Peripass%'; # 351, 281, 12124\nselect * from crm_layouts where crm_configuration_id = 281;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nselect * from crm_fields where crm_configuration_id = 281 and id in (131668,131669,131670,131671,131676,131797);\nselect * from opportunities where crm_configuration_id = 281;\n\nSELECT * FROM activities WHERE id IN (34211315, 34130075);\nSELECT * FROM crm_field_data WHERE object_id IN (34211315, 34130075);\n\nselect cf.crm_configuration_id, cle.crm_layout_id, cle.id, cf.id from crm_field_data cfd\njoin crm_layout_entities cle on cle.id = cfd.crm_layout_entity_id\njoin crm_fields cf on cle.crm_field_id = cf.id\nwhere cf.deleted_at IS NOT NULL\nGROUP BY cle.id, cf.id;\n\nselect * from crm_layouts where id IN (355);\nselect u.email, t.crm_id, t.* from teams t\njoin users u on u.id = t.owner_id\nwhere crm_id IN (97);\n\nSELECT * FROM crm_fields WHERE id = 96492;\n\nselect * from permissions;\nselect * from permission_role where permission_id = 247;\nselect * from roles;\n\nselect * from migrations;\n# *****************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('291e3c21-11cc-4728-aee7-6e4bedf86d72') = uuid; # 34262174\nSELECT * FROM crm_configurations WHERE id = 301;\nSELECT * FROM teams WHERE id = 343;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from participants where activity_id = 34262174;\n\nselect * from contacts where crm_configuration_id = 301 and id = 6976326;\nselect * from accounts where crm_configuration_id = 301 and id IN (4647626, 4815829); # 30761335403\n\nselect * from activity_summary_logs where activity_id = 34262174;\n\nselect * from users where status = 1 AND timezone = 'EST';\n\n# ****************************************************************************\nSELECT * FROM users WHERE id = 13869;\nSELECT * FROM crm_configurations WHERE id = 320;\nSELECT * FROM teams WHERE id = 401;\n\nSELECT * FROM activities WHERE uuid_to_bin('2228c16f-10be-48d5-90d4-67385219dc01') = uuid; # 29670601\n\nSELECT * FROM accounts WHERE id = 7761483;\nSELECT * FROM opportunities WHERE id = 6051814;\n\nSELECT * FROM teams WHERE name LIKE '%Seedlegals%';\n\n;select * from opportunities where updated_at > '2025-10-11' AND crm_provider_id = '34713761166';\n\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 177;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 577;\nSELECT * FROM crm_fields WHERE id IN (68458,68459,68480,68497,68524,68530,68554,68618,68662,68781,68810,68898,68981,69049,97467);\n\nSELECT t.id, crm.id, t.name, crm.sync_objects, crm.provider, crm.last_synced_at FROM crm_configurations crm join teams t on t.crm_id = crm.id\nwhere t.status = 'active' AND crm.provider = 'hubspot' AND crm.last_synced_at < '2025-10-22 00:00:00';\n\nSELECT * FROM activities WHERE uuid_to_bin('fa09449f-cba9-496a-b8f3-865cd3c72351') = uuid;\nSELECT * FROM crm_configurations where id = 184;\nSELECT * FROM teams WHERE id = 246;\nSELECT * FROM social_accounts WHERE sociable_id = 9259 and provider = 'hubspot';\n\nSELECT * FROM users WHERE email LIKE '%rhian.old@bud.co.uk%'; # 17700\nSELECT * FROM teams WHERE id = 551;\n\nSELECT * FROM crm_configurations WHERE id = 471;\nSELECT * FROM activities WHERE crm_configuration_id = 471 and crm_provider_id IS NOT NULL;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 471;\nSELECT * FROM crm_fields WHERE id = 307260;\nSELECT * FROM crm_field_values WHERE crm_field_id = 307260;\n\nselect * from crm_layouts where crm_configuration_id = 471;\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1547;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1548;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 551 and sa.provider = 'hubspot';\n\nSELECT * FROM teams WHERE name LIKE '%$PCS%';\n\n# ********************************************************************************************************\nselect * from crm_configurations crm\njoin teams t on t.crm_id = crm.id\nwhere t.status = 'active'\nand crm.provider = 'hubspot';\n\n# $slug = 'HUBSPOT_WEBHOOK_SYNC';\n# $team = Jiminny\\Models\\Team::find(2);\n# $feature = Feature::query()->where('slug', $slug)->first();\n# TeamFeature::query()->create(['feature_id' => $feature->getId(),'team_id' => $team->getId()]);\n\n# hubspot_webhook_metrics\n\nselect * from crm_configurations where id = 331; # 416\nSELECT * FROM teams WHERE id = 416;\nSELECT * FROM opportunities WHERE team_id = 190;\n\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%';\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 190 and sa.provider = 'hubspot';\n\n\n\nSELECT * FROM teams WHERE name LIKE '%Rapaport%'; # 431, 337\nSELECT * FROM teams where id = 431;\nSELECT * FROM crm_configurations where team_id = 431;\nSELECT * FROM activity_providers where team_id = 431;\nSELECT * FROM activities where crm_configuration_id = 337 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 431 and sa.provider = 'salesforce';\n\nSELECT * FROM teams WHERE name LIKE '%BiP%'; # 401, 320\nSELECT * FROM teams where id = 401;\nSELECT * FROM crm_configurations where team_id = 401;\nSELECT * FROM activity_providers where team_id = 401;\nSELECT * FROM activities where crm_configuration_id = 320 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 401 and sa.provider = 'salesforce';\n\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 307; # 379 - Story Terrace Inc , portalId: 3921157\nSELECT * FROM contacts WHERE team_id = 379 and updated_at > '2026-01-31 11:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-01 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 379 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 485; # 563 - LATUS Group (ad94d501-5d09-44fd-878f-ca3a9f8865c3) , portalId: 3904501\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 338; # 432 - Formalize , portalId: 9214205\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 432 and sa.provider = 'hubspot';\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 436; # 519 - Moxso , portalId: 25531989\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 96; # 119 - Nourish Care , portalId: 26617984\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 331; # 416 - The National College , portalId: 7213852\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 308; # 380 - Foodles , portalId: 7723616\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 379; # 471 - imat-uve , portalId: 9177354\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 465; # 545 - Spotler , portalId: 144759271\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 455; # 537 - indevis , portalId: 25666868\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 200; # 265 - Jobadder , portalId: 6426676\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 335; # 429 - Eletive , portalId: 6110563\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 363; # 456 - Global Group , portalId: 8901981\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 297; # 369 - Unbiased , portalId: 9229005\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 353; # 449 - Fuuse , portalId: 25781745\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 487; # 566 - Nimbus , portalId: 39982590\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 487;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1630;\nselect * from crm_fields where crm_configuration_id = 487 and\n(uuid_to_bin('4c6b2971-64d4-45b8-b377-427be758b5a5') = uuid or uuid_to_bin('59e368d8-65a0-4b77-b611-db37c99fbe68') = uuid);\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 420; # 506 - voiio , portalId: 145629154\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 479; # 558 - Momice , portalId: 535962\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 59; # 80 - Storyclash GmbH , portalId: 4268479\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 175; # 203 - Team iAM , portalId: 5534732\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 368; # 460 - OneTouch Health , portalId: 5534732183355\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\n\n\nselect * from users where id = 29643;\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM teams WHERE name LIKE '%Buynomics%'; # 462, 482, 14910\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\n# and description like '%The call focused on understanding Welch%'\norder by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 462 and sa.provider = 'salesforce';\n\nselect * from contacts where crm_configuration_id = 482 and name = 'Cyndall Hill'; # 15504749\nselect * from contacts where id = 10891096; # 482\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\nand contact_id = 15504749\norder by id desc;\n\nselect * from activities where id = 36793003; # 96cc7bc1-8622-4d27-92f4-baf664fc1a56, 00UOf00000PDdOXMA1\nselect * from transcription where id = 7646782;\nselect * from ai_prompts where transcription_id = 7646782;\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7a8471a3-847e-4822-802b-ddf426bbc252') = uuid; # 37370018\nSELECT * FROM activity_summary_logs WHERE activity_id = 37370018;\nSELECT * FROM teams WHERE id = 555;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 555 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7c17b8aa-09df-4f85-a0f7-51f47afd712d') = uuid; # 37395250\nSELECT * FROM activities WHERE uuid_to_bin('14d60388-260d-494b-aa0d-63fdb1c78026') = uuid; # 37395250\n\nSELECT a.* FROM activities a JOIN crm_configurations c on c.id = a.crm_configuration_id\nwhere a.type IN ('softphone', 'softphone-outbound') and c.provider = 'hubspot'\nand a.provider NOT IN ('hubspot')\n# and a.provider IN ('salesloft')\n# and c.id NOT IN (70)\n# and a.duration > 30\n# and actual_start_time > '2026-02-05 00:00:00'\norder by a.id desc;\n\nSELECT * FROM activities WHERE id = 37549787;\nSELECT * FROM crm_profiles WHERE user_id = 17613;\n\nSELECT * FROM crm_configurations WHERE id = 70;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 93 and sa.provider = 'hubspot';\n\nSELECT asf.activity_search_id, asf.id, asf.value\nFROM activity_search_filters asf\nWHERE asf.filter = 'group_id'\nAND asf.value IN (\n SELECT CONCAT(\n HEX(SUBSTR(uuid, 5, 4)), '-',\n HEX(SUBSTR(uuid, 3, 2)), '-',\n HEX(SUBSTR(uuid, 1, 2)), '-',\n HEX(SUBSTR(uuid, 9, 2)), '-',\n HEX(SUBSTR(uuid, 11))\n )\n FROM groups\n WHERE deleted_at IS NOT NULL\n);\n\nSELECT * FROM crm_configurations WHERE id = 373; # KPSBremen.de 465 # - no social account\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 465 and sa.provider = 'hubspot';\n\nselect * from crm_configurations where id = 494;\n\nSELECT * FROM teams WHERE name LIKE '%splose%'; # 572, 495, 18708\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 572 and sa.provider = 'pipedrive';\n\nselect * from opportunities where team_id = 572\n# and name like '%Onebright%'\n# and is_closed = 1 and is_won = 0\n order by id desc;\n\n\nselect * from users where deleted_at is null and status = 2;\n\nselect * from contacts where id = 17900517;\nselect * from accounts where id = 10109838;\nselect * from opportunities where id = 6955880;\n\nselect * from opportunity_contacts where opportunity_id = 6955880;\nselect * from opportunity_contacts where contact_id = 17900517;\n\nselect * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id\nwhere crm.provider != 'salesforce';\n\nSELECT * FROM activities WHERE uuid_to_bin('adcb8331-5988-4353-834e-383a355abba2') = uuid; # 38056424, crm 104659682404\nselect * from teams where id = 456;\nSELECT * FROM crm_configurations WHERE id = 363;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 456 and sa.provider = 'hubspot';\n\nselect * from crm_layouts where crm_configuration_id = 363;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id IN (1203, 1204, 1635);\nSELECT * FROM crm_fields WHERE id IN (181536, 181538, 213455);\n\nSELECT * FROM teams WHERE name LIKE '%Electric%'; # 342, 272, 12767\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and name like 'NORTHUMBRIA POL%'; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 order by remotely_created_at asc; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and updated_at > '2026-01-01 00:00:00';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 272 and object_type = 'opportunity';\nSELECT * FROM crm_field_values WHERE crm_field_id = 127164;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\n\nSELECT * FROM teams WHERE id = 472;\nSELECT * FROM crm_configurations WHERE id = 380;\nselect * from activities where id = 38285673; # 38285673\nSELECT * FROM users WHERE id = 16942;\nSELECT * FROM groups WHERE id = 1964;\nSELECT * FROM playbooks WHERE id = 2033;\n\nselect * from teams where created_at > '2026-03-09';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 499; # 1065\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1678;\n\nSELECT * FROM teams WHERE id = 575;\nselect * from opportunities where team_id = 575;\n\nSELECT * FROM activities WHERE uuid_to_bin('96b1261f-2357-49f9-ab38-23ce12008ea0') = uuid;\n\nselect * from contacts c\nwhere c.crm_configuration_id = 370 order by c.updated_at desc;\n\nSELECT * FROM participants where activity_id = 38833541;\nSELECT * FROM participants where activity_id = 39216301;\nSELECT * FROM activity_summary_logs where activity_id = 39216301;\nSELECT * FROM activities WHERE uuid_to_bin('c7d99fbe-1fb1-41f2-8f4d-52e2bf70e1e9') = uuid; # 38833541, crm 478116564181\nSELECT * FROM activities WHERE uuid_to_bin('2e6ff4d3-9faa-447a-a8c1-9acde4d885ae') = uuid; # 39216301, crm 480171536586\nselect * from crm_profiles where crm_configuration_id = 319 and crm_provider_id = 525785080;\nselect * from opportunities where crm_configuration_id = 319 and crm_provider_id = 410150124747;\nselect * from accounts where crm_configuration_id = 319 and crm_provider_id = 47150650569;\nselect * from contacts where crm_configuration_id = 319 and crm_provider_id IN ('665587441856', '742723347700');\n# owner 13236 525785080\n# contact 1 16779180 665587441856 - activity - Alex Howes alex@supportroom.com created 2026-01-26\n# contact 2 19247563 742723347700 - ash@supportroom.com 2026-03-24\n# company 4176133 47150650569\n# deal 7100953 410150124747\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 400 and sa.provider = 'hubspot';\n\nselect * from features;\nselect * from team_features where feature_id = 40;\n\nselect * from teams where id = 556; # owner: 18101, crm: 477\nselect * from crm_configurations where id = 477;\nSELECT * FROM users WHERE id = 18101;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 556 and sa.provider = 'integration-app';\n\nselect * from opportunities where id = 7594349;\nselect * from opportunity_stages where opportunity_id = 7594349 order by created_at desc;\nselect * from business_processes where id = 6024;\nselect * from business_process_stages where stage_id = 16352;\nselect * from business_process_stages where business_process_id = 6024;\nselect * from stages where team_id = 459;\nselect * from teams where id = 459;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 459 and sa.provider = 'hubspot';\n\nSELECT os.stage_id, s.crm_provider_id, s.name, COUNT(*) as cnt\nFROM opportunity_stages os\nJOIN stages s ON s.id = os.stage_id\nWHERE os.opportunity_id = 7594349\nGROUP BY os.stage_id, s.crm_provider_id, s.name\nORDER BY cnt DESC;\n\nSELECT s.id, s.crm_provider_id, s.name, s.team_id, s.crm_configuration_id\nFROM stages s\nJOIN business_process_stages bps ON bps.stage_id = s.id\nWHERE bps.business_process_id = 6024\nAND s.crm_provider_id = 'contractsent';\n\nselect * from stages where id IN (16352,20612,18281,7344,16378,16309,5036,15223,14535,6293,12098,11607)\n\nSELECT * FROM teams WHERE name LIKE '%Pulsar Group%'; # 472, 380, 15138, raza.gilani@vuelio.com\nselect * from playbooks where team_id = 472; # event 226147\nSELECT * FROM playbook_categories WHERE playbook_id = 2288;\nSELECT * FROM crm_fields WHERE id = 226147;\nSELECT * FROM crm_field_values WHERE crm_field_id = 226147;\n\nSELECT * FROM crm_configurations WHERE id = 380;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 472 and sa.provider = 'salesforce';","depth":4,"value":"SELECT * FROM team_features where team_id = 1;\n\nSELECT * FROM teams WHERE name LIKE '%Vixio%'; # 340,270,11922\nSELECT * FROM users WHERE team_id = 340; # 12015\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 340\nand sa.provider = 'salesforce';\n# and sa.provider = 'salesloft';\n\nselect * from crm_fields where crm_configuration_id = 270 and object_type = 'event';\n# 125558 - Event Type - Event_Type__c\n# 125552 - Event Status - Event_Status__c\n\nSELECT * FROM sidekick_settings WHERE team_id = 340;\n\nSELECT * FROM crm_field_values WHERE crm_field_id in (125552);\n\nselect * from activities where crm_configuration_id = 270\nand type = 'conference' and crm_provider_id IS NOT NULL\nand actual_start_time > '2024-09-16 09:00:00' order by scheduled_start_time;\n\nSELECT * FROM activities WHERE id = 20871677;\nSELECT * FROM crm_field_data WHERE activity_id = 20871677;\n\nselect * from crm_layouts where crm_configuration_id = 270;\nselect * from crm_layout_entities where crm_layout_id in (886,887);\n\nSELECT * FROM crm_configurations WHERE id = 270;\n\nselect * from playbooks where team_id = 340; # 1514\nselect * from groups where team_id = 340;\nSELECT * FROM crm_fields WHERE id IN (125393, 125401);\n\nselect g.name as 'team name', p.name as 'playbook name', f.label as 'activity type field' from groups g\njoin playbooks p on g.playbook_id = p.id\njoin crm_fields f on p.activity_field_id = f.id\nwhere g.team_id = 340;\n\nSELECT * FROM activities WHERE uuid_to_bin('0c180357-67d2-419e-a8c3-b832a3490770') = uuid; # 20448716\nselect * from crm_field_data where object_id = 20448716;\n\nselect * from activities where crm_configuration_id = 270 and provider = 'salesloft' order by id desc;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%CybSafe%'; # 343,273,12008\nselect * from opportunities where team_id = 343;\nselect * from opportunities where team_id = 343 and crm_provider_id = '18099102526';\nselect * from opportunities where team_id = 343 and account_id = 945217482;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from accounts where team_id = 343 order by name asc;\n\nselect * from stages where crm_configuration_id = 273 and type = 'opportunity';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Voyado%'; # 353,283,12143\nSELECT * FROM activities WHERE crm_configuration_id = 283 and account_id = 3777844 order by id desc;\nSELECT * FROM accounts WHERE team_id = 353 AND name LIKE '%Salesloft%';\nSELECT * FROM activities WHERE id = 20717903;\n\nselect * from participants where activity_id IN (20929172,20928605,20928468,20926272,20926271,20926270,20926269,20916499,20916454,20916436,20916435,20900015,20900014,20900013,20897312,20897243,20897241,20897237,20897232,20897229,20893648,20893231,20893230,20893229,20893228,20889784,20885039,20885038,20885037,20885036,20885035,20882728,20882708,20882703,20882702,20869828,20869811,20869806,20869801,20869799,20869798,20869796,20869795,20869794,20869761,20869760,20869759,20868688,20868687,20850340,20847195,20841710,20833967,20827021,20825307,20825305,20825297,20824615,20824400,20823927,20821760,20795588,20794233,20794057,20793710,20785811,20781789,20781394,20781307,20762651,20758453,20758282,20757323,20756643,20756636,20756629,20756627,20756606,20756605,20756604,20756603,20756602,20756600,20756599,20756598,20756595,20756594,20756589,20756587,20756577,20756573,20748918,20748386,20748385,20748384,20748383,20748382,20748381,20748380,20748379,20748377,20748375,20748373,20743301,20717905,20717904,20717903,20717901,20717899);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 353\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%modern world business solutions%'; # 345,275,12016, l.atkinson@mwbsolutions.co.uk\nSELECT * FROM activities WHERE uuid_to_bin('3921d399-3fef-4609-a291-b0097a166d43') = uuid;\n# id: 20940638, user: 12022, contact: 5305871\nSELECT * FROM activity_summary_logs WHERE activity_id = 20940638;\nselect * from contacts where team_id = 345 and crm_provider_id = '30891432415' order by name asc; # 5305871\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 345\nand sa.provider = 'hubspot';\n\nselect * from users where team_id = 345 and id = 12022;\nSELECT * FROM crm_profiles WHERE user_id = 12022;\nSELECT * FROM participants WHERE activity_id = 20940638;\nSELECT * FROM users u\nJOIN crm_profiles cp ON u.id = cp.user_id\nWHERE u.team_id = 345;\n\nselect * from contacts where team_id = 345 and crm_provider_id = '30880813535' order by name desc; # 5305871\n\nselect * from team_features where team_id = 345;\nSELECT * FROM activities WHERE uuid_to_bin('11701e2d-2f82-4dab-a616-1db4fad238df') = uuid; # 21115197\nSELECT * FROM participants WHERE activity_id = 20897406;\n\n\n\nSELECT * FROM activities WHERE uuid_to_bin('63ba55cd-1abc-447d-83da-0137000005b7') = uuid; # 20953912\nSELECT * FROM activities WHERE crm_configuration_id = 275 and provider = 'ringcentral' and title like '%1252629100%';\n\n\nSELECT * FROM activities WHERE id = 20946641;\nSELECT * FROM crm_profiles WHERE user_id = 10211;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120,97,10984, triger@lunio.ai\nSELECT * FROM opportunities WHERE crm_configuration_id = 97 and crm_provider_id = '006N1000006c5PpIAI';\nselect * from stages where crm_configuration_id = 97 and type = 'opportunity';\nselect * from opportunities where team_id = 120;\n\n\nselect * from crm_configurations crm join teams t on crm.id = t.crm_id\nwhere 1=1\nAND t.current_billing_plan IS NOT NULL\nAND crm.auto_sync_activity = 0\nand crm.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Exclaimer%'; # 270,205,10053,james.lewendon@exclaimer.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 270\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b54df794-2a9a-4957-8d80-09a600ead5f8') = uuid; # 21637956\nSELECT * FROM crm_profiles WHERE user_id = 11446;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cygnetise%'; # 372,300,12554, alex.chikly@cygnetise.com\nselect * from playbooks where team_id = 372;\nselect * from crm_fields where crm_configuration_id = 300 and object_type = 'event'; # 141340\nSELECT * FROM crm_field_values WHERE crm_field_id = 141340;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 372\nand sa.provider = 'salesforce';\n\nselect * from crm_profiles where crm_configuration_id = 300;\nSELECT * FROM crm_configurations WHERE team_id = 372;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Planday%'; # 291,242,11501,mfa@planday.com\nSELECT * FROM opportunities WHERE team_id = 291 and crm_provider_id = '006bG000005DO86QAG'; # 3207756\nselect * from crm_field_data where object_id = 3207756;\nSELECT * FROM crm_fields WHERE id = 111834;\n\nselect f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value\nFROM crm_fields f\nJOIN crm_field_data fd ON f.id = fd.crm_field_id\nWHERE f.crm_configuration_id = 242\nAND f.object_type = 'opportunity'\nAND fd.object_id IN (3207756)\nORDER BY fd.object_id, fd.updated_at;\n\nSELECT * FROM crm_configurations WHERE auto_connect = 1;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150,salesforce-admin@tourlane.com\nselect * from group_deal_risk_types drgt join groups g on drgt.group_id = g.id\nwhere g.team_id = 187;\n\nselect * from `groups` where team_id = 187;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 187\nand sa.provider = 'salesforce';\n\n# Destination - 98870 - Destination__c\n# Stage - 79014 - StageName\n# Land Arrangement - 98856 - Land_Arrangement__c\n# Flight - 98848 - Flight__c\n# Last activity date - 98812 - LastActivityDate\n# Last modified date - 98809 - LastModifiedDate\n# Last inbound mail timestamp - 99151 - Last_Inbound_Mail_Timestamp__c\n# next call - 98864 - Next_Call__c\n\nselect * from crm_fields where crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\nselect * from opportunities where team_id = 187 and name LIKE'%Muriel Sal%';\nselect * from opportunities where team_id = 187 and user_id = 9951 and is_closed = 0;\nselect * from activities where opportunity_id = 3538248;\n\nSELECT * FROM crm_profiles WHERE user_id = 8150;\n\nselect * from deal_risks where opportunity_id = 3538248;\n\nselect * from teams where crm_id IS NULL;\n\nSELECT opp.id AS opportunity_id,\n u.group_id AS group_id,\n MAX(\n CASE\n WHEN a.type IN (\"sms-inbound\", \"sms-outbound\") THEN a.created_at\n ELSE a.actual_end_time\n END) as last_date\nFROM opportunities opp\nleft join activities a on a.opportunity_id = opp.id\ninner join users u on opp.user_id = u.id\nwhere opp.user_id IN (9951)\n\nAND opp.is_closed = 0\nand a.status IN ('completed', 'received', 'delivered') OR a.status IS NULL\ngroup by opp.id;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cybsafe%'; # 343,301,12008,polly.morphew@cybsafe.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 301;\nSELECT * FROM contacts WHERE id = 6612363;\nSELECT * FROM accounts WHERE id = 4235676;\nSELECT * FROM opportunities WHERE crm_configuration_id = 301 and crm_provider_id = 32983784868;\nselect * from opportunity_stages where opportunity_id = 4503759;\n# SELECT * FROM opportunities WHERE id = 4569937;\n\nselect * from activities where crm_configuration_id = 301;\nSELECT * FROM activities WHERE uuid_to_bin('d3b2b28b-c3d0-4c2d-8ed0-eef42855278a') = uuid; # 26330370\nSELECT * FROM participants WHERE activity_id = 26330370;\n\nSELECT * FROM teams WHERE id = 375;\nselect * from playbooks where team_id = 375;\n\nselect * from stages where crm_configuration_id = 301 and type = 'opportunity';\n\nselect * from teams;\nselect * from contact_roles;\n\nSELECT * FROM opportunities WHERE team_id = 343 and user_id = 12871 and close_date >= '2024-11-01';\n\nselect * from users u join crm_profiles cp on cp.user_id = u.id where u.team_id = 343;\n\nSELECT * FROM crm_field_data WHERE object_id = 3771706;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 301 and object_type = 'opportunity'\nand crm_provider_id LIKE \"%traffic_light%\";\nSELECT * FROM crm_field_values WHERE crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531);\n\nSELECT fd.* FROM opportunities o\nJOIN crm_field_data fd ON o.id = fd.object_id\nWHERE o.team_id = 343\n# and o.user_id IS NOT NULL\nand fd.crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531)\nand fd.value != ''\norder by value desc\n# group by o.id\n;\n\nSELECT * FROM opportunities WHERE id = 3769843;\n\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150, salesforce-admin@tourlane.com\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding Circle%'; # 220,177,8603,aswini.mishra@fundingcircle.com\nSELECT * FROM activities WHERE uuid_to_bin('7a40e99b-3b37-4bb1-b983-325b81801c01') = uuid; # 23139839\n\n\nSELECT * FROM opportunities WHERE id = 3855992;\n\nSELECT * FROM users WHERE name LIKE '%Angus Pollard%'; # 8988\n\nSELECT * FROM teams WHERE name LIKE '%Story Terrace%'; # 379, 307, 12894\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307 and object_type != 'opportunity';\n\nselect * from contacts where team_id = 379 and name like '%bebro%'; # 5874411, crm: 77229348507\nSELECT * FROM crm_field_data WHERE object_id = 5874411;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379\nand sa.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%mentio%'; # 117, 94, 6371, nikhil.kumar@mention-me.com\nSELECT * FROM activities WHERE uuid_to_bin('82939311-1af0-4506-8546-21e8d1fdf2c1') = uuid;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tourlane%'; # 187, 209, 8150, salesforce-admin@tourlane.com\nSELECT * FROM opportunities WHERE team_id = 187 and crm_provider_id = '006Se000008xfvNIAQ'; # 3537793\nselect * from generic_ai_prompts where subject_id = 3537793;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120, 97, 10984, triger@lunio.ai\nSELECT * FROM crm_configurations WHERE id = 97;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 97;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 355;\nSELECT * FROM crm_fields WHERE id = 32682;\n\nselect cfd.value, o.* from opportunities o\njoin crm_field_data cfd on o.id = cfd.object_id and cfd.crm_field_id = 32682\nwhere team_id = 120\nand cfd.value != ''\n;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 120\nand sa.provider = 'salesforce';\n\nselect * from opportunities where team_id = 120 and crm_provider_id = '006N1000007X8MAIA0';\nSELECT * FROM crm_field_data WHERE object_id = 2313439;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 410;\nSELECT * FROM teams WHERE name LIKE '%Local Business Oxford%';\nselect * from scorecards where team_id = 410;\nselect * from scorecard_rules;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding%'; # 220, 177, 8603, aswini.mishra@fundingcircle.com\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\njoin users u on o.user_id = u.id\nwhere a.crm_configuration_id = 177 and a.type LIKE '%email-out%'\n# and a.actual_end_time > '2024-12-16 00:00:00'\n# and o.remotely_created_at > '2024-12-01 00:00:00'\n# and u.group_id = 1014\nand u.id = 9021\norder by a.id desc;\nSELECT * FROM opportunities WHERE id in (3981384,4017346);\nSELECT * FROM users WHERE team_id = 220 and id IN (8775, 11435);\n\nselect * from users where id = 9021;\nselect * from inboxes where user_id = 9021;\n\nselect * from inbox_emails where inbox_id = 1349 and email_date > '2024-12-18 00:00:00';\n\nselect * from email_messages where team_id = 220\nand orig_date > '2024-12-16 00:00:00' and orig_date < '2024-12-19 00:00:00'\nand subject LIKE '%Personal%'\n# and 'from' = 'credit@fundingcircle.com'\n;\n\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\nwhere a.user_id = 9021 and a.type LIKE '%email-out%'\nand a.actual_end_time > '2024-12-18 00:00:00'\nand o.user_id IS NOT NULL\nand o.remotely_created_at > '2024-12-01 00:00:00'\norder by a.id desc;\n\nSELECT * FROM opportunities WHERE team_id = 220 and name LIKE '%Right Car move Limited%' and id = 3966852;\nselect * from activities where crm_configuration_id = 177 and type LIKE '%email%' and opportunity_id = 3966852 order by id desc;\n\nselect * from team_settings where name IN ('useCloseDate');\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hurree%'; # 104, 81, 6175, jfarrell@hurree.co\nSELECT * FROM opportunities WHERE team_id = 104 and name = 'PropOp';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 104\nand sa.provider = 'hubspot';\n\nselect * from crm_configurations where last_synced_at > '2025-01-19 01:00:00'\nselect * from teams where crm_id IS NULL;\n\nselect t.name as 'team', u.name as 'owner', u.email, u.phone\nfrom teams t\njoin activity_providers ap on t.id = ap.team_id\njoin users u on t.owner_id = u.id\nwhere 1=1\n and t.status = 'active'\n and ap.is_enabled = 1\n# and u.status = 1\n and ap.provider = 'ms-teams';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nSELECT * FROM teams WHERE id = 442; # 14293\nselect * from users where team_id = 442;\nselect * from social_accounts sa where sa.sociable_id = 14293;\nselect * from invitations where team_id = 442;\n\n# ********************************************************************************************************\nSELECT * FROM users WHERE email LIKE '%nea.liikamaa@eletive.com%'; # 14022\nSELECT * FROM teams WHERE id = 429;\nselect * from opportunities where team_id = 429 and crm_provider_id IN (16157415775, 22246219645);\nselect * from activities where opportunity_id in (4340436,4353519);\n\nselect * from transcription where activity_id IN (25630961,25381771);\nselect * from generic_ai_prompts where subject_id IN (4353519);\n\nSELECT\n a.id as activity_id,\n a.opportunity_id,\n a.type as activity_type,\n a.language,\n CONCAT(a.title, a.description) AS mail_content,\n e.from AS mail_from,\n e.to AS mail_to,\n e.subject AS mail_subject,\n e.body AS mail_body,\n p.type as prompt_type,\n p.status as prompt_status,\n p.content AS prompt_content,\n a.actual_start_time as created_at\nFROM activities a\n LEFT JOIN ai_prompts p ON a.transcription_id = p.transcription_id AND p.deleted_at IS NULL\n LEFT JOIN email_messages e ON a.id = e.activity_id\nWHERE a.actual_start_time > '2024-01-01 00:00:00'\n AND a.opportunity_id IN (4353519)\n AND a.status IN ('completed', 'received', 'delivered')\n AND a.deleted_at IS NULL\n AND a.type NOT IN ('sms-inbound', 'sms-outbound')\nORDER BY a.opportunity_id ASC, a.id ASC;\n\nSELECT * FROM users WHERE name LIKE '%George Fierstone%'; # 14293\nSELECT * FROM teams WHERE id = 442;\nSELECT * FROM crm_configurations WHERE id = 344;\nselect * from team_features where team_id = 442;\nselect * from groups where team_id = 442;\nselect * from playbooks where team_id = 442;\nselect * from playbook_categories where playbook_id = 1729;\nselect * from crm_fields where crm_configuration_id = 344 and id = 172024;\nSELECT * FROM crm_field_values WHERE crm_field_id = 172024;\nselect * from crm_layouts where crm_configuration_id = 344;\nselect * from playbook_layouts where playbook_id = 1729;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 221, 9444\n\nselect s.*\n# , s.sent_at, u.name, a.*\nfrom activity_summary_logs s\ninner join activities a on a.id = s.activity_id\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 356\nand s.sent_at > date_sub(now(), interval 60 day)\norder by a.actual_end_time desc;\n\nselect * from activities a\n# inner join activity_summary_logs s on s.activity_id = a.id\nwhere a.crm_configuration_id = 356 and a.actual_end_time > date_sub(now(), interval 60 day)\n# and a.crm_provider_id is not null\n# and provider <> 'ringcentral'\nand status = 'completed'\norder by a.actual_end_time desc;\n\nselect * from teams order by id desc; # 17328, 32, 17830, integration-account@jiminny.com\nSELECT * FROM users;\nSELECT * FROM users where team_id = 260 and status = 1; # 201 - 150 active\nSELECT * FROM teams WHERE id = 260;\nselect * from team_settings where team_id = 260;\nselect * from crm_configurations where team_id = 260;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 356;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1184;\n\nselect * from accounts where crm_configuration_id = 221 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 221 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 221 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 221 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 221 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 221;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 221 order by id desc;\nselect * from stages where crm_configuration_id = 221 order by id desc;\n\nselect * from accounts where crm_configuration_id = 356 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 356 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 356 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 356 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 356 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 356;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 356 order by id desc;\nselect * from stages where crm_configuration_id = 356 order by id desc;\n\nselect * from playbooks where team_id = 260 order by id desc; # 4 (2 deleted)\nselect * from groups where team_id = 260 order by id desc; # 27 groups, (2 deleted)\nselect * from playbook_layouts where playbook_id IN (1410,1409,1276,1254); # 4\nselect ce.* from calendars c\njoin users u on c.user_id = u.id\njoin calendar_events ce on c.id = ce.calendar_id\nwhere u.team_id = 260\nand (ce.start_time > '2025-02-21 00:00:00')\n;\n# calendar events 1207\n#\n\nselect * from opportunities where team_id = 260;\nSELECT * FROM crm_field_data WHERE object_id = 4696496;\n\nselect * from activities where crm_configuration_id = 356 and crm_provider_id IS NOT NULL;\nselect * from activities where crm_configuration_id IN (221) and provider NOT IN ('ms-teams', 'uploader', 'zoom-bot')\n# and type = 'conference' and status = 'scheduled' and activities.is_internal = 0\nand created_at > '2024-03-01 00:00:00'\norder by id desc; # 880 000, ringcentral, avaya\nSELECT * FROM participants WHERE activity_id = 26371744;\n\n# all activities 942 000 +\n# conference 7385 - scheduled 984 - external 343\n\nselect * from activities where id = 26321812;\nselect * from participants where activity_id = 26321812;\nselect * from participants where activity_id in (26414510,26414514,26414516,26414604,26414653,26414655);\nselect * from leads where id in (720428,689175,731546,645866,621037);\n\nselect * from users where id = 13841;\nselect * from opportunities where user_id = 9541;\nselect * from stages where id = 15900;\n\nselect * from accounts where\n# id IN (4160055,5053725,4965303,4896434)\nid in (4584518,3249934,3218025,3891133,3399450,4172999,4485161,3101785,4587203,3070816,2870343,2870341,3563940,4550846,3424464,3249963,2870342)\n;\n\nselect * from activities where id = 26654935;\nSELECT * FROM opportunities WHERE id = 4803458;\n\nSELECT * FROM opportunities where team_id = 260 and user_id = 13841 AND stage_id = 15900;\nSELECT id, uuid, provider, type, lead_id, account_id, contact_id, opportunity_id, stage_id, status, recording_state, title, actual_start_time, actual_end_time\nFROM activities WHERE user_id = 13841 AND opportunity_id IN (4729783, 4731717, 4731726, 4732064, 4732849, 4803458, 4813213);\n\nSELECT DISTINCT\n o.id, o.stage_id, s.name, a.title,\n a.*\nFROM activities a\n# INNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nINNER JOIN groups g ON u.group_id = g.id\nINNER JOIN opportunities o ON a.opportunity_id = o.id\nINNER JOIN stages s ON o.stage_id = s.id\nWHERE\n a.crm_configuration_id = 356\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 13841\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n AND team.uuid = uuid_to_bin('a607fba7-452e-4683-b2af-00d6cb52c93c')\n AND g.uuid = uuid_to_bin('b5d69e40-24a0-4c16-810b-5fa462299f94')\n\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n )\n )\n AND (\n# s.id = 15900\n s.uuid = uuid_to_bin('04ca1c26-c666-4268-a129-419c0acffd73')\n OR s.uuid IS NULL -- Include records without opportunity stage\n )\n\nORDER BY a.actual_end_time DESC;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%'; # 190, 162, 8474, willsc@leadforensics.com\nSELECT * FROM users WHERE team_id = 190;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 190\nand sa.provider = 'hubspot';\n\nselect * from role_user where user_id = 8474;\n\nselect * from crm_configurations where provider = 'bullhorn';\n\nSELECT * FROM opportunities WHERE uuid_to_bin('94578249-65ec-4205-90f2-7d1a7d5ab64a') = uuid;\nSELECT * FROM users WHERE uuid_to_bin('26dbadeb-926f-4150-b11b-771b9d4c2f9a') = uuid;\n\nSELECT * FROM opportunities WHERE id = 4732493;\nselect * from activities where opportunity_id = 4732493;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 443; # 358, 14315, andrea.romano@correrenaturale.com\nSELECT * FROM opportunities WHERE team_id = 443;\n\nSELECT a.id, a.type, a.user_id, a.status, a.deleted_at, u.name, u.email, u.team_id as activity_team_id, u.status, u.deleted_at, t.name, t.status, s.team_id as stage_team_id\nFROM activities AS a\nJOIN stages AS s ON a.stage_id = s.id\nJOIN users AS u ON u.id = a.user_id\nJOIN teams AS t ON t.id = s.team_id\nWHERE u.team_id <> s.team_id and t.id > 135;\n\n\nSELECT\n crm_configuration_id,\n crm_provider_id,\n COUNT(*) as duplicate_count,\n GROUP_CONCAT(id) as stage_ids,\n GROUP_CONCAT(name) as stage_names\nFROM stages\nGROUP BY crm_configuration_id, crm_provider_id\nHAVING COUNT(*) > 1\nORDER BY duplicate_count DESC;\n\nselect * from stages where id IN (14898,14907);\n\nselect * from business_processes;\n\nSELECT *\nFROM crm_configurations\nWHERE team_id IN (\n SELECT team_id\n FROM crm_configurations\n GROUP BY team_id\n HAVING COUNT(*) > 1\n)\nORDER BY team_id;\n\nSELECT *\nFROM teams\nWHERE crm_id IN (\n SELECT crm_id\n FROM teams\n GROUP BY crm_id\n HAVING COUNT(*) > 1\n)\nORDER BY crm_id;\n\n# ***************************************************************************\nselect * from crm_configurations where provider = 'integration-app';\nSELECT * FROM teams WHERE id = 443; # Correre Naturale 358 14315 andrea.romano@correrenaturale.com\nselect * from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect id, uuid, actual_end_time, crm_provider_id, is_internal, playbook_category_id, type, user_id, lead_id, contact_id, account_id, opportunity_id, status, title from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect * from team_features where team_id = 358;\nselect * from activity_summary_logs;\n\nselect * from teams where id = 406;\n\n# ************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sportfive%'; # 267, 202, 14637, srv.salesforce@sportfive.com\nselect * from activities where crm_configuration_id = 202 order by actual_end_time desc;\n\nSELECT * FROM users where id = 14637;\nSELECT * FROM teams where id = 267;\nSELECT * FROM groups where id = 1118;\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 202\n AND status IN ('completed', 'failed')\n AND recording_state != 'stopped'\n AND type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n AND (is_private = 0 OR user_id = 14637)\n AND (\n (\n actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n ) OR (\n actual_start_time IS NULL\n AND type IN ('sms-outbound', 'sms-inbound')\n AND created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND NOT EXISTS (\n SELECT 1\n FROM tracks\n WHERE\n tracks.activity_id = activities.id\n AND tracks.type IN ('audio', 'video')\n )\nORDER BY actual_end_time DESC;\n\nSELECT DISTINCT\n a.*\nFROM activities a\nINNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nWHERE\n a.crm_configuration_id = 202\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 14637\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND a.user_id = 14637\n )\n )\n\nORDER BY a.actual_end_time DESC\n;\n\nSELECT DISTINCT a.*\nFROM activities a\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams t ON u.team_id = t.id\n# INNER JOIN tracks tr ON a.id = tr.activity_id\n# INNER JOIN groups g ON u.group_id = g.id\nWHERE 1=1\n AND t.id = 267\n# AND t.uuid = uuid_to_bin('aed4927b-f1ea-499e-94c3-83762fd233e8')\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND tr.type NOT IN ('audio', 'video')\n AND (\n a.is_private = 0\n OR a.user_id = 14637\n )\n AND (\n (a.actual_start_time BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59')\n OR (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59'\n )\n )\n# and NOT EXISTS (\n# SELECT 1\n# FROM tracks t\n# WHERE t.activity_id = a.id\n# AND t.type IN ('audio', 'video')\n# )\n\nORDER BY a.actual_end_time DESC;\n\nSELECT * FROM tracks WHERE activity_id = 26485995;\n\nselect a.is_private, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 202\n# and a.is_internal = 0\nand (a.actual_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type IN (\"softphone\",\"softphone-inbound\",\"conference\",\"sms-inbound\")\nand a.status IN ('completed', 'failed')\n# and a.external_id is not null\norder by a.actual_end_time desc;\n\nselect * from activities a where a.crm_configuration_id = 202\nand a.actual_start_time between '2025-03-20 00:00:00' and '2025-03-21 00:00:00'\n# AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM teams WHERE name LIKE '%Tourlane%';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_field_data WHERE crm_field_id = 98809;\n\nselect * from users where status = 1 AND timezone = 'MDT';\n\nselect * from opportunities where id = 3769814;\nselect * from deal_risks where opportunity_id = 3769814;\n\nselect cp.* from crm_profiles cp\njoin users u on cp.user_id = u.id\njoin crm_configurations crm on cp.crm_configuration_id = crm.id\nwhere crm.provider = 'hubspot' AND u.status = 1 AND log_notes != 'none';\n\nselect * from crm_fields where id = 154575;\n\nselect * from team_features where feature = 'SUPPORTS_SYNC_MISSING_CALL_DISPOSITIONS';\nSELECT * FROM teams WHERE id = 176; # crm 148\nselect * from activities where crm_configuration_id = 148 and provider = 'hubspot' order by id desc;\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nselect * from crm_fields cf\njoin crm_configurations crm on crm.id = cf.crm_configuration_id\nwhere crm.provider = 'hubspot' and cf.object_type IN ('account', 'contact');\n\n# *********************************************************************************************\nSELECT * FROM users WHERE id IN (15415, 15418);\nSELECT * FROM groups WHERE id IN (1805,1806);\nSELECT * FROM playbooks WHERE id = 1860;\nSELECT * FROM playbook_categories WHERE id = 38634;\nSELECT * FROM crm_fields WHERE id = 189962;\n\nSELECT * FROM teams WHERE name = 'Pulsar Group'; # 472, 380, 15138 raza.gilani@vuelio.com\n\nSELECT * FROM crm_profiles WHERE user_id = 15415;\nSELECT * FROM social_accounts WHERE sociable_id = 15415 and provider = 'salesforce';\n\nselect * from sidekick_settings where team_id = 472;\n\nSELECT * FROM activities WHERE uuid_to_bin('452c58c7-b87c-4fdd-953e-d7af185e9588') = uuid; # 28617536, user: 15418\nSELECT * FROM activities WHERE uuid_to_bin('399114ee-d3a8-458c-bff5-5f654658db0a') = uuid; # 28344407, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('f0aa567f-0ab1-4bbb-96aa-37dcf184676b') = uuid; # 28580288, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('50c086b1-2770-4bca-b5ae-6bac22ec426b') = uuid; # 28566069, user: 15415\n\n# *********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%TeamTailor%'; # 109, 218, 13969, salesforce-integrations@teamtailor.com\nselect * from crm_configurations where id = 218;\nSELECT * FROM activities WHERE uuid_to_bin('e39b5857-7fdb-4f5a-951a-8d3ca69bb1b0') = uuid; # 28338765\nSELECT * FROM users WHERE id IN (13232, 13230);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n0057R00000EPL5HQAX Inez Ekblad\n\n1091cb81-5ea1-4951-a0ed-f00b568f0140 Triman Kaur\n\nSELECT * FROM crm_profiles WHERE user_id IN (13232, 13230);\n\n############################################################################################\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939 00UVg00000FLvnSMAT\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id IN (94491,94493,94498);\nSELECT * FROM users WHERE id = 13658;\nSELECT * FROM teams WHERE id = 109;\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Strengthscope%'; # 481, 390, 15420, katy.holden@strengthscope.comk\nSELECT * FROM stages WHERE crm_configuration_id = 390;\nselect * from business_processes where team_id = 481 and crm_configuration_id = 390;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 481\nand sa.provider = 'salesforce';\n\n\nSELECT * FROM users WHERE id = 15780; # team 462\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 462\nand sa.provider = 'hubspot';\n\n\nselect * from teams where id = 495;\nSELECT * FROM users WHERE id = 15794;\nselect * from social_accounts where sociable_id = 15794;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Flight%'; # 427, 333, 13752\nSELECT * FROM accounts WHERE team_id = 427 and crm_provider_id = '668731000183444517';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Group GTI%'; # 495, 407, 15794\nSELECT * FROM activities WHERE crm_configuration_id = 407\nand status = 'completed' and type = 'conference'\norder by id desc;\n\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from permission_role;\n\nselect * from activities where crm_configuration_id = 407 and status = 'completed' order by id desc;\nSELECT * FROM activities WHERE id = 29512773;\nSELECT * FROM activities WHERE id IN (29042721,28991325,29002874);\n\nSELECT al.* from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 407\n# and a.id IN (29042721,28991325,29002874);\n\nSELECT * FROM users WHERE id = 15794;\nSELECT * FROM users WHERE team_id = 495;\nSELECT * FROM social_accounts WHERE sociable_id = 15794;\nSELECT * FROM opportunities WHERE team_id = 495 and name like '%OC:%';\nSELECT * FROM contacts WHERE team_id = 495;\nSELECT * FROM leads WHERE team_id = 495;\nSELECT * FROM accounts WHERE team_id = 495;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 407;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 407;\nSELECT * FROM crm_configurations WHERE id = 407;\nSELECT * FROM opportunities WHERE team_id = 495 and close_date BETWEEN '2025-06-01' AND '2025-07-01'\nand user_id IS NOT NULL and is_closed = 1 and is_won = 1;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hamilton Court FX LLP%'; # 249, 187, 10103\nSELECT * FROM activities WHERE uuid_to_bin('4659c2bb-9a49-484e-9327-a3d66f1e028c') = uuid; # 28951064\nSELECT * FROM crm_fields WHERE crm_configuration_id = 187 and object_type IN ('tasks', 'event');\n\n# *********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Checkstep%'; # 325, 256, 11753\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 325\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid; # 28611085\nSELECT * FROM activities WHERE uuid_to_bin('980f0336-840b-4185-a5a9-30cf8b0749a8') = uuid; # 28719733\nSELECT * FROM activity_summary_logs where activity_id = 28719733;\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 356, 9444\nSELECT * FROM activity_summary_logs where sent_at BETWEEN '2025-06-09 11:38:00' AND '2025-06-09 11:40:00';\nSELECT * FROM leads WHERE crm_configuration_id = 356 and crm_provider_id = '230045001502770504'; # 823630\nselect * from activities where crm_configuration_id = 356 and lead_id = 841732;\n\nSELECT * from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 356;\n\nselect * from activities where crm_configuration_id = 356\nand actual_end_time between '2025-06-09 11:00:00' and '2025-06-09 12:00:00'\norder by id desc;\n\nselect * from accounts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from leads where crm_configuration_id = 356 and crm_provider_id = '230045001514275654' order by id desc;\nselect * from contacts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from opportunities where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\n\nselect * from team_features where team_id = 260;\nselect * from features where id IN (1,2,4,6,18,19,20,9,10,3,23,24,25,26,27);\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid;\n\nselect * from crm_fields;\nselect * from crm_layout_entities;\n\nSELECT * FROM teams WHERE name LIKE '%Optable%';\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Teamtailor%'; # 109, 218, 13969\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id in (94491,94493,94498);\n\nselect * from teams where crm_id IS NULL;\n\nSELECT * FROM activities WHERE uuid_to_bin('71aa8a0c-9652-4ff6-bee7-d98ae60abef6') = uuid;\n\n# *************************************************************************************************\nselect * from team_domains where team_id = 399;\nSELECT * FROM teams WHERE name LIKE '%Rydoo%'; # 399, 318, 13207\n\nselect * from calendar_events where id = 5163781;\nSELECT * FROM activities WHERE uuid_to_bin('be2cbc52-7fda-46a0-9ae0-25d9553eafc0') = uuid; # 29443896\nSELECT * FROM participants WHERE activity_id = 29443896;\nselect * from contacts where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\nselect * from leads where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\n\nselect * from activities where user_id = 14937 order by created_at ;\n\nselect * from users where id = 14937;\n\nselect * from contacts where crm_configuration_id = 318 and email LIKE '%@strawberry.se';\nselect * from opportunities where crm_configuration_id = 318 and crm_provider_id = '006Sf00000D1WOAIA3';\n\nselect * from activities a join participants p on a.id = p.activity_id\nwhere crm_configuration_id = 318 and a.updated_at > '2025-06-23T08:18:43Z';\n\n# *************************************************************************************************\nSELECT * FROM opportunities WHERE team_id = 379 and crm_provider_id = '39334518886';\nSELECT * FROM opportunities WHERE team_id = 379 order by id desc;\nSELECT * FROM teams WHERE id = 379;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379 and sociable_id = 13852\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations WHERE id = 307;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 307;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1027;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307\n and id IN (144750,144855,145158,155227);\n\nSELECT * FROM activities;\n\n\nselect * from activities\nwhere created_at > '2025-07-01 00:00:00'\n# and created_at < '2025-08-01 00:00:00'\nand type not in ('email-outbound', 'email-inbound')\nand account_id is null\nand contact_id is null\nand lead_id is null\nand opportunity_id is not null\n;\nSELECT * FROM activities WHERE id IN (25344155, 25344296, 25501909, 28692187);\nSELECT * FROM crm_configurations WHERE id in (335,301,200);\n\nselect * from crm_fields where crm_configuration_id = 230 and crm_provider_id = 'Age2__c';\n\nSELECT * FROM teams WHERE name LIKE '%Resights%';\nselect * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nselect * from teams where id IN (442);\n\nselect * from activities\nwhere crm_configuration_id = 177\nand provider = 'amazon-connect'\n order by id desc;\n# and source <> 'gong';\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nSELECT * FROM activities WHERE uuid_to_bin('cec1993b-a7e5-4164-b74d-d680ea51d2f2') = uuid;\n\n\nselect * from crm_configurations where store_transcript = 1;\nSELECT * FROM teams WHERE id IN (80);\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sedna%'; # 277, 213, 12594\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 277\nand sa.provider = 'salesforce';\n\nselect * from activities where crm_configuration_id = 213 and account_id = 2511502;\n\nselect * from crm_configurations where id = 213;\n\nSELECT * FROM activities WHERE uuid_to_bin('35aa790a-8569-4544-8268-66f9a4a26804') = uuid; # 33981604\nSELECT * FROM participants WHERE activity_id = 33981604;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 337 and object_type = 'task';\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 431\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b5476c7d-19a8-491b-869d-676ea1e857b6') = uuid; # 33997223\nselect * from activity_summary_logs where activity_id = 33997223;\nselect * from activity_notes where activity_id = 33997223;\n\n# ***********************************\nSELECT * FROM teams WHERE name LIKE '%Abode%';\n\n\nselect * from features;\nselect * from teams t\nwhere t.status = 'active'\nand id NOT IN (select team_id from team_features where feature_id = 9)\n;\n\n\nselect * from playbook_layouts where playbook_id = 1725;\nSELECT * FROM activities WHERE uuid_to_bin('65cc283c-4849-49e6-927f-4c281c8fea19') = uuid; # 34297473\nselect * from teams where id = 318;\nselect * from crm_configurations where team_id = 318;\nselect * from playbooks where team_id = 318;\nSELECT * FROM crm_layouts where crm_configuration_id = 381;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1259;\nSELECT * FROM crm_fields WHERE id IN (192938,192936,192939);\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1266;\nSELECT * FROM crm_fields WHERE id IN (192980,192991,192997,192998,193064,193067);\n\nSELECT * FROM activities WHERE uuid_to_bin('a902289b-285c-48eb-9cc2-6ad6c5d938f5') = uuid; # 34297533\n\n\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nSELECT * FROM crm_fields WHERE id IN (131668,131669,131670,131671,131676,131797);\n\nSELECT * FROM teams WHERE name LIKE '%Peripass%'; # 351, 281, 12124\nselect * from crm_layouts where crm_configuration_id = 281;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nselect * from crm_fields where crm_configuration_id = 281 and id in (131668,131669,131670,131671,131676,131797);\nselect * from opportunities where crm_configuration_id = 281;\n\nSELECT * FROM activities WHERE id IN (34211315, 34130075);\nSELECT * FROM crm_field_data WHERE object_id IN (34211315, 34130075);\n\nselect cf.crm_configuration_id, cle.crm_layout_id, cle.id, cf.id from crm_field_data cfd\njoin crm_layout_entities cle on cle.id = cfd.crm_layout_entity_id\njoin crm_fields cf on cle.crm_field_id = cf.id\nwhere cf.deleted_at IS NOT NULL\nGROUP BY cle.id, cf.id;\n\nselect * from crm_layouts where id IN (355);\nselect u.email, t.crm_id, t.* from teams t\njoin users u on u.id = t.owner_id\nwhere crm_id IN (97);\n\nSELECT * FROM crm_fields WHERE id = 96492;\n\nselect * from permissions;\nselect * from permission_role where permission_id = 247;\nselect * from roles;\n\nselect * from migrations;\n# *****************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('291e3c21-11cc-4728-aee7-6e4bedf86d72') = uuid; # 34262174\nSELECT * FROM crm_configurations WHERE id = 301;\nSELECT * FROM teams WHERE id = 343;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from participants where activity_id = 34262174;\n\nselect * from contacts where crm_configuration_id = 301 and id = 6976326;\nselect * from accounts where crm_configuration_id = 301 and id IN (4647626, 4815829); # 30761335403\n\nselect * from activity_summary_logs where activity_id = 34262174;\n\nselect * from users where status = 1 AND timezone = 'EST';\n\n# ****************************************************************************\nSELECT * FROM users WHERE id = 13869;\nSELECT * FROM crm_configurations WHERE id = 320;\nSELECT * FROM teams WHERE id = 401;\n\nSELECT * FROM activities WHERE uuid_to_bin('2228c16f-10be-48d5-90d4-67385219dc01') = uuid; # 29670601\n\nSELECT * FROM accounts WHERE id = 7761483;\nSELECT * FROM opportunities WHERE id = 6051814;\n\nSELECT * FROM teams WHERE name LIKE '%Seedlegals%';\n\n;select * from opportunities where updated_at > '2025-10-11' AND crm_provider_id = '34713761166';\n\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 177;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 577;\nSELECT * FROM crm_fields WHERE id IN (68458,68459,68480,68497,68524,68530,68554,68618,68662,68781,68810,68898,68981,69049,97467);\n\nSELECT t.id, crm.id, t.name, crm.sync_objects, crm.provider, crm.last_synced_at FROM crm_configurations crm join teams t on t.crm_id = crm.id\nwhere t.status = 'active' AND crm.provider = 'hubspot' AND crm.last_synced_at < '2025-10-22 00:00:00';\n\nSELECT * FROM activities WHERE uuid_to_bin('fa09449f-cba9-496a-b8f3-865cd3c72351') = uuid;\nSELECT * FROM crm_configurations where id = 184;\nSELECT * FROM teams WHERE id = 246;\nSELECT * FROM social_accounts WHERE sociable_id = 9259 and provider = 'hubspot';\n\nSELECT * FROM users WHERE email LIKE '%rhian.old@bud.co.uk%'; # 17700\nSELECT * FROM teams WHERE id = 551;\n\nSELECT * FROM crm_configurations WHERE id = 471;\nSELECT * FROM activities WHERE crm_configuration_id = 471 and crm_provider_id IS NOT NULL;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 471;\nSELECT * FROM crm_fields WHERE id = 307260;\nSELECT * FROM crm_field_values WHERE crm_field_id = 307260;\n\nselect * from crm_layouts where crm_configuration_id = 471;\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1547;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1548;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 551 and sa.provider = 'hubspot';\n\nSELECT * FROM teams WHERE name LIKE '%$PCS%';\n\n# ********************************************************************************************************\nselect * from crm_configurations crm\njoin teams t on t.crm_id = crm.id\nwhere t.status = 'active'\nand crm.provider = 'hubspot';\n\n# $slug = 'HUBSPOT_WEBHOOK_SYNC';\n# $team = Jiminny\\Models\\Team::find(2);\n# $feature = Feature::query()->where('slug', $slug)->first();\n# TeamFeature::query()->create(['feature_id' => $feature->getId(),'team_id' => $team->getId()]);\n\n# hubspot_webhook_metrics\n\nselect * from crm_configurations where id = 331; # 416\nSELECT * FROM teams WHERE id = 416;\nSELECT * FROM opportunities WHERE team_id = 190;\n\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%';\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 190 and sa.provider = 'hubspot';\n\n\n\nSELECT * FROM teams WHERE name LIKE '%Rapaport%'; # 431, 337\nSELECT * FROM teams where id = 431;\nSELECT * FROM crm_configurations where team_id = 431;\nSELECT * FROM activity_providers where team_id = 431;\nSELECT * FROM activities where crm_configuration_id = 337 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 431 and sa.provider = 'salesforce';\n\nSELECT * FROM teams WHERE name LIKE '%BiP%'; # 401, 320\nSELECT * FROM teams where id = 401;\nSELECT * FROM crm_configurations where team_id = 401;\nSELECT * FROM activity_providers where team_id = 401;\nSELECT * FROM activities where crm_configuration_id = 320 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 401 and sa.provider = 'salesforce';\n\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 307; # 379 - Story Terrace Inc , portalId: 3921157\nSELECT * FROM contacts WHERE team_id = 379 and updated_at > '2026-01-31 11:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-01 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 379 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 485; # 563 - LATUS Group (ad94d501-5d09-44fd-878f-ca3a9f8865c3) , portalId: 3904501\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 338; # 432 - Formalize , portalId: 9214205\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 432 and sa.provider = 'hubspot';\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 436; # 519 - Moxso , portalId: 25531989\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 96; # 119 - Nourish Care , portalId: 26617984\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 331; # 416 - The National College , portalId: 7213852\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 308; # 380 - Foodles , portalId: 7723616\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 379; # 471 - imat-uve , portalId: 9177354\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 465; # 545 - Spotler , portalId: 144759271\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 455; # 537 - indevis , portalId: 25666868\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 200; # 265 - Jobadder , portalId: 6426676\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 335; # 429 - Eletive , portalId: 6110563\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 363; # 456 - Global Group , portalId: 8901981\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 297; # 369 - Unbiased , portalId: 9229005\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 353; # 449 - Fuuse , portalId: 25781745\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 487; # 566 - Nimbus , portalId: 39982590\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 487;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1630;\nselect * from crm_fields where crm_configuration_id = 487 and\n(uuid_to_bin('4c6b2971-64d4-45b8-b377-427be758b5a5') = uuid or uuid_to_bin('59e368d8-65a0-4b77-b611-db37c99fbe68') = uuid);\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 420; # 506 - voiio , portalId: 145629154\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 479; # 558 - Momice , portalId: 535962\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 59; # 80 - Storyclash GmbH , portalId: 4268479\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 175; # 203 - Team iAM , portalId: 5534732\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 368; # 460 - OneTouch Health , portalId: 5534732183355\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\n\n\nselect * from users where id = 29643;\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM teams WHERE name LIKE '%Buynomics%'; # 462, 482, 14910\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\n# and description like '%The call focused on understanding Welch%'\norder by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 462 and sa.provider = 'salesforce';\n\nselect * from contacts where crm_configuration_id = 482 and name = 'Cyndall Hill'; # 15504749\nselect * from contacts where id = 10891096; # 482\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\nand contact_id = 15504749\norder by id desc;\n\nselect * from activities where id = 36793003; # 96cc7bc1-8622-4d27-92f4-baf664fc1a56, 00UOf00000PDdOXMA1\nselect * from transcription where id = 7646782;\nselect * from ai_prompts where transcription_id = 7646782;\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7a8471a3-847e-4822-802b-ddf426bbc252') = uuid; # 37370018\nSELECT * FROM activity_summary_logs WHERE activity_id = 37370018;\nSELECT * FROM teams WHERE id = 555;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 555 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7c17b8aa-09df-4f85-a0f7-51f47afd712d') = uuid; # 37395250\nSELECT * FROM activities WHERE uuid_to_bin('14d60388-260d-494b-aa0d-63fdb1c78026') = uuid; # 37395250\n\nSELECT a.* FROM activities a JOIN crm_configurations c on c.id = a.crm_configuration_id\nwhere a.type IN ('softphone', 'softphone-outbound') and c.provider = 'hubspot'\nand a.provider NOT IN ('hubspot')\n# and a.provider IN ('salesloft')\n# and c.id NOT IN (70)\n# and a.duration > 30\n# and actual_start_time > '2026-02-05 00:00:00'\norder by a.id desc;\n\nSELECT * FROM activities WHERE id = 37549787;\nSELECT * FROM crm_profiles WHERE user_id = 17613;\n\nSELECT * FROM crm_configurations WHERE id = 70;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 93 and sa.provider = 'hubspot';\n\nSELECT asf.activity_search_id, asf.id, asf.value\nFROM activity_search_filters asf\nWHERE asf.filter = 'group_id'\nAND asf.value IN (\n SELECT CONCAT(\n HEX(SUBSTR(uuid, 5, 4)), '-',\n HEX(SUBSTR(uuid, 3, 2)), '-',\n HEX(SUBSTR(uuid, 1, 2)), '-',\n HEX(SUBSTR(uuid, 9, 2)), '-',\n HEX(SUBSTR(uuid, 11))\n )\n FROM groups\n WHERE deleted_at IS NOT NULL\n);\n\nSELECT * FROM crm_configurations WHERE id = 373; # KPSBremen.de 465 # - no social account\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 465 and sa.provider = 'hubspot';\n\nselect * from crm_configurations where id = 494;\n\nSELECT * FROM teams WHERE name LIKE '%splose%'; # 572, 495, 18708\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 572 and sa.provider = 'pipedrive';\n\nselect * from opportunities where team_id = 572\n# and name like '%Onebright%'\n# and is_closed = 1 and is_won = 0\n order by id desc;\n\n\nselect * from users where deleted_at is null and status = 2;\n\nselect * from contacts where id = 17900517;\nselect * from accounts where id = 10109838;\nselect * from opportunities where id = 6955880;\n\nselect * from opportunity_contacts where opportunity_id = 6955880;\nselect * from opportunity_contacts where contact_id = 17900517;\n\nselect * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id\nwhere crm.provider != 'salesforce';\n\nSELECT * FROM activities WHERE uuid_to_bin('adcb8331-5988-4353-834e-383a355abba2') = uuid; # 38056424, crm 104659682404\nselect * from teams where id = 456;\nSELECT * FROM crm_configurations WHERE id = 363;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 456 and sa.provider = 'hubspot';\n\nselect * from crm_layouts where crm_configuration_id = 363;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id IN (1203, 1204, 1635);\nSELECT * FROM crm_fields WHERE id IN (181536, 181538, 213455);\n\nSELECT * FROM teams WHERE name LIKE '%Electric%'; # 342, 272, 12767\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and name like 'NORTHUMBRIA POL%'; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 order by remotely_created_at asc; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and updated_at > '2026-01-01 00:00:00';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 272 and object_type = 'opportunity';\nSELECT * FROM crm_field_values WHERE crm_field_id = 127164;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\n\nSELECT * FROM teams WHERE id = 472;\nSELECT * FROM crm_configurations WHERE id = 380;\nselect * from activities where id = 38285673; # 38285673\nSELECT * FROM users WHERE id = 16942;\nSELECT * FROM groups WHERE id = 1964;\nSELECT * FROM playbooks WHERE id = 2033;\n\nselect * from teams where created_at > '2026-03-09';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 499; # 1065\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1678;\n\nSELECT * FROM teams WHERE id = 575;\nselect * from opportunities where team_id = 575;\n\nSELECT * FROM activities WHERE uuid_to_bin('96b1261f-2357-49f9-ab38-23ce12008ea0') = uuid;\n\nselect * from contacts c\nwhere c.crm_configuration_id = 370 order by c.updated_at desc;\n\nSELECT * FROM participants where activity_id = 38833541;\nSELECT * FROM participants where activity_id = 39216301;\nSELECT * FROM activity_summary_logs where activity_id = 39216301;\nSELECT * FROM activities WHERE uuid_to_bin('c7d99fbe-1fb1-41f2-8f4d-52e2bf70e1e9') = uuid; # 38833541, crm 478116564181\nSELECT * FROM activities WHERE uuid_to_bin('2e6ff4d3-9faa-447a-a8c1-9acde4d885ae') = uuid; # 39216301, crm 480171536586\nselect * from crm_profiles where crm_configuration_id = 319 and crm_provider_id = 525785080;\nselect * from opportunities where crm_configuration_id = 319 and crm_provider_id = 410150124747;\nselect * from accounts where crm_configuration_id = 319 and crm_provider_id = 47150650569;\nselect * from contacts where crm_configuration_id = 319 and crm_provider_id IN ('665587441856', '742723347700');\n# owner 13236 525785080\n# contact 1 16779180 665587441856 - activity - Alex Howes alex@supportroom.com created 2026-01-26\n# contact 2 19247563 742723347700 - ash@supportroom.com 2026-03-24\n# company 4176133 47150650569\n# deal 7100953 410150124747\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 400 and sa.provider = 'hubspot';\n\nselect * from features;\nselect * from team_features where feature_id = 40;\n\nselect * from teams where id = 556; # owner: 18101, crm: 477\nselect * from crm_configurations where id = 477;\nSELECT * FROM users WHERE id = 18101;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 556 and sa.provider = 'integration-app';\n\nselect * from opportunities where id = 7594349;\nselect * from opportunity_stages where opportunity_id = 7594349 order by created_at desc;\nselect * from business_processes where id = 6024;\nselect * from business_process_stages where stage_id = 16352;\nselect * from business_process_stages where business_process_id = 6024;\nselect * from stages where team_id = 459;\nselect * from teams where id = 459;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 459 and sa.provider = 'hubspot';\n\nSELECT os.stage_id, s.crm_provider_id, s.name, COUNT(*) as cnt\nFROM opportunity_stages os\nJOIN stages s ON s.id = os.stage_id\nWHERE os.opportunity_id = 7594349\nGROUP BY os.stage_id, s.crm_provider_id, s.name\nORDER BY cnt DESC;\n\nSELECT s.id, s.crm_provider_id, s.name, s.team_id, s.crm_configuration_id\nFROM stages s\nJOIN business_process_stages bps ON bps.stage_id = s.id\nWHERE bps.business_process_id = 6024\nAND s.crm_provider_id = 'contractsent';\n\nselect * from stages where id IN (16352,20612,18281,7344,16378,16309,5036,15223,14535,6293,12098,11607)\n\nSELECT * FROM teams WHERE name LIKE '%Pulsar Group%'; # 472, 380, 15138, raza.gilani@vuelio.com\nselect * from playbooks where team_id = 472; # event 226147\nSELECT * FROM playbook_categories WHERE playbook_id = 2288;\nSELECT * FROM crm_fields WHERE id = 226147;\nSELECT * FROM crm_field_values WHERE crm_field_id = 226147;\n\nSELECT * FROM crm_configurations WHERE id = 380;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 472 and sa.provider = 'salesforce';","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.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-3293064906782757730
|
-8385861013498915692
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
2
47
3
11
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\AjReportsRepository;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
private readonly AjReportsRepository $ajReportsRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
$ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());
if ($ajReportCount > 0) {
return $this->response->errorWrongArgs(
"This saved search is used by {$ajReportCount} active AJ report(s). "
. 'Please remove or update those reports before deleting this saved search.'
);
}
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$crmService = $this->providerRegistry->get($team->crm->provider);
if (! $user->isCrmRequired()) {
$crmService->setUser($team->getOwner());
} else {
$crmService->setUser($user);
}
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
}
/**
* Remove activity from this user's favorite...
|
NULL
|
|
60868
|
1312
|
9
|
2026-04-21T06:23:19.674908+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752599674_m1.jpg...
|
Firefox
|
[SRD-6787] Issue with reconnecting Zoho - Jira — W [SRD-6787] Issue with reconnecting Zoho - Jira — Work...
|
1
|
jiminny.atlassian.net/browse/SRD-6787
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Close tab
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
Queues
Queues
Create
Create
More for queues
More for queues
Service requests
Service requests
Create
Create
More for service requests
More for service requests
Incidents
Incidents
Create
Create
More for incidents
More for incidents
Reports
Reports
More actions for reports
More actions for reports
Operations
Operations
More actions for operations
More actions for operations
Knowledge Base
Knowledge Base
More actions for knowledge base
More actions for knowledge base
Customers
Customers
More actions for customers
More actions for customers
Channels
Channels
Email logs
Email logs
More actions for customer notification logs
More actions for customer notification logs
Developer escalations
Developer escalations
More actions for developer escalations
More actions for developer escalations
Slack integration
Slack integration
More actions for Slack integration
More actions for Slack integration
Reporting Center
Reporting Center
More actions for Reporting Center
More actions for Reporting Center
Add shortcut
Add shortcut
More actions for developer escalations
More actions for developer escalations
Archived work items
Archived work items
More actions for archived work items
More actions for archived work items
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Service-Desk Service-Desk
Service-Desk
/
Bug - Change work type
SRD-6787
SRD-6787
Copy link
Issue with reconnecting Zoho- edit summary, edit
Issue with reconnecting Zoho
Issue with reconnecting Zoho
Link work item...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Switch sites or apps","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Search, press enter to navigate to advanced search with your text query","depth":11,"help_text":"","placeholder":"Search","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":14,"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":"AXStaticText","text":"Notifications","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Starred","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","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":"More actions for Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","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":"More actions for spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Queues","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Queues","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":22,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for queues","depth":22,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for queues","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service requests","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service requests","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":22,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for service requests","depth":22,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for service requests","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Incidents","depth":22,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Incidents","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":23,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for incidents","depth":23,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for incidents","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reports","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reports","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for reports","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for reports","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Operations","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Operations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for operations","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for operations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Knowledge Base","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Knowledge Base","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for knowledge base","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for knowledge base","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Customers","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customers","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for customers","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for customers","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Channels","depth":19,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Channels","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Email logs","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Email logs","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for customer notification logs","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for customer notification logs","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Developer escalations","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Developer escalations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for developer escalations","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for developer escalations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Slack integration","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Slack integration","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Slack integration","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Slack integration","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reporting Center","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reporting Center","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Reporting Center","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Reporting Center","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add shortcut","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add shortcut","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for developer escalations","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for developer escalations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Archived work items","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Archived work items","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for archived work items","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for archived work items","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create board","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create board","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More spaces","depth":17,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","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":"More actions for Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","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":"More actions for Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","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":"More actions for Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence , (opens new window)","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Confluence","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","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":"open menu","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Spaces","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Spaces","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service-Desk Service-Desk","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service-Desk","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Bug - Change work type","depth":15,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"SRD-6787","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SRD-6787","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Issue with reconnecting Zoho- edit summary, edit","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Issue with reconnecting Zoho","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Issue with reconnecting Zoho","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Link work item","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-691800103816515972
|
275763742691448040
|
app_switch
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Close tab
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
Queues
Queues
Create
Create
More for queues
More for queues
Service requests
Service requests
Create
Create
More for service requests
More for service requests
Incidents
Incidents
Create
Create
More for incidents
More for incidents
Reports
Reports
More actions for reports
More actions for reports
Operations
Operations
More actions for operations
More actions for operations
Knowledge Base
Knowledge Base
More actions for knowledge base
More actions for knowledge base
Customers
Customers
More actions for customers
More actions for customers
Channels
Channels
Email logs
Email logs
More actions for customer notification logs
More actions for customer notification logs
Developer escalations
Developer escalations
More actions for developer escalations
More actions for developer escalations
Slack integration
Slack integration
More actions for Slack integration
More actions for Slack integration
Reporting Center
Reporting Center
More actions for Reporting Center
More actions for Reporting Center
Add shortcut
Add shortcut
More actions for developer escalations
More actions for developer escalations
Archived work items
Archived work items
More actions for archived work items
More actions for archived work items
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Service-Desk Service-Desk
Service-Desk
/
Bug - Change work type
SRD-6787
SRD-6787
Copy link
Issue with reconnecting Zoho- edit summary, edit
Issue with reconnecting Zoho
Issue with reconnecting Zoho
Link work item...
|
NULL
|
|
60869
|
1313
|
13
|
2026-04-21T06:23:19.664912+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752599664_m2.jpg...
|
Firefox
|
[SRD-6787] Issue with reconnecting Zoho - Jira — W [SRD-6787] Issue with reconnecting Zoho - Jira — Work...
|
1
|
jiminny.atlassian.net/browse/SRD-6787
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Close tab
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
Queues
Queues
Create
Create
More for queues
More for queues
Service requests
Service requests
Create
Create
More for service requests
More for service requests
Incidents
Incidents
Create
Create
More for incidents
More for incidents
Reports
Reports
More actions for reports
More actions for reports
Operations
Operations
More actions for operations
More actions for operations
Knowledge Base
Knowledge Base
More actions for knowledge base
More actions for knowledge base
Customers
Customers
More actions for customers
More actions for customers
Channels
Channels
Email logs
Email logs
More actions for customer notification logs
More actions for customer notification logs
Developer escalations
Developer escalations
More actions for developer escalations
More actions for developer escalations
Slack integration
Slack integration
More actions for Slack integration
More actions for Slack integration
Reporting Center
Reporting Center
More actions for Reporting Center
More actions for Reporting Center
Add shortcut
Add shortcut
More actions for developer escalations
More actions for developer escalations
Archived work items
Archived work items
More actions for archived work items
More actions for archived work items
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.08344415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.08344415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.1348763,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.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-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.19963431,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.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 MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.15791224,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.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 Mail","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.02144282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.39106146,"width":0.07413564,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":9,"bounds":{"left":0.090259306,"top":0.07861133,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":10,"bounds":{"left":0.090259306,"top":0.097765364,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":11,"bounds":{"left":0.090259306,"top":0.097765364,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":10,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":11,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":10,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":11,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":9,"bounds":{"left":0.08361037,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":11,"bounds":{"left":0.0887633,"top":0.06344773,"width":0.039727394,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":10,"bounds":{"left":0.095578454,"top":0.057861134,"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":"AXStaticText","text":"Switch sites or apps","depth":12,"bounds":{"left":0.10073138,"top":0.06344773,"width":0.044215426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":9,"bounds":{"left":0.10887633,"top":0.057861134,"width":0.029421542,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Search, press enter to navigate to advanced search with your text query","depth":11,"bounds":{"left":0.40475398,"top":0.06264964,"width":0.24268617,"height":0.015961692},"help_text":"","placeholder":"Search","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create","depth":10,"bounds":{"left":0.65575135,"top":0.057861134,"width":0.030086435,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":12,"bounds":{"left":0.66705453,"top":0.06384677,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":12,"bounds":{"left":0.91223407,"top":0.057861134,"width":0.035904255,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":14,"bounds":{"left":0.92353725,"top":0.06384677,"width":0.020611702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":12,"bounds":{"left":0.9494681,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":14,"bounds":{"left":0.954621,"top":0.06344773,"width":0.027759308,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":12,"bounds":{"left":0.96143615,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":14,"bounds":{"left":0.9665891,"top":0.06344773,"width":0.010139627,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":12,"bounds":{"left":0.9734042,"top":0.057861134,"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":"AXStaticText","text":"Settings","depth":14,"bounds":{"left":0.97855717,"top":0.06344773,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.98537236,"top":0.057861134,"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":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":14,"bounds":{"left":0.99052525,"top":0.06344773,"width":0.009474754,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":12,"bounds":{"left":0.08361037,"top":0.09976058,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":15,"bounds":{"left":0.09424867,"top":0.10574621,"width":0.01662234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent","depth":12,"bounds":{"left":0.08361037,"top":0.12529927,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":15,"bounds":{"left":0.09424867,"top":0.13128492,"width":0.015458777,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Starred","depth":12,"bounds":{"left":0.08361037,"top":0.15083799,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":15,"bounds":{"left":0.09424867,"top":0.15682362,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":12,"bounds":{"left":0.08361037,"top":0.1763767,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":15,"bounds":{"left":0.09424867,"top":0.18236233,"width":0.011635638,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":13,"bounds":{"left":0.15309176,"top":0.17956904,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":12,"bounds":{"left":0.08361037,"top":0.2019154,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":15,"bounds":{"left":0.09424867,"top":0.20790103,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":13,"bounds":{"left":0.13646941,"top":0.20510775,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":13,"bounds":{"left":0.14577793,"top":0.20510775,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":16,"bounds":{"left":0.08959442,"top":0.23423783,"width":0.013464096,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":17,"bounds":{"left":0.08759973,"top":0.2529928,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Service-Desk","depth":20,"bounds":{"left":0.09823803,"top":0.25897846,"width":0.03025266,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":18,"bounds":{"left":0.14577793,"top":0.25618514,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Queues","depth":21,"bounds":{"left":0.09158909,"top":0.27853152,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Queues","depth":24,"bounds":{"left":0.1022274,"top":0.28451717,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":22,"bounds":{"left":0.15309176,"top":0.28172386,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for queues","depth":22,"bounds":{"left":0.15442154,"top":0.28172386,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for queues","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service requests","depth":21,"bounds":{"left":0.09158909,"top":0.30407023,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service requests","depth":24,"bounds":{"left":0.1022274,"top":0.31005585,"width":0.03756649,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":22,"bounds":{"left":0.15309176,"top":0.30726257,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for service requests","depth":22,"bounds":{"left":0.15442154,"top":0.30726257,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for service requests","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Incidents","depth":22,"bounds":{"left":0.09158909,"top":0.32960895,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Incidents","depth":25,"bounds":{"left":0.1022274,"top":0.33559456,"width":0.021276595,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":23,"bounds":{"left":0.15309176,"top":0.33280128,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for incidents","depth":23,"bounds":{"left":0.15442154,"top":0.33280128,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for incidents","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reports","depth":19,"bounds":{"left":0.09158909,"top":0.35514766,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reports","depth":22,"bounds":{"left":0.1022274,"top":0.36113328,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for reports","depth":20,"bounds":{"left":0.15309176,"top":0.35834,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for reports","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Operations","depth":19,"bounds":{"left":0.09158909,"top":0.38068634,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Operations","depth":22,"bounds":{"left":0.1022274,"top":0.386672,"width":0.02443484,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for operations","depth":20,"bounds":{"left":0.15309176,"top":0.38387868,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for operations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Knowledge Base","depth":19,"bounds":{"left":0.09158909,"top":0.40622506,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Knowledge Base","depth":22,"bounds":{"left":0.1022274,"top":0.4122107,"width":0.03723404,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for knowledge base","depth":20,"bounds":{"left":0.15309176,"top":0.4094174,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for knowledge base","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Customers","depth":19,"bounds":{"left":0.09158909,"top":0.43176377,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customers","depth":22,"bounds":{"left":0.1022274,"top":0.43774942,"width":0.024268618,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for customers","depth":20,"bounds":{"left":0.15309176,"top":0.4349561,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for customers","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Channels","depth":19,"bounds":{"left":0.09158909,"top":0.45730248,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Channels","depth":22,"bounds":{"left":0.1022274,"top":0.4632881,"width":0.020944148,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Email logs","depth":19,"bounds":{"left":0.09158909,"top":0.4828412,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Email logs","depth":22,"bounds":{"left":0.1022274,"top":0.4888268,"width":0.022606382,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for customer notification logs","depth":20,"bounds":{"left":0.15309176,"top":0.48603353,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for customer notification logs","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Developer escalations","depth":19,"bounds":{"left":0.09158909,"top":0.5083799,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Developer escalations","depth":22,"bounds":{"left":0.1022274,"top":0.5143655,"width":0.04920213,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for developer escalations","depth":20,"bounds":{"left":0.15309176,"top":0.51157224,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for developer escalations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Slack integration","depth":19,"bounds":{"left":0.09158909,"top":0.5339186,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Slack integration","depth":22,"bounds":{"left":0.1022274,"top":0.53990424,"width":0.03723404,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Slack integration","depth":20,"bounds":{"left":0.15309176,"top":0.5371109,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Slack integration","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reporting Center","depth":19,"bounds":{"left":0.09158909,"top":0.5594573,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reporting Center","depth":22,"bounds":{"left":0.1022274,"top":0.5654429,"width":0.037898935,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Reporting Center","depth":20,"bounds":{"left":0.15309176,"top":0.56264967,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Reporting Center","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add shortcut","depth":19,"bounds":{"left":0.09158909,"top":0.584996,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add shortcut","depth":22,"bounds":{"left":0.1022274,"top":0.59098166,"width":0.028922873,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for developer escalations","depth":20,"bounds":{"left":0.15309176,"top":0.58818835,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for developer escalations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Archived work items","depth":19,"bounds":{"left":0.09158909,"top":0.6105347,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Archived work items","depth":22,"bounds":{"left":0.1022274,"top":0.61652035,"width":0.045545213,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for archived work items","depth":20,"bounds":{"left":0.15309176,"top":0.61372703,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for archived work items","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":17,"bounds":{"left":0.08759973,"top":0.6360734,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":20,"bounds":{"left":0.09823803,"top":0.6420591,"width":0.032081116,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":18,"bounds":{"left":0.08892952,"top":0.6392658,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create board","depth":18,"bounds":{"left":0.15508644,"top":0.6392658,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create board","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":18,"bounds":{"left":0.16240026,"top":0.6392658,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More spaces","depth":17,"bounds":{"left":0.08759973,"top":0.66161215,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":20,"bounds":{"left":0.09823803,"top":0.6675978,"width":0.028756648,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":12,"bounds":{"left":0.08361037,"top":0.68715084,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":15,"bounds":{"left":0.09424867,"top":0.69313645,"width":0.013796543,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","depth":13,"bounds":{"left":0.15309176,"top":0.6903432,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":12,"bounds":{"left":0.08361037,"top":0.7126895,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":15,"bounds":{"left":0.09424867,"top":0.7186752,"width":0.026761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":13,"bounds":{"left":0.15508644,"top":0.7158819,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","depth":13,"bounds":{"left":0.16240026,"top":0.7158819,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":12,"bounds":{"left":0.08361037,"top":0.73822826,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":15,"bounds":{"left":0.09424867,"top":0.7442139,"width":0.02443484,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","depth":13,"bounds":{"left":0.15309176,"top":0.74142057,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence , (opens new window)","depth":13,"bounds":{"left":0.08361037,"top":0.773344,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Confluence","depth":17,"bounds":{"left":0.09424867,"top":0.7793296,"width":0.025764627,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"bounds":{"left":0.08361037,"top":0.7869114,"width":0.04837101,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":13,"bounds":{"left":0.08361037,"top":0.79888266,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":17,"bounds":{"left":0.09424867,"top":0.80486834,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"bounds":{"left":0.08361037,"top":0.8124501,"width":0.04837101,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":14,"bounds":{"left":0.14378324,"top":0.802075,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"open menu","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":12,"bounds":{"left":0.08361037,"top":0.8339984,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":15,"bounds":{"left":0.09424867,"top":0.83998406,"width":0.04155585,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":13,"bounds":{"left":0.2109375,"top":0.0981644,"width":0.062333778,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6357793839862056681
|
257819730107061484
|
app_switch
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Close tab
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
Queues
Queues
Create
Create
More for queues
More for queues
Service requests
Service requests
Create
Create
More for service requests
More for service requests
Incidents
Incidents
Create
Create
More for incidents
More for incidents
Reports
Reports
More actions for reports
More actions for reports
Operations
Operations
More actions for operations
More actions for operations
Knowledge Base
Knowledge Base
More actions for knowledge base
More actions for knowledge base
Customers
Customers
More actions for customers
More actions for customers
Channels
Channels
Email logs
Email logs
More actions for customer notification logs
More actions for customer notification logs
Developer escalations
Developer escalations
More actions for developer escalations
More actions for developer escalations
Slack integration
Slack integration
More actions for Slack integration
More actions for Slack integration
Reporting Center
Reporting Center
More actions for Reporting Center
More actions for Reporting Center
Add shortcut
Add shortcut
More actions for developer escalations
More actions for developer escalations
Archived work items
Archived work items
More actions for archived work items
More actions for archived work items
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel...
|
NULL
|
|
60873
|
1313
|
16
|
2026-04-21T06:23:29.566604+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752609566_m2.jpg...
|
Firefox
|
[SRD-6787] Issue with reconnecting Zoho - Jira — W [SRD-6787] Issue with reconnecting Zoho - Jira — Work...
|
1
|
jiminny.atlassian.net/browse/SRD-6787
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Close tab
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
Queues
Queues
Create
Create
More for queues
More for queues
Service requests
Service requests
Create
Create
More for service requests
More for service requests
Incidents
Incidents
Create
Create
More for incidents
More for incidents
Reports
Reports
More actions for reports
More actions for reports
Operations
Operations
More actions for operations
More actions for operations
Knowledge Base
Knowledge Base
More actions for knowledge base
More actions for knowledge base
Customers
Customers
More actions for customers
More actions for customers
Channels
Channels
Email logs
Email logs
More actions for customer notification logs
More actions for customer notification logs
Developer escalations
Developer escalations
More actions for developer escalations
More actions for developer escalations
Slack integration
Slack integration
More actions for Slack integration
More actions for Slack integration
Reporting Center
Reporting Center
More actions for Reporting Center
More actions for Reporting Center
Add shortcut
Add shortcut
More actions for developer escalations
More actions for developer escalations
Archived work items
Archived work items
More actions for archived work items
More actions for archived work items
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Service-Desk Service-Desk
Service-Desk
/
Bug - Change work type...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.08344415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.08344415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.1348763,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.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-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.19963431,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.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 MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.15791224,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.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 Mail","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.02144282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.39106146,"width":0.07413564,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":9,"bounds":{"left":0.090259306,"top":0.07861133,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":10,"bounds":{"left":0.090259306,"top":0.097765364,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":11,"bounds":{"left":0.090259306,"top":0.097765364,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":10,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":11,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":10,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":11,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":9,"bounds":{"left":0.08361037,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":11,"bounds":{"left":0.0887633,"top":0.06344773,"width":0.039727394,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":10,"bounds":{"left":0.095578454,"top":0.057861134,"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":"AXStaticText","text":"Switch sites or apps","depth":12,"bounds":{"left":0.10073138,"top":0.06344773,"width":0.044215426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":9,"bounds":{"left":0.10887633,"top":0.057861134,"width":0.029421542,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Search, press enter to navigate to advanced search with your text query","depth":11,"bounds":{"left":0.40475398,"top":0.06264964,"width":0.24268617,"height":0.015961692},"help_text":"","placeholder":"Search","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create","depth":10,"bounds":{"left":0.65575135,"top":0.057861134,"width":0.030086435,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":12,"bounds":{"left":0.66705453,"top":0.06384677,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":12,"bounds":{"left":0.91223407,"top":0.057861134,"width":0.035904255,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":14,"bounds":{"left":0.92353725,"top":0.06384677,"width":0.020611702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":12,"bounds":{"left":0.9494681,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":14,"bounds":{"left":0.954621,"top":0.06344773,"width":0.027759308,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":12,"bounds":{"left":0.96143615,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":14,"bounds":{"left":0.9665891,"top":0.06344773,"width":0.010139627,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":12,"bounds":{"left":0.9734042,"top":0.057861134,"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":"AXStaticText","text":"Settings","depth":14,"bounds":{"left":0.97855717,"top":0.06344773,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.98537236,"top":0.057861134,"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":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":14,"bounds":{"left":0.99052525,"top":0.06344773,"width":0.009474754,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":12,"bounds":{"left":0.08361037,"top":0.09976058,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":15,"bounds":{"left":0.09424867,"top":0.10574621,"width":0.01662234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent","depth":12,"bounds":{"left":0.08361037,"top":0.12529927,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":15,"bounds":{"left":0.09424867,"top":0.13128492,"width":0.015458777,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Starred","depth":12,"bounds":{"left":0.08361037,"top":0.15083799,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":15,"bounds":{"left":0.09424867,"top":0.15682362,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":12,"bounds":{"left":0.08361037,"top":0.1763767,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":15,"bounds":{"left":0.09424867,"top":0.18236233,"width":0.011635638,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":13,"bounds":{"left":0.15309176,"top":0.17956904,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":12,"bounds":{"left":0.08361037,"top":0.2019154,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":15,"bounds":{"left":0.09424867,"top":0.20790103,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":13,"bounds":{"left":0.13646941,"top":0.20510775,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":13,"bounds":{"left":0.14577793,"top":0.20510775,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":16,"bounds":{"left":0.08959442,"top":0.23423783,"width":0.013464096,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":17,"bounds":{"left":0.08759973,"top":0.2529928,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Service-Desk","depth":20,"bounds":{"left":0.09823803,"top":0.25897846,"width":0.03025266,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":18,"bounds":{"left":0.14577793,"top":0.25618514,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Queues","depth":21,"bounds":{"left":0.09158909,"top":0.27853152,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Queues","depth":24,"bounds":{"left":0.1022274,"top":0.28451717,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":22,"bounds":{"left":0.15309176,"top":0.28172386,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for queues","depth":22,"bounds":{"left":0.15442154,"top":0.28172386,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for queues","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service requests","depth":21,"bounds":{"left":0.09158909,"top":0.30407023,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service requests","depth":24,"bounds":{"left":0.1022274,"top":0.31005585,"width":0.03756649,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":22,"bounds":{"left":0.15309176,"top":0.30726257,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for service requests","depth":22,"bounds":{"left":0.15442154,"top":0.30726257,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for service requests","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Incidents","depth":22,"bounds":{"left":0.09158909,"top":0.32960895,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Incidents","depth":25,"bounds":{"left":0.1022274,"top":0.33559456,"width":0.021276595,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":23,"bounds":{"left":0.15309176,"top":0.33280128,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for incidents","depth":23,"bounds":{"left":0.15442154,"top":0.33280128,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for incidents","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reports","depth":19,"bounds":{"left":0.09158909,"top":0.35514766,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reports","depth":22,"bounds":{"left":0.1022274,"top":0.36113328,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for reports","depth":20,"bounds":{"left":0.15309176,"top":0.35834,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for reports","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Operations","depth":19,"bounds":{"left":0.09158909,"top":0.38068634,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Operations","depth":22,"bounds":{"left":0.1022274,"top":0.386672,"width":0.02443484,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for operations","depth":20,"bounds":{"left":0.15309176,"top":0.38387868,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for operations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Knowledge Base","depth":19,"bounds":{"left":0.09158909,"top":0.40622506,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Knowledge Base","depth":22,"bounds":{"left":0.1022274,"top":0.4122107,"width":0.03723404,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for knowledge base","depth":20,"bounds":{"left":0.15309176,"top":0.4094174,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for knowledge base","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Customers","depth":19,"bounds":{"left":0.09158909,"top":0.43176377,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customers","depth":22,"bounds":{"left":0.1022274,"top":0.43774942,"width":0.024268618,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for customers","depth":20,"bounds":{"left":0.15309176,"top":0.4349561,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for customers","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Channels","depth":19,"bounds":{"left":0.09158909,"top":0.45730248,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Channels","depth":22,"bounds":{"left":0.1022274,"top":0.4632881,"width":0.020944148,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Email logs","depth":19,"bounds":{"left":0.09158909,"top":0.4828412,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Email logs","depth":22,"bounds":{"left":0.1022274,"top":0.4888268,"width":0.022606382,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for customer notification logs","depth":20,"bounds":{"left":0.15309176,"top":0.48603353,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for customer notification logs","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Developer escalations","depth":19,"bounds":{"left":0.09158909,"top":0.5083799,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Developer escalations","depth":22,"bounds":{"left":0.1022274,"top":0.5143655,"width":0.04920213,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for developer escalations","depth":20,"bounds":{"left":0.15309176,"top":0.51157224,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for developer escalations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Slack integration","depth":19,"bounds":{"left":0.09158909,"top":0.5339186,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Slack integration","depth":22,"bounds":{"left":0.1022274,"top":0.53990424,"width":0.03723404,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Slack integration","depth":20,"bounds":{"left":0.15309176,"top":0.5371109,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Slack integration","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reporting Center","depth":19,"bounds":{"left":0.09158909,"top":0.5594573,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reporting Center","depth":22,"bounds":{"left":0.1022274,"top":0.5654429,"width":0.037898935,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Reporting Center","depth":20,"bounds":{"left":0.15309176,"top":0.56264967,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Reporting Center","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add shortcut","depth":19,"bounds":{"left":0.09158909,"top":0.584996,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add shortcut","depth":22,"bounds":{"left":0.1022274,"top":0.59098166,"width":0.028922873,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for developer escalations","depth":20,"bounds":{"left":0.15309176,"top":0.58818835,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for developer escalations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Archived work items","depth":19,"bounds":{"left":0.09158909,"top":0.6105347,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Archived work items","depth":22,"bounds":{"left":0.1022274,"top":0.61652035,"width":0.045545213,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for archived work items","depth":20,"bounds":{"left":0.15309176,"top":0.61372703,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for archived work items","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":17,"bounds":{"left":0.08759973,"top":0.6360734,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":20,"bounds":{"left":0.09823803,"top":0.6420591,"width":0.032081116,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":18,"bounds":{"left":0.08892952,"top":0.6392658,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create board","depth":18,"bounds":{"left":0.15508644,"top":0.6392658,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create board","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":18,"bounds":{"left":0.16240026,"top":0.6392658,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More spaces","depth":17,"bounds":{"left":0.08759973,"top":0.66161215,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":20,"bounds":{"left":0.09823803,"top":0.6675978,"width":0.028756648,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":12,"bounds":{"left":0.08361037,"top":0.68715084,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":15,"bounds":{"left":0.09424867,"top":0.69313645,"width":0.013796543,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","depth":13,"bounds":{"left":0.15309176,"top":0.6903432,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":12,"bounds":{"left":0.08361037,"top":0.7126895,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":15,"bounds":{"left":0.09424867,"top":0.7186752,"width":0.026761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":13,"bounds":{"left":0.15508644,"top":0.7158819,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","depth":13,"bounds":{"left":0.16240026,"top":0.7158819,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":12,"bounds":{"left":0.08361037,"top":0.73822826,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":15,"bounds":{"left":0.09424867,"top":0.7442139,"width":0.02443484,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","depth":13,"bounds":{"left":0.15309176,"top":0.74142057,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence , (opens new window)","depth":13,"bounds":{"left":0.08361037,"top":0.773344,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Confluence","depth":17,"bounds":{"left":0.09424867,"top":0.7793296,"width":0.025764627,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"bounds":{"left":0.08361037,"top":0.7869114,"width":0.04837101,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":13,"bounds":{"left":0.08361037,"top":0.79888266,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":17,"bounds":{"left":0.09424867,"top":0.80486834,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"bounds":{"left":0.08361037,"top":0.8124501,"width":0.04837101,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":14,"bounds":{"left":0.14378324,"top":0.802075,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"open menu","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":12,"bounds":{"left":0.08361037,"top":0.8339984,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":15,"bounds":{"left":0.09424867,"top":0.83998406,"width":0.04155585,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":13,"bounds":{"left":0.2109375,"top":0.0981644,"width":0.062333778,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Spaces","depth":15,"bounds":{"left":0.26861703,"top":0.10933759,"width":0.013962766,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Spaces","depth":17,"bounds":{"left":0.26861703,"top":0.11292897,"width":0.013962766,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"bounds":{"left":0.28440824,"top":0.11173184,"width":0.0016622341,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service-Desk Service-Desk","depth":15,"bounds":{"left":0.28989363,"top":0.10933759,"width":0.032912236,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service-Desk","depth":17,"bounds":{"left":0.29720744,"top":0.11292897,"width":0.025598405,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"bounds":{"left":0.3246343,"top":0.11173184,"width":0.0016622341,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Bug - Change work type","depth":15,"bounds":{"left":0.328125,"top":0.10933759,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
1527348005255121862
|
275834128616543468
|
app_switch
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Close tab
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
Queues
Queues
Create
Create
More for queues
More for queues
Service requests
Service requests
Create
Create
More for service requests
More for service requests
Incidents
Incidents
Create
Create
More for incidents
More for incidents
Reports
Reports
More actions for reports
More actions for reports
Operations
Operations
More actions for operations
More actions for operations
Knowledge Base
Knowledge Base
More actions for knowledge base
More actions for knowledge base
Customers
Customers
More actions for customers
More actions for customers
Channels
Channels
Email logs
Email logs
More actions for customer notification logs
More actions for customer notification logs
Developer escalations
Developer escalations
More actions for developer escalations
More actions for developer escalations
Slack integration
Slack integration
More actions for Slack integration
More actions for Slack integration
Reporting Center
Reporting Center
More actions for Reporting Center
More actions for Reporting Center
Add shortcut
Add shortcut
More actions for developer escalations
More actions for developer escalations
Archived work items
Archived work items
More actions for archived work items
More actions for archived work items
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Service-Desk Service-Desk
Service-Desk
/
Bug - Change work type...
|
NULL
|
|
60877
|
1312
|
13
|
2026-04-21T06:23:34.967300+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752614967_m1.jpg...
|
iTerm2
|
✳ Build full day activity summary from Screenpipe
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
!=null){if(typeof K!=="object"&&ty !=null){if(typeof K!=="object"&&typeof K!=="function")throw TypeError('Object expected to be assigned to "using" declaration');var z;if(_)z=K[PA5];if(z===void 0)z=K[XA5];if(typeof z!=="function")throw TypeError("Object not disposable");q.push([_,z,K])}else if(_)q.push([_]);return K},nz=(q,K,_)=>{var z=typeof SuppressedError==="function"?SuppressedError:function(O,$,w,j){return j=Error(w),j.name="SuppressedError",j.error=O,j.suppressed=$,j},Y=(O)=>K=_?new z(O,K,"An error was suppressed during disposal"):(_=!0,O),A=(O)=>{while(O=q.pop())try{var $=O[1]&&O[1].call(O[2]);if(O[0])return Promise.resolve($).then(A,(w)=>(Y(w),A()))}catch(w){Y(w)}if(_)throw K};return A()};function DA5(){this.__data__=[],this.size=0}var PJ7;var DJ7=L(()=>{PJ7=DA5});function WA5(q,K){return q===K||q!==q&&K!==K}var Pg;var pP6=L(()=>{Pg=WA5});function fA5(q,K){var _=q.length;while(_--)if(Pg(q[_][0],K))return _;return-1}var de;var qu6=L(()=>{pP6();de=fA5});function vA5(q){var K=this.__data__,_=de(K,q);if(_<0)return!1;var z=K.length-1;if(_==z)K.pop();else GA5.call(K,_,1);return--this.size,!0}var ZA5,GA5,WJ7;var fJ7=L(()=>{qu6();ZA5=Array.prototype,GA5=ZA5.splice;WJ7=vA5});function TA5(q){var K=this.__data__,_=de(K,q);return _<0?void 0:K[_][1]}var ZJ7;var GJ7=L(()=>{qu6();ZJ7=TA5});function VA5(q){return de(this.__data__,q)>-1}var vJ7;var TJ7=L(()=>{qu6();vJ7=VA5});function kA5(q,K){var _=this.__data__,z=de(_,q);if(z<0)++this.size,_.push([q,K]);else _[z][1]=K;return this}var VJ7;var kJ7=L(()=>{qu6();VJ7=kA5});function gP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var ce;var Ku6=L(()=>{DJ7();fJ7();GJ7();TJ7();kJ7();gP6.prototype.clear=PJ7;gP6.prototype.delete=WJ7;gP6.prototype.get=ZJ7;gP6.prototype.has=vJ7;gP6.prototype.set=VJ7;ce=gP6});function NA5(){this.__data__=new ce,this.size=0}var NJ7;var yJ7=L(()=>{Ku6();NJ7=NA5});function yA5(q){var K=this.__data__,_=K.delete(q);return this.size=K.size,_}var EJ7;var LJ7=L(()=>{EJ7=yA5});function EA5(q){return this.__data__.get(q)}var hJ7;var RJ7=L(()=>{hJ7=EA5});function LA5(q){return this.__data__.has(q)}var SJ7;var CJ7=L(()=>{SJ7=LA5});var hA5,g_8;var Aa8=L(()=>{hA5=typeof global=="object"&&global&&global.Object===Object&&global,g_8=hA5});var RA5,SA5,vJ;var sR=L(()=>{Aa8();RA5=typeof self=="object"&&self&&self.Object===Object&&self,SA5=g_8||RA5||Function("return this")(),vJ=SA5});var CA5,YW;var J_6=L(()=>{sR();CA5=vJ.Symbol,YW=CA5});function IA5(q){var K=bA5.call(q,_u6),_=q[_u6];try{q[_u6]=void 0;var z=!0}catch(A){}var Y=xA5.call(q);if(z)if(K)q[_u6]=_;else delete q[_u6];return Y}var bJ7,bA5,xA5,_u6,xJ7;var IJ7=L(()=>{J_6();bJ7=Object.prototype,bA5=bJ7.hasOwnProperty,xA5=bJ7.toString,_u6=YW?YW.toStringTag:void 0;xJ7=IA5});function BA5(q){return mA5.call(q)}var uA5,mA5,uJ7;var mJ7=L(()=>{uA5=Object.prototype,mA5=uA5.toString;uJ7=BA5});function FA5(q){if(q==null)return q===void 0?gA5:pA5;return BJ7&&BJ7 in Object(q)?xJ7(q):uJ7(q)}var pA5="[object Null]",gA5="[object Undefined]",BJ7,YL;var M_6=L(()=>{J_6();IJ7();mJ7();BJ7=YW?YW.toStringTag:void 0;YL=FA5});function UA5(q){var K=typeof q;return q!=null&&(K=="object"||K=="function")}var PO;var hT=L(()=>{PO=UA5});function nA5(q){if(!PO(q))return!1;var K=YL(q);return K==dA5||K==cA5||K==QA5||K==lA5}var QA5="[object AsyncFunction]",dA5="[object Function]",cA5="[object GeneratorFunction]",lA5="[object Proxy]",FP6;var F_8=L(()=>{M_6();hT();FP6=nA5});var iA5,U_8;var pJ7=L(()=>{sR();iA5=vJ["__core-js_shared__"],U_8=iA5});function rA5(q){return!!gJ7&&gJ7 in q}var gJ7,FJ7;var UJ7=L(()=>{pJ7();gJ7=function(){var q=/[^.]+$/.exec(U_8&&U_8.keys&&U_8.keys.IE_PROTO||"");return q?"Symbol(src)_1."+q:""}();FJ7=rA5});function sA5(q){if(q!=null){try{return aA5.call(q)}catch(K){}try{return q+""}catch(K){}}return""}var oA5,aA5,rl;var Oa8=L(()=>{oA5=Function.prototype,aA5=oA5.toString;rl=sA5});function AO5(q){if(!PO(q)||FJ7(q))return!1;var K=FP6(q)?YO5:eA5;return K.test(rl(q))}var tA5,eA5,qO5,KO5,_O5,zO5,YO5,QJ7;var dJ7=L(()=>{F_8();UJ7();hT();Oa8();tA5=/[\\^$.*+?()[\]{}|]/g,eA5=/^\[object .+?Constructor\]$/,qO5=Function.prototype,KO5=Object.prototype,_O5=qO5.toString,zO5=KO5.hasOwnProperty,YO5=RegExp("^"+_O5.call(zO5).replace(tA5,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");QJ7=AO5});function OO5(q,K){return q==null?void 0:q[K]}var cJ7;var lJ7=L(()=>{cJ7=OO5});function $O5(q,K){var _=cJ7(q,K);return QJ7(_)?_:void 0}var ik;var le=L(()=>{dJ7();lJ7();ik=$O5});var wO5,ne;var Q_8=L(()=>{le();sR();wO5=ik(vJ,"Map"),ne=wO5});var jO5,ol;var zu6=L(()=>{le();jO5=ik(Object,"create"),ol=jO5});function HO5(){this.__data__=ol?ol(null):{},this.size=0}var nJ7;var iJ7=L(()=>{zu6();nJ7=HO5});function JO5(q){var K=this.has(q)&&delete this.__data__[q];return this.size-=K?1:0,K}var rJ7;var oJ7=L(()=>{rJ7=JO5});function DO5(q){var K=this.__data__;if(ol){var _=K[q];return _===MO5?void 0:_}return PO5.call(K,q)?K[q]:void 0}var MO5="__lodash_hash_undefined__",XO5,PO5,aJ7;var sJ7=L(()=>{zu6();XO5=Object.prototype,PO5=XO5.hasOwnProperty;aJ7=DO5});function ZO5(q){var K=this.__data__;return ol?K[q]!==void 0:fO5.call(K,q)}var WO5,fO5,tJ7;var eJ7=L(()=>{zu6();WO5=Object.prototype,fO5=WO5.hasOwnProperty;tJ7=ZO5});function vO5(q,K){var _=this.__data__;return this.size+=this.has(q)?0:1,_[q]=ol&&K===void 0?GO5:K,this}var GO5="__lodash_hash_undefined__",qM7;var KM7=L(()=>{zu6();qM7=vO5});function UP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var $a8;var _M7=L(()=>{iJ7();oJ7();sJ7();eJ7();KM7();UP6.prototype.clear=nJ7;UP6.prototype.delete=rJ7;UP6.prototype.get=aJ7;UP6.prototype.has=tJ7;UP6.prototype.set=qM7;$a8=UP6});function TO5(){this.size=0,this.__data__={hash:new $a8,map:new(ne||ce),string:new $a8}}var zM7;var YM7=L(()=>{_M7();Ku6();Q_8();zM7=TO5});function VO5(q){var K=typeof q;return K=="string"||K=="number"||K=="symbol"||K=="boolean"?q!=="__proto__":q===null}var AM7;var OM7=L(()=>{AM7=VO5});function kO5(q,K){var _=q.__data__;return AM7(K)?_[typeof K=="string"?"string":"hash"]:_.map}var ie;var Yu6=L(()=>{OM7();ie=kO5});function NO5(q){var K=ie(this,q).delete(q);return this.size-=K?1:0,K}var $M7;var wM7=L(()=>{Yu6();$M7=NO5});function yO5(q){return ie(this,q).get(q)}var jM7;var HM7=L(()=>{Yu6();jM7=yO5});function EO5(q){return ie(this,q).has(q)}var JM7;var MM7=L(()=>{Yu6();JM7=EO5});function LO5(q,K){var _=ie(this,q),z=_.size;return _.set(q,K),this.size+=_.size==z?0:1,this}var XM7;var PM7=L(()=>{Yu6();XM7=LO5});function QP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var X_6;var d_8=L(()=>{YM7();wM7();HM7();MM7();PM7();QP6.prototype.clear=zM7;QP6.prototype.delete=$M7;QP6.prototype.get=jM7;QP6.prototype.has=JM7;QP6.prototype.set=XM7;X_6=QP6});function RO5(q,K){var _=this.__data__;if(_ instanceof ce){var z=_.__data__;if(!ne||z.length<hO5-1)return z.push([q,K]),this.size=++_.size,this;_=this.__data__=new X_6(z)}return _.set(q,K),this.size=_.size,this}var hO5=200,DM7;var WM7=L(()=>{Ku6();Q_8();d_8();DM7=RO5});function dP6(q){var K=this.__data__=new ce(q);this.size=K.size}var Dg;var Au6=L(()=>{Ku6();yJ7();LJ7();RJ7();CJ7();WM7();dP6.prototype.clear=NJ7;dP6.prototype.delete=EJ7;dP6.prototype.get=hJ7;dP6.prototype.has=SJ7;dP6.prototype.set=DM7;Dg=dP6});function CO5(q){return this.__data__.set(q,SO5),this}var SO5="__lodash_hash_undefined__",fM7;var ZM7=L(()=>{fM7=CO5});function bO5(q){return this.__data__.has(q)}var GM7;var vM7=L(()=>{GM7=bO5});function c_8(q){var K=-1,_=q==null?0:q.length;this.__data__=new X_6;while(++K<_)this.add(q[K])}var l_8;var wa8=L(()=>{d_8();ZM7();vM7();c_8.prototype.add=c_8.prototype.push=fM7;c_8.prototype.has=GM7;l_8=c_8});function xO5(q,K){var _=-1,z=q==null?0:q.length;while(++_<z)if(K(q[_],_,q))return!0;return!1}var TM7;var VM7=L(()=>{TM7=xO5});function IO5(q,K){return q.has(K)}var n_8;var ja8=L(()=>{n_8=IO5});function BO5(q,K,_,z,Y,A){var O=_&uO5,$=q.length,w=K.length;if($!=w&&!(O&&w>$))return!1;var j=A.get(q),H=A.get(K);if(j&&H)return j==K&&H==q;var J=-1,M=!0,X=_&mO5?new l_8:void 0;A.set(q,K),A.set(K,q);while(++J<$){var P=q[J],D=K[J];if(z)var W=O?z(D,P,J,K,q,A):z(P,D,J,q,K,A);if(W!==void 0){if(W)continue;M=!1;break}if(X){if(!TM7(K,function(f,G){if(!n_8(X,G)&&(P===f||Y(P,f,_,z,A)))return X.push(G)})){M=!1;break}}else if(!(P===D||Y(P,D,_,z,A))){M=!1;break}}return A.delete(q),A.delete(K),M}var uO5=1,mO5=2,i_8;var Ha8=L(()=>{wa8();VM7();ja8();i_8=BO5});var pO5,cP6;var Ja8=L(()=>{sR();pO5=vJ.Uint8Array,cP6=pO5});function gO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z,Y){_[++K]=[Y,z]}),_}var kM7;var NM7=L(()=>{kM7=gO5});function FO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z){_[++K]=z}),_}var lP6;var r_8=L(()=>{lP6=FO5});function q$5(q,K,_,z,Y,A,O){switch(_){case eO5:if(q.byteLength!=K.byteLength||q.byteOffset!=K.byteOffset)return!1;q=q.buffer,K=K.buffer;case tO5:if(q.byteLength!=K.byteLength||!A(new cP6(q),new cP6(K)))return!1;return!0;case dO5:case cO5:case iO5:return Pg(+q,+K);case lO5:return q.name==K.name&&q.message==K.message;case rO5:case aO5:return q==K+"";case nO5:var $=kM7;case oO5:var w=z&UO5;if($||($=lP6),q.size!=K.size&&!w)return!1;var j=O.get(q);if(j)return j==K;z|=QO5,O.set(q,K);var H=i_8($(q),$(K),z,Y,A,O);return O.delete(q),H;case sO5:if(Ma8)return Ma8.call(q)==Ma8.call(K)}return!1}var UO5=1,QO5=2,dO5="[object Boolean]",cO5="[object Date]",lO5="[object Error]",nO5="[object Map]",iO5="[object Number]",rO5="[object RegExp]",oO5="[object Set]",aO5="[object String]",sO5="[object Symbol]",tO5="[object ArrayBuffer]",eO5="[object DataView]",yM7,Ma8,EM7;var LM7=L(()=>{J_6();Ja8();pP6();Ha8();NM7();r_8();yM7=YW?YW.prototype:void 0,Ma8=yM7?yM7.valueOf:void 0;EM7=q$5});function K$5(q,K){var _=-1,z=K.length,Y=q.length;while(++_<z)q[Y+_]=K[_];return q}var nP6;var o_8=L(()=>{nP6=K$5});var _$5,DO;var RT=L(()=>{_$5=Array.isArray,DO=_$5});function z$5(q,K,_){var z=K(q);return DO(q)?z:nP6(z,_(q))}var a_8;var Xa8=L(()=>{o_8();RT();a_8=z$5});function Y$5(q,K){var _=-1,z=q==null?0:q.length,Y=0,A=[];while(++_<z){var O=q[_];if(K(O,_,q))A[Y++]=O}return A}var s_8;var Pa8=L(()=>{s_8=Y$5});function A$5(){return[]}var t_8;var Da8=L(()=>{t_8=A$5});var O$5,$$5,hM7,w$5,iP6;var e_8=L(()=>{Pa8();Da8();O$5=Object.prototype,$$5=O$5.propertyIsEnumerable,hM7=Object.getOwnPropertySymbols,w$5=!hM7?t_8:function(q){if(q==null)return[];return q=Object(q),s_8(hM7(q),function(K){return $$5.call(q,K)})},iP6=w$5});function j$5(q,K){var _=-1,z=Array(q);while(++_<q)z[_]=K(_);return z}var RM7;var SM7=L(()=>{RM7=j$5});function H$5(q){return q!=null&&typeof q=="object"}var QP;var Wg=L(()=>{QP=H$5});function M$5(q){return QP(q)&&YL(q)==J$5}var J$5="[object Arguments]",Wa8;var CM7=L(()=>{M_6();Wg();Wa8=M$5});var bM7,X$5,P$5,D$5,al;var Ou6=L(()=>{CM7();Wg();bM7=Object.prototype,X$5=bM7.hasOwnProperty,P$5=bM7.propertyIsEnumerable,D$5=Wa8(function(){return arguments}())?Wa8:function(q){return QP(q)&&X$5.call(q,"callee")&&!P$5.call(q,"callee")},al=D$5});function W$5(){return!1}var xM7;var IM7=L(()=>{xM7=W$5});var Kz8={};f8(Kz8,{default:()=>fg});var BM7,uM7,f$5,mM7,Z$5,G$5,fg;var $u6=L(()=>{sR();IM7();BM7=typeof Kz8=="object"&&Kz8&&!Kz8.nodeType&&Kz8,uM7=BM7&&typeof qz8=="object"&&qz8&&!qz8.nodeType&&qz8,f$5=uM7&&uM7.exports===BM7,mM7=f$5?vJ.Buffer:void 0,Z$5=mM7?mM7.isBuffer:void 0,G$5=Z$5||xM7,fg=G$5});function V$5(q,K){var _=typeof q;return K=K==null?v$5:K,!!K&&(_=="number"||_!="symbol"&&T$5.test(q))&&(q>-1&&q%1==0&&q<K)}var v$5=[CREDIT_CARD],T$5,re;var wu6=L(()=>{T$5=/^(?:0|[1-9]\d*)$/;re=V$5});function N$5(q){return typeof q=="number"&&q>-1&&q%1==0&&q<=k$5}var k$5=[CREDIT_CARD],rP6;var _z8=L(()=>{rP6=N$5});function o$5(q){return QP(q)&&rP6(q.length)&&!!G2[YL(q)]}var y$5="[object Arguments]",E$5="[object Array]",L$5="[object Boolean]",h$5="[object Date]",R$5="[object Error]",S$5="[object Function]",C$5="[object Map]",b$5="[object Number]",x$5="[object Object]",I$5="[object RegExp]",u$5="[object Set]",m$5="[object String]",B$5="[object WeakMap]",p$5="[object ArrayBuffer]",g$5="[object DataView]",F$5="[object Float32Array]",U$5="[object Float64Array]",Q$5="[object Int8Array]",d$5="[object Int16Array]",c$5="[object Int32Array]",l$5="[object Uint8Array]",n$5="[object Uint8ClampedArray]",i$5="[object Uint16Array]",r$5="[object Uint32Array]",G2,pM7;var gM7=L(()=>{M_6();_z8();Wg();G2={};G2[F$5]=G2[U$5]=G2[Q$5]=G2[d$5]=G2[c$5]=G2[l$5]=G2[n$5]=G2[i$5]=G2[r$5]=!0;G2[y$5]=G2[E$5]=G2[p$5]=G2[L$5]=G2[g$5]=G2[h$5]=G2[R$5]=G2[S$5]=G2[C$5]=G2[b$5]=G2[x$5]=G2[I$5]=G2[u$5]=G2[m$5]=G2[B$5]=!1;pM7=o$5});function a$5(q){return function(K){return q(K)}}var oP6;var zz8=L(()=>{oP6=a$5});var Az8={};f8(Az8,{default:()=>Zg});var FM7,ju6,s$5,fa8,t$5,Zg;var Oz8=L(()=>{Aa8();FM7=typeof Az8=="object"&&Az8&&!Az8.nodeType&&Az8,ju6=FM7&&typeof Yz8=="object"&&Yz8&&!Yz8.nodeType&&Yz8,s$5=ju6&&ju6.exports===FM7,fa8=s$5&&g_8.process,t$5=function(){try{var q=ju6&&ju6.require&&ju6.require("util").types;if(q)return q;return fa8&&fa8.binding&&fa8.binding("util")}catch(K){}}(),Zg=t$5});var UM7,e$5,aP6;var $z8=L(()=>{gM7();zz8();Oz8();UM7=Zg&&Zg.isTypedArray,e$5=UM7?oP6(UM7):pM7,aP6=e$5});function _w5(q,K){var _=DO(q),z=!_&&al(q),Y=!_&&!z&&fg(q),A=!_&&!z&&!Y&&aP6(q),O=_||z||Y||A,$=O?RM7(q.length,String):[],w=$.length;for(var j in q)if((K||Kw5.call(q,j))&&!(O&&(j=="length"||Y&&(j=="offset"||j=="parent")||A&&(j=="buffer"||j=="byteLength"||j=="byteOffset")||re(j,w))))$.push(j);return $}var qw5,Kw5,wz8;var Za8=L(()=>{SM7();Ou6();RT();$u6();wu6();$z8();qw5=Object.prototype,Kw5=qw5.hasOwnProperty;wz8=_w5});function Yw5(q){var K=q&&q.constructor,_=typeof K=="function"&&K.prototype||zw5;return q===_}var zw5,sP6;var jz8=L(()=>{zw5=Object.prototype;sP6=Yw5});function Aw5(q,K){return function(_){return q(K(_))}}var Hz8;var Ga8=L(()=>{Hz8=Aw5});var Ow5,QM7;var dM7=L(()=>{Ga8();Ow5=Hz8(Object.keys,Object),QM7=Ow5});function jw5(q){if(!sP6(q))return QM7(q);var K=[];for(var _ in Object(q))if(ww5.call(q,_)&&_!="constructor")K.push(_);return K}var $w5,ww5,cM7;var lM7=L(()=>{jz8();dM7();$w5=Object.prototype,ww5=$w5.hasOwnProperty;cM7=jw5});function Hw5(q){return q!=null&&rP6(q.length)&&!FP6(q)}var Gg;var tP6=L(()=>{F_8();_z8();Gg=Hw5});function Jw5(q){return Gg(q)?wz8(q):cM7(q)}var tR;var P_6=L(()=>{Za8();lM7();tP6();tR=Jw5});function Mw5(q){return a_8(q,tR,iP6)}var Hu6;var va8=L(()=>{Xa8();e_8();P_6();Hu6=Mw5});function Ww5(q,K,_,z,Y,A){var O=_&Xw5,$=Hu6(q),w=$.length,j=Hu6(K),H=j.length;if(w!=H&&!O)return!1;var J=w;while(J--){var M=$[J];if(!(O?M in K:Dw5.call(K,M)))return!1}var X=A.get(q),P=A.get(K);if(X&&P)return X==K&&P==q;var D=!0;A.set(q,K),A.set(K,q);var W=O;while(++J<w){M=$[J];var f=q[M],G=K[M];if(z)var Z=O?z(G,f,M,K,q,A):z(f,G,M,q,K,A);if(!(Z===void 0?f===G||Y(f,G,_,z,A):Z)){D=!1;break}W||(W=M=="constructor")}if(D&&!W){var v=q.constructor,V=K.constructor;if(v!=V&&(("constructor"in q)&&("constructor"in K))&&!(typeof v=="function"&&v instanceof v&&typeof V=="function"&&V instanceof V))D=!1}return A.delete(q),A.delete(K),D}var Xw5=1,Pw5,Dw5,nM7;var iM7=L(()=>{va8();Pw5=Object.prototype,Dw5=Pw5.hasOwnProperty;nM7=Ww5});var fw5,Jz8;var rM7=L(()=>{le();sR();fw5=ik(vJ,"DataView"),Jz8=fw5});var Zw5,Mz8;var oM7=L(()=>{le();sR();Zw5=ik(vJ,"Promise"),Mz8=Zw5});var Gw5,oe;var Ta8=L(()=>{le();sR();Gw5=ik(vJ,"Set"),oe=Gw5});var vw5,Xz8;var aM7=L(()=>{le();sR();vw5=ik(vJ,"WeakMap"),Xz8=vw5});var sM7="[object Map]",Tw5="[object Object]",tM7="[object Promise]",eM7="[object Set]",qX7="[object WeakMap]",KX7="[object DataView]",Vw5,kw5,Nw5,yw5,Ew5,D_6,sl;var Ju6=L(()=>{rM7();Q_8();oM7();Ta8();aM7();M_6();Oa8();Vw5=rl(Jz8),kw5=rl(ne),Nw5=rl(Mz8),yw5=rl(oe),Ew5=rl(Xz8),D_6=YL;if(Jz8&&D_6(new Jz8(new ArrayBuffer(1)))!=KX7||ne&&D_6(new ne)!=sM7||Mz8&&D_6(Mz8.resolve())!=tM7||oe&&D_6(new oe)!=eM7||Xz8&&D_6(new Xz8)!=qX7)D_6=function(q){var K=YL(q),_=K==Tw5?q.constructor:void 0,z=_?rl(_):"";if(z)switch(z){case Vw5:return KX7;case kw5:return sM7;case Nw5:return tM7;case yw5:return eM7;case Ew5:return qX7}return K};sl=D_6});function Rw5(q,K,_,z,Y,A){var O=DO(q),$=DO(K),w=O?zX7:sl(q),j=$?zX7:sl(K);w=w==_X7?Pz8:w,j=j==_X7?Pz8:j;var H=w==Pz8,J=j==Pz8,M=w==j;if(M&&fg(q)){if(!fg(K))return!1;O=!0,H=!1}if(M&&!H)return A||(A=new Dg),O||aP6(q)?i_8(q,K,_,z,Y,A):EM7(q,K,w,_,z,Y,A);if(!(_&Lw5)){var X=H&&YX7.call(q,"__wrapped__"),P=J&&YX7.call(K,"__wrapped__");if(X||P){var D=X?q.value():q,W=P?K.value():K;return A||(A=new Dg),Y(D,W,_,z,A)}}if(!M)return!1;return A||(A=new Dg),nM7(q,K,_,z,Y,A)}var Lw5=1,_X7="[object Arguments]",zX7="[object Array]",Pz8="[object Object]",hw5,YX7,AX7;var OX7=L(()=>{Au6();Ha8();LM7();iM7();Ju6();RT();$u6();$z8();hw5=Object.prototype,YX7=hw5.hasOwnProperty;AX7=Rw5});function $X7(q,K,_,z,Y){if(q===K)return!0;if(q==null||K==null||!QP(q)&&!QP(K))return q!==q&&K!==K;return AX7(q,K,_,z,$X7,Y)}var eP6;var Dz8=L(()=>{OX7();Wg();eP6=$X7});function bw5(q,K,_,z){var Y=_.length,A=Y,O=!z;if(q==null)return!A;q=Object(q);while(Y--){var $=_[Y];if(O&&$[2]?$[1]!==q[$[0]]:!($[0]in q))return!1}while(++Y<A){$=_[Y];var w=$[0],j=q[w],H=$[1];if(O&&$[2]){if(j===void 0&&!(w in q))return!1}else{var J=new Dg;if(z)var M=z(j,H,w,q,K,J);if(!(M===void 0?eP6(H,j,Sw5|Cw5,z,J):M))return!1}}return!0}var Sw5=1,Cw5=2,wX7;var jX7=L(()=>{Au6();Dz8();wX7=bw5});function xw5(q){return q===q&&!PO(q)}var Wz8;var Va8=L(()=>{hT();Wz8=xw5});function Iw5(q){var K=tR(q),_=K.length;while(_--){var z=K[_],Y=q[z];K[_]=[z,Y,Wz8(Y)]}return K}var HX7;var JX7=L(()=>{Va8();P_6();HX7=Iw5});function uw5(q,K){return function(_){if(_==null)return!1;return _[q]===K&&(K!==void 0||(q in Object(_)))}}var fz8;var ka8=L(()=>{fz8=uw5});function mw5(q){var K=HX7(q);if(K.length==1&&K[0][2])return fz8(K[0][0],K[0][1]);return function(_){return _===q||wX7(_,q,K)}}var MX7;var XX7=L(()=>{jX7();JX7();ka8();MX7=mw5});function pw5(q){return typeof q=="symbol"||QP(q)&&YL(q)==Bw5}var Bw5="[object Symbol]",ae;var Mu6=L(()=>{M_6();Wg();ae=pw5});function Uw5(q,K){if(DO(q))return!1;var _=typeof q;if(_=="number"||_=="symbol"||_=="boolean"||q==null||ae(q))return!0;return Fw5.test(q)||!gw5.test(q)||K!=null&&q in Object(K)}var gw5,Fw5,qD6;var Zz8=L(()=>{RT();Mu6();gw5=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Fw5=/^\w*$/;qD6=Uw5});function Na8(q,K){if(typeof q!="function"||K!=null&&typeof K!="function")throw TypeError(Qw5);var _=function(){var z=arguments,Y=K?K.apply(this,z):z[0],A=_.cache;if(A.has(Y))return A.get(Y);var O=q.apply(this,z);return _.cache=A.set(Y,O)||A,O};return _.cache=new(Na8.Cache||X_6),_}var Qw5="Expected a function",A1;var h4=L(()=>{d_8();Na8.Cache=X_6;A1=Na8});function cw5(q){var K=A1(q,function(z){if(_.size===dw5)_.clear();return z}),_=K.cache;return K}var dw5=500,PX7;var DX7=L(()=>{h4();PX7=cw5});var lw5,nw5,iw5,WX7;var fX7=L(()=>{DX7();lw5=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,nw5=/\\(\\)?/g,iw5=PX7(function(q){var K=[];if(q.charCodeAt(0)===46)K.push("");return q.replace(lw5,function(_,z,Y,A){K.push(Y?A.replace(nw5,"$1"):z||_)}),K}),WX7=iw5});function rw5(q,K){var _=-1,z=q==null?0:q.length,Y=Array(z);while(++_<z)Y[_]=K(q[_],_,q);return Y}var se;var Xu6=L(()=>{se=rw5});function vX7(q){if(typeof q=="string")return q;if(DO(q))return se(q,vX7)+"";if(ae(q))return GX7?GX7.call(q):"";var K=q+"";return K=="0"&&1/q==-ow5?"-0":K}var ow5=1/0,ZX7,GX7,TX7;var VX7=L(()=>{J_6();Xu6();RT();Mu6();ZX7=YW?YW.prototype:void 0,GX7=ZX7?ZX7.toString:void 0;TX7=vX7});function aw5(q){return q==null?"":TX7(q)}var KD6;var Gz8=L(()=>{VX7();KD6=aw5});function sw5(q,K){if(DO(q))return q;return qD6(q,K)?[q]:WX7(KD6(q))}var eR;var W_6=L(()=>{RT();Zz8();fX7();Gz8();eR=sw5});function ew5(q){if(typeof q=="string"||ae(q))return q;var K=q+"";return K=="0"&&1/q==-tw5?"-0":K}var tw5=1/0,qS;var f_6=L(()=>{Mu6();qS=ew5});function q25(q,K){K=eR(K,q);var _=0,z=K.length;while(q!=null&&_<z)q=q[qS(K[_++])];return _&&_==z?q:void 0}var te;var Pu6=L(()=>{W_6();f_6();te=q25});function K25(q,K,_){var z=q==null?void 0:te(q,K);return z===void 0?_:z}var kX7;var NX7=L(()=>{Pu6();kX7=K25});function _25(q,K){return q!=null&&K in Object(q)}var yX7;var EX7=L(()=>{yX7=_25});function z25(q,K,_){K=eR(K,q);var z=-1,Y=K.length,A=!1;while(++z<Y){var O=qS(K[z]);if(!(A=q!=null&&_(q,O)))break;q=q[O]}if(A||++z!=Y)return A;return Y=q==null?0:q.length,!!Y&&rP6(Y)&&re(O,Y)&&(DO(q)||al(q))}var LX7;var hX7=L(()=>{W_6();Ou6();RT();wu6();_z8();f_6();LX7=z25});function Y25(q,K){return q!=null&&LX7(q,K,yX7)}var RX7;var SX7=L(()=>{EX7();hX7();RX7=Y25});function $25(q,K){if(qD6(q)&&Wz8(K))return fz8(qS(q),K);return function(_){var z=kX7(_,q);return z===void 0&&z===K?RX7(_,q):eP6(K,z,A25|O25)}}var A25=1,O25=2,CX7;var bX7=L(()=>{Dz8();NX7();SX7();Zz8();Va8();ka8();f_6();CX7=$25});function w25(q){return q}var _D6;var vz8=L(()=>{_D6=w25});function j25(q){return function(K){return K==null?void 0:K[q]}}var xX7;var IX7=L(()=>{xX7=j25});function H25(q){return function(K){return te(K,q)}}var uX7;var mX7=L(()=>{Pu6();uX7=H25});function J25(q){return qD6(q)?xX7(qS(q)):uX7(q)}var BX7;var pX7=L(()=>{IX7();mX7();Zz8();f_6();BX7=J25});function M25(q){if(typeof q=="function")return q;if(q==null)return _D6;if(typeof q=="object")return DO(q)?CX7(q[0],q[1]):MX7(q);return BX7(q)}var rk;var ee=L(()=>{XX7();bX7();vz8();RT();pX7();rk=M25});function X25(q,K){var _,z=-1,Y=q.length;while(++z<Y){var A=K(q[z]);if(A!==void 0)_=_===void 0?A:_+A}return _}var gX7;var FX7=L(()=>{gX7=X25});function P25(q,K){return q&&q.length?gX7(q,rk(K,2)):0}var zD6;var UX7=L(()=>{ee();FX7();zD6=P25});import{randomUUID as Du6}from"crypto";var ya8=()=>{};function QX7(){return Ea8}function dX7(q){Ea8=q}function cX7(q){return Tz8.has(q)?Tz8.get(q):void 0}function lX7(q,K){Tz8.set(q,K)}function nX7(q){return La8.get(q)}function iX7(q,K){La8.set(q,K)}function AW(){Ea8=null,Tz8.clear(),La8.clear()}function Vz8(){return ha8}function rX7(q){ha8=q}function oX7(){ha8=void 0}var Ea8=null,Tz8,La8,ha8;var tl=L(()=>{Tz8=new Map;La8=new Map});function E9(){let q=new Set;return{subscribe(K){return q.add(K),()=>{q.delete(K)}},emit(...K){for(let _ of q)_(...K)},clear(){q.clear()}}}var DD6={};f8(DD6,{waitForScrollIdle:()=>Vu6,updateLastInteractionTime:()=>G_6,switchSession:()=>Yf,snapshotOutputTokensForTurn:()=>h25,setUserMsgOptIn:()=>Vg,setUseCoworkPlugins:()=>OL,setTracerProvider:()=>xz8,setThinkingClearLatched:()=>Yt8,setTeleportedSessionInfo:()=>Bu6,setSystemPromptSectionCacheEntry:()=>is8,setStrictToolResultPairing:()=>I25,setStatsStore:()=>ca8,setSessionTrustAccepted:()=>Iu6,setSessionSource:()=>fs8,setSessionPersistenceDisabled:()=>ms8,setSessionIngressToken:()=>y_6,setSessionBypassPermissionsMode:()=>Is8,setSdkBetas:()=>Ys8,setSdkAgentProgressSummariesEnabled:()=>Ps8,setScheduledTasksEnabled:()=>bu6,setQuestionPreviewFormat:()=>uz8,setPromptId:()=>Fu6,setPromptCache1hAllowlist:()=>ss8,setProjectRoot:()=>fu6,setOriginalCwd:()=>KS,setOauthTokenFromFd:()=>Vs8,setNeedsPlanModeExitAttachment:()=>gI,setNeedsAutoModeExitAttachment:()=>CG,setModelStrings:()=>Nu6,setMeterProvider:()=>bz8,setMeter:()=>As8,setMemoryToggledOff:()=>Ws8,setMainThreadAgentType:()=>_n,setMainLoopModelOverride:()=>dP,setLspRecommendationShownThisSession:()=>Us8,setLoopChainStartedAt:()=>g25,setLoggerProvider:()=>Sz8,setLastMainRequestId:()=>ea8,setLastEmittedDate:()=>PD6,setLastClassifierRequests:()=>hu6,setLastApiCompletionTimestamp:()=>Tu6,setLastAPIRequestMessages:()=>Ls8,setLastAPIRequest:()=>ys8,setKairosActive:()=>x25,setIsRemoteMode:()=>ls8,setIsInteractive:()=>Ms8,setInlinePlugins:()=>bs8,setInitialMainLoopModel:()=>zs8,setInitJsonSchema:()=>Qs8,setHasUnknownModelCost:()=>hz8,setHasExitedPlanMode:()=>$L,setHasDevChannels:()=>Qz8,setFlagSettingsPath:()=>Zs8,setFlagSettingsInline:()=>Gs8,setFastModeHeaderLatched:()=>Kt8,setEventLogger:()=>Cz8,setDirectConnectServerUrl:()=>W25,setCwdState:()=>Ia8,setCostStateForRestore:()=>ku6,setClientType:()=>Xs8,setChromeFlagOverride:()=>xs8,setCachedClaudeMdContent:()=>hs8,setCacheEditingHeaderLatched:()=>d25,setApiKeyFromFd:()=>Ns8,setAllowedSettingSources:()=>Cs8,setAllowedChannels:()=>zn,setAfkModeHeaderLatched:()=>es8,setAdditionalDirectoriesForClaudeMd:()=>pu6,setActiveRoutine:()=>Z25,resetTurnToolDuration:()=>Ua8,resetTurnHookDuration:()=>Fa8,resetTurnClassifierDuration:()=>da8,resetTotalDurationStateAndCost_FOR_TESTS_ONLY:()=>G25,resetStateForTests:()=>_P7,resetSdkInitState:()=>YP7,resetModelStringsForTestingOnly:()=>C25,resetCostState:()=>OD6,removeSessionCronTasks:()=>xu6,registerHookCallbacks:()=>z66,regenerateSessionId:()=>Sa8,preferThirdPartyAuthentication:()=>Ru6,onSessionSwitch:()=>xa8,onInteraction:()=>ra8,needsPlanModeExitAttachment:()=>Bs8,needsAutoModeExitAttachment:()=>ps8,markScrollActivity:()=>Ks8,markPostCompaction:()=>K66,markFirstTeleportMessageLogged:()=>Fz8,isSessionPersistenceDisabled:()=>ok,incrementBudgetContinuationCount:()=>S25,hasUnknownModelCost:()=>ta8,hasShownLspRecommendationThisSession:()=>Fs8,hasExitedPlanModeInSession:()=>uu6,handlePlanModeTransition:()=>Kn,handleAutoModeTransition:()=>gs8,getUserMsgOptIn:()=>AL,getUseCoworkPlugins:()=>Cu6,getUsageForModel:()=>_s8,getTurnToolDurationMs:()=>V25,getTurnToolCount:()=>k25,getTurnOutputTokens:()=>E25,getTurnHookDurationMs:()=>v25,getTurnHookCount:()=>T25,getTurnClassifierDurationMs:()=>N25,getTurnClassifierCount:()=>y25,getTracerProvider:()=>N_6,getTotalWebSearchRequests:()=>oa8,getTotalToolDuration:()=>ga8,getTotalOutputTokens:()=>el,getTotalLinesRemoved:()=>T_6,getTotalLinesAdded:()=>v_6,getTotalInputTokens:()=>V_6,getTotalDuration:()=>YD6,getTotalCostUSD:()=>XM,getTotalCacheReadInputTokens:()=>Zu6,getTotalCacheCreationInputTokens:()=>Gu6,getTotalAPIDurationWithoutRetries:()=>pa8,getTotalAPIDuration:()=>RG,getTokenCounter:()=>wD6,getThinkingClearLatched:()=>zt8,getTeleportedSessionInfo:()=>gz8,getSystemPromptSectionCache:()=>ns8,getStrictToolResultPairing:()=>Ds8,getStatsStore:()=>q66,getSlowOperations:()=>OP7,getSessionTrustAccepted:()=>MD6,getSessionSource:()=>u25,getSessionProjectDir:()=>Z_6,getSessionIngressToken:()=>vs8,getSessionId:()=>N8,getSessionCronTasks:()=>L_6,getSessionCreatedTeams:()=>mu6,getSessionCounter:()=>Os8,getSessionBypassPermissionsMode:()=>E_6,getSdkBetas:()=>OW,getSdkAgentProgressSummariesEnabled:()=>vg,getScheduledTasksEnabled:()=>JD6,getRegisteredHooks:()=>zS,getQuestionPreviewFormat:()=>Iz8,getPromptId:()=>gu6,getPromptCache1hAllowlist:()=>as8,getProjectRoot:()=>wz,getPrCounter:()=>yu6,getPlanSlugCache:()=>h_6,getParentSessionId:()=>Ca8,getOriginalCwd:()=>A7,getOauthTokenFromFd:()=>Ts8,getModelUsage:()=>ST,getModelStrings:()=>$D6,getMeterProvider:()=>Js8,getMeter:()=>b25,getMemoryToggledOff:()=>Tg,getMainThreadAgentType:()=>Ng,getMainLoopModelOverride:()=>pI,getLoopChainStartedAt:()=>p25,getLoggerProvider:()=>Lu6,getLocCounter:()=>Rz8,getLastMainRequestId:()=>vu6,getLastInteractionTime:()=>_S,getLastEmittedDate:()=>os8,getLastClassifierRequests:()=>zP7,getLastApiCompletionTimestamp:()=>qn,getLastAPIRequestMessages:()=>m25,getLastAPIRequest:()=>Es8,getKairosActive:()=>SG,getIsScrollDraining:()=>k_6,getIsRemoteMode:()=>cK,getIsNonInteractiveSession:()=>d7,getIsInteractive:()=>CT,getInvokedSkillsForAgent:()=>ds8,getInvokedSkills:()=>Q25,getInlinePlugins:()=>kg,getInitialMainLoopModel:()=>AD6,getInitJsonSchema:()=>Bz8,getHasDevChannels:()=>Uz8,getFlagSettingsPath:()=>_66,getFlagSettingsInline:()=>HD6,getFastModeHeaderLatched:()=>qt8,getEventLogger:()=>Hs8,getDirectConnectServerUrl:()=>ua8,getCwdState:()=>BI,getCurrentTurnTokenBudget:()=>L25,getCostCounter:()=>ws8,getCommitCounter:()=>$s8,getCodeEditToolDecisionCounter:()=>Eu6,getClientType:()=>jD6,getChromeFlagOverride:()=>Su6,getCachedClaudeMdContent:()=>Rs8,getCacheEditingHeaderLatched:()=>_t8,getBudgetContinuationCount:()=>R25,getApiKeyFromFd:()=>ks8,getAllowedSettingSources:()=>Ss8,getAllowedChannels:()=>TJ,getAgentColorMap:()=>mz8,getAfkModeHeaderLatched:()=>ts8,getAdditionalDirectoriesForClaudeMd:()=>bG,getActiveTimeCounter:()=>js8,getActiveRoutine:()=>f25,flushInteractionTime:()=>na8,deleteLoopChainStartedAt:()=>F25,consumePostCompaction:()=>qs8,clearSystemPromptSectionState:()=>rs8,clearRegisteredPluginHooks:()=>pz8,clearRegisteredHooks:()=>U25,clearInvokedSkillsForAgent:()=>Y66,clearInvokedSkills:()=>cs8,clearBetaHeaderLatches:()=>At8,addToTurnHookDuration:()=>yz8,addToTurnClassifierDuration:()=>Qa8,addToTotalLinesChanged:()=>Ez8,addToTotalDurationState:()=>ma8,addToTotalCostState:()=>Ba8,addToToolDuration:()=>Nz8,addToInMemoryErrorLog:()=>B25,addSlowOperation:()=>AP7,addSessionCronTask:()=>us8,addInvokedSkill:()=>XD6});import{realpathSync as aX7}from"fs";import{cwd as D25}from"process";function eX7(){let q="";if(typeof process<"u"&&typeof process.cwd==="function"&&typeof aX7==="function"){let _=D25();try{q=aX7(_).normalize("NFC")}catch{q=_.normalize("NFC")}}return{originalCwd:q,projectRoot:q,totalCostUSD:0,totalAPIDuration:0,totalAPIDurationWithoutRetries:0,totalToolDuration:0,turnHookDurationMs:0,turnToolDurationMs:0,turnClassifierDurationMs:0,turnToolCount:0,turnHookCount:0,turnClassifierCount:0,startTime:Date.now(),lastInteractionTime:Date.now(),totalLinesAdded:0,totalLinesRemoved:0,hasUnknownModelCost:!1,cwd:q,modelUsage:{},mainLoopModelOverride:void 0,initialMainLoopModel:null,modelStrings:null,isInteractive:!1,kairosActive:!1,strictToolResultPairing:!1,memoryToggledOff:!1,sdkAgentProgressSummariesEnabled:!1,userMsgOptIn:!1,clientType:"cli",sessionSource:void 0,questionPreviewFormat:void 0,sessionIngressToken:void 0,oauthTokenFromFd:void 0,apiKeyFromFd:void 0,flagSettingsPath:void 0,flagSettingsInline:null,allowedSettingSources:["userSettings","projectSettings","localSettings","flagSettings","policySettings"],meter:null,sessionCounter:null,locCounter:null,prCounter:null,commitCounter:null,costCounter:null,tokenCounter:null,codeEditToolDecisionCounter:null,activeTimeCounter:null,statsStore:null,sessionId:Du6(),parentSessionId:void 0,loggerProvider:null,eventLogger:null,meterProvider:null,tracerProvider:null,agentColorMap:new Map,agentColorIndex:0,lastAPIRequest:null,lastAPIRequestMessages:null,lastClassifierRequests:null,cachedClaudeMdContent:null,inMemoryErrorLog:[],inlinePlugins:[],chromeFlagOverride:void 0,useCoworkPlugins:!1,sessionBypassPermissionsMode:!1,scheduledTasksEnabled:!1,sessionCronTasks:[],loopChainStartedAt:Object.create(null),sessionCreatedTeams:new Set,sessionTrustAccepted:!1,sessionPersistenceDisabled:!1,hasExitedPlanMode:!1,needsPlanModeExitAttachment:!1,needsAutoModeExitAttachment:!1,lspRecommendationShownThisSession:!1,initJsonSchema:null,registeredHooks:null,planSlugCache:new Map,teleportedSessionInfo:null,invokedSkills:new Map,slowOperations:[],sdkBetas:void 0,mainThreadAgentType:void 0,isRemoteMode:!1,...!1,directConnectServerUrl:void 0,activeRoutine:void 0,systemPromptSectionCache:new Map,lastEmittedDate:null,additionalDirectoriesForClaudeMd:[],allowedChannels:[],hasDevChannels:!1,sessionProjectDir:null,promptCache1hAllowlist:null,afkModeHeaderLatched:null,fastModeHeaderLatched:null,cacheEditingHeaderLatched:null,thinkingClearLatched:null,promptId:null,lastMainRequestId:void 0,lastApiCompletionTimestamp:null,pendingPostCompaction:!1}}function N8(){return G8.sessionId}function Sa8(q={}){if(q.setCurrentAsParent)G8.parentSessionId=G8.sessionId;return G8.planSlugCache.delete(G8.sessionId),G8.sessionId=Du6(),G8.sessionProjectDir=null,G8.sessionId}function Ca8(){return G8.parentSessionId}function Yf(q,K=null){if(G8.sessionId!==q)G8.planSlugCache.delete(G8.sessionId);G8.sessionId=q,G8.sessionProjectDir=K,ba8.emit(q)}function Z_6(){return G8.sessionProjectDir}function A7(){return G8.originalCwd}function wz(){return G8.projectRoot}function KS(q){G8.originalCwd=q.normalize("NFC")}function fu6(q){G8.projectRoot=q.normalize("NFC")}function BI(){return G8.cwd}function Ia8(q){G8.cwd=q.normalize("NFC")}function ua8(){return G8.directConnectServerUrl}function W25(q){G8.directConnectServerUrl=q}function f25(){return G8.activeRoutine}function Z25(q){G8.activeRoutine=q}function ma8(q,K){G8.totalAPIDuration+=q,G8.totalAPIDurationWithoutRetries+=K}function G25(){G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalCostUSD=0}function Ba8(q,K,_){G8.modelUsage[_]=K,G8.totalCostUSD+=q}function XM(){return G8.totalCostUSD}function RG(){return G8.totalAPIDuration}function YD6(){return Date.now()-G8.startTime}function pa8(){return G8.totalAPIDurationWithoutRetries}function ga8(){return G8.totalToolDuration}function Nz8(q){G8.totalToolDuration+=q,G8.turnToolDurationMs+=q,G8.turnToolCount++}function v25(){return G8.turnHookDurationMs}function yz8(q){G8.turnHookDurationMs+=q,G8.turnHookCount++}function Fa8(){G8.turnHookDurationMs=0,G8.turnHookCount=0}function T25(){return G8.turnHookCount}function V25(){return G8.turnToolDurationMs}function Ua8(){G8.turnToolDurationMs=0,G8.turnToolCount=0}function k25(){return G8.turnToolCount}function N25(){return G8.turnClassifierDurationMs}function Qa8(q){G8.turnClassifierDurationMs+=q,G8.turnClassifierCount++}function da8(){G8.turnClassifierDurationMs=0,G8.turnClassifierCount=0}function y25(){return G8.turnClassifierCount}function q66(){return G8.statsStore}function ca8(q){G8.statsStore=q}function G_6(q){if(q)qP7();else la8=!0}function na8(){if(la8)qP7()}function qP7(){G8.lastInteractionTime=Date.now(),la8=!1,ia8.emit()}function Ez8(q,K){G8.totalLinesAdded+=q,G8.totalLinesRemoved+=K}function v_6(){return G8.totalLinesAdded}function T_6(){return G8.totalLinesRemoved}function V_6(){return zD6(Object.values(G8.modelUsage),"inputTokens")}function el(){return zD6(Object.values(G8.modelUsage),"outputTokens")}function Zu6(){return zD6(Object.values(G8.modelUsage),"cacheReadInputTokens")}function Gu6(){return zD6(Object.values(G8.modelUsage),"cacheCreationInputTokens")}function oa8(){return zD6(Object.values(G8.modelUsage),"webSearchRequests")}function E25(){return el()-aa8}function L25(){return sa8}function h25(q){aa8=el(),sa8=q,Lz8=0}function R25(){return Lz8}function S25(){Lz8++}function hz8(){G8.hasUnknownModelCost=!0}function ta8(){return G8.hasUnknownModelCost}function vu6(){return G8.lastMainRequestId}function ea8(q){G8.lastMainRequestId=q}function qn(){return G8.lastApiCompletionTimestamp}function Tu6(q){G8.lastApiCompletionTimestamp=q}function K66(){G8.pendingPostCompaction=!0}function qs8(){let q=G8.pendingPostCompaction;return G8.pendingPostCompaction=!1,q}function _S(){return G8.lastInteractionTime}function Ks8(){if(kz8=!0,Wu6)clearTimeout(Wu6);Wu6=setTimeout(()=>{kz8=!1,Wu6=void 0},KP7),Wu6.unref?.()}function k_6(){return kz8}async function Vu6(){while(kz8)await new Promise((q)=>setTimeout(q,KP7).unref?.())}function ST(){return G8.modelUsage}function _s8(q){return G8.modelUsage[q]}function pI(){return G8.mainLoopModelOverride}function AD6(){return G8.initialMainLoopModel}function dP(q){G8.mainLoopModelOverride=q}function zs8(q){G8.initialMainLoopModel=q}function OW(){return G8.sdkBetas}function Ys8(q){G8.sdkBetas=q}function OD6(){G8.totalCostUSD=0,G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalToolDuration=0,G8.startTime=Date.now(),G8.totalLinesAdded=0,G8.totalLinesRemoved=0,G8.hasUnknownModelCost=!1,G8.modelUsage={},G8.promptId=null}function ku6({totalCostUSD:q,totalAPIDuration:K,totalAPIDurationWithoutRetries:_,totalToolDuration:z,totalLinesAdded:Y,totalLinesRemoved:A,lastDuration:O,modelUsage:$}){if(G8.totalCostUSD=q,G8.totalAPIDuration=K,G8.totalAPIDurationWithoutRetries=_,G8.totalToolDuration=z,G8.totalLinesAdded=Y,G8.totalLinesRemoved=A,$)G8.modelUsage=$;if(O)G8.startTime=Date.now()-O}function _P7(){throw Error("resetStateForTests can only be called in tests")}function $D6(){return G8.modelStrings}function Nu6(q){G8.modelStrings=q}function C25(){G8.modelStrings=null}function As8(q,K){G8.meter=q,G8.sessionCounter=K("claude_code.session.count",{description:"Count of CLI sessions started"}),G8.locCounter=K("claude_code.lines_of_code.count",{description:"Count of lines of code modified, with the 'type' attribute indicating whether lines were added or removed"}),G8.prCounter=K("claude_code.pull_request.count",{description:"Number of pull requests created"}),G8.commitCounter=K("claude_code.commit.count",{description:"Number of git commits created"}),G8.costCounter=K("claude_code.cost.usage",{description:"Cost of the Claude Code session",unit:"USD"}),G8.tokenCounter=K("claude_code.token.usage",{description:"Number of tokens used",unit:"tokens"}),G8.codeEditToolDecisionCounter=K("claude_code.code_edit_tool.decision",{description:"Count of code editing tool permission decisions (accept/reject) for Edit, Write, and NotebookEdit tools"}),G8.activeTimeCounter=K("claude_code.active_time.total",{description:"Total active time in seconds",unit:"s"})}function b25(){return G8.meter}function Os8(){return G8.sessionCounter}function Rz8(){return G8.locCounter}function yu6(){return G8.prCounter}function $s8(){return G8.commitCounter}function ws8(){return G8.costCounter}function wD6(){return G8.tokenCounter}function Eu6(){return G8.codeEditToolDecisionCounter}function js8(){return G8.activeTimeCounter}function Lu6(){return G8.loggerProvider}function Sz8(q){G8.loggerProvider=q}function Hs8(){return G8.eventLogger}function Cz8(q){G8.eventLogger=q}function Js8(){return G8.meterProvider}function bz8(q){G8.meterProvider=q}function N_6(){return G8.tracerProvider}function xz8(q){G8.tracerProvider=q}function d7(){return!G8.isInteractive}function CT(){return G8.isInteractive}function Ms8(q){G8.isInteractive=q}function jD6(){return G8.clientType}function Xs8(q){G8.clientType=q}function vg(){return G8.sdkAgentProgressSummariesEnabled}function Ps8(q){G8.sdkAgentProgressSummariesEnabled=q}function SG(){return G8.kairosActive}function x25(q){G8.kairosActive=q}function Ds8(){return G8.strictToolResultPairing}function I25(q){G8.strictToolResultPairing=q}function Tg(){return G8.memoryToggledOff}function Ws8(q){G8.memoryToggledOff=q}function AL(){return G8.userMsgOptIn}function Vg(q){G8.userMsgOptIn=q}function u25(){return G8.sessionSource}function fs8(q){G8.sessionSource=q}function Iz8(){return G8.questionPreviewFormat}function uz8(q){G8.questionPreviewFormat=q}function mz8(){return G8.agentColorMap}function _66(){return G8.flagSettingsPath}function Zs8(q){G8.flagSettingsPath=q}function HD6(){return G8.flagSettingsInline}function Gs8(q){G8.flagSettingsInline=q}function vs8(){return G8.sessionIngressToken}function y_6(q){G8.sessionIngressToken=q}function Ts8(){return G8.oauthTokenFromFd}function Vs8(q){G8.oauthTokenFromFd=q}function ks8(){return G8.apiKeyFromFd}function Ns8(q){G8.apiKeyFromFd=q}function ys8(q){G8.lastAPIRequest=q}function Es8(){return G8.lastAPIRequest}function Ls8(q){G8.lastAPIRequestMessages=q}function m25(){return G8.lastAPIRequestMessages}function hu6(q){G8.lastClassifierRequests=q}function zP7(){return G8.lastClassifierRequests}function hs8(q){G8.cachedClaudeMdContent=q}function Rs8(){return G8.cachedClaudeMdContent}function B25(q){if(G8.inMemoryErrorLog.length>=100)G8.inMemoryErrorLog.shift();G8.inMemoryErrorLog.push(q)}function Ss8(){return G8.allowedSettingSources}function Cs8(q){G8.allowedSettingSources=q}function Ru6(){return d7()&&G8.clientType!=="claude-vscode"}function bs8(q){G8.inlinePlugins=q}function kg(){return G8.inlinePlugins}function xs8(q){G8.chromeFlagOverride=q}function Su6(){return G8.chromeFlagOverride}function OL(q){G8.useCoworkPlugins=q,AW()}function Cu6(){return G8.useCoworkPlugins}function Is8(q){G8.sessionBypassPermissionsMode=q}function E_6(){return G8.sessionBypassPermissionsMode}function bu6(q){G8.scheduledTasksEnabled=q}function JD6(){return G8.scheduledTasksEnabled}function L_6(){return G8.sessionCronTasks}function us8(q){G8.sessionCronTasks.push(q)}function p25(q){return G8.loopChainStartedAt[q]}function g25(q,K){G8.loopChainStartedAt[q]=K}function F25(q){delete G8.loopChainStartedAt[q]}function xu6(q){if(q.length===0)return 0;let K=new Set(q),_=G8.sessionCronTasks.filter((Y)=>!K.has(Y.id)),z=G8.sessionCronTasks.length-_.length;if(z===0)return 0;return G8.sessionCronTasks=_,z}function Iu6(q){G8.sessionTrustAccepted=q}function MD6(){return G8.sessionTrustAccepted}function ms8(q){G8.sessionPersistenceDisabled=q}function ok(){return G8.sessionPersistenceDisabled}function uu6(){return G8.hasExitedPlanMode}function $L(q){G8.hasExitedPlanMode=q}function Bs8(){return G8.needsPlanModeExitAttachment}function gI(q){G8.needsPlanModeExitAttachment=q}function Kn(q,K){if(K==="plan"&&q!=="plan")G8.needsPlanModeExitAttachment=!1;if(q==="plan"&&K!=="plan")G8.needsPlanModeExitAttachment=!0}function ps8(){return G8.needsAutoModeExitAttachment}function CG(q){G8.needsAutoModeExitAttachment=q}function gs8(q,K){if(q==="auto"&&K==="plan"||q==="plan"&&K==="auto")return;let _=q==="auto",z=K==="auto";if(z&&!_)G8.needsAutoModeExitAttachment=!1;if(_&&!z)G8.needsAutoModeExitAttachment=!0}function Fs8(){return G8.lspRecommendationShownThisSession}function Us8(q){G8.lspRecommendationShownThisSession=q}function Qs8(q){G8.initJsonSchema=q}function Bz8(){return G8.initJsonSchema}function z66(q){if(!G8.registeredHooks)G8.registeredHooks={};for(let[K,_]of Object.entries(q)){let z=K;if(!G8.registeredHooks[z])G8.registeredHooks[z]=[];G8.registeredHooks[z].push(..._)}}function zS(){return G8.registeredHooks}function U25(){G8.registeredHooks=null}function pz8(){if(!G8.registeredHooks)return;let q={};for(let[K,_]of Object.entries(G8.registeredHooks)){let z=_.filter((Y)=>!("pluginRoot"in Y));if(z.length>0)q[K]=z}G8.registeredHooks=Object.keys(q).length>0?q:null}function YP7(){G8.initJsonSchema=null,G8.registeredHooks=null}function h_6(){return G8.planSlugCache}function mu6(){return G8.sessionCreatedTeams}function Bu6(q){G8.teleportedSessionInfo={isTeleported:!0,hasLoggedFirstMessage:!1,sessionId:q.sessionId}}function gz8(){return G8.teleportedSessionInfo}function Fz8(){if(G8.teleportedSessionInfo)G8.teleportedSessionInfo.hasLoggedFirstMessage=!0}function XD6(q,K,_,z=null){let Y=`${z??""}:${q}`;G8.invokedSkills.set(Y,{skillName:q,skillPath:K,content:_,invokedAt:Date.now(),agentId:z})}function Q25(){return G8.invokedSkills}function ds8(q){let K=q??null,_=new Map;for(let[z,Y]of G8.invokedSkills)if(Y.agentId===K)_.set(z,Y);return _}function cs8(q){if(!q||q.size===0){G8.invokedSkills.clear();return}for(let[K,_]of G8.invokedSkills)if(_.agentId===null||!q.has(_.agentId))G8.invokedSkills.delete(K)}function Y66(q){for(let[K,_]of G8.invokedSkills)if(_.agentId===q)G8.invokedSkills.delete(K)}function AP7(q,K){return}function OP7(){if(G8.slowOperations.length===0)return tX7;let q=Date.now();if(G8.slowOperations.some((K)=>q-K.timestamp>=Ra8)){if(G8.slowOperations=G8.slowOperations.filter((K)=>q-K.timestamp<Ra8),G8.slowOperations.length===0)return tX7}return G8.slowOperations}function Ng(){return G8.mainThreadAgentType}function _n(q){G8.mainThreadAgentType=q}function cK(){return G8.isRemoteMode}function ls8(q){G8.isRemoteMode=q}function ns8(){return G8.systemPromptSectionCache}function is8(q,K){G8.systemPromptSectionCache.set(q,K)}function rs8(){G8.systemPromptSectionCache.clear()}function os8(){return G8.lastEmittedDate}function PD6(q){G8.lastEmittedDate=q}function bG(){return G8.additionalDirectoriesForClaudeMd}function pu6(q){G8.additionalDirectoriesForClaudeMd=q}function TJ(){return G8.allowedChannels}function zn(q){G8.allowedChannels=q}function Uz8(){return G8.hasDevChannels}function Qz8(q){G8.hasDevChannels=q}function as8(){return G8.promptCache1hAllowlist}function ss8(q){G8.promptCache1hAllowlist=q}function ts8(){return G8.afkModeHeaderLatched}function es8(q){G8.afkModeHeaderLatched=q}function qt8(){return G8.fastModeHeaderLatched}function Kt8(q){G8.fastModeHeaderLatched=q}function _t8(){return G8.cacheEditingHeaderLatched}function d25(q){G8.cacheEditingHeaderLatched=q}function zt8(){return G8.thinkingClearLatched}function Yt8(q){G8.thinkingClearLatched=q}function At8(){G8.afkModeHeaderLatched=null,G8.fastModeHeaderLatched=null,G8.cacheEditingHeaderLatched=null,G8.thinkingClearLatched=null}function gu6(){return G8.promptId}function Fu6(q){G8.promptId=q}var G8,ba8,xa8,la8=!1,ia8,ra8,aa8=0,sa8=null,Lz8=0,kz8=!1,Wu6,KP7=150,sX7=10,Ra8=1e4,tX7;var v8=L(()=>{UX7();ya8();tl();G8=eX7();ba8=E9(),xa8=ba8.subscribe;ia8=E9(),ra8=ia8.subscribe;tX7=[]});function dz8(q){let K;for(let _ in q)if(_.startsWith("_PROTO_")){if(K===void 0)K={...q};delete K[_]}return K??q}function $P7(q){if(A66!==null)return;if(A66=q,Uu6.length>0){let K=[...Uu6];Uu6.length=0,queueMicrotask(()=>{for(let _ of K)if(_.async)A66.logEventAsync(_.eventName,_.metadata);else A66.logEvent(_.eventName,_.metadata)})}}function d(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!1});return}A66.logEvent(q,K)}async function wP7(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!0});return}await A66.logEventAsync(q,K)}var Uu6,A66=null;var T8=L(()=>{Uu6=[]});function WD6({writeFn:q,flushIntervalMs:K=1000,maxBufferSize:_=100,maxBufferBytes:z=1/0,immediateMode:Y=!1}){let A=[],O=0,$=null,w=null;function j(){if($)clearTimeout($),$=null}function H(){if(w)q(w.join("")),w=null;if(A.length===0)return;q(A.join("")),A=[],O=0,j()}function J(){if(!$)$=setTimeout(H,K)}function M(){if(w){w.push(...A),A=[],O=0,j();return}let X=A;A=[],O=0,j(),w=X,setImmediate(()=>{let P=w;if(w=null,P)q(P.join(""))})}return{write(X){if(Y){q(X);return}if(A.push(X),O+=X.length,J(),A.length>=_||O>=z)M()},flush:H,dispose(){H()}}}function gq(q){return Ot8.add(q),()=>Ot8.delete(q)}async function jP7(){await Promise.all(Array.from(Ot8).map((q)=>q()))}var Ot8;var o9=L(()=>{Ot8=new Set});function c25(q){let K=[],_=q.match(/^MCP server ["']([^"']+)["']/);if(_&&_[1])K.push("mcp"),K.push(_[1].toLowerCase());else{let A=q.match(/^([^:[]+):/);if(A&&A[1])K.push(A[1].trim().toLowerCase())}let z=q.match(/^\[([^\]]+)]/);if(z&&z[1])K.push(z[1].trim().toLowerCase());if(q.toLowerCase().includes("1p event:"))K.push("1p");let Y=q.match(/:\s*([^:]+?)(?:\s+(?:type|mode|status|event))?:/);if(Y&&Y[1]){let A=Y[1].trim().toLowerCase();if(A.length<30&&!A.includes(" "))K.push(A)}return Array.from(new Set(K))}function l25(q,K){if(!K)return!0;if(q.length===0)return!1;if(K.isExclusive)return!q.some((_)=>K.exclude.includes(_));else return q.some((_)=>K.include.includes(_))}function JP7(q,K){if(!K)return!0;let _=c25(q);return l25(_,K)}var HP7;var MP7=L(()=>{h4();HP7=A1((q)=>{if(!q||q.trim()==="")return null;let K=q.split(",").map((A)=>A.trim()).filter(Boolean);if(K.length===0)return null;let _=K.some((A)=>A.startsWith("!")),z=K.some((A)=>!A.startsWith("!"));if(_&&z)return null;let Y=K.map((A)=>A.replace(/^!/,"").toLowerCase());return{include:_?[]:Y,exclude:_?Y:[],isExclusive:_}})});import{homedir as n25}from"os";import{join as XP7}from"path";function fD6(){return XP7(O7(),"teams")}function ZD6(q){let K=process.env.NODE_OPTIONS;if(!K)return!1;return K.split(/\s+/).includes(q)}function Yn(q,K){if(q===void 0)return K;let _=parseInt(q,10);return Number.isNaN(_)?K:_}function B6(q){if(!q)return!1;if(typeof q==="boolean")return q;let K=q.toLowerCase().trim();return["1","true","yes","on"].includes(K)}function a9(q){if(q===void 0)return!1;if(typeof q==="boolean")return!q;if(!q)return!1;let K=q.toLowerCase().trim();return["0","false","no","off"].includes(K)}function D9(){return B6(process.env.CLAUDE_CODE_SIMPLE)||process.argv.includes("--bare")}function PP7(q){let K={};if(q)for(let _ of q){let[z,...Y]=_.split("=");if(!z||Y.length===0)throw Error(`Invalid environment variable format: ${_}, environment variables should be added as: -e KEY1=value1 -e KEY2=value2`);K[z]=Y.join("=")}return K}function YS(){return process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION||"us-east-1"}function cz8(){return process.env.CLOUD_ML_REGION||"us-east5"}function DP7(){return B6(process.env.CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR)}function Af(){return!1}function AS(){return!1}function WP7(){return{namespace:void 0,cluster:void 0}}function lz8(q){if(q){let K=i25.find(([_])=>q.startsWith(_));if(K)return process.env[K[1]]||cz8()}return cz8()}var O7,i25;var B8=L(()=>{h4();O7=A1(()=>{return(process.env.CLAUDE_CONFIG_DIR??XP7(n25(),".claude")).normalize("NFC")},()=>process.env.CLAUDE_CONFIG_DIR);i25=[["claude-haiku-4-5","VERTEX_REGION_CLAUDE_HAIKU_4_5"],["claude-3-5-haiku","VERTEX_REGION_CLAUDE_3_5_HAIKU"],["claude-3-5-sonnet","VERTEX_REGION_CLAUDE_3_5_SONNET"],["claude-3-7-sonnet","VERTEX_REGION_CLAUDE_3_7_SONNET"],["claude-opus-4-6","VERTEX_REGION_CLAUDE_4_6_OPUS"],["claude-opus-4-1","VERTEX_REGION_CLAUDE_4_1_OPUS"],["claude-opus-4","VERTEX_REGION_CLAUDE_4_0_OPUS"],["claude-sonnet-4-6","VERTEX_REGION_CLAUDE_4_6_SONNET"],["claude-sonnet-4-5","VERTEX_REGION_CLAUDE_4_5_SONNET"],["claude-sonnet-4","VERTEX_REGION_CLAUDE_4_0_SONNET"]]});function $4(q,K,_,z,Y){if(z==="m")throw TypeError("Private method is not writable");if(z==="a"&&!Y)throw TypeError("Private accessor was defined without a setter");if(typeof K==="function"?q!==K||!Y:!K.has(q))throw TypeError("Cannot write private member to an object whose class did not declare it");return z==="a"?Y.call(q,_):Y?Y.value=_:K.set(q,_),_}function u1(q,K,_,z){if(_==="a"&&!z)throw TypeError("Private accessor was defined without a getter");if(typeof K==="function"?q!==K||!z:!K.has(q))throw TypeError("Cannot read private member from an object whose class did not declare it");return _==="m"?z:_==="a"?z.call(q):z?z.value:K.get(q)}var An=()=>{};var $t8=function(){let{crypto:q}=globalThis;if(q?.randomUUID)return $t8=q.randomUUID.bind(q),q.randomUUID();let K=new Uint8Array(1),_=q?()=>q.getRandomValues(K)[0]:()=>Math.random()*255&255;return"[CREDIT_CARD]-[CREDIT_CARD]".replace(/[018]/g,(z)=>(+z^_()&15>>+z/4).toString(16))};function On(q){return typeof q==="object"&&q!==null&&(("name"in q)&&q.name==="AbortError"||("message"in q)&&String(q.message).includes("FetchRequestCanceledException"))}var Qu6=(q)=>{if(q instanceof Error)return q;if(typeof q==="object"&&q!==null){try{if(Object.prototype.toString.call(q)==="[object Error]"){let K=Error(q.message,q.cause?{cause:q.cause}:{});if(q.stack)K.stack=q.stack;if(q.cause&&!K.cause)K.cause=q.cause;if(q.name)K.name=q.name;return K}}catch{}try{return Error(JSON.stringify(q))}...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"!=null){if(typeof K!==\"object\"&&typeof K!==\"function\")throw TypeError('Object expected to be assigned to \"using\" declaration');var z;if(_)z=K[PA5];if(z===void 0)z=K[XA5];if(typeof z!==\"function\")throw TypeError(\"Object not disposable\");q.push([_,z,K])}else if(_)q.push([_]);return K},nz=(q,K,_)=>{var z=typeof SuppressedError===\"function\"?SuppressedError:function(O,$,w,j){return j=Error(w),j.name=\"SuppressedError\",j.error=O,j.suppressed=$,j},Y=(O)=>K=_?new z(O,K,\"An error was suppressed during disposal\"):(_=!0,O),A=(O)=>{while(O=q.pop())try{var $=O[1]&&O[1].call(O[2]);if(O[0])return Promise.resolve($).then(A,(w)=>(Y(w),A()))}catch(w){Y(w)}if(_)throw K};return A()};function DA5(){this.__data__=[],this.size=0}var PJ7;var DJ7=L(()=>{PJ7=DA5});function WA5(q,K){return q===K||q!==q&&K!==K}var Pg;var pP6=L(()=>{Pg=WA5});function fA5(q,K){var _=q.length;while(_--)if(Pg(q[_][0],K))return _;return-1}var de;var qu6=L(()=>{pP6();de=fA5});function vA5(q){var K=this.__data__,_=de(K,q);if(_<0)return!1;var z=K.length-1;if(_==z)K.pop();else GA5.call(K,_,1);return--this.size,!0}var ZA5,GA5,WJ7;var fJ7=L(()=>{qu6();ZA5=Array.prototype,GA5=ZA5.splice;WJ7=vA5});function TA5(q){var K=this.__data__,_=de(K,q);return _<0?void 0:K[_][1]}var ZJ7;var GJ7=L(()=>{qu6();ZJ7=TA5});function VA5(q){return de(this.__data__,q)>-1}var vJ7;var TJ7=L(()=>{qu6();vJ7=VA5});function kA5(q,K){var _=this.__data__,z=de(_,q);if(z<0)++this.size,_.push([q,K]);else _[z][1]=K;return this}var VJ7;var kJ7=L(()=>{qu6();VJ7=kA5});function gP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var ce;var Ku6=L(()=>{DJ7();fJ7();GJ7();TJ7();kJ7();gP6.prototype.clear=PJ7;gP6.prototype.delete=WJ7;gP6.prototype.get=ZJ7;gP6.prototype.has=vJ7;gP6.prototype.set=VJ7;ce=gP6});function NA5(){this.__data__=new ce,this.size=0}var NJ7;var yJ7=L(()=>{Ku6();NJ7=NA5});function yA5(q){var K=this.__data__,_=K.delete(q);return this.size=K.size,_}var EJ7;var LJ7=L(()=>{EJ7=yA5});function EA5(q){return this.__data__.get(q)}var hJ7;var RJ7=L(()=>{hJ7=EA5});function LA5(q){return this.__data__.has(q)}var SJ7;var CJ7=L(()=>{SJ7=LA5});var hA5,g_8;var Aa8=L(()=>{hA5=typeof global==\"object\"&&global&&global.Object===Object&&global,g_8=hA5});var RA5,SA5,vJ;var sR=L(()=>{Aa8();RA5=typeof self==\"object\"&&self&&self.Object===Object&&self,SA5=g_8||RA5||Function(\"return this\")(),vJ=SA5});var CA5,YW;var J_6=L(()=>{sR();CA5=vJ.Symbol,YW=CA5});function IA5(q){var K=bA5.call(q,_u6),_=q[_u6];try{q[_u6]=void 0;var z=!0}catch(A){}var Y=xA5.call(q);if(z)if(K)q[_u6]=_;else delete q[_u6];return Y}var bJ7,bA5,xA5,_u6,xJ7;var IJ7=L(()=>{J_6();bJ7=Object.prototype,bA5=bJ7.hasOwnProperty,xA5=bJ7.toString,_u6=YW?YW.toStringTag:void 0;xJ7=IA5});function BA5(q){return mA5.call(q)}var uA5,mA5,uJ7;var mJ7=L(()=>{uA5=Object.prototype,mA5=uA5.toString;uJ7=BA5});function FA5(q){if(q==null)return q===void 0?gA5:pA5;return BJ7&&BJ7 in Object(q)?xJ7(q):uJ7(q)}var pA5=\"[object Null]\",gA5=\"[object Undefined]\",BJ7,YL;var M_6=L(()=>{J_6();IJ7();mJ7();BJ7=YW?YW.toStringTag:void 0;YL=FA5});function UA5(q){var K=typeof q;return q!=null&&(K==\"object\"||K==\"function\")}var PO;var hT=L(()=>{PO=UA5});function nA5(q){if(!PO(q))return!1;var K=YL(q);return K==dA5||K==cA5||K==QA5||K==lA5}var QA5=\"[object AsyncFunction]\",dA5=\"[object Function]\",cA5=\"[object GeneratorFunction]\",lA5=\"[object Proxy]\",FP6;var F_8=L(()=>{M_6();hT();FP6=nA5});var iA5,U_8;var pJ7=L(()=>{sR();iA5=vJ[\"__core-js_shared__\"],U_8=iA5});function rA5(q){return!!gJ7&&gJ7 in q}var gJ7,FJ7;var UJ7=L(()=>{pJ7();gJ7=function(){var q=/[^.]+$/.exec(U_8&&U_8.keys&&U_8.keys.IE_PROTO||\"\");return q?\"Symbol(src)_1.\"+q:\"\"}();FJ7=rA5});function sA5(q){if(q!=null){try{return aA5.call(q)}catch(K){}try{return q+\"\"}catch(K){}}return\"\"}var oA5,aA5,rl;var Oa8=L(()=>{oA5=Function.prototype,aA5=oA5.toString;rl=sA5});function AO5(q){if(!PO(q)||FJ7(q))return!1;var K=FP6(q)?YO5:eA5;return K.test(rl(q))}var tA5,eA5,qO5,KO5,_O5,zO5,YO5,QJ7;var dJ7=L(()=>{F_8();UJ7();hT();Oa8();tA5=/[\\\\^$.*+?()[\\]{}|]/g,eA5=/^\\[object .+?Constructor\\]$/,qO5=Function.prototype,KO5=Object.prototype,_O5=qO5.toString,zO5=KO5.hasOwnProperty,YO5=RegExp(\"^\"+_O5.call(zO5).replace(tA5,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");QJ7=AO5});function OO5(q,K){return q==null?void 0:q[K]}var cJ7;var lJ7=L(()=>{cJ7=OO5});function $O5(q,K){var _=cJ7(q,K);return QJ7(_)?_:void 0}var ik;var le=L(()=>{dJ7();lJ7();ik=$O5});var wO5,ne;var Q_8=L(()=>{le();sR();wO5=ik(vJ,\"Map\"),ne=wO5});var jO5,ol;var zu6=L(()=>{le();jO5=ik(Object,\"create\"),ol=jO5});function HO5(){this.__data__=ol?ol(null):{},this.size=0}var nJ7;var iJ7=L(()=>{zu6();nJ7=HO5});function JO5(q){var K=this.has(q)&&delete this.__data__[q];return this.size-=K?1:0,K}var rJ7;var oJ7=L(()=>{rJ7=JO5});function DO5(q){var K=this.__data__;if(ol){var _=K[q];return _===MO5?void 0:_}return PO5.call(K,q)?K[q]:void 0}var MO5=\"__lodash_hash_undefined__\",XO5,PO5,aJ7;var sJ7=L(()=>{zu6();XO5=Object.prototype,PO5=XO5.hasOwnProperty;aJ7=DO5});function ZO5(q){var K=this.__data__;return ol?K[q]!==void 0:fO5.call(K,q)}var WO5,fO5,tJ7;var eJ7=L(()=>{zu6();WO5=Object.prototype,fO5=WO5.hasOwnProperty;tJ7=ZO5});function vO5(q,K){var _=this.__data__;return this.size+=this.has(q)?0:1,_[q]=ol&&K===void 0?GO5:K,this}var GO5=\"__lodash_hash_undefined__\",qM7;var KM7=L(()=>{zu6();qM7=vO5});function UP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var $a8;var _M7=L(()=>{iJ7();oJ7();sJ7();eJ7();KM7();UP6.prototype.clear=nJ7;UP6.prototype.delete=rJ7;UP6.prototype.get=aJ7;UP6.prototype.has=tJ7;UP6.prototype.set=qM7;$a8=UP6});function TO5(){this.size=0,this.__data__={hash:new $a8,map:new(ne||ce),string:new $a8}}var zM7;var YM7=L(()=>{_M7();Ku6();Q_8();zM7=TO5});function VO5(q){var K=typeof q;return K==\"string\"||K==\"number\"||K==\"symbol\"||K==\"boolean\"?q!==\"__proto__\":q===null}var AM7;var OM7=L(()=>{AM7=VO5});function kO5(q,K){var _=q.__data__;return AM7(K)?_[typeof K==\"string\"?\"string\":\"hash\"]:_.map}var ie;var Yu6=L(()=>{OM7();ie=kO5});function NO5(q){var K=ie(this,q).delete(q);return this.size-=K?1:0,K}var $M7;var wM7=L(()=>{Yu6();$M7=NO5});function yO5(q){return ie(this,q).get(q)}var jM7;var HM7=L(()=>{Yu6();jM7=yO5});function EO5(q){return ie(this,q).has(q)}var JM7;var MM7=L(()=>{Yu6();JM7=EO5});function LO5(q,K){var _=ie(this,q),z=_.size;return _.set(q,K),this.size+=_.size==z?0:1,this}var XM7;var PM7=L(()=>{Yu6();XM7=LO5});function QP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var X_6;var d_8=L(()=>{YM7();wM7();HM7();MM7();PM7();QP6.prototype.clear=zM7;QP6.prototype.delete=$M7;QP6.prototype.get=jM7;QP6.prototype.has=JM7;QP6.prototype.set=XM7;X_6=QP6});function RO5(q,K){var _=this.__data__;if(_ instanceof ce){var z=_.__data__;if(!ne||z.length<hO5-1)return z.push([q,K]),this.size=++_.size,this;_=this.__data__=new X_6(z)}return _.set(q,K),this.size=_.size,this}var hO5=200,DM7;var WM7=L(()=>{Ku6();Q_8();d_8();DM7=RO5});function dP6(q){var K=this.__data__=new ce(q);this.size=K.size}var Dg;var Au6=L(()=>{Ku6();yJ7();LJ7();RJ7();CJ7();WM7();dP6.prototype.clear=NJ7;dP6.prototype.delete=EJ7;dP6.prototype.get=hJ7;dP6.prototype.has=SJ7;dP6.prototype.set=DM7;Dg=dP6});function CO5(q){return this.__data__.set(q,SO5),this}var SO5=\"__lodash_hash_undefined__\",fM7;var ZM7=L(()=>{fM7=CO5});function bO5(q){return this.__data__.has(q)}var GM7;var vM7=L(()=>{GM7=bO5});function c_8(q){var K=-1,_=q==null?0:q.length;this.__data__=new X_6;while(++K<_)this.add(q[K])}var l_8;var wa8=L(()=>{d_8();ZM7();vM7();c_8.prototype.add=c_8.prototype.push=fM7;c_8.prototype.has=GM7;l_8=c_8});function xO5(q,K){var _=-1,z=q==null?0:q.length;while(++_<z)if(K(q[_],_,q))return!0;return!1}var TM7;var VM7=L(()=>{TM7=xO5});function IO5(q,K){return q.has(K)}var n_8;var ja8=L(()=>{n_8=IO5});function BO5(q,K,_,z,Y,A){var O=_&uO5,$=q.length,w=K.length;if($!=w&&!(O&&w>$))return!1;var j=A.get(q),H=A.get(K);if(j&&H)return j==K&&H==q;var J=-1,M=!0,X=_&mO5?new l_8:void 0;A.set(q,K),A.set(K,q);while(++J<$){var P=q[J],D=K[J];if(z)var W=O?z(D,P,J,K,q,A):z(P,D,J,q,K,A);if(W!==void 0){if(W)continue;M=!1;break}if(X){if(!TM7(K,function(f,G){if(!n_8(X,G)&&(P===f||Y(P,f,_,z,A)))return X.push(G)})){M=!1;break}}else if(!(P===D||Y(P,D,_,z,A))){M=!1;break}}return A.delete(q),A.delete(K),M}var uO5=1,mO5=2,i_8;var Ha8=L(()=>{wa8();VM7();ja8();i_8=BO5});var pO5,cP6;var Ja8=L(()=>{sR();pO5=vJ.Uint8Array,cP6=pO5});function gO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z,Y){_[++K]=[Y,z]}),_}var kM7;var NM7=L(()=>{kM7=gO5});function FO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z){_[++K]=z}),_}var lP6;var r_8=L(()=>{lP6=FO5});function q$5(q,K,_,z,Y,A,O){switch(_){case eO5:if(q.byteLength!=K.byteLength||q.byteOffset!=K.byteOffset)return!1;q=q.buffer,K=K.buffer;case tO5:if(q.byteLength!=K.byteLength||!A(new cP6(q),new cP6(K)))return!1;return!0;case dO5:case cO5:case iO5:return Pg(+q,+K);case lO5:return q.name==K.name&&q.message==K.message;case rO5:case aO5:return q==K+\"\";case nO5:var $=kM7;case oO5:var w=z&UO5;if($||($=lP6),q.size!=K.size&&!w)return!1;var j=O.get(q);if(j)return j==K;z|=QO5,O.set(q,K);var H=i_8($(q),$(K),z,Y,A,O);return O.delete(q),H;case sO5:if(Ma8)return Ma8.call(q)==Ma8.call(K)}return!1}var UO5=1,QO5=2,dO5=\"[object Boolean]\",cO5=\"[object Date]\",lO5=\"[object Error]\",nO5=\"[object Map]\",iO5=\"[object Number]\",rO5=\"[object RegExp]\",oO5=\"[object Set]\",aO5=\"[object String]\",sO5=\"[object Symbol]\",tO5=\"[object ArrayBuffer]\",eO5=\"[object DataView]\",yM7,Ma8,EM7;var LM7=L(()=>{J_6();Ja8();pP6();Ha8();NM7();r_8();yM7=YW?YW.prototype:void 0,Ma8=yM7?yM7.valueOf:void 0;EM7=q$5});function K$5(q,K){var _=-1,z=K.length,Y=q.length;while(++_<z)q[Y+_]=K[_];return q}var nP6;var o_8=L(()=>{nP6=K$5});var _$5,DO;var RT=L(()=>{_$5=Array.isArray,DO=_$5});function z$5(q,K,_){var z=K(q);return DO(q)?z:nP6(z,_(q))}var a_8;var Xa8=L(()=>{o_8();RT();a_8=z$5});function Y$5(q,K){var _=-1,z=q==null?0:q.length,Y=0,A=[];while(++_<z){var O=q[_];if(K(O,_,q))A[Y++]=O}return A}var s_8;var Pa8=L(()=>{s_8=Y$5});function A$5(){return[]}var t_8;var Da8=L(()=>{t_8=A$5});var O$5,$$5,hM7,w$5,iP6;var e_8=L(()=>{Pa8();Da8();O$5=Object.prototype,$$5=O$5.propertyIsEnumerable,hM7=Object.getOwnPropertySymbols,w$5=!hM7?t_8:function(q){if(q==null)return[];return q=Object(q),s_8(hM7(q),function(K){return $$5.call(q,K)})},iP6=w$5});function j$5(q,K){var _=-1,z=Array(q);while(++_<q)z[_]=K(_);return z}var RM7;var SM7=L(()=>{RM7=j$5});function H$5(q){return q!=null&&typeof q==\"object\"}var QP;var Wg=L(()=>{QP=H$5});function M$5(q){return QP(q)&&YL(q)==J$5}var J$5=\"[object Arguments]\",Wa8;var CM7=L(()=>{M_6();Wg();Wa8=M$5});var bM7,X$5,P$5,D$5,al;var Ou6=L(()=>{CM7();Wg();bM7=Object.prototype,X$5=bM7.hasOwnProperty,P$5=bM7.propertyIsEnumerable,D$5=Wa8(function(){return arguments}())?Wa8:function(q){return QP(q)&&X$5.call(q,\"callee\")&&!P$5.call(q,\"callee\")},al=D$5});function W$5(){return!1}var xM7;var IM7=L(()=>{xM7=W$5});var Kz8={};f8(Kz8,{default:()=>fg});var BM7,uM7,f$5,mM7,Z$5,G$5,fg;var $u6=L(()=>{sR();IM7();BM7=typeof Kz8==\"object\"&&Kz8&&!Kz8.nodeType&&Kz8,uM7=BM7&&typeof qz8==\"object\"&&qz8&&!qz8.nodeType&&qz8,f$5=uM7&&uM7.exports===BM7,mM7=f$5?vJ.Buffer:void 0,Z$5=mM7?mM7.isBuffer:void 0,G$5=Z$5||xM7,fg=G$5});function V$5(q,K){var _=typeof q;return K=K==null?v$5:K,!!K&&(_==\"number\"||_!=\"symbol\"&&T$5.test(q))&&(q>-1&&q%1==0&&q<K)}var v$5=9007199254740991,T$5,re;var wu6=L(()=>{T$5=/^(?:0|[1-9]\\d*)$/;re=V$5});function N$5(q){return typeof q==\"number\"&&q>-1&&q%1==0&&q<=k$5}var k$5=9007199254740991,rP6;var _z8=L(()=>{rP6=N$5});function o$5(q){return QP(q)&&rP6(q.length)&&!!G2[YL(q)]}var y$5=\"[object Arguments]\",E$5=\"[object Array]\",L$5=\"[object Boolean]\",h$5=\"[object Date]\",R$5=\"[object Error]\",S$5=\"[object Function]\",C$5=\"[object Map]\",b$5=\"[object Number]\",x$5=\"[object Object]\",I$5=\"[object RegExp]\",u$5=\"[object Set]\",m$5=\"[object String]\",B$5=\"[object WeakMap]\",p$5=\"[object ArrayBuffer]\",g$5=\"[object DataView]\",F$5=\"[object Float32Array]\",U$5=\"[object Float64Array]\",Q$5=\"[object Int8Array]\",d$5=\"[object Int16Array]\",c$5=\"[object Int32Array]\",l$5=\"[object Uint8Array]\",n$5=\"[object Uint8ClampedArray]\",i$5=\"[object Uint16Array]\",r$5=\"[object Uint32Array]\",G2,pM7;var gM7=L(()=>{M_6();_z8();Wg();G2={};G2[F$5]=G2[U$5]=G2[Q$5]=G2[d$5]=G2[c$5]=G2[l$5]=G2[n$5]=G2[i$5]=G2[r$5]=!0;G2[y$5]=G2[E$5]=G2[p$5]=G2[L$5]=G2[g$5]=G2[h$5]=G2[R$5]=G2[S$5]=G2[C$5]=G2[b$5]=G2[x$5]=G2[I$5]=G2[u$5]=G2[m$5]=G2[B$5]=!1;pM7=o$5});function a$5(q){return function(K){return q(K)}}var oP6;var zz8=L(()=>{oP6=a$5});var Az8={};f8(Az8,{default:()=>Zg});var FM7,ju6,s$5,fa8,t$5,Zg;var Oz8=L(()=>{Aa8();FM7=typeof Az8==\"object\"&&Az8&&!Az8.nodeType&&Az8,ju6=FM7&&typeof Yz8==\"object\"&&Yz8&&!Yz8.nodeType&&Yz8,s$5=ju6&&ju6.exports===FM7,fa8=s$5&&g_8.process,t$5=function(){try{var q=ju6&&ju6.require&&ju6.require(\"util\").types;if(q)return q;return fa8&&fa8.binding&&fa8.binding(\"util\")}catch(K){}}(),Zg=t$5});var UM7,e$5,aP6;var $z8=L(()=>{gM7();zz8();Oz8();UM7=Zg&&Zg.isTypedArray,e$5=UM7?oP6(UM7):pM7,aP6=e$5});function _w5(q,K){var _=DO(q),z=!_&&al(q),Y=!_&&!z&&fg(q),A=!_&&!z&&!Y&&aP6(q),O=_||z||Y||A,$=O?RM7(q.length,String):[],w=$.length;for(var j in q)if((K||Kw5.call(q,j))&&!(O&&(j==\"length\"||Y&&(j==\"offset\"||j==\"parent\")||A&&(j==\"buffer\"||j==\"byteLength\"||j==\"byteOffset\")||re(j,w))))$.push(j);return $}var qw5,Kw5,wz8;var Za8=L(()=>{SM7();Ou6();RT();$u6();wu6();$z8();qw5=Object.prototype,Kw5=qw5.hasOwnProperty;wz8=_w5});function Yw5(q){var K=q&&q.constructor,_=typeof K==\"function\"&&K.prototype||zw5;return q===_}var zw5,sP6;var jz8=L(()=>{zw5=Object.prototype;sP6=Yw5});function Aw5(q,K){return function(_){return q(K(_))}}var Hz8;var Ga8=L(()=>{Hz8=Aw5});var Ow5,QM7;var dM7=L(()=>{Ga8();Ow5=Hz8(Object.keys,Object),QM7=Ow5});function jw5(q){if(!sP6(q))return QM7(q);var K=[];for(var _ in Object(q))if(ww5.call(q,_)&&_!=\"constructor\")K.push(_);return K}var $w5,ww5,cM7;var lM7=L(()=>{jz8();dM7();$w5=Object.prototype,ww5=$w5.hasOwnProperty;cM7=jw5});function Hw5(q){return q!=null&&rP6(q.length)&&!FP6(q)}var Gg;var tP6=L(()=>{F_8();_z8();Gg=Hw5});function Jw5(q){return Gg(q)?wz8(q):cM7(q)}var tR;var P_6=L(()=>{Za8();lM7();tP6();tR=Jw5});function Mw5(q){return a_8(q,tR,iP6)}var Hu6;var va8=L(()=>{Xa8();e_8();P_6();Hu6=Mw5});function Ww5(q,K,_,z,Y,A){var O=_&Xw5,$=Hu6(q),w=$.length,j=Hu6(K),H=j.length;if(w!=H&&!O)return!1;var J=w;while(J--){var M=$[J];if(!(O?M in K:Dw5.call(K,M)))return!1}var X=A.get(q),P=A.get(K);if(X&&P)return X==K&&P==q;var D=!0;A.set(q,K),A.set(K,q);var W=O;while(++J<w){M=$[J];var f=q[M],G=K[M];if(z)var Z=O?z(G,f,M,K,q,A):z(f,G,M,q,K,A);if(!(Z===void 0?f===G||Y(f,G,_,z,A):Z)){D=!1;break}W||(W=M==\"constructor\")}if(D&&!W){var v=q.constructor,V=K.constructor;if(v!=V&&((\"constructor\"in q)&&(\"constructor\"in K))&&!(typeof v==\"function\"&&v instanceof v&&typeof V==\"function\"&&V instanceof V))D=!1}return A.delete(q),A.delete(K),D}var Xw5=1,Pw5,Dw5,nM7;var iM7=L(()=>{va8();Pw5=Object.prototype,Dw5=Pw5.hasOwnProperty;nM7=Ww5});var fw5,Jz8;var rM7=L(()=>{le();sR();fw5=ik(vJ,\"DataView\"),Jz8=fw5});var Zw5,Mz8;var oM7=L(()=>{le();sR();Zw5=ik(vJ,\"Promise\"),Mz8=Zw5});var Gw5,oe;var Ta8=L(()=>{le();sR();Gw5=ik(vJ,\"Set\"),oe=Gw5});var vw5,Xz8;var aM7=L(()=>{le();sR();vw5=ik(vJ,\"WeakMap\"),Xz8=vw5});var sM7=\"[object Map]\",Tw5=\"[object Object]\",tM7=\"[object Promise]\",eM7=\"[object Set]\",qX7=\"[object WeakMap]\",KX7=\"[object DataView]\",Vw5,kw5,Nw5,yw5,Ew5,D_6,sl;var Ju6=L(()=>{rM7();Q_8();oM7();Ta8();aM7();M_6();Oa8();Vw5=rl(Jz8),kw5=rl(ne),Nw5=rl(Mz8),yw5=rl(oe),Ew5=rl(Xz8),D_6=YL;if(Jz8&&D_6(new Jz8(new ArrayBuffer(1)))!=KX7||ne&&D_6(new ne)!=sM7||Mz8&&D_6(Mz8.resolve())!=tM7||oe&&D_6(new oe)!=eM7||Xz8&&D_6(new Xz8)!=qX7)D_6=function(q){var K=YL(q),_=K==Tw5?q.constructor:void 0,z=_?rl(_):\"\";if(z)switch(z){case Vw5:return KX7;case kw5:return sM7;case Nw5:return tM7;case yw5:return eM7;case Ew5:return qX7}return K};sl=D_6});function Rw5(q,K,_,z,Y,A){var O=DO(q),$=DO(K),w=O?zX7:sl(q),j=$?zX7:sl(K);w=w==_X7?Pz8:w,j=j==_X7?Pz8:j;var H=w==Pz8,J=j==Pz8,M=w==j;if(M&&fg(q)){if(!fg(K))return!1;O=!0,H=!1}if(M&&!H)return A||(A=new Dg),O||aP6(q)?i_8(q,K,_,z,Y,A):EM7(q,K,w,_,z,Y,A);if(!(_&Lw5)){var X=H&&YX7.call(q,\"__wrapped__\"),P=J&&YX7.call(K,\"__wrapped__\");if(X||P){var D=X?q.value():q,W=P?K.value():K;return A||(A=new Dg),Y(D,W,_,z,A)}}if(!M)return!1;return A||(A=new Dg),nM7(q,K,_,z,Y,A)}var Lw5=1,_X7=\"[object Arguments]\",zX7=\"[object Array]\",Pz8=\"[object Object]\",hw5,YX7,AX7;var OX7=L(()=>{Au6();Ha8();LM7();iM7();Ju6();RT();$u6();$z8();hw5=Object.prototype,YX7=hw5.hasOwnProperty;AX7=Rw5});function $X7(q,K,_,z,Y){if(q===K)return!0;if(q==null||K==null||!QP(q)&&!QP(K))return q!==q&&K!==K;return AX7(q,K,_,z,$X7,Y)}var eP6;var Dz8=L(()=>{OX7();Wg();eP6=$X7});function bw5(q,K,_,z){var Y=_.length,A=Y,O=!z;if(q==null)return!A;q=Object(q);while(Y--){var $=_[Y];if(O&&$[2]?$[1]!==q[$[0]]:!($[0]in q))return!1}while(++Y<A){$=_[Y];var w=$[0],j=q[w],H=$[1];if(O&&$[2]){if(j===void 0&&!(w in q))return!1}else{var J=new Dg;if(z)var M=z(j,H,w,q,K,J);if(!(M===void 0?eP6(H,j,Sw5|Cw5,z,J):M))return!1}}return!0}var Sw5=1,Cw5=2,wX7;var jX7=L(()=>{Au6();Dz8();wX7=bw5});function xw5(q){return q===q&&!PO(q)}var Wz8;var Va8=L(()=>{hT();Wz8=xw5});function Iw5(q){var K=tR(q),_=K.length;while(_--){var z=K[_],Y=q[z];K[_]=[z,Y,Wz8(Y)]}return K}var HX7;var JX7=L(()=>{Va8();P_6();HX7=Iw5});function uw5(q,K){return function(_){if(_==null)return!1;return _[q]===K&&(K!==void 0||(q in Object(_)))}}var fz8;var ka8=L(()=>{fz8=uw5});function mw5(q){var K=HX7(q);if(K.length==1&&K[0][2])return fz8(K[0][0],K[0][1]);return function(_){return _===q||wX7(_,q,K)}}var MX7;var XX7=L(()=>{jX7();JX7();ka8();MX7=mw5});function pw5(q){return typeof q==\"symbol\"||QP(q)&&YL(q)==Bw5}var Bw5=\"[object Symbol]\",ae;var Mu6=L(()=>{M_6();Wg();ae=pw5});function Uw5(q,K){if(DO(q))return!1;var _=typeof q;if(_==\"number\"||_==\"symbol\"||_==\"boolean\"||q==null||ae(q))return!0;return Fw5.test(q)||!gw5.test(q)||K!=null&&q in Object(K)}var gw5,Fw5,qD6;var Zz8=L(()=>{RT();Mu6();gw5=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,Fw5=/^\\w*$/;qD6=Uw5});function Na8(q,K){if(typeof q!=\"function\"||K!=null&&typeof K!=\"function\")throw TypeError(Qw5);var _=function(){var z=arguments,Y=K?K.apply(this,z):z[0],A=_.cache;if(A.has(Y))return A.get(Y);var O=q.apply(this,z);return _.cache=A.set(Y,O)||A,O};return _.cache=new(Na8.Cache||X_6),_}var Qw5=\"Expected a function\",A1;var h4=L(()=>{d_8();Na8.Cache=X_6;A1=Na8});function cw5(q){var K=A1(q,function(z){if(_.size===dw5)_.clear();return z}),_=K.cache;return K}var dw5=500,PX7;var DX7=L(()=>{h4();PX7=cw5});var lw5,nw5,iw5,WX7;var fX7=L(()=>{DX7();lw5=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,nw5=/\\\\(\\\\)?/g,iw5=PX7(function(q){var K=[];if(q.charCodeAt(0)===46)K.push(\"\");return q.replace(lw5,function(_,z,Y,A){K.push(Y?A.replace(nw5,\"$1\"):z||_)}),K}),WX7=iw5});function rw5(q,K){var _=-1,z=q==null?0:q.length,Y=Array(z);while(++_<z)Y[_]=K(q[_],_,q);return Y}var se;var Xu6=L(()=>{se=rw5});function vX7(q){if(typeof q==\"string\")return q;if(DO(q))return se(q,vX7)+\"\";if(ae(q))return GX7?GX7.call(q):\"\";var K=q+\"\";return K==\"0\"&&1/q==-ow5?\"-0\":K}var ow5=1/0,ZX7,GX7,TX7;var VX7=L(()=>{J_6();Xu6();RT();Mu6();ZX7=YW?YW.prototype:void 0,GX7=ZX7?ZX7.toString:void 0;TX7=vX7});function aw5(q){return q==null?\"\":TX7(q)}var KD6;var Gz8=L(()=>{VX7();KD6=aw5});function sw5(q,K){if(DO(q))return q;return qD6(q,K)?[q]:WX7(KD6(q))}var eR;var W_6=L(()=>{RT();Zz8();fX7();Gz8();eR=sw5});function ew5(q){if(typeof q==\"string\"||ae(q))return q;var K=q+\"\";return K==\"0\"&&1/q==-tw5?\"-0\":K}var tw5=1/0,qS;var f_6=L(()=>{Mu6();qS=ew5});function q25(q,K){K=eR(K,q);var _=0,z=K.length;while(q!=null&&_<z)q=q[qS(K[_++])];return _&&_==z?q:void 0}var te;var Pu6=L(()=>{W_6();f_6();te=q25});function K25(q,K,_){var z=q==null?void 0:te(q,K);return z===void 0?_:z}var kX7;var NX7=L(()=>{Pu6();kX7=K25});function _25(q,K){return q!=null&&K in Object(q)}var yX7;var EX7=L(()=>{yX7=_25});function z25(q,K,_){K=eR(K,q);var z=-1,Y=K.length,A=!1;while(++z<Y){var O=qS(K[z]);if(!(A=q!=null&&_(q,O)))break;q=q[O]}if(A||++z!=Y)return A;return Y=q==null?0:q.length,!!Y&&rP6(Y)&&re(O,Y)&&(DO(q)||al(q))}var LX7;var hX7=L(()=>{W_6();Ou6();RT();wu6();_z8();f_6();LX7=z25});function Y25(q,K){return q!=null&&LX7(q,K,yX7)}var RX7;var SX7=L(()=>{EX7();hX7();RX7=Y25});function $25(q,K){if(qD6(q)&&Wz8(K))return fz8(qS(q),K);return function(_){var z=kX7(_,q);return z===void 0&&z===K?RX7(_,q):eP6(K,z,A25|O25)}}var A25=1,O25=2,CX7;var bX7=L(()=>{Dz8();NX7();SX7();Zz8();Va8();ka8();f_6();CX7=$25});function w25(q){return q}var _D6;var vz8=L(()=>{_D6=w25});function j25(q){return function(K){return K==null?void 0:K[q]}}var xX7;var IX7=L(()=>{xX7=j25});function H25(q){return function(K){return te(K,q)}}var uX7;var mX7=L(()=>{Pu6();uX7=H25});function J25(q){return qD6(q)?xX7(qS(q)):uX7(q)}var BX7;var pX7=L(()=>{IX7();mX7();Zz8();f_6();BX7=J25});function M25(q){if(typeof q==\"function\")return q;if(q==null)return _D6;if(typeof q==\"object\")return DO(q)?CX7(q[0],q[1]):MX7(q);return BX7(q)}var rk;var ee=L(()=>{XX7();bX7();vz8();RT();pX7();rk=M25});function X25(q,K){var _,z=-1,Y=q.length;while(++z<Y){var A=K(q[z]);if(A!==void 0)_=_===void 0?A:_+A}return _}var gX7;var FX7=L(()=>{gX7=X25});function P25(q,K){return q&&q.length?gX7(q,rk(K,2)):0}var zD6;var UX7=L(()=>{ee();FX7();zD6=P25});import{randomUUID as Du6}from\"crypto\";var ya8=()=>{};function QX7(){return Ea8}function dX7(q){Ea8=q}function cX7(q){return Tz8.has(q)?Tz8.get(q):void 0}function lX7(q,K){Tz8.set(q,K)}function nX7(q){return La8.get(q)}function iX7(q,K){La8.set(q,K)}function AW(){Ea8=null,Tz8.clear(),La8.clear()}function Vz8(){return ha8}function rX7(q){ha8=q}function oX7(){ha8=void 0}var Ea8=null,Tz8,La8,ha8;var tl=L(()=>{Tz8=new Map;La8=new Map});function E9(){let q=new Set;return{subscribe(K){return q.add(K),()=>{q.delete(K)}},emit(...K){for(let _ of q)_(...K)},clear(){q.clear()}}}var DD6={};f8(DD6,{waitForScrollIdle:()=>Vu6,updateLastInteractionTime:()=>G_6,switchSession:()=>Yf,snapshotOutputTokensForTurn:()=>h25,setUserMsgOptIn:()=>Vg,setUseCoworkPlugins:()=>OL,setTracerProvider:()=>xz8,setThinkingClearLatched:()=>Yt8,setTeleportedSessionInfo:()=>Bu6,setSystemPromptSectionCacheEntry:()=>is8,setStrictToolResultPairing:()=>I25,setStatsStore:()=>ca8,setSessionTrustAccepted:()=>Iu6,setSessionSource:()=>fs8,setSessionPersistenceDisabled:()=>ms8,setSessionIngressToken:()=>y_6,setSessionBypassPermissionsMode:()=>Is8,setSdkBetas:()=>Ys8,setSdkAgentProgressSummariesEnabled:()=>Ps8,setScheduledTasksEnabled:()=>bu6,setQuestionPreviewFormat:()=>uz8,setPromptId:()=>Fu6,setPromptCache1hAllowlist:()=>ss8,setProjectRoot:()=>fu6,setOriginalCwd:()=>KS,setOauthTokenFromFd:()=>Vs8,setNeedsPlanModeExitAttachment:()=>gI,setNeedsAutoModeExitAttachment:()=>CG,setModelStrings:()=>Nu6,setMeterProvider:()=>bz8,setMeter:()=>As8,setMemoryToggledOff:()=>Ws8,setMainThreadAgentType:()=>_n,setMainLoopModelOverride:()=>dP,setLspRecommendationShownThisSession:()=>Us8,setLoopChainStartedAt:()=>g25,setLoggerProvider:()=>Sz8,setLastMainRequestId:()=>ea8,setLastEmittedDate:()=>PD6,setLastClassifierRequests:()=>hu6,setLastApiCompletionTimestamp:()=>Tu6,setLastAPIRequestMessages:()=>Ls8,setLastAPIRequest:()=>ys8,setKairosActive:()=>x25,setIsRemoteMode:()=>ls8,setIsInteractive:()=>Ms8,setInlinePlugins:()=>bs8,setInitialMainLoopModel:()=>zs8,setInitJsonSchema:()=>Qs8,setHasUnknownModelCost:()=>hz8,setHasExitedPlanMode:()=>$L,setHasDevChannels:()=>Qz8,setFlagSettingsPath:()=>Zs8,setFlagSettingsInline:()=>Gs8,setFastModeHeaderLatched:()=>Kt8,setEventLogger:()=>Cz8,setDirectConnectServerUrl:()=>W25,setCwdState:()=>Ia8,setCostStateForRestore:()=>ku6,setClientType:()=>Xs8,setChromeFlagOverride:()=>xs8,setCachedClaudeMdContent:()=>hs8,setCacheEditingHeaderLatched:()=>d25,setApiKeyFromFd:()=>Ns8,setAllowedSettingSources:()=>Cs8,setAllowedChannels:()=>zn,setAfkModeHeaderLatched:()=>es8,setAdditionalDirectoriesForClaudeMd:()=>pu6,setActiveRoutine:()=>Z25,resetTurnToolDuration:()=>Ua8,resetTurnHookDuration:()=>Fa8,resetTurnClassifierDuration:()=>da8,resetTotalDurationStateAndCost_FOR_TESTS_ONLY:()=>G25,resetStateForTests:()=>_P7,resetSdkInitState:()=>YP7,resetModelStringsForTestingOnly:()=>C25,resetCostState:()=>OD6,removeSessionCronTasks:()=>xu6,registerHookCallbacks:()=>z66,regenerateSessionId:()=>Sa8,preferThirdPartyAuthentication:()=>Ru6,onSessionSwitch:()=>xa8,onInteraction:()=>ra8,needsPlanModeExitAttachment:()=>Bs8,needsAutoModeExitAttachment:()=>ps8,markScrollActivity:()=>Ks8,markPostCompaction:()=>K66,markFirstTeleportMessageLogged:()=>Fz8,isSessionPersistenceDisabled:()=>ok,incrementBudgetContinuationCount:()=>S25,hasUnknownModelCost:()=>ta8,hasShownLspRecommendationThisSession:()=>Fs8,hasExitedPlanModeInSession:()=>uu6,handlePlanModeTransition:()=>Kn,handleAutoModeTransition:()=>gs8,getUserMsgOptIn:()=>AL,getUseCoworkPlugins:()=>Cu6,getUsageForModel:()=>_s8,getTurnToolDurationMs:()=>V25,getTurnToolCount:()=>k25,getTurnOutputTokens:()=>E25,getTurnHookDurationMs:()=>v25,getTurnHookCount:()=>T25,getTurnClassifierDurationMs:()=>N25,getTurnClassifierCount:()=>y25,getTracerProvider:()=>N_6,getTotalWebSearchRequests:()=>oa8,getTotalToolDuration:()=>ga8,getTotalOutputTokens:()=>el,getTotalLinesRemoved:()=>T_6,getTotalLinesAdded:()=>v_6,getTotalInputTokens:()=>V_6,getTotalDuration:()=>YD6,getTotalCostUSD:()=>XM,getTotalCacheReadInputTokens:()=>Zu6,getTotalCacheCreationInputTokens:()=>Gu6,getTotalAPIDurationWithoutRetries:()=>pa8,getTotalAPIDuration:()=>RG,getTokenCounter:()=>wD6,getThinkingClearLatched:()=>zt8,getTeleportedSessionInfo:()=>gz8,getSystemPromptSectionCache:()=>ns8,getStrictToolResultPairing:()=>Ds8,getStatsStore:()=>q66,getSlowOperations:()=>OP7,getSessionTrustAccepted:()=>MD6,getSessionSource:()=>u25,getSessionProjectDir:()=>Z_6,getSessionIngressToken:()=>vs8,getSessionId:()=>N8,getSessionCronTasks:()=>L_6,getSessionCreatedTeams:()=>mu6,getSessionCounter:()=>Os8,getSessionBypassPermissionsMode:()=>E_6,getSdkBetas:()=>OW,getSdkAgentProgressSummariesEnabled:()=>vg,getScheduledTasksEnabled:()=>JD6,getRegisteredHooks:()=>zS,getQuestionPreviewFormat:()=>Iz8,getPromptId:()=>gu6,getPromptCache1hAllowlist:()=>as8,getProjectRoot:()=>wz,getPrCounter:()=>yu6,getPlanSlugCache:()=>h_6,getParentSessionId:()=>Ca8,getOriginalCwd:()=>A7,getOauthTokenFromFd:()=>Ts8,getModelUsage:()=>ST,getModelStrings:()=>$D6,getMeterProvider:()=>Js8,getMeter:()=>b25,getMemoryToggledOff:()=>Tg,getMainThreadAgentType:()=>Ng,getMainLoopModelOverride:()=>pI,getLoopChainStartedAt:()=>p25,getLoggerProvider:()=>Lu6,getLocCounter:()=>Rz8,getLastMainRequestId:()=>vu6,getLastInteractionTime:()=>_S,getLastEmittedDate:()=>os8,getLastClassifierRequests:()=>zP7,getLastApiCompletionTimestamp:()=>qn,getLastAPIRequestMessages:()=>m25,getLastAPIRequest:()=>Es8,getKairosActive:()=>SG,getIsScrollDraining:()=>k_6,getIsRemoteMode:()=>cK,getIsNonInteractiveSession:()=>d7,getIsInteractive:()=>CT,getInvokedSkillsForAgent:()=>ds8,getInvokedSkills:()=>Q25,getInlinePlugins:()=>kg,getInitialMainLoopModel:()=>AD6,getInitJsonSchema:()=>Bz8,getHasDevChannels:()=>Uz8,getFlagSettingsPath:()=>_66,getFlagSettingsInline:()=>HD6,getFastModeHeaderLatched:()=>qt8,getEventLogger:()=>Hs8,getDirectConnectServerUrl:()=>ua8,getCwdState:()=>BI,getCurrentTurnTokenBudget:()=>L25,getCostCounter:()=>ws8,getCommitCounter:()=>$s8,getCodeEditToolDecisionCounter:()=>Eu6,getClientType:()=>jD6,getChromeFlagOverride:()=>Su6,getCachedClaudeMdContent:()=>Rs8,getCacheEditingHeaderLatched:()=>_t8,getBudgetContinuationCount:()=>R25,getApiKeyFromFd:()=>ks8,getAllowedSettingSources:()=>Ss8,getAllowedChannels:()=>TJ,getAgentColorMap:()=>mz8,getAfkModeHeaderLatched:()=>ts8,getAdditionalDirectoriesForClaudeMd:()=>bG,getActiveTimeCounter:()=>js8,getActiveRoutine:()=>f25,flushInteractionTime:()=>na8,deleteLoopChainStartedAt:()=>F25,consumePostCompaction:()=>qs8,clearSystemPromptSectionState:()=>rs8,clearRegisteredPluginHooks:()=>pz8,clearRegisteredHooks:()=>U25,clearInvokedSkillsForAgent:()=>Y66,clearInvokedSkills:()=>cs8,clearBetaHeaderLatches:()=>At8,addToTurnHookDuration:()=>yz8,addToTurnClassifierDuration:()=>Qa8,addToTotalLinesChanged:()=>Ez8,addToTotalDurationState:()=>ma8,addToTotalCostState:()=>Ba8,addToToolDuration:()=>Nz8,addToInMemoryErrorLog:()=>B25,addSlowOperation:()=>AP7,addSessionCronTask:()=>us8,addInvokedSkill:()=>XD6});import{realpathSync as aX7}from\"fs\";import{cwd as D25}from\"process\";function eX7(){let q=\"\";if(typeof process<\"u\"&&typeof process.cwd===\"function\"&&typeof aX7===\"function\"){let _=D25();try{q=aX7(_).normalize(\"NFC\")}catch{q=_.normalize(\"NFC\")}}return{originalCwd:q,projectRoot:q,totalCostUSD:0,totalAPIDuration:0,totalAPIDurationWithoutRetries:0,totalToolDuration:0,turnHookDurationMs:0,turnToolDurationMs:0,turnClassifierDurationMs:0,turnToolCount:0,turnHookCount:0,turnClassifierCount:0,startTime:Date.now(),lastInteractionTime:Date.now(),totalLinesAdded:0,totalLinesRemoved:0,hasUnknownModelCost:!1,cwd:q,modelUsage:{},mainLoopModelOverride:void 0,initialMainLoopModel:null,modelStrings:null,isInteractive:!1,kairosActive:!1,strictToolResultPairing:!1,memoryToggledOff:!1,sdkAgentProgressSummariesEnabled:!1,userMsgOptIn:!1,clientType:\"cli\",sessionSource:void 0,questionPreviewFormat:void 0,sessionIngressToken:void 0,oauthTokenFromFd:void 0,apiKeyFromFd:void 0,flagSettingsPath:void 0,flagSettingsInline:null,allowedSettingSources:[\"userSettings\",\"projectSettings\",\"localSettings\",\"flagSettings\",\"policySettings\"],meter:null,sessionCounter:null,locCounter:null,prCounter:null,commitCounter:null,costCounter:null,tokenCounter:null,codeEditToolDecisionCounter:null,activeTimeCounter:null,statsStore:null,sessionId:Du6(),parentSessionId:void 0,loggerProvider:null,eventLogger:null,meterProvider:null,tracerProvider:null,agentColorMap:new Map,agentColorIndex:0,lastAPIRequest:null,lastAPIRequestMessages:null,lastClassifierRequests:null,cachedClaudeMdContent:null,inMemoryErrorLog:[],inlinePlugins:[],chromeFlagOverride:void 0,useCoworkPlugins:!1,sessionBypassPermissionsMode:!1,scheduledTasksEnabled:!1,sessionCronTasks:[],loopChainStartedAt:Object.create(null),sessionCreatedTeams:new Set,sessionTrustAccepted:!1,sessionPersistenceDisabled:!1,hasExitedPlanMode:!1,needsPlanModeExitAttachment:!1,needsAutoModeExitAttachment:!1,lspRecommendationShownThisSession:!1,initJsonSchema:null,registeredHooks:null,planSlugCache:new Map,teleportedSessionInfo:null,invokedSkills:new Map,slowOperations:[],sdkBetas:void 0,mainThreadAgentType:void 0,isRemoteMode:!1,...!1,directConnectServerUrl:void 0,activeRoutine:void 0,systemPromptSectionCache:new Map,lastEmittedDate:null,additionalDirectoriesForClaudeMd:[],allowedChannels:[],hasDevChannels:!1,sessionProjectDir:null,promptCache1hAllowlist:null,afkModeHeaderLatched:null,fastModeHeaderLatched:null,cacheEditingHeaderLatched:null,thinkingClearLatched:null,promptId:null,lastMainRequestId:void 0,lastApiCompletionTimestamp:null,pendingPostCompaction:!1}}function N8(){return G8.sessionId}function Sa8(q={}){if(q.setCurrentAsParent)G8.parentSessionId=G8.sessionId;return G8.planSlugCache.delete(G8.sessionId),G8.sessionId=Du6(),G8.sessionProjectDir=null,G8.sessionId}function Ca8(){return G8.parentSessionId}function Yf(q,K=null){if(G8.sessionId!==q)G8.planSlugCache.delete(G8.sessionId);G8.sessionId=q,G8.sessionProjectDir=K,ba8.emit(q)}function Z_6(){return G8.sessionProjectDir}function A7(){return G8.originalCwd}function wz(){return G8.projectRoot}function KS(q){G8.originalCwd=q.normalize(\"NFC\")}function fu6(q){G8.projectRoot=q.normalize(\"NFC\")}function BI(){return G8.cwd}function Ia8(q){G8.cwd=q.normalize(\"NFC\")}function ua8(){return G8.directConnectServerUrl}function W25(q){G8.directConnectServerUrl=q}function f25(){return G8.activeRoutine}function Z25(q){G8.activeRoutine=q}function ma8(q,K){G8.totalAPIDuration+=q,G8.totalAPIDurationWithoutRetries+=K}function G25(){G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalCostUSD=0}function Ba8(q,K,_){G8.modelUsage[_]=K,G8.totalCostUSD+=q}function XM(){return G8.totalCostUSD}function RG(){return G8.totalAPIDuration}function YD6(){return Date.now()-G8.startTime}function pa8(){return G8.totalAPIDurationWithoutRetries}function ga8(){return G8.totalToolDuration}function Nz8(q){G8.totalToolDuration+=q,G8.turnToolDurationMs+=q,G8.turnToolCount++}function v25(){return G8.turnHookDurationMs}function yz8(q){G8.turnHookDurationMs+=q,G8.turnHookCount++}function Fa8(){G8.turnHookDurationMs=0,G8.turnHookCount=0}function T25(){return G8.turnHookCount}function V25(){return G8.turnToolDurationMs}function Ua8(){G8.turnToolDurationMs=0,G8.turnToolCount=0}function k25(){return G8.turnToolCount}function N25(){return G8.turnClassifierDurationMs}function Qa8(q){G8.turnClassifierDurationMs+=q,G8.turnClassifierCount++}function da8(){G8.turnClassifierDurationMs=0,G8.turnClassifierCount=0}function y25(){return G8.turnClassifierCount}function q66(){return G8.statsStore}function ca8(q){G8.statsStore=q}function G_6(q){if(q)qP7();else la8=!0}function na8(){if(la8)qP7()}function qP7(){G8.lastInteractionTime=Date.now(),la8=!1,ia8.emit()}function Ez8(q,K){G8.totalLinesAdded+=q,G8.totalLinesRemoved+=K}function v_6(){return G8.totalLinesAdded}function T_6(){return G8.totalLinesRemoved}function V_6(){return zD6(Object.values(G8.modelUsage),\"inputTokens\")}function el(){return zD6(Object.values(G8.modelUsage),\"outputTokens\")}function Zu6(){return zD6(Object.values(G8.modelUsage),\"cacheReadInputTokens\")}function Gu6(){return zD6(Object.values(G8.modelUsage),\"cacheCreationInputTokens\")}function oa8(){return zD6(Object.values(G8.modelUsage),\"webSearchRequests\")}function E25(){return el()-aa8}function L25(){return sa8}function h25(q){aa8=el(),sa8=q,Lz8=0}function R25(){return Lz8}function S25(){Lz8++}function hz8(){G8.hasUnknownModelCost=!0}function ta8(){return G8.hasUnknownModelCost}function vu6(){return G8.lastMainRequestId}function ea8(q){G8.lastMainRequestId=q}function qn(){return G8.lastApiCompletionTimestamp}function Tu6(q){G8.lastApiCompletionTimestamp=q}function K66(){G8.pendingPostCompaction=!0}function qs8(){let q=G8.pendingPostCompaction;return G8.pendingPostCompaction=!1,q}function _S(){return G8.lastInteractionTime}function Ks8(){if(kz8=!0,Wu6)clearTimeout(Wu6);Wu6=setTimeout(()=>{kz8=!1,Wu6=void 0},KP7),Wu6.unref?.()}function k_6(){return kz8}async function Vu6(){while(kz8)await new Promise((q)=>setTimeout(q,KP7).unref?.())}function ST(){return G8.modelUsage}function _s8(q){return G8.modelUsage[q]}function pI(){return G8.mainLoopModelOverride}function AD6(){return G8.initialMainLoopModel}function dP(q){G8.mainLoopModelOverride=q}function zs8(q){G8.initialMainLoopModel=q}function OW(){return G8.sdkBetas}function Ys8(q){G8.sdkBetas=q}function OD6(){G8.totalCostUSD=0,G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalToolDuration=0,G8.startTime=Date.now(),G8.totalLinesAdded=0,G8.totalLinesRemoved=0,G8.hasUnknownModelCost=!1,G8.modelUsage={},G8.promptId=null}function ku6({totalCostUSD:q,totalAPIDuration:K,totalAPIDurationWithoutRetries:_,totalToolDuration:z,totalLinesAdded:Y,totalLinesRemoved:A,lastDuration:O,modelUsage:$}){if(G8.totalCostUSD=q,G8.totalAPIDuration=K,G8.totalAPIDurationWithoutRetries=_,G8.totalToolDuration=z,G8.totalLinesAdded=Y,G8.totalLinesRemoved=A,$)G8.modelUsage=$;if(O)G8.startTime=Date.now()-O}function _P7(){throw Error(\"resetStateForTests can only be called in tests\")}function $D6(){return G8.modelStrings}function Nu6(q){G8.modelStrings=q}function C25(){G8.modelStrings=null}function As8(q,K){G8.meter=q,G8.sessionCounter=K(\"claude_code.session.count\",{description:\"Count of CLI sessions started\"}),G8.locCounter=K(\"claude_code.lines_of_code.count\",{description:\"Count of lines of code modified, with the 'type' attribute indicating whether lines were added or removed\"}),G8.prCounter=K(\"claude_code.pull_request.count\",{description:\"Number of pull requests created\"}),G8.commitCounter=K(\"claude_code.commit.count\",{description:\"Number of git commits created\"}),G8.costCounter=K(\"claude_code.cost.usage\",{description:\"Cost of the Claude Code session\",unit:\"USD\"}),G8.tokenCounter=K(\"claude_code.token.usage\",{description:\"Number of tokens used\",unit:\"tokens\"}),G8.codeEditToolDecisionCounter=K(\"claude_code.code_edit_tool.decision\",{description:\"Count of code editing tool permission decisions (accept/reject) for Edit, Write, and NotebookEdit tools\"}),G8.activeTimeCounter=K(\"claude_code.active_time.total\",{description:\"Total active time in seconds\",unit:\"s\"})}function b25(){return G8.meter}function Os8(){return G8.sessionCounter}function Rz8(){return G8.locCounter}function yu6(){return G8.prCounter}function $s8(){return G8.commitCounter}function ws8(){return G8.costCounter}function wD6(){return G8.tokenCounter}function Eu6(){return G8.codeEditToolDecisionCounter}function js8(){return G8.activeTimeCounter}function Lu6(){return G8.loggerProvider}function Sz8(q){G8.loggerProvider=q}function Hs8(){return G8.eventLogger}function Cz8(q){G8.eventLogger=q}function Js8(){return G8.meterProvider}function bz8(q){G8.meterProvider=q}function N_6(){return G8.tracerProvider}function xz8(q){G8.tracerProvider=q}function d7(){return!G8.isInteractive}function CT(){return G8.isInteractive}function Ms8(q){G8.isInteractive=q}function jD6(){return G8.clientType}function Xs8(q){G8.clientType=q}function vg(){return G8.sdkAgentProgressSummariesEnabled}function Ps8(q){G8.sdkAgentProgressSummariesEnabled=q}function SG(){return G8.kairosActive}function x25(q){G8.kairosActive=q}function Ds8(){return G8.strictToolResultPairing}function I25(q){G8.strictToolResultPairing=q}function Tg(){return G8.memoryToggledOff}function Ws8(q){G8.memoryToggledOff=q}function AL(){return G8.userMsgOptIn}function Vg(q){G8.userMsgOptIn=q}function u25(){return G8.sessionSource}function fs8(q){G8.sessionSource=q}function Iz8(){return G8.questionPreviewFormat}function uz8(q){G8.questionPreviewFormat=q}function mz8(){return G8.agentColorMap}function _66(){return G8.flagSettingsPath}function Zs8(q){G8.flagSettingsPath=q}function HD6(){return G8.flagSettingsInline}function Gs8(q){G8.flagSettingsInline=q}function vs8(){return G8.sessionIngressToken}function y_6(q){G8.sessionIngressToken=q}function Ts8(){return G8.oauthTokenFromFd}function Vs8(q){G8.oauthTokenFromFd=q}function ks8(){return G8.apiKeyFromFd}function Ns8(q){G8.apiKeyFromFd=q}function ys8(q){G8.lastAPIRequest=q}function Es8(){return G8.lastAPIRequest}function Ls8(q){G8.lastAPIRequestMessages=q}function m25(){return G8.lastAPIRequestMessages}function hu6(q){G8.lastClassifierRequests=q}function zP7(){return G8.lastClassifierRequests}function hs8(q){G8.cachedClaudeMdContent=q}function Rs8(){return G8.cachedClaudeMdContent}function B25(q){if(G8.inMemoryErrorLog.length>=100)G8.inMemoryErrorLog.shift();G8.inMemoryErrorLog.push(q)}function Ss8(){return G8.allowedSettingSources}function Cs8(q){G8.allowedSettingSources=q}function Ru6(){return d7()&&G8.clientType!==\"claude-vscode\"}function bs8(q){G8.inlinePlugins=q}function kg(){return G8.inlinePlugins}function xs8(q){G8.chromeFlagOverride=q}function Su6(){return G8.chromeFlagOverride}function OL(q){G8.useCoworkPlugins=q,AW()}function Cu6(){return G8.useCoworkPlugins}function Is8(q){G8.sessionBypassPermissionsMode=q}function E_6(){return G8.sessionBypassPermissionsMode}function bu6(q){G8.scheduledTasksEnabled=q}function JD6(){return G8.scheduledTasksEnabled}function L_6(){return G8.sessionCronTasks}function us8(q){G8.sessionCronTasks.push(q)}function p25(q){return G8.loopChainStartedAt[q]}function g25(q,K){G8.loopChainStartedAt[q]=K}function F25(q){delete G8.loopChainStartedAt[q]}function xu6(q){if(q.length===0)return 0;let K=new Set(q),_=G8.sessionCronTasks.filter((Y)=>!K.has(Y.id)),z=G8.sessionCronTasks.length-_.length;if(z===0)return 0;return G8.sessionCronTasks=_,z}function Iu6(q){G8.sessionTrustAccepted=q}function MD6(){return G8.sessionTrustAccepted}function ms8(q){G8.sessionPersistenceDisabled=q}function ok(){return G8.sessionPersistenceDisabled}function uu6(){return G8.hasExitedPlanMode}function $L(q){G8.hasExitedPlanMode=q}function Bs8(){return G8.needsPlanModeExitAttachment}function gI(q){G8.needsPlanModeExitAttachment=q}function Kn(q,K){if(K===\"plan\"&&q!==\"plan\")G8.needsPlanModeExitAttachment=!1;if(q===\"plan\"&&K!==\"plan\")G8.needsPlanModeExitAttachment=!0}function ps8(){return G8.needsAutoModeExitAttachment}function CG(q){G8.needsAutoModeExitAttachment=q}function gs8(q,K){if(q===\"auto\"&&K===\"plan\"||q===\"plan\"&&K===\"auto\")return;let _=q===\"auto\",z=K===\"auto\";if(z&&!_)G8.needsAutoModeExitAttachment=!1;if(_&&!z)G8.needsAutoModeExitAttachment=!0}function Fs8(){return G8.lspRecommendationShownThisSession}function Us8(q){G8.lspRecommendationShownThisSession=q}function Qs8(q){G8.initJsonSchema=q}function Bz8(){return G8.initJsonSchema}function z66(q){if(!G8.registeredHooks)G8.registeredHooks={};for(let[K,_]of Object.entries(q)){let z=K;if(!G8.registeredHooks[z])G8.registeredHooks[z]=[];G8.registeredHooks[z].push(..._)}}function zS(){return G8.registeredHooks}function U25(){G8.registeredHooks=null}function pz8(){if(!G8.registeredHooks)return;let q={};for(let[K,_]of Object.entries(G8.registeredHooks)){let z=_.filter((Y)=>!(\"pluginRoot\"in Y));if(z.length>0)q[K]=z}G8.registeredHooks=Object.keys(q).length>0?q:null}function YP7(){G8.initJsonSchema=null,G8.registeredHooks=null}function h_6(){return G8.planSlugCache}function mu6(){return G8.sessionCreatedTeams}function Bu6(q){G8.teleportedSessionInfo={isTeleported:!0,hasLoggedFirstMessage:!1,sessionId:q.sessionId}}function gz8(){return G8.teleportedSessionInfo}function Fz8(){if(G8.teleportedSessionInfo)G8.teleportedSessionInfo.hasLoggedFirstMessage=!0}function XD6(q,K,_,z=null){let Y=`${z??\"\"}:${q}`;G8.invokedSkills.set(Y,{skillName:q,skillPath:K,content:_,invokedAt:Date.now(),agentId:z})}function Q25(){return G8.invokedSkills}function ds8(q){let K=q??null,_=new Map;for(let[z,Y]of G8.invokedSkills)if(Y.agentId===K)_.set(z,Y);return _}function cs8(q){if(!q||q.size===0){G8.invokedSkills.clear();return}for(let[K,_]of G8.invokedSkills)if(_.agentId===null||!q.has(_.agentId))G8.invokedSkills.delete(K)}function Y66(q){for(let[K,_]of G8.invokedSkills)if(_.agentId===q)G8.invokedSkills.delete(K)}function AP7(q,K){return}function OP7(){if(G8.slowOperations.length===0)return tX7;let q=Date.now();if(G8.slowOperations.some((K)=>q-K.timestamp>=Ra8)){if(G8.slowOperations=G8.slowOperations.filter((K)=>q-K.timestamp<Ra8),G8.slowOperations.length===0)return tX7}return G8.slowOperations}function Ng(){return G8.mainThreadAgentType}function _n(q){G8.mainThreadAgentType=q}function cK(){return G8.isRemoteMode}function ls8(q){G8.isRemoteMode=q}function ns8(){return G8.systemPromptSectionCache}function is8(q,K){G8.systemPromptSectionCache.set(q,K)}function rs8(){G8.systemPromptSectionCache.clear()}function os8(){return G8.lastEmittedDate}function PD6(q){G8.lastEmittedDate=q}function bG(){return G8.additionalDirectoriesForClaudeMd}function pu6(q){G8.additionalDirectoriesForClaudeMd=q}function TJ(){return G8.allowedChannels}function zn(q){G8.allowedChannels=q}function Uz8(){return G8.hasDevChannels}function Qz8(q){G8.hasDevChannels=q}function as8(){return G8.promptCache1hAllowlist}function ss8(q){G8.promptCache1hAllowlist=q}function ts8(){return G8.afkModeHeaderLatched}function es8(q){G8.afkModeHeaderLatched=q}function qt8(){return G8.fastModeHeaderLatched}function Kt8(q){G8.fastModeHeaderLatched=q}function _t8(){return G8.cacheEditingHeaderLatched}function d25(q){G8.cacheEditingHeaderLatched=q}function zt8(){return G8.thinkingClearLatched}function Yt8(q){G8.thinkingClearLatched=q}function At8(){G8.afkModeHeaderLatched=null,G8.fastModeHeaderLatched=null,G8.cacheEditingHeaderLatched=null,G8.thinkingClearLatched=null}function gu6(){return G8.promptId}function Fu6(q){G8.promptId=q}var G8,ba8,xa8,la8=!1,ia8,ra8,aa8=0,sa8=null,Lz8=0,kz8=!1,Wu6,KP7=150,sX7=10,Ra8=1e4,tX7;var v8=L(()=>{UX7();ya8();tl();G8=eX7();ba8=E9(),xa8=ba8.subscribe;ia8=E9(),ra8=ia8.subscribe;tX7=[]});function dz8(q){let K;for(let _ in q)if(_.startsWith(\"_PROTO_\")){if(K===void 0)K={...q};delete K[_]}return K??q}function $P7(q){if(A66!==null)return;if(A66=q,Uu6.length>0){let K=[...Uu6];Uu6.length=0,queueMicrotask(()=>{for(let _ of K)if(_.async)A66.logEventAsync(_.eventName,_.metadata);else A66.logEvent(_.eventName,_.metadata)})}}function d(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!1});return}A66.logEvent(q,K)}async function wP7(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!0});return}await A66.logEventAsync(q,K)}var Uu6,A66=null;var T8=L(()=>{Uu6=[]});function WD6({writeFn:q,flushIntervalMs:K=1000,maxBufferSize:_=100,maxBufferBytes:z=1/0,immediateMode:Y=!1}){let A=[],O=0,$=null,w=null;function j(){if($)clearTimeout($),$=null}function H(){if(w)q(w.join(\"\")),w=null;if(A.length===0)return;q(A.join(\"\")),A=[],O=0,j()}function J(){if(!$)$=setTimeout(H,K)}function M(){if(w){w.push(...A),A=[],O=0,j();return}let X=A;A=[],O=0,j(),w=X,setImmediate(()=>{let P=w;if(w=null,P)q(P.join(\"\"))})}return{write(X){if(Y){q(X);return}if(A.push(X),O+=X.length,J(),A.length>=_||O>=z)M()},flush:H,dispose(){H()}}}function gq(q){return Ot8.add(q),()=>Ot8.delete(q)}async function jP7(){await Promise.all(Array.from(Ot8).map((q)=>q()))}var Ot8;var o9=L(()=>{Ot8=new Set});function c25(q){let K=[],_=q.match(/^MCP server [\"']([^\"']+)[\"']/);if(_&&_[1])K.push(\"mcp\"),K.push(_[1].toLowerCase());else{let A=q.match(/^([^:[]+):/);if(A&&A[1])K.push(A[1].trim().toLowerCase())}let z=q.match(/^\\[([^\\]]+)]/);if(z&&z[1])K.push(z[1].trim().toLowerCase());if(q.toLowerCase().includes(\"1p event:\"))K.push(\"1p\");let Y=q.match(/:\\s*([^:]+?)(?:\\s+(?:type|mode|status|event))?:/);if(Y&&Y[1]){let A=Y[1].trim().toLowerCase();if(A.length<30&&!A.includes(\" \"))K.push(A)}return Array.from(new Set(K))}function l25(q,K){if(!K)return!0;if(q.length===0)return!1;if(K.isExclusive)return!q.some((_)=>K.exclude.includes(_));else return q.some((_)=>K.include.includes(_))}function JP7(q,K){if(!K)return!0;let _=c25(q);return l25(_,K)}var HP7;var MP7=L(()=>{h4();HP7=A1((q)=>{if(!q||q.trim()===\"\")return null;let K=q.split(\",\").map((A)=>A.trim()).filter(Boolean);if(K.length===0)return null;let _=K.some((A)=>A.startsWith(\"!\")),z=K.some((A)=>!A.startsWith(\"!\"));if(_&&z)return null;let Y=K.map((A)=>A.replace(/^!/,\"\").toLowerCase());return{include:_?[]:Y,exclude:_?Y:[],isExclusive:_}})});import{homedir as n25}from\"os\";import{join as XP7}from\"path\";function fD6(){return XP7(O7(),\"teams\")}function ZD6(q){let K=process.env.NODE_OPTIONS;if(!K)return!1;return K.split(/\\s+/).includes(q)}function Yn(q,K){if(q===void 0)return K;let _=parseInt(q,10);return Number.isNaN(_)?K:_}function B6(q){if(!q)return!1;if(typeof q===\"boolean\")return q;let K=q.toLowerCase().trim();return[\"1\",\"true\",\"yes\",\"on\"].includes(K)}function a9(q){if(q===void 0)return!1;if(typeof q===\"boolean\")return!q;if(!q)return!1;let K=q.toLowerCase().trim();return[\"0\",\"false\",\"no\",\"off\"].includes(K)}function D9(){return B6(process.env.CLAUDE_CODE_SIMPLE)||process.argv.includes(\"--bare\")}function PP7(q){let K={};if(q)for(let _ of q){let[z,...Y]=_.split(\"=\");if(!z||Y.length===0)throw Error(`Invalid environment variable format: ${_}, environment variables should be added as: -e KEY1=value1 -e KEY2=value2`);K[z]=Y.join(\"=\")}return K}function YS(){return process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION||\"us-east-1\"}function cz8(){return process.env.CLOUD_ML_REGION||\"us-east5\"}function DP7(){return B6(process.env.CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR)}function Af(){return!1}function AS(){return!1}function WP7(){return{namespace:void 0,cluster:void 0}}function lz8(q){if(q){let K=i25.find(([_])=>q.startsWith(_));if(K)return process.env[K[1]]||cz8()}return cz8()}var O7,i25;var B8=L(()=>{h4();O7=A1(()=>{return(process.env.CLAUDE_CONFIG_DIR??XP7(n25(),\".claude\")).normalize(\"NFC\")},()=>process.env.CLAUDE_CONFIG_DIR);i25=[[\"claude-haiku-4-5\",\"VERTEX_REGION_CLAUDE_HAIKU_4_5\"],[\"claude-3-5-haiku\",\"VERTEX_REGION_CLAUDE_3_5_HAIKU\"],[\"claude-3-5-sonnet\",\"VERTEX_REGION_CLAUDE_3_5_SONNET\"],[\"claude-3-7-sonnet\",\"VERTEX_REGION_CLAUDE_3_7_SONNET\"],[\"claude-opus-4-6\",\"VERTEX_REGION_CLAUDE_4_6_OPUS\"],[\"claude-opus-4-1\",\"VERTEX_REGION_CLAUDE_4_1_OPUS\"],[\"claude-opus-4\",\"VERTEX_REGION_CLAUDE_4_0_OPUS\"],[\"claude-sonnet-4-6\",\"VERTEX_REGION_CLAUDE_4_6_SONNET\"],[\"claude-sonnet-4-5\",\"VERTEX_REGION_CLAUDE_4_5_SONNET\"],[\"claude-sonnet-4\",\"VERTEX_REGION_CLAUDE_4_0_SONNET\"]]});function $4(q,K,_,z,Y){if(z===\"m\")throw TypeError(\"Private method is not writable\");if(z===\"a\"&&!Y)throw TypeError(\"Private accessor was defined without a setter\");if(typeof K===\"function\"?q!==K||!Y:!K.has(q))throw TypeError(\"Cannot write private member to an object whose class did not declare it\");return z===\"a\"?Y.call(q,_):Y?Y.value=_:K.set(q,_),_}function u1(q,K,_,z){if(_===\"a\"&&!z)throw TypeError(\"Private accessor was defined without a getter\");if(typeof K===\"function\"?q!==K||!z:!K.has(q))throw TypeError(\"Cannot read private member from an object whose class did not declare it\");return _===\"m\"?z:_===\"a\"?z.call(q):z?z.value:K.get(q)}var An=()=>{};var $t8=function(){let{crypto:q}=globalThis;if(q?.randomUUID)return $t8=q.randomUUID.bind(q),q.randomUUID();let K=new Uint8Array(1),_=q?()=>q.getRandomValues(K)[0]:()=>Math.random()*255&255;return\"10000000-1000-4000-8000-100000000000\".replace(/[018]/g,(z)=>(+z^_()&15>>+z/4).toString(16))};function On(q){return typeof q===\"object\"&&q!==null&&((\"name\"in q)&&q.name===\"AbortError\"||(\"message\"in q)&&String(q.message).includes(\"FetchRequestCanceledException\"))}var Qu6=(q)=>{if(q instanceof Error)return q;if(typeof q===\"object\"&&q!==null){try{if(Object.prototype.toString.call(q)===\"[object Error]\"){let K=Error(q.message,q.cause?{cause:q.cause}:{});if(q.stack)K.stack=q.stack;if(q.cause&&!K.cause)K.cause=q.cause;if(q.name)K.name=q.name;return K}}catch{}try{return Error(JSON.stringify(q))}catch{}}return Error(q)};var vq,dq,c_,Of,yg,du6,R_6,cu6,S_6,lu6,nu6,iu6,ru6;var $W=L(()=>{vq=class vq extends Error{};dq=class dq extends vq{constructor(q,K,_,z,Y){super(`${dq.makeMessage(q,K,_)}`);this.status=q,this.headers=z,this.requestID=z?.get(\"request-id\"),this.error=K,this.type=Y??null}static makeMessage(q,K,_){let z=K?.message?typeof K.message===\"string\"?K.message:JSON.stringify(K.message):K?JSON.stringify(K):_;if(q&&z)return`${q} ${z}`;if(q)return`${q} status code (no body)`;if(z)return z;return\"(no status code or body)\"}static generate(q,K,_,z){if(!q||!z)return new Of({message:_,cause:Qu6(K)});let Y=K,A=Y?.error?.type;if(q===400)return new du6(q,Y,_,z,A);if(q===401)return new R_6(q,Y,_,z,A);if(q===403)return new cu6(q,Y,_,z,A);if(q===404)return new S_6(q,Y,_,z,A);if(q===409)return new lu6(q,Y,_,z,A);if(q===422)return new nu6(q,Y,_,z,A);if(q===429)return new iu6(q,Y,_,z,A);if(q>=500)return new ru6(q,Y,_,z,A);return new dq(q,Y,_,z,A)}};c_=class c_ extends dq{constructor({message:q}={}){super(void 0,void 0,q||\"Request was aborted.\",void 0)}};Of=class Of extends dq{constructor({message:q,cause:K}){super(void 0,void 0,q||\"Connection error.\",void 0);if(K)this.cause=K}};yg=class yg extends Of{constructor({message:q}={}){super({message:q??\"Request timed out.\"})}};du6=class du6 extends dq{};R_6=class R_6 extends dq{};cu6=class cu6 extends dq{};S_6=class S_6 extends dq{};lu6=class lu6 extends dq{};nu6=class nu6 extends dq{};iu6=class iu6 extends dq{};ru6=class ru6 extends dq{}});function nz8(q){if(typeof q!==\"object\")return{};return q??{}}function Ht8(q){if(!q)return!0;for(let K in q)return!1;return!0}function ZP7(q,K){return Object.prototype.hasOwnProperty.call(q,K)}var o25,fP7=(q)=>{return o25.test(q)},wt8=(q)=>(wt8=Array.isArray,wt8(q)),jt8,GP7=(q,K)=>{if(typeof K!==\"number\"||!Number.isInteger(K))throw new vq(`${q} must be an integer`);if(K<0)throw new vq(`${q} must be a positive integer`);return K},iz8=(q)=>{try{return JSON.parse(q)}catch(K){return}};var C_6=L(()=>{$W();o25=/^[a-z][a-z0-9+.-]*:/i,jt8=wt8});var vP7=(q)=>new Promise((K)=>setTimeout(K,q));var O66=\"0.81.0\";function a25(){if(typeof Deno<\"u\"&&Deno.build!=null)return\"deno\";if(typeof EdgeRuntime<\"u\")return\"edge\";if(Object.prototype.toString.call(typeof globalThis.process<\"u\"?globalThis.process:0)===\"[object process]\")return\"node\";return\"unknown\"}function t25(){if(typeof navigator>\"u\"||!navigator)return null;let q=[{key:\"edge\",pattern:/Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"ie\",pattern:/MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"ie\",pattern:/Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"chrome\",pattern:/Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"firefox\",pattern:/Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"safari\",pattern:/(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/}];for(let{key:K,pattern:_}of q){let z=_.exec(navigator.userAgent);if(z){let Y=z[1]||0,A=z[2]||0,O=z[3]||0;return{browser:K,version:`${Y}.${A}.${O}`}}}return null}var NP7=()=>{return typeof window<\"u\"&&typeof window.document<\"u\"&&typeof navigator<\"u\"},s25=()=>{let q=a25();if(q===\"deno\")return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":VP7(Deno.build.os),\"X-Stainless-Arch\":TP7(Deno.build.arch),\"X-Stainless-Runtime\":\"deno\",\"X-Stainless-Runtime-Version\":typeof Deno.version===\"string\"?Deno.version:Deno.version?.deno??\"unknown\"};if(typeof EdgeRuntime<\"u\")return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":\"Unknown\",\"X-Stainless-Arch\":`other:${EdgeRuntime}`,\"X-Stainless-Runtime\":\"edge\",\"X-Stainless-Runtime-Version\":globalThis.process.version};if(q===\"node\")return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":VP7(globalThis.process.platform??\"unknown\"),\"X-Stainless-Arch\":TP7(globalThis.process.arch??\"unknown\"),\"X-Stainless-Runtime\":\"node\",\"X-Stainless-Runtime-Version\":globalThis.process.version??\"unknown\"};let K=t25();if(K)return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":\"Unknown\",\"X-Stainless-Arch\":\"unknown\",\"X-Stainless-Runtime\":`browser:${K.browser}`,\"X-Stainless-Runtime-Version\":K.version};return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":\"Unknown\",\"X-Stainless-Arch\":\"unknown\",\"X-Stainless-Runtime\":\"unknown\",\"X-Stainless-Runtime-Version\":\"unknown\"}},TP7=(q)=>{if(q===\"x32\")return\"x32\";if(q===\"x86_64\"||q===\"x64\")return\"x64\";if(q===\"arm\")return\"arm\";if(q===\"aarch64\"||q===\"arm64\")return\"arm64\";if(q)return`other:${q}`;return\"unknown\"},VP7=(q)=>{if(q=q.toLowerCase(),q.includes(\"ios\"))return\"iOS\";if(q===\"android\")return\"Android\";if(q===\"darwin\")return\"MacOS\";if(q===\"win32\")return\"Windows\";if(q===\"freebsd\")return\"FreeBSD\";if(q===\"openbsd\")return\"OpenBSD\";if(q===\"linux\")return\"Linux\";if(q)return`Other:${q}`;return\"Unknown\"},kP7,yP7=()=>{return kP7??(kP7=s25())};var Jt8=()=>{};function EP7(){if(typeof fetch<\"u\")return fetch;throw Error(\"`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`\")}function Mt8(...q){let K=globalThis.ReadableStream;if(typeof K>\"u\")throw Error(\"`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`\");return new K(...q)}function rz8(q){let K=Symbol.asyncIterator in q?q[Symbol.asyncIterator]():q[Symbol.iterator]();return Mt8({start(){},async pull(_){let{done:z,value:Y}=await K.next();if(z)_.close();else _.enqueue(Y)},async cancel(){await K.return?.()}})}function ou6(q){if(q[Symbol.asyncIterator])return q;let K=q.getReader();return{async next(){try{let _=await K.read();if(_?.done)K.releaseLock();return _}catch(_){throw K.releaseLock(),_}},async return(){let _=K.cancel();return K.releaseLock(),await _,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function LP7(q){if(q===null||typeof q!==\"object\")return;if(q[Symbol.asyncIterator]){await q[Symbol.asyncIterator]().return?.();return}let K=q.getReader(),_=K.cancel();K.releaseLock(),await _}var hP7=({headers:q,body:K})=>{return{bodyHeaders:{\"content-type\":\"application/json\"},body:JSON.stringify(K)}};function RP7(q){return Object.entries(q).filter(([K,_])=>typeof _<\"u\").map(([K,_])=>{if(typeof _===\"string\"||typeof _===\"number\"||typeof _===\"boolean\")return`${encodeURIComponent(K)}=${encodeURIComponent(_)}`;if(_===null)return`${encodeURIComponent(K)}=`;throw new vq(`Cannot stringify type ${typeof _}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`)}).join(\"&\")}var SP7=L(()=>{$W()});function xP7(q){let K=0;for(let Y of q)K+=Y.length;let _=new Uint8Array(K),z=0;for(let Y of q)_.set(Y,z),z+=Y.length;return _}function au6(q){let K;return(CP7??(K=new globalThis.TextEncoder,CP7=K.encode.bind(K)))(q)}function Xt8(q){let K;return(bP7??(K=new globalThis.TextDecoder,bP7=K.decode.bind(K)))(q)}var CP7,bP7;class $66{constructor(){wL.set(this,void 0),jL.set(this,void 0),$4(this,wL,new Uint8Array,\"f\"),$4(this,jL,null,\"f\")}decode(q){if(q==null)return[];let K=q instanceof ArrayBuffer?new Uint8Array(q):typeof q===\"string\"?au6(q):q;$4(this,wL,xP7([u1(this,wL,\"f\"),K]),\"f\");let _=[],z;while((z=Kj5(u1(this,wL,\"f\"),u1(this,jL,\"f\")))!=null){if(z.carriage&&u1(this,jL,\"f\")==null){$4(this,jL,z.index,\"f\");continue}if(u1(this,jL,\"f\")!=null&&(z.index!==u1(this,jL,\"f\")+1||z.carriage)){_.push(Xt8(u1(this,wL,\"f\").subarray(0,u1(this,jL,\"f\")-1))),$4(this,wL,u1(this,wL,\"f\").subarray(u1(this,jL,\"f\")),\"f\"),$4(this,jL,null,\"f\");continue}let Y=u1(this,jL,\"f\")!==null?z.preceding-1:z.preceding,A=Xt8(u1(this,wL,\"f\").subarray(0,Y));_.push(A),$4(this,wL,u1(this,wL,\"f\").subarray(z.index),\"f\"),$4(this,jL,null,\"f\")}return _}flush(){if(!u1(this,wL,\"f\").length)return[];return this.decode(`\n ^^^\n\nSyntaxError: Unexpected token '??='\n at Loader.moduleStrategy (internal/modules/esm/translators.js:145:18)\n at async link (internal/modules/esm/module_job.js:47:21)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ nvm use 24\nNow using node v24.11.1 (npm v11.6.2)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude\n╭─── Claude Code v2.1.114 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ \n│ │ Tips for getting started │ \n│ Welcome back Lukas! │ Run /init to create a CLAUDE.md file with instructions for Claude │ \n│ │ Note: You have launched claude in your home directory. For the best experience, launch it in a project directory instead. │ \n│ ▐▛███▜▌ │ ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ \n│ ▝▜█████▛▘ │ Recent activity │ \n│ ▘▘ ▝▝ │ 10h ago nice │ \n│ Sonnet 4.6 · Claude Pro · kovaliklukas@gmail.com's │ 4d ago give me overview of what I did yesterday │ \n│ Organization │ 1w ago how to open screenshots related, how many are there aroudn that time │ \n│ /Users/lukas │ /resume for more │ \n╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ \n \n❯ You have access to Screenpipe data via the local SQLite database at ~/.screenpipe/db.sqlite \n \n Query the database using: sqlite3 -json ~/.screenpipe/db.sqlite \"YOUR SQL HERE\" \n \n Key tables: \n - ocr_text: columns id, frame_id, text, text_json, app_name, window_name, created_at \n - audio_transcriptions: columns id, audio_chunk_id, transcription, device, is_input, created_at \n - frames: columns id, file_path, timestamp, device_id \n - ui_events: columns id, event_type, element_text, app_name, created_at \n \n Build a full day activity summary for TODAY (use date() in SQL for today's date, timestamps are UTC). \n \n Steps: \n 1. Query ocr_text for today grouped by app_name + window_name with time ranges (MIN/MAX created_at), filtering out empty/junk text \n 2. Query audio_transcriptions for today to find meeting/call content (is_input=1 is microphone) \n 3. Correlate everything into a chronological timeline \n \n Output format — a narrative timeline like: \n 08:34–09:12 PhpStorm · JY-20458 — editing UserReportController.php, writing migration \n 09:12–09:45 Slack · #engineering — huddle with team, discussed deployment blocker \n 09:45–10:30 Chrome · Jira — reviewed ticket comments, updated description \n ... \n \n Rules: \n - Convert all UTC timestamps to local time (Europe/Sofia = UTC+3) \n - Merge consecutive entries of the same app/window within 5-minute gaps \n - Flag meetings/calls based on: Zoom/Meet/Teams in app_name OR microphone audio present \n - For code work: extract file names and ticket numbers from window titles \n - For Slack/browser: extract thread/page context from window_name \n - Minimum segment duration: 2 minutes (ignore flash switches) \n - End with a summary block: total focused work, meetings, context switches, top 3 apps by time \n ⎿ Please run /login · API Error: 401 {\"type\":\"error\",\"error\":{\"type\":\"authentication_error\",\"message\":\"Invalid authentication \n \u0000 credentials\"},\"request_id\":\"req_011CaFTE1idEzHpMgKT4Xunq\"}\n\n❯ is it ok now \n ⎿ Please run /login · API Error: 401 {\"type\":\"error\",\"error\":{\"type\":\"authentication_error\",\"message\":\"Invalid authentication \n credentials\"},\"request_id\":\"req_011CaFTEnQhm5weRqNt6SMq2\"} \n \n❯ /login \n ⎿ Login successful \n \n❯ You have access to Screenpipe data via the local SQLite database at ~/.screenpipe/db.sqlite \n \n Query the database using: sqlite3 -json ~/.screenpipe/db.sqlite \"YOUR SQL HERE\" \n \n Key tables: \n - ocr_text: columns id, frame_id, text, text_json, app_name, window_name, created_at \n - audio_transcriptions: columns id, audio_chunk_id, transcription, device, is_input, created_at \n - frames: columns id, file_path, timestamp, device_id \n - ui_events: columns id, event_type, element_text, app_name, created_at \n \n Build a full day activity summary for TODAY (use date() in SQL for today's date, timestamps are UTC). \n \n Steps: \n 1. Query ocr_text for today grouped by app_name + window_name with time ranges (MIN/MAX created_at), filtering out empty/junk text \n 2. Query audio_transcriptions for today to find meeting/call content (is_input=1 is microphone) \n 3. Correlate everything into a chronological timeline \n \n Output format — a narrative timeline like: \n 08:34–09:12 PhpStorm · JY-20458 — editing UserReportController.php, writing migration \n 09:12–09:45 Slack · #engineering — huddle with team, discussed deployment blocker \n 09:45–10:30 Chrome · Jira — reviewed ticket comments, updated description \n ... \n \n Rules: \n - Convert all UTC timestamps to local time (Europe/Sofia = UTC+3) \n - Merge consecutive entries of the same app/window within 5-minute gaps \n - Flag meetings/calls based on: Zoom/Meet/Teams in app_name OR microphone audio present \n - For code work: extract file names and ticket numbers from window titles \n - For Slack/browser: extract thread/page context from window_name \n - Minimum segment duration: 2 minutes (ignore flash switches) \n - End with a summary block: total focused work, meetings, context switches, top 3 apps by time \n\n⏺\u0000Querying the Screenpipe\u0000database\u0000for\u0000today's\u0000activity.\n \n⏺\u0000Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"SELECT\u0000app_name,\u0000window_name,\u0000MIN(created_at)\u0000as\u0000first_seen,\u0000MAX(created_at)\u0000as\u0000last_seen,\u0000COUNT(*)\u0000as\u0000entries\u0000FROM\u0000ocr_t…)\n ⎿ Error: Exit code 1 \n \u0000\u0000Error: in prepare, no such column: created_at\n SELECT app_name, window_name, MIN(created_at) as first_seen, MAX(created_at) a \n error here ---^ \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \"SELECT transcription, device, is_input, created_at FROM audio_transcriptions WHERE date(created_at) = date('now') AND len…) \n ⎿ Cancelled: parallel tool call Bash(sqlite3 -json ~/.screenpipe/db.sqlite \"S…) errored\n \n⏺ Let me check the actual schema first. \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \".schema ocr_text\" 2>&1 && echo \"---\" && sqlite3 ~/.screenpipe/db.sqlite \".schema audio_transcriptions\" 2>&1) \n ⎿ CREATE TABLE IF NOT EXISTS \"ocr_text\" ( \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000frame_id\u0000INTEGER\u0000NOT\u0000NULL,\n text TEXT NOT NULL, \n … +33 lines (ctrl+o to expand) \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \".schema frames\" 2>&1) \n ⎿ CREATE TABLE IF NOT EXISTS \"frames\" ( \n id INTEGER PRIMARY KEY AUTOINCREMENT, \n video_chunk_id INTEGER DEFAULT NULL, \n … +47 lines (ctrl+o to expand) \n \n⏺ Now I have the schema. The timestamps are in frames, not ocr_text. Querying with joins. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"app_name\":\"PhpStorm\",\"window_name\":\"\",\"first_seen_local\":\"2026-04-20\u000009:09:09\",\"last_seen_local\":\"2026-04-20\u000013:08:57\",\"entries\":47},\n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js – console [EU]\",\"first_seen_local\":\"2026-04-20 09:09:20\",\"last_seen_local\":\"2026-04-20 11:49:37\",\"entries\":31}, \n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js\u0000–\u0000console\u0000[PROD]\",\"first_seen_local\":\"2026-04-20\u000009:09:39\",\"last_seen_local\":\"2026-04-20\u000009:09:39\",\"entries\":1},\n … +94 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \u0000 \n ⎿ (No output) \n \n⏺ Let me get a bit more detail on the audio and the afternoon activity. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ (No output) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"\n SELECT…) \n ⎿ [{\"app_name\":\"PhpStorm\",\"window_name\":\"\",\"first_seen_local\":\"2026-04-20\u000009:09:09\",\"last_seen_local\":\"2026-04-20\u000013:08:57\",\"entries\":47},\n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js – console [EU]\",\"first_seen_local\":\"2026-04-20 09:09:20\",\"last_seen_local\":\"2026-04-20 11:49:37\",\"entries\":31}, \n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js\u0000–\u0000console\u0000[PROD]\",\"first_seen_local\":\"2026-04-20\u000009:09:39\",\"last_seen_local\":\"2026-04-20\u000009:09:39\",\"entries\":1},\n … +79 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ I have everything I need. Here's your day: \n \n --- \n Activity Summary — Monday, 20 April 2026 \n \n Chronological Timeline \n \n 09:09–09:21 PhpStorm · faVsco.js — started day, checked EU/PROD consoles, \n briefly opened connect.vue, ImportActivityTypes.php \n \n 09:17–09:30 Slack · Galya Dimitrova (DM) — morning check-in \n \n 09:21–10:36 PhpStorm · faVsco.js — main coding block: ReportController.php, \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000TrackAutomatedReportGeneratedEvent.php,\n TrackAutomatedReportGeneratedEventTest.php \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000(shelved\u0000changes,\u0000ran\u0000tests\u0000via\u0000Run\u0000panel)\n \n 09:30–09:44 Slack · multiple DMs — Aneliya/Nikolay/Steliyan group DM, \n Stoyan Tomov DM, #engineering glance \n \n 09:40–10:04 iTerm2 · EU (ssh) + PROD — terminal work on EU/PROD servers \n \n 09:45–10:05 Firefox · Meet - Daily - — 📹\u0000 MEETING: Platform daily standup (~20 min) \n Platform\n \n 10:04–10:18 Firefox · Work / Jira — post-standup Jira check, \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Platform\u0000Sprint\u00002\u0000Q2\u0000Scrum\u0000Board\n \n 10:21–10:44 Slack\u0000·\u0000platform-inner-team\u0000\u0000\u0000—\u0000#platform-inner-team\u0000channel,\n + Stefka Stoyanova DM DM with Stefka Stoyanova \n \n 10:26–11:13 Slack · Galya Dimitrova (DM) — extended DM thread with Galya \n \n 10:32–12:22 PhpStorm · Run — tests running in background \n \n 10:44–10:49 Slack · Huddle: @Galya — 📹\u0000 MEETING: Slack huddle with Galya (~5 min) \n Dimitrova\n \n 11:02–11:25 PhpStorm · faVsco.js — CreateSharedEvent.php, laravel.log (log review), \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000composer.json;\u0000iTerm2\u0000DEV\u0000(docker)\u0000briefly\n \n 11:08–11:32 Slack · #releases — watching release channel \n \n 11:32–11:40 PhpStorm · faVsco.js — User.php, AppServiceProvider.php \n\u0000\u0000 \n 11:33–11:48 Slack · Huddle: @Aneliya — 📹\u0000 MEETING: Slack huddle with Aneliya (~15 min) \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Angelova\n \n 11:35–11:55 Slack · Aneliya Angelova (DM) — follow-up DM after huddle \n \n 11:48–12:44 PhpStorm · faVsco.js — deep work: AskJiminnyReportActivityService.php, \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000RequestGenerateAskJiminnyReportJob.php,\n AskJiminnyReportsController.php \n\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000(local\u0000SF\u0000server\u0000running\u0000in\u0000background)\n \n 12:19–12:36\u0000\u0000PhpStorm\u0000·\u0000faVsco.js\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000—\u0000AutomatedReportsSendCommand.php,\n AutomatedReportsService.php, \n AutomatedReportsServiceTest.php \n \n 12:24–12:38 Slack · #confusion-clinic — checking confusion-clinic channel \n\u0000\u0000 \n 12:49–13:07 PhpStorm · faVsco.js — pivoted to HubSpot integration: \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000OpportunitySyncTrait.php,\u0000BaseService.php,\n AskJiminnyReportActivityServiceTest.php, \n HS_local env \n \n 13:06–13:07 PhpStorm · Commit Changes — committed the morning's work \n \n ≈ 13:07–13:38 BREAK — ~30 min gap in activity \n \n 13:38–18:55 PhpStorm + Firefox + iTerm2 — afternoon continued (generic capture mode; \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000window-level\u0000detail\u0000unavailable\u0000—\u0000likely\n continued Ask Jiminny / automated reports work; \n Activity Monitor checked 13:54–15:21, \n CleanShot X screenshots 15:01–16:55, \n Finder 16:58–17:07) \n \n --- \n Summary Block \n\u0000\u0000 \n\u0000\u0000┌────────────────────┬────────────────────────────────────────────────────────────────────┐\n\u0000\u0000│\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000 \u0000\u0000│\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├────────────────────┼────────────────────────────────────────────────────────────────────┤\n\u0000\u0000│ Day start / end\u0000 \u0000 │ 09:09 – ~18:55\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├────────────────────┼────────────────────────────────────────────────────────────────────┤\n │ Total tracked time │ ~9h 45min │ \n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Meetings / calls │ ~40 min (Platform daily standup + 2 Slack huddles) │ \n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Focused coding\u0000\u0000\u0000\u0000\u0000│\u0000~6–7\u0000h\u0000(PhpStorm\u0000dominant\u0000—\u0000Ask\u0000Jiminny\u0000automated\u0000reports\u0000feature)\u0000│\n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Communication \u0000\u0000\u0000\u0000\u0000│\u0000~1.5\u0000h\u0000(Slack:\u0000~10\u0000distinct\u0000DMs/channels)\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Context switches\u0000\u0000\u0000│\u0000High\u0000—\u0000~15\u0000Slack\u0000threads,\u0000frequent\u0000PhpStorm\u0000↔\u0000Slack\u0000↔\u0000Firefox\u0000\u0000\u0000\u0000\u0000\u0000│\n └────────────────────┴────────────────────────────────────────────────────────────────────┘ \n \n Top 3 apps by time: \n 1. PhpStorm — dominant\u0000all\u0000day;\u0000project:\u0000faVsco.js\u0000(Jiminny\u0000backend)\n 2. Firefox — browser work + Google Meet \n 3. iTerm2 — EU/PROD SSH +\u0000local Docker \n \n Main coding theme:\u0000Ask\u0000Jiminny\u0000automated\u0000reports\u0000pipeline\u0000—\u0000AskJiminnyReportActivityService,\u0000RequestGenerateAskJiminnyReportJob,\u0000AutomatedReportsService,\n AutomatedReportsSendCommand, AskJiminnyReportsController, plus related tests. Committed at 13:06. \n \n ▎ No audio transcriptions were captured today (microphone data empty), so meeting content was inferred from window titles only. \n \n✻ Sautéed for 1m 28s \n \n❯ what about between 15:00 and 17:00 approximatelly. I had a meeting. What was it about \n \n⏺ Let me dig into that window more carefully. \n \n⏺\u0000Bash(sqlite3 -json\u0000~/.screenpipe/db.sqlite\u0000\"\n SELECT…) \n ⎿ (No output)\n \n⏺ Bash(sqlite3 -json\u0000~/.screenpipe/db.sqlite\u0000\"\n SELECT transcription, device, is_input_device, datetime(timestamp, '+3 hours') as local_time…) \n ⎿ (No output) \n \n⏺ Wrong UTC offset in my query.\u0000Let\u0000me\u0000fix\u0000—\u000015:00–17:00\u0000local\u0000=\u000012:00–14:00\u0000UTC.\n \n⏺\u0000Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"\n SELECT…) \n ⎿ [{\"app_name\":\"iTerm2\",\"window_name\":\"iTerm2\",\"local_time\":\"2026-04-20 15:00:00\",\"text_preview\":\"FV faVsco.js\u0000v°9\u0000masterProjectphp\u0000artisan0\u0000composer.json0\u0000composer.lockde\n pendency-checker.json0 dev.jsonE ids.txtE infection.json.distM-INSTALL.mdM+ INTERNAL_WEBHOOK_SETUP.mdEjiminny storageM+licenses.mom Makerileраскаqе-lock. sonE phpstan.ne \n on.dist= phostan-baseline.neon<phpunit.xmlTe raw sal querv\"}, \n … +173 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT transcription, device, is_input_device, datetime(timestamp, '+3 hours') as local_time…) \n ⎿ (No output) \n \n⏺ Bash(cat /Users/lukas/.claude/projects/-Users-lukas/81aa3054-f078-4fb2-aeb0-937316d28f59/tool-results/b5ez8ga4k.txt\u0000|\u0000python3\u0000-c\u0000\"\n import json, sys…) \n ⎿ Traceback (most\u0000recent\u0000call\u0000last):\n File \"<string>\", line 15, in <module> \n File \"<string>\", line 15, in <genexpr> \n … +13 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ [{\"app_name\":\"iTerm2\",\"window_name\":\"iTerm2\",\"first_local\":\"2026-04-20 15:00:00\",\"last_local\":\"2026-04-20 17:07:40\"}, \n {\"app_name\":\"Raycast\",\"window_name\":\"Raycast\",\"first_local\":\"2026-04-20 15:00:26\",\"last_local\":\"2026-04-20 15:03:21\"}, \n {\"app_name\":\"Slack\",\"window_name\":\"Slack\",\"first_local\":\"2026-04-20 15:00:39\",\"last_local\":\"2026-04-20 17:26:13\"}, \n … +9 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"app_name\":\"Firefox\",\"window_name\":null,\"local_time\":\"2026-04-20 15:01:01\",\"text_preview\":\"slackActivityLaterJiminny ...Dratts & centi8 DirectoriesEb External connecti \n ons# Starred8 jiminny-x-integrati...& platform-inner-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinic# curiosity_lab# engineering# frontend# general# infra \n -changes# jiminny-bg# platform-tickets# product launches# random# releases# support# thank-yous# the_people_of_jimi...6 Direct messagesP. Aneliya Angelova \"}, \n … +155 lines (ctrl+o to expand) \n \n⏺ Found it. Let me get the meeting duration and the Jira tickets that were discussed. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:00:00\",\"text_preview\":\"FV faVsco.js v°9 masterProjectphp artisan0 composer.json0 composer.lockdependency-checker.json0 dev.jsonE ids.txtE i \n nfection.json.distM-INSTALL.mdM+ INTERNAL_WEBHOOK_SETUP.mdEjiminny storageM+licenses.mom Makerileраскаqе-lock. sonE phpstan.neon.dist= phostan-baseline.neon<phpunit.xmlT \n e raw sal querv.saM+ README.mdLo sonar-proiect propertiesE test.py<> Untited Diadram.xmliI vetur.config.jsMI WEBHOOK FILTERING IMPLEMENTATION.mo› ib External Librariesv \n … +14 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \u0000 \n ⎿ [{\"local_time\":\"2026-04-20 17:15:27\",\"text_preview\":\"Slack•0 ЕlActivityLateMoreVIewmistonWindowHeld@ Search: shared-activiJiminny ...Nikolay Nikolov→Drattc& contTMore un \n reads8 DieuurelMessagesr Filesщсе но като цяло на края както говорихме просто навсякьде където се псEb External connections& Starred@ liminny-x-integrati...platform-inne \n r-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinica curiosiiy ao# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product laun \n … +14 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n \u0000 SELECT…) \u0000 \n ⎿ [{\"local_time\":\"2026-04-20 15:00:39\",\"text_preview\":\"SlackO•• ЕlActivityLaterVIewHistoryWindowHelp@ Search: shared-actiJiminny ..Dratts & centi8 Directories# releases• M \n \u0000\u0000essagesEb\u0000External\u0000connections#\u0000Starred8\u0000jiminny-x-integrati...&\u0000platform-inner-teamE\u0000Channels#\u0000ai-chapter#\u0000alertsS\u0000hackendl#\u0000confusion-clinic#\u0000curiosity_lab#\u0000engineerin\n g# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# support# thank-yous# the_people_of_jimi...6 Direct messagesP. Anel \n … +106 lines (ctrl+o to expand) \n \n⏺ Let me find when the meeting ended by checking the last Meet frames. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 17:07:11\",\"text_preview\":\"SlackActivityMoreVIewMistonWindowHeld@ Search: shared-activiJiminny ...* • Nikolay Nikolov→Drattck cantTMore unreads \n 8 Dieeurel• MessagesEb External connections& Starred@ liminny-x-integrati...platform-inner-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinica curiosiiy ao# \n engineering# fr\"}, \n … +12 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 16:56:34\",\"text_preview\":\"FirefoxFileEditViewHistoryBookmarksProfiles→CToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0‹ >0 lhl100% <78• \n Mon 20 Apr 16:56:33=+Aneliya AngelovaGalya DimitrovaNikolay Yankov*Nikolay IvanovNikolay\u0000NikolovLukas\u0000Kovalik4:56\u0000PM\u0000|\u0000[Platform]\u0000Refinement\u0000•1:54:45\"},\n {\"local_time\":\"2026-04-20 16:56:32\",\"text_preview\":\"FirefoxFileEditViewHistoryBookmarksProfiles→CToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0‹ >0 lbl100% [8• M \n … +20 lines (ctrl+o to expand) \n \n⏺ Got everything. Here's the full picture: \n \n --- \n 📹\u0000 Meeting: [Platform] Refinement \n \n Time: 15:02 – ~16:57 · Duration: ~1h 55min \n Platform: Google Meet (meet.google.com/cxs-eips-npt) \n \n Participants: \n - Lukas Kovalik (you) \n\u0000\u0000- Nikolay Ivanov \n\u0000\u0000-\u0000Steliyan Georgiev\n\u0000\u0000-\u0000Nikolay Nikolov \n\u0000\u0000-\u0000Nikolay\u0000Yankov \n - Aneliya Angelova \n -\u0000Galya Dimitrova (presenting/annotating at the end)\n - Stefka Stoyanova \n \n What was covered:\n This was a sprint backlog refinement session. The browser tabs visible during the call show exactly which Jira tickets were open and likely discussed: \n \n ┌───────────┬──────────────────────────────────────────────────┐ \n │ Ticket │ Title │ \n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-19798\u0000 │ Evaluation for AI activity \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-20553\u0000 │ Improve CRM-sync delay\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├───────────┼──────────────────────────────────────────────────┤ \n │\u0000JY-20698\u0000 │ Handle failed field sync\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├───────────┼──────────────────────────────────────────────────┤ \n\u0000\u0000│ JY-20692 │ Change confirmation page\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-20543\u0000 │ AJ Reports > Tracking\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-18909\u0000\u0000│\u0000(Part\u00002)\u0000Automated\u0000Reports\u0000/\u0000Ask\u0000Jiminny\u0000Reports\u0000│\n ├───────────┼──────────────────────────────────────────────────┤ \n │\u0000SRD-67871\u0000│\u0000Issue\u0000with\u0000reconnecting\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n └───────────┴──────────────────────────────────────────────────┘ \n\u0000\u0000 \n You also had Postman open alongside the meeting with HubSpot (deal/object APIs) and Salesforce (tooling queries, field metadata) — likely looking up API details to clarify \n ticket\u0000scope.\n \n At ~16:56, Galya Dimitrova was screen-sharing (OCR shows \"Presenting, annotating\"), with Jira (jiminny.atlassian.net) visible — typical of a refinement session wrapping up by \n walking\u0000through\u0000the\u0000board.\n \n No audio was captured, so the actual discussion content isn't available — but the ticket list and ~2h duration match a thorough refinement session. \n \n✻ Crunched for 1m 50s \n \n❯ lets maybe focus on one monitor at the time. I probably worked on some stuf when the meeting was on on other monitor. Lets focus on the monitor where was the meeting \n \n⏺ Let me check what monitor/device info is available in the frames. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n \u0000\u0000\u0000SELECT\u0000DISTINCT\u0000device_name,\u0000COUNT(*)\u0000as\u0000cnt…)\n ⎿ [{\"device_name\":\"monitor_1\",\"cnt\":4390}, \n {\"device_name\":\"monitor_2\",\"cnt\":4703}]\n \n⏺\u0000Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"\n SELECT DISTINCT device_name…) \n ⎿ [{\"device_name\":\"monitor_1\"}, \n {\"device_name\":\"monitor_2\"}] \n \n⏺\u0000Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT f.device_name, COUNT(*) as meet_frames…) \n ⎿ monitor_1|1336 \n monitor_2|36 \n \n⏺\u0000monitor_1 was the meeting monitor. Now let me pull the\u0000full\u0000timeline\u0000for\u0000that\u0000monitor\u0000during\u0000the\u0000meeting.\n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"app_name\":\"iTerm2\",\"window_name\":\"iTerm2\",\"first_local\":\"2026-04-20 15:00:00\",\"last_local\":\"2026-04-20 17:07:40\",\"entries\":51}, \n {\"app_name\":\"Raycast\",\"window_name\":\"Raycast\",\"first_local\":\"2026-04-20 15:00:26\",\"last_local\":\"2026-04-20 15:00:26\",\"entries\":1}, \n {\"app_name\":\"Slack\",\"window_name\":\"Slack\",\"first_local\":\"2026-04-20 15:00:39\",\"last_local\":\"2026-04-20 17:26:09\",\"entries\":71}, \n … +8 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:01:21\",\"app_name\":\"Firefox\",\"window_name\":\"Firefox\",\"text\":\"iTerm2ShellEditViewSessionScriptsProfilesWindowHelpC$0 l 0100% C47 • Mon 20 Apr \n 15:01:20meet.google.com/cxs-eips-npt?authuser=0Meet - [Platform] Refinement• [EMAIL] account+ New TabLukas Kovalik[Platform] RefinementE Scheduled for4:00 PM. Use Gemin \n i to take notesShare\u0000notes and transcriptStartJoin\u0000anywayOther\u0000ways\u0000to\u0000join\u0000v{\u0000MacBook\u0000Pr...4\u0000System\u0000Def..•\u0000FaceTime\u0000H...[\u0000Backgroun...Gemini\u0000is\u0000available\u0000in\u0000Meet\u0000as\u0000you\n … +9 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:01:06\",\"app_name\":\"PhpStorm\",\"text\":\"iTerm2ShellEditViewSessionScriptsProfilesWindowHelp100% C8• Mon 20 Apr 15:01:06ec2-user@ip-10-30-159-1 \n 86:~DOCKERDEV (docker)H82APP (-zsh)-zsh*4screenpipe\\\"• *5ec2-user@ip-10-30-159-186:- (...[ec2-user@ip-10-30-159-186 ~]$ dockerexeс-it $(dockerps--format\\\"{{.ID}}\\\" --fil \n ter\\\"name=ecs-worker\\\" | head -1) /bin/bash -c \\\"cd\u0000/home/jiminny&&bash\\\"root@7dffb84e8e4e:/home/jiminny#\u0000php\u0000artisan\u0000aboutEnvironmentApplicationNameLaravel\u0000VersionPHP\u0000V\n … +15 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 16:36:20\",\"app_name\":\"PhpStorm\",\"text\":\"FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0Galya \n Dimitrova (Presenting, annotating)Galya DimitrovaStefka StoyanovaNikolay NikolovGalya Dimitrova (Presentation)4:36 PM | [Platform] Refinement •Lộ3100% K478• Mon 20 Apr \n 16:36:198Nikolay Ivanovukas Kovalik1:34:31\"}, \n … +35 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:01:15\",\"app_name\":\"iTerm2\",\"text\":\"iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zshDOCKER• ₴1DEV (docker)Last login: Mon Apr 20 13:2 \n 6:00 on ttys008182APP (-zsh)·3Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentsPoetry could not find a pyproject.toml file in /Users \n /lukas/jiminny/app or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny\u0000~/jiminny/app\u0000(JY-18909-automated-reports-ask-jiminny)\u0000$||A-zsh<\u0000>0\u0000ldolscreenpipe*100%\u0000C8•\u0000Mon\n … +89 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Now I have a rich picture. Here's the focused monitor_1 view: \n \n --- \n 📹\u0000 [Platform] Refinement — monitor_1 timeline \n \n 15:00–15:02 · Pre-meeting \n - iTerm2 active: SSH'd into EU production (ec2-user@ip-10-30-159-186) running php artisan about to check the live environment \n - Joined the Meet lobby at 15:01 — Steliyan Georgiev was already in, Nikolay Ivanov joined next \n \n 15:02 · In the call \n - You had Postman open alongside Meet (HubSpot deal API + Salesforce tooling queries for field metadata) — likely pre-loaded for reference during ticket discussions \n \n ~15:05–15:06 · Nikolay Yankov presenting \n - Walked through Jira: opened JY-20676 — \"Notify the user if a Panorama prompt is deleted but is used in AJ Report\" (with parent JY-19240) \n - Then showed the staging app (app.staging.jiminny.com/ondemand) — the Ask Jiminny on-demand view, seemingly demoing the current behavior \n -\u0000Then\u0000jumped\u0000into Figma — Project Phoenix design file, specifically the Automated\u0000Reports screens: \u0000 \u0000 \u0000 \u0000 \n - Email for generated / not generated report \n - Delete Saved Search \n - Automated Reports settings \n \n ~16:36–16:57 · Galya Dimitrova presenting \n\u0000\u0000- Opened Jira (jiminny.atlassian.net)\u0000—\u0000Platform\u0000Team\u0000board,\u0000Backlog\u0000+\u0000Active\u0000Sprints\u0000view\n - Then switched to Figma — Project Phoenix again, showing: \n \u0000- Deal Insights,\u0000Team Insights, AI Reports tabs\u0000 \n - AI Reports prompt screen (\"This prompt is used in reports — you want to keep, not delete the report to break…\") \n - Org Settings, Profile, Kiosk, Emails screens \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \n \n --- \n Summary: \n Nearly 2-hour refinement focused on the AJ Reports / Automated Reports / Project Phoenix feature set. Nikolay Yankov walked through ticket specs and staging demos; Galya \n\u0000\u0000Dimitrova closed\u0000with\u0000Figma\u0000designs\u0000for\u0000the\u0000same\u0000area.\u0000The\u0000Jira\u0000tickets\u0000open\u0000in\u0000your\u0000browser\u0000(JY-20676,\u0000JY-19240,\u0000JY-20543,\u0000JY-18909,\u0000JY-20553,\u0000JY-20698,\u0000JY-20692)\u0000were\u0000the\n likely agenda items worked through one by one. \n \n✻ Worked for 1m 39s \n \n❯ specifically for that meetings what were the tickets discussed and what data were populated \n \n⏺ Let me dig through all the Jira content captured on monitor_1 during the meeting. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n \u0000\u0000\u0000SELECT…)\n ⎿ 2026-04-20 15:01:15 | iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zshDOCKER• ₴1DEV (docker)Last login: Mon Apr 20 13:26:00 on ttys008182APP (-zsh)·3Poetry could \n not find a pyproject.toml\u0000file\u0000in\u0000/Users/lukas/jiminny/app\u0000or\u0000its\u0000parentsPoetry\u0000could\u0000not\u0000find\u0000a\u0000pyproject.toml\u0000file\u0000in\u0000/Users/lukas/jiminny/app\u0000or\u0000its\u0000parentslukas@Luka\n s-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $||A-zsh< >0 ldolscreenpipe*100% C8• Mon 20 Apr 15:01:14₴1• *5ec2-user@ip-10-30-15 \n\u0000\u0000 … +198 lines (ctrl+o to expand)\n \n⏺ Bash(cat /Users/lukas/.claude/projects/-Users-lukas/81aa3054-f078-4fb2-aeb0-937316d28f59/tool-results/b5bsv0n08.txt\u0000|\u0000python3\u0000-c\u0000\"\n import json, sys, re…) \n⏺ ⎿ Running… \n \n✢ DisTracebackt(most recent call last): \n\u0000 File \"<string>\",\u0000line\u00004,\u0000in\u0000<module>\n ─ File \"/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/__init__.py\",─line─293,─in─load────────────────────────────────────────────────────────────────\n❯ … +8 lines (ctrl+o to expand) \u0000 \u0000 \u0000 \u0000 \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \"\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000◐ medium · /effort\n SELECT…) \n ⎿ 2026-04-20 15:05:18|PostmanFilelEdit|ViewWindowHelp= C)meet.google.com/cxs-eips-npt?authuser=0Nikolay Yankov (Presenting, annotating)M nooe0 JмNкт@ For you© Recent$ Star \n red8? Apps0 Spaces(9 Service-DeskJiminny (01d)Jiminny (New)1 CD Piatform TeamCID Capture Team|CD Enterprise Stability I.ID Processing TeamCD SE Kanban= More spaces= Flte \n rsCB Dashboardse OperationsE3 ConfiuenceI: Teams5, Customise sidebarСл-аwr-axP Pioie XCUa x F POK X OSnin x ONM X OOVN X 4 De x8x Eu TanksD Dee, Search+ Createoneejimnay \n … +176 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ 2026-04-20 15:05:36|PostmanFileEdit|ViewWindowHelp= C)meet.google.com/cxs-eips-npt?authuser=0Nikolay Yankov (Presenting)EditM InboxHisteryBookmarks2 Pato xProfVesTabHNOл \n -9 xQAкa xE Font A: X•Corti xa UY-2 xF Projec X2 12-2 xP Projc X © Jmil@ devu x© dev.u x$ 04 Denehttps://iminny.atlassian.net/browse/JY-206768 JnrelD Projects0O8[EDatad \n # Caude O Crcledi E Sentry%X &u Lasks@ For youRecent |# Starred8. Apps0 SpacesStarred9) Service-DeskJiminny (O1d)Recent|Jiminny (New)I CID Platform TeamIID Capture TeamI \n … +178 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT substr(o.text, instr(o.text, 'browse/'), 200) as browse_context,…) \n ⎿ browse/JY-205007at/Origin=eyJpfjoiN/VmYzgxZjYzYTFhNDNjYTg4ZJYOYTZIZGZ/MmViZDUILCJwljoiamlyYS1zbGFjay1pbnQifoLUM Leaderooard.• TODODebug crm-sync... C Refine C Sentry C E \n S CJ Learn C AJ ChagterHomekevi|2026-04-20 15:27:28 \n browse/JY-205007at/Origin=eyJpfjolN/VmYzgxZjYzYTFhNDNjYTg4Z/YOYTZIZGZ/MmViZDUILC.JwljolamlyYS1zbGFjay1pbnQifQLuM Leaderiooard.D TODOC Debug crm-sync..- KelineCO Sentry C \n … +76 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ Error: Exit code 1 \n Error: in prepare, no such function: regexp_substr \n SELECT DISTINCT regexp_substr(o.text, 'browse/JY-[0-9]+') as ticket_url, \n ^--- error here \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ JY-206768 |2026-04-20 15:05:36|2026-04-20 15:05:36 \n JY-20676D |2026-04-20 15:05:43|2026-04-20 15:05:46 \n JY-20676C |2026-04-20 15:14:26|2026-04-20 15:14:26 \n … +30 lines (ctrl+o to expand) \n \n⏺ Good - I can see the real ticket IDs despite OCR noise: JY-20676, JY-20615, JY-20613, JY-20500, JY-20501. Let me pull the full content for each. \n \n⏺ Bash(for ticket in \"JY-20676\" \"JY-20615\" \"JY-20613\" \"JY-20500\" \"JY-20501\"; do \n echo \"=== $ticket ===\"…) \n ⎿ === JY-20676 === \n 2026-04-20 16:49:34|FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0100% 128• Mon 20 Apr 16:49:348+Galya Dimitrova (Pres \n enting, annotating)SafariFileEditViewHistoryBookmarksDevelopWindowHelpK/2-Q8•Mon 20 Apr 16:49jiminny.atlassian.net|AWS AIA Sentry3 HubSpot@ OрeпAlfi Seif ServiceDust Doc \n … +43 lines (ctrl+o to expand) \n \n⏺ Bash(for ticket in \"JY-20676\" \"JY-20615\" \"JY-20613\" \"JY-20500\" \"JY-20501\"; do \n echo \"=== $ticket BEST FRAME ===\"…) \n ⎿ === JY-20676 BEST FRAME === \n 2026-04-20 16:49:34|FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0100% 128• Mon 20 Apr 16:49:348+Galya Dimitrova (Pres \n enting, annotating)SafariFileEditViewHistoryBookmarksDevelopWindowHelpK/2-Q8•Mon 20 Apr 16:49jiminny.atlassian.net|AWS AIA Sentry3 HubSpot@ OрeпAlfi Seif ServiceDust Doc \n … +82 lines (ctrl+o to expand) \n \n⏺ Now let me check one more thing — what specific data was populated during the meeting (sprint assignments, estimates, description updates). \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT datetime(f.timestamp, '+3 hours') as t, o.text…) \n ⎿ 2026-04-20 16:49:34|FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0100% 128• Mon 20 Apr 16:49:348+Galya Dimitrova (Pres \n enting, annotating)SafariFileEditViewHistoryBookmarksDevelopWindowHelpK/2-Q8•Mon 20 Apr 16:49jiminny.atlassian.net|AWS AIA Sentry3 HubSpot@ OрeпAlfi Seif ServiceDust Doc \n s|AWS USS. GTM Tren.J AWS EU7 A Journey-PlanhatThe Reven...•J Emоlй|E3 Features4 LogRocket|P Postmark* Bamboo*. Campus xFirebaseAsk Jimin# Platform Te.88G. Demo ExnSearc \n … +27 lines (ctrl+o to expand) \n \n⏺ I have everything needed. Here's the complete ticket breakdown: \n \n --- \n Tickets Discussed — [Platform] Refinement \n \n --- \n JY-20676 · Notify the user if a Panorama prompt is deleted but is used in AJ Report \n \n Time on screen: 15:05–15:18 · Presenter: Nikolay Yankov \n Epic: AJ Reports · Status: BACKLOG \n \n Description: \n \n ▎ Users might attempt to delete a Panorama Prompt which is used in AJ Report. When they do that we need to let them know that the report will stop generating. \n ▎ - Show a confirmation modal when a user is deleting a Panorama Prompt that is used in an active/enabled report \n \n Figma linked: Project Phoenix (Automated Reports screens shown during discussion) \n Subtask: JY-20615 (below) \n Data populated: Description was already present; Figma designs walked through live \n \n --- \n JY-20615 · Notify the user if a Saved Search is deleted but is used in AJ Report \n \n Time on screen:\u000015:18–15:20\u0000·\u0000Presenter:\u0000Nikolay\u0000Yankov\n Epic: AJ Reports · Status: BACKLOG \n Linked to: JY-20676 (sibling ticket, same pattern for Saved Searches) \n \n --- \n JY-20613 · Allow owner's role to be selected when setting up a trial \n\u0000\u0000 \n\u0000\u0000Time on screen:\u000015:20–15:26\u0000·\u0000Presenter:\u0000Nikolay\u0000Yankov\n Status: BACKLOG · Estimate visible: 2.5 story points \n \n Description: \n \n ▎ Stoyan is seeing more cases where the Owner doesn't want to connect their calendar and email to Jiminny because they don't want to be a recorder. Currently when a trial is \n ▎ created the Owner is given a Recorder role by default.\n ▎ - Allow Implementations to select the role of the owner when setting up a trial \n\u0000\u0000▎ - Put the field below the Owner field\n\u0000\u0000▎\u0000- Choices: Recorder / Recorder & Voice / Analyst\n ▎ - This option shouldn't appear when editing an organisation \n ▎\u0000- When the owner signs in, they should have the selected role + Admin permissions\n \n\u0000\u0000--- \n\u0000\u0000JY-20500 · Batch initial sync for Salesforce\n \n Time on screen:\u000015:26–16:35\u0000(~70\u0000min,\u0000most\u0000of\u0000the\u0000meeting)\u0000·\u0000Multiple presenters\n Parent: JY-15971 CRM Synching Improvements · Epic: CRM Sync \n Sprint assigned during meeting: → Platform Sprint 3 Q2 \n Rank updated: None → Ranked higher (Galya updated) \n Need QA: No \n Description (Stefka Stoyanova updated): \n \n ▎ Currently synching CRM objects is not working sufficiently when a huge amount of objects are imported from the CRM into Jiminny. \n ▎ \n ▎ Problem: Importing deals, leads, accounts and contacts can take hours \n ▎ \n ▎ Solution: \n\u0000\u0000▎ - Separate obtaining which objects to import from updating them in Jiminny\n ▎ - The current sync object job should only read batches from Salesforce and store the payload in Redis \n ▎ - A separate {import_object} job processes batches of 100 deals/leads/accounts/contacts from Redis into Jiminny \n ▎ - Retry mechanism for spot instances being turned off \n ▎ - Clean Redis after 24 hours for unconsumed objects \n \n --- \n JY-20501 · Batch initial sync for HubSpot \n\u0000\u0000 \n\u0000\u0000Time on screen:\u000015:28–16:29\u0000(alongside\u0000JY-20500)\n Parent: JY-15971 · Sprint assigned: → Platform Sprint 3 Q2 \n Rank updated: None → Ranked higher (Galya updated) \n Key design note captured: \n \n ▎ \"We're just changing the source of IDs (HubSpot API instead of webhooks), but using the same Redis Batch Job pipeline — same retry/failure handling as regular webhook sync\" \n \n Description mirrors JY-20500 but targets HubSpot objects (deals, accounts, contacts) instead of Salesforce \n \n --- \n\u0000\u0000Also visible in backlog (not opened individually but listed):\n \n ┌──────────┬─────────────────────────────────────┬───────────────────┬──────────┐\n │ Ticket │ Title │ Epic │ Estimate │ \n\u0000\u0000├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤\n\u0000\u0000│ JY-20503 │ Batch insert/update CRM\u0000objects\u0000in…\u0000│\u0000CRM\u0000Sync\u0000 \u0000 \u0000\u0000\u0000\u0000 \u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000 \u0000│\n\u0000\u0000├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤\n │ JY-20503 │ Batch insert/update CRM objects │ CRM Sync │ — │ \n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │ JY-20699 │ Wrong formatting for summary in… │ — │ 2.5 │ \n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n\u0000\u0000│ JY-20412 │ Change\u0000Auto-log\u0000delay\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000Platform\u0000Sprint\u0000 \u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000 \u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │\u0000JY-20361\u0000│\u0000AJ\u0000Panorama\u0000for\u0000Call\u0000Scoring\u0000in\u0000OD\u0000\u0000│\u0000Automated\u0000Reports\u0000│\u00004\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │ JY-19628 │ Evaluation\u0000of\u0000AJ\u0000Panorama\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000Ask\u0000Anything\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n\u0000\u0000│ JY-20625 │ Jiminny\u0000MCP\u0000Connector\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │\u0000JY-20410\u0000│\u0000Update\u0000the\u0000template…\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n └──────────┴─────────────────────────────────────┴───────────────────┴──────────┘ \n\u0000\u0000 \n\u0000\u0000---\n\u0000\u0000Key outcomes from the session:\n - JY-20500 and JY-20501 were pulled into Platform Sprint 3 Q2 and ranked during the meeting \n -\u0000JY-20501\u0000description and JY-20500 description were updated by Stefka Stoyanova during the\u0000call\n - JY-20613 had its estimate confirmed at 2.5 points \n - Figma (Project Phoenix) was used to walk through JY-20676/JY-20615 UI flows \n \n✻ Brewed for 1m 57s \n \n※ recap: Platform refinement meeting reviewed 5 Jira tickets, mainly JY-20500/20501 batch CRM sync for Salesforce and HubSpot, both moved to Sprint 3 Q2. Next: check if sprint \n assignments saved correctly in Jira. (disable recaps in /config) \n \n───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n❯ \n───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000~112k uncached · /clear to start fresh\n\u0000\u0000? for shortcuts\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000new task? /clear to save 113.2k tokens","depth":4,"value":"!=null){if(typeof K!==\"object\"&&typeof K!==\"function\")throw TypeError('Object expected to be assigned to \"using\" declaration');var z;if(_)z=K[PA5];if(z===void 0)z=K[XA5];if(typeof z!==\"function\")throw TypeError(\"Object not disposable\");q.push([_,z,K])}else if(_)q.push([_]);return K},nz=(q,K,_)=>{var z=typeof SuppressedError===\"function\"?SuppressedError:function(O,$,w,j){return j=Error(w),j.name=\"SuppressedError\",j.error=O,j.suppressed=$,j},Y=(O)=>K=_?new z(O,K,\"An error was suppressed during disposal\"):(_=!0,O),A=(O)=>{while(O=q.pop())try{var $=O[1]&&O[1].call(O[2]);if(O[0])return Promise.resolve($).then(A,(w)=>(Y(w),A()))}catch(w){Y(w)}if(_)throw K};return A()};function DA5(){this.__data__=[],this.size=0}var PJ7;var DJ7=L(()=>{PJ7=DA5});function WA5(q,K){return q===K||q!==q&&K!==K}var Pg;var pP6=L(()=>{Pg=WA5});function fA5(q,K){var _=q.length;while(_--)if(Pg(q[_][0],K))return _;return-1}var de;var qu6=L(()=>{pP6();de=fA5});function vA5(q){var K=this.__data__,_=de(K,q);if(_<0)return!1;var z=K.length-1;if(_==z)K.pop();else GA5.call(K,_,1);return--this.size,!0}var ZA5,GA5,WJ7;var fJ7=L(()=>{qu6();ZA5=Array.prototype,GA5=ZA5.splice;WJ7=vA5});function TA5(q){var K=this.__data__,_=de(K,q);return _<0?void 0:K[_][1]}var ZJ7;var GJ7=L(()=>{qu6();ZJ7=TA5});function VA5(q){return de(this.__data__,q)>-1}var vJ7;var TJ7=L(()=>{qu6();vJ7=VA5});function kA5(q,K){var _=this.__data__,z=de(_,q);if(z<0)++this.size,_.push([q,K]);else _[z][1]=K;return this}var VJ7;var kJ7=L(()=>{qu6();VJ7=kA5});function gP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var ce;var Ku6=L(()=>{DJ7();fJ7();GJ7();TJ7();kJ7();gP6.prototype.clear=PJ7;gP6.prototype.delete=WJ7;gP6.prototype.get=ZJ7;gP6.prototype.has=vJ7;gP6.prototype.set=VJ7;ce=gP6});function NA5(){this.__data__=new ce,this.size=0}var NJ7;var yJ7=L(()=>{Ku6();NJ7=NA5});function yA5(q){var K=this.__data__,_=K.delete(q);return this.size=K.size,_}var EJ7;var LJ7=L(()=>{EJ7=yA5});function EA5(q){return this.__data__.get(q)}var hJ7;var RJ7=L(()=>{hJ7=EA5});function LA5(q){return this.__data__.has(q)}var SJ7;var CJ7=L(()=>{SJ7=LA5});var hA5,g_8;var Aa8=L(()=>{hA5=typeof global==\"object\"&&global&&global.Object===Object&&global,g_8=hA5});var RA5,SA5,vJ;var sR=L(()=>{Aa8();RA5=typeof self==\"object\"&&self&&self.Object===Object&&self,SA5=g_8||RA5||Function(\"return this\")(),vJ=SA5});var CA5,YW;var J_6=L(()=>{sR();CA5=vJ.Symbol,YW=CA5});function IA5(q){var K=bA5.call(q,_u6),_=q[_u6];try{q[_u6]=void 0;var z=!0}catch(A){}var Y=xA5.call(q);if(z)if(K)q[_u6]=_;else delete q[_u6];return Y}var bJ7,bA5,xA5,_u6,xJ7;var IJ7=L(()=>{J_6();bJ7=Object.prototype,bA5=bJ7.hasOwnProperty,xA5=bJ7.toString,_u6=YW?YW.toStringTag:void 0;xJ7=IA5});function BA5(q){return mA5.call(q)}var uA5,mA5,uJ7;var mJ7=L(()=>{uA5=Object.prototype,mA5=uA5.toString;uJ7=BA5});function FA5(q){if(q==null)return q===void 0?gA5:pA5;return BJ7&&BJ7 in Object(q)?xJ7(q):uJ7(q)}var pA5=\"[object Null]\",gA5=\"[object Undefined]\",BJ7,YL;var M_6=L(()=>{J_6();IJ7();mJ7();BJ7=YW?YW.toStringTag:void 0;YL=FA5});function UA5(q){var K=typeof q;return q!=null&&(K==\"object\"||K==\"function\")}var PO;var hT=L(()=>{PO=UA5});function nA5(q){if(!PO(q))return!1;var K=YL(q);return K==dA5||K==cA5||K==QA5||K==lA5}var QA5=\"[object AsyncFunction]\",dA5=\"[object Function]\",cA5=\"[object GeneratorFunction]\",lA5=\"[object Proxy]\",FP6;var F_8=L(()=>{M_6();hT();FP6=nA5});var iA5,U_8;var pJ7=L(()=>{sR();iA5=vJ[\"__core-js_shared__\"],U_8=iA5});function rA5(q){return!!gJ7&&gJ7 in q}var gJ7,FJ7;var UJ7=L(()=>{pJ7();gJ7=function(){var q=/[^.]+$/.exec(U_8&&U_8.keys&&U_8.keys.IE_PROTO||\"\");return q?\"Symbol(src)_1.\"+q:\"\"}();FJ7=rA5});function sA5(q){if(q!=null){try{return aA5.call(q)}catch(K){}try{return q+\"\"}catch(K){}}return\"\"}var oA5,aA5,rl;var Oa8=L(()=>{oA5=Function.prototype,aA5=oA5.toString;rl=sA5});function AO5(q){if(!PO(q)||FJ7(q))return!1;var K=FP6(q)?YO5:eA5;return K.test(rl(q))}var tA5,eA5,qO5,KO5,_O5,zO5,YO5,QJ7;var dJ7=L(()=>{F_8();UJ7();hT();Oa8();tA5=/[\\\\^$.*+?()[\\]{}|]/g,eA5=/^\\[object .+?Constructor\\]$/,qO5=Function.prototype,KO5=Object.prototype,_O5=qO5.toString,zO5=KO5.hasOwnProperty,YO5=RegExp(\"^\"+_O5.call(zO5).replace(tA5,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");QJ7=AO5});function OO5(q,K){return q==null?void 0:q[K]}var cJ7;var lJ7=L(()=>{cJ7=OO5});function $O5(q,K){var _=cJ7(q,K);return QJ7(_)?_:void 0}var ik;var le=L(()=>{dJ7();lJ7();ik=$O5});var wO5,ne;var Q_8=L(()=>{le();sR();wO5=ik(vJ,\"Map\"),ne=wO5});var jO5,ol;var zu6=L(()=>{le();jO5=ik(Object,\"create\"),ol=jO5});function HO5(){this.__data__=ol?ol(null):{},this.size=0}var nJ7;var iJ7=L(()=>{zu6();nJ7=HO5});function JO5(q){var K=this.has(q)&&delete this.__data__[q];return this.size-=K?1:0,K}var rJ7;var oJ7=L(()=>{rJ7=JO5});function DO5(q){var K=this.__data__;if(ol){var _=K[q];return _===MO5?void 0:_}return PO5.call(K,q)?K[q]:void 0}var MO5=\"__lodash_hash_undefined__\",XO5,PO5,aJ7;var sJ7=L(()=>{zu6();XO5=Object.prototype,PO5=XO5.hasOwnProperty;aJ7=DO5});function ZO5(q){var K=this.__data__;return ol?K[q]!==void 0:fO5.call(K,q)}var WO5,fO5,tJ7;var eJ7=L(()=>{zu6();WO5=Object.prototype,fO5=WO5.hasOwnProperty;tJ7=ZO5});function vO5(q,K){var _=this.__data__;return this.size+=this.has(q)?0:1,_[q]=ol&&K===void 0?GO5:K,this}var GO5=\"__lodash_hash_undefined__\",qM7;var KM7=L(()=>{zu6();qM7=vO5});function UP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var $a8;var _M7=L(()=>{iJ7();oJ7();sJ7();eJ7();KM7();UP6.prototype.clear=nJ7;UP6.prototype.delete=rJ7;UP6.prototype.get=aJ7;UP6.prototype.has=tJ7;UP6.prototype.set=qM7;$a8=UP6});function TO5(){this.size=0,this.__data__={hash:new $a8,map:new(ne||ce),string:new $a8}}var zM7;var YM7=L(()=>{_M7();Ku6();Q_8();zM7=TO5});function VO5(q){var K=typeof q;return K==\"string\"||K==\"number\"||K==\"symbol\"||K==\"boolean\"?q!==\"__proto__\":q===null}var AM7;var OM7=L(()=>{AM7=VO5});function kO5(q,K){var _=q.__data__;return AM7(K)?_[typeof K==\"string\"?\"string\":\"hash\"]:_.map}var ie;var Yu6=L(()=>{OM7();ie=kO5});function NO5(q){var K=ie(this,q).delete(q);return this.size-=K?1:0,K}var $M7;var wM7=L(()=>{Yu6();$M7=NO5});function yO5(q){return ie(this,q).get(q)}var jM7;var HM7=L(()=>{Yu6();jM7=yO5});function EO5(q){return ie(this,q).has(q)}var JM7;var MM7=L(()=>{Yu6();JM7=EO5});function LO5(q,K){var _=ie(this,q),z=_.size;return _.set(q,K),this.size+=_.size==z?0:1,this}var XM7;var PM7=L(()=>{Yu6();XM7=LO5});function QP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var X_6;var d_8=L(()=>{YM7();wM7();HM7();MM7();PM7();QP6.prototype.clear=zM7;QP6.prototype.delete=$M7;QP6.prototype.get=jM7;QP6.prototype.has=JM7;QP6.prototype.set=XM7;X_6=QP6});function RO5(q,K){var _=this.__data__;if(_ instanceof ce){var z=_.__data__;if(!ne||z.length<hO5-1)return z.push([q,K]),this.size=++_.size,this;_=this.__data__=new X_6(z)}return _.set(q,K),this.size=_.size,this}var hO5=200,DM7;var WM7=L(()=>{Ku6();Q_8();d_8();DM7=RO5});function dP6(q){var K=this.__data__=new ce(q);this.size=K.size}var Dg;var Au6=L(()=>{Ku6();yJ7();LJ7();RJ7();CJ7();WM7();dP6.prototype.clear=NJ7;dP6.prototype.delete=EJ7;dP6.prototype.get=hJ7;dP6.prototype.has=SJ7;dP6.prototype.set=DM7;Dg=dP6});function CO5(q){return this.__data__.set(q,SO5),this}var SO5=\"__lodash_hash_undefined__\",fM7;var ZM7=L(()=>{fM7=CO5});function bO5(q){return this.__data__.has(q)}var GM7;var vM7=L(()=>{GM7=bO5});function c_8(q){var K=-1,_=q==null?0:q.length;this.__data__=new X_6;while(++K<_)this.add(q[K])}var l_8;var wa8=L(()=>{d_8();ZM7();vM7();c_8.prototype.add=c_8.prototype.push=fM7;c_8.prototype.has=GM7;l_8=c_8});function xO5(q,K){var _=-1,z=q==null?0:q.length;while(++_<z)if(K(q[_],_,q))return!0;return!1}var TM7;var VM7=L(()=>{TM7=xO5});function IO5(q,K){return q.has(K)}var n_8;var ja8=L(()=>{n_8=IO5});function BO5(q,K,_,z,Y,A){var O=_&uO5,$=q.length,w=K.length;if($!=w&&!(O&&w>$))return!1;var j=A.get(q),H=A.get(K);if(j&&H)return j==K&&H==q;var J=-1,M=!0,X=_&mO5?new l_8:void 0;A.set(q,K),A.set(K,q);while(++J<$){var P=q[J],D=K[J];if(z)var W=O?z(D,P,J,K,q,A):z(P,D,J,q,K,A);if(W!==void 0){if(W)continue;M=!1;break}if(X){if(!TM7(K,function(f,G){if(!n_8(X,G)&&(P===f||Y(P,f,_,z,A)))return X.push(G)})){M=!1;break}}else if(!(P===D||Y(P,D,_,z,A))){M=!1;break}}return A.delete(q),A.delete(K),M}var uO5=1,mO5=2,i_8;var Ha8=L(()=>{wa8();VM7();ja8();i_8=BO5});var pO5,cP6;var Ja8=L(()=>{sR();pO5=vJ.Uint8Array,cP6=pO5});function gO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z,Y){_[++K]=[Y,z]}),_}var kM7;var NM7=L(()=>{kM7=gO5});function FO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z){_[++K]=z}),_}var lP6;var r_8=L(()=>{lP6=FO5});function q$5(q,K,_,z,Y,A,O){switch(_){case eO5:if(q.byteLength!=K.byteLength||q.byteOffset!=K.byteOffset)return!1;q=q.buffer,K=K.buffer;case tO5:if(q.byteLength!=K.byteLength||!A(new cP6(q),new cP6(K)))return!1;return!0;case dO5:case cO5:case iO5:return Pg(+q,+K);case lO5:return q.name==K.name&&q.message==K.message;case rO5:case aO5:return q==K+\"\";case nO5:var $=kM7;case oO5:var w=z&UO5;if($||($=lP6),q.size!=K.size&&!w)return!1;var j=O.get(q);if(j)return j==K;z|=QO5,O.set(q,K);var H=i_8($(q),$(K),z,Y,A,O);return O.delete(q),H;case sO5:if(Ma8)return Ma8.call(q)==Ma8.call(K)}return!1}var UO5=1,QO5=2,dO5=\"[object Boolean]\",cO5=\"[object Date]\",lO5=\"[object Error]\",nO5=\"[object Map]\",iO5=\"[object Number]\",rO5=\"[object RegExp]\",oO5=\"[object Set]\",aO5=\"[object String]\",sO5=\"[object Symbol]\",tO5=\"[object ArrayBuffer]\",eO5=\"[object DataView]\",yM7,Ma8,EM7;var LM7=L(()=>{J_6();Ja8();pP6();Ha8();NM7();r_8();yM7=YW?YW.prototype:void 0,Ma8=yM7?yM7.valueOf:void 0;EM7=q$5});function K$5(q,K){var _=-1,z=K.length,Y=q.length;while(++_<z)q[Y+_]=K[_];return q}var nP6;var o_8=L(()=>{nP6=K$5});var _$5,DO;var RT=L(()=>{_$5=Array.isArray,DO=_$5});function z$5(q,K,_){var z=K(q);return DO(q)?z:nP6(z,_(q))}var a_8;var Xa8=L(()=>{o_8();RT();a_8=z$5});function Y$5(q,K){var _=-1,z=q==null?0:q.length,Y=0,A=[];while(++_<z){var O=q[_];if(K(O,_,q))A[Y++]=O}return A}var s_8;var Pa8=L(()=>{s_8=Y$5});function A$5(){return[]}var t_8;var Da8=L(()=>{t_8=A$5});var O$5,$$5,hM7,w$5,iP6;var e_8=L(()=>{Pa8();Da8();O$5=Object.prototype,$$5=O$5.propertyIsEnumerable,hM7=Object.getOwnPropertySymbols,w$5=!hM7?t_8:function(q){if(q==null)return[];return q=Object(q),s_8(hM7(q),function(K){return $$5.call(q,K)})},iP6=w$5});function j$5(q,K){var _=-1,z=Array(q);while(++_<q)z[_]=K(_);return z}var RM7;var SM7=L(()=>{RM7=j$5});function H$5(q){return q!=null&&typeof q==\"object\"}var QP;var Wg=L(()=>{QP=H$5});function M$5(q){return QP(q)&&YL(q)==J$5}var J$5=\"[object Arguments]\",Wa8;var CM7=L(()=>{M_6();Wg();Wa8=M$5});var bM7,X$5,P$5,D$5,al;var Ou6=L(()=>{CM7();Wg();bM7=Object.prototype,X$5=bM7.hasOwnProperty,P$5=bM7.propertyIsEnumerable,D$5=Wa8(function(){return arguments}())?Wa8:function(q){return QP(q)&&X$5.call(q,\"callee\")&&!P$5.call(q,\"callee\")},al=D$5});function W$5(){return!1}var xM7;var IM7=L(()=>{xM7=W$5});var Kz8={};f8(Kz8,{default:()=>fg});var BM7,uM7,f$5,mM7,Z$5,G$5,fg;var $u6=L(()=>{sR();IM7();BM7=typeof Kz8==\"object\"&&Kz8&&!Kz8.nodeType&&Kz8,uM7=BM7&&typeof qz8==\"object\"&&qz8&&!qz8.nodeType&&qz8,f$5=uM7&&uM7.exports===BM7,mM7=f$5?vJ.Buffer:void 0,Z$5=mM7?mM7.isBuffer:void 0,G$5=Z$5||xM7,fg=G$5});function V$5(q,K){var _=typeof q;return K=K==null?v$5:K,!!K&&(_==\"number\"||_!=\"symbol\"&&T$5.test(q))&&(q>-1&&q%1==0&&q<K)}var v$5=9007199254740991,T$5,re;var wu6=L(()=>{T$5=/^(?:0|[1-9]\\d*)$/;re=V$5});function N$5(q){return typeof q==\"number\"&&q>-1&&q%1==0&&q<=k$5}var k$5=9007199254740991,rP6;var _z8=L(()=>{rP6=N$5});function o$5(q){return QP(q)&&rP6(q.length)&&!!G2[YL(q)]}var y$5=\"[object Arguments]\",E$5=\"[object Array]\",L$5=\"[object Boolean]\",h$5=\"[object Date]\",R$5=\"[object Error]\",S$5=\"[object Function]\",C$5=\"[object Map]\",b$5=\"[object Number]\",x$5=\"[object Object]\",I$5=\"[object RegExp]\",u$5=\"[object Set]\",m$5=\"[object String]\",B$5=\"[object WeakMap]\",p$5=\"[object ArrayBuffer]\",g$5=\"[object DataView]\",F$5=\"[object Float32Array]\",U$5=\"[object Float64Array]\",Q$5=\"[object Int8Array]\",d$5=\"[object Int16Array]\",c$5=\"[object Int32Array]\",l$5=\"[object Uint8Array]\",n$5=\"[object Uint8ClampedArray]\",i$5=\"[object Uint16Array]\",r$5=\"[object Uint32Array]\",G2,pM7;var gM7=L(()=>{M_6();_z8();Wg();G2={};G2[F$5]=G2[U$5]=G2[Q$5]=G2[d$5]=G2[c$5]=G2[l$5]=G2[n$5]=G2[i$5]=G2[r$5]=!0;G2[y$5]=G2[E$5]=G2[p$5]=G2[L$5]=G2[g$5]=G2[h$5]=G2[R$5]=G2[S$5]=G2[C$5]=G2[b$5]=G2[x$5]=G2[I$5]=G2[u$5]=G2[m$5]=G2[B$5]=!1;pM7=o$5});function a$5(q){return function(K){return q(K)}}var oP6;var zz8=L(()=>{oP6=a$5});var Az8={};f8(Az8,{default:()=>Zg});var FM7,ju6,s$5,fa8,t$5,Zg;var Oz8=L(()=>{Aa8();FM7=typeof Az8==\"object\"&&Az8&&!Az8.nodeType&&Az8,ju6=FM7&&typeof Yz8==\"object\"&&Yz8&&!Yz8.nodeType&&Yz8,s$5=ju6&&ju6.exports===FM7,fa8=s$5&&g_8.process,t$5=function(){try{var q=ju6&&ju6.require&&ju6.require(\"util\").types;if(q)return q;return fa8&&fa8.binding&&fa8.binding(\"util\")}catch(K){}}(),Zg=t$5});var UM7,e$5,aP6;var $z8=L(()=>{gM7();zz8();Oz8();UM7=Zg&&Zg.isTypedArray,e$5=UM7?oP6(UM7):pM7,aP6=e$5});function _w5(q,K){var _=DO(q),z=!_&&al(q),Y=!_&&!z&&fg(q),A=!_&&!z&&!Y&&aP6(q),O=_||z||Y||A,$=O?RM7(q.length,String):[],w=$.length;for(var j in q)if((K||Kw5.call(q,j))&&!(O&&(j==\"length\"||Y&&(j==\"offset\"||j==\"parent\")||A&&(j==\"buffer\"||j==\"byteLength\"||j==\"byteOffset\")||re(j,w))))$.push(j);return $}var qw5,Kw5,wz8;var Za8=L(()=>{SM7();Ou6();RT();$u6();wu6();$z8();qw5=Object.prototype,Kw5=qw5.hasOwnProperty;wz8=_w5});function Yw5(q){var K=q&&q.constructor,_=typeof K==\"function\"&&K.prototype||zw5;return q===_}var zw5,sP6;var jz8=L(()=>{zw5=Object.prototype;sP6=Yw5});function Aw5(q,K){return function(_){return q(K(_))}}var Hz8;var Ga8=L(()=>{Hz8=Aw5});var Ow5,QM7;var dM7=L(()=>{Ga8();Ow5=Hz8(Object.keys,Object),QM7=Ow5});function jw5(q){if(!sP6(q))return QM7(q);var K=[];for(var _ in Object(q))if(ww5.call(q,_)&&_!=\"constructor\")K.push(_);return K}var $w5,ww5,cM7;var lM7=L(()=>{jz8();dM7();$w5=Object.prototype,ww5=$w5.hasOwnProperty;cM7=jw5});function Hw5(q){return q!=null&&rP6(q.length)&&!FP6(q)}var Gg;var tP6=L(()=>{F_8();_z8();Gg=Hw5});function Jw5(q){return Gg(q)?wz8(q):cM7(q)}var tR;var P_6=L(()=>{Za8();lM7();tP6();tR=Jw5});function Mw5(q){return a_8(q,tR,iP6)}var Hu6;var va8=L(()=>{Xa8();e_8();P_6();Hu6=Mw5});function Ww5(q,K,_,z,Y,A){var O=_&Xw5,$=Hu6(q),w=$.length,j=Hu6(K),H=j.length;if(w!=H&&!O)return!1;var J=w;while(J--){var M=$[J];if(!(O?M in K:Dw5.call(K,M)))return!1}var X=A.get(q),P=A.get(K);if(X&&P)return X==K&&P==q;var D=!0;A.set(q,K),A.set(K,q);var W=O;while(++J<w){M=$[J];var f=q[M],G=K[M];if(z)var Z=O?z(G,f,M,K,q,A):z(f,G,M,q,K,A);if(!(Z===void 0?f===G||Y(f,G,_,z,A):Z)){D=!1;break}W||(W=M==\"constructor\")}if(D&&!W){var v=q.constructor,V=K.constructor;if(v!=V&&((\"constructor\"in q)&&(\"constructor\"in K))&&!(typeof v==\"function\"&&v instanceof v&&typeof V==\"function\"&&V instanceof V))D=!1}return A.delete(q),A.delete(K),D}var Xw5=1,Pw5,Dw5,nM7;var iM7=L(()=>{va8();Pw5=Object.prototype,Dw5=Pw5.hasOwnProperty;nM7=Ww5});var fw5,Jz8;var rM7=L(()=>{le();sR();fw5=ik(vJ,\"DataView\"),Jz8=fw5});var Zw5,Mz8;var oM7=L(()=>{le();sR();Zw5=ik(vJ,\"Promise\"),Mz8=Zw5});var Gw5,oe;var Ta8=L(()=>{le();sR();Gw5=ik(vJ,\"Set\"),oe=Gw5});var vw5,Xz8;var aM7=L(()=>{le();sR();vw5=ik(vJ,\"WeakMap\"),Xz8=vw5});var sM7=\"[object Map]\",Tw5=\"[object Object]\",tM7=\"[object Promise]\",eM7=\"[object Set]\",qX7=\"[object WeakMap]\",KX7=\"[object DataView]\",Vw5,kw5,Nw5,yw5,Ew5,D_6,sl;var Ju6=L(()=>{rM7();Q_8();oM7();Ta8();aM7();M_6();Oa8();Vw5=rl(Jz8),kw5=rl(ne),Nw5=rl(Mz8),yw5=rl(oe),Ew5=rl(Xz8),D_6=YL;if(Jz8&&D_6(new Jz8(new ArrayBuffer(1)))!=KX7||ne&&D_6(new ne)!=sM7||Mz8&&D_6(Mz8.resolve())!=tM7||oe&&D_6(new oe)!=eM7||Xz8&&D_6(new Xz8)!=qX7)D_6=function(q){var K=YL(q),_=K==Tw5?q.constructor:void 0,z=_?rl(_):\"\";if(z)switch(z){case Vw5:return KX7;case kw5:return sM7;case Nw5:return tM7;case yw5:return eM7;case Ew5:return qX7}return K};sl=D_6});function Rw5(q,K,_,z,Y,A){var O=DO(q),$=DO(K),w=O?zX7:sl(q),j=$?zX7:sl(K);w=w==_X7?Pz8:w,j=j==_X7?Pz8:j;var H=w==Pz8,J=j==Pz8,M=w==j;if(M&&fg(q)){if(!fg(K))return!1;O=!0,H=!1}if(M&&!H)return A||(A=new Dg),O||aP6(q)?i_8(q,K,_,z,Y,A):EM7(q,K,w,_,z,Y,A);if(!(_&Lw5)){var X=H&&YX7.call(q,\"__wrapped__\"),P=J&&YX7.call(K,\"__wrapped__\");if(X||P){var D=X?q.value():q,W=P?K.value():K;return A||(A=new Dg),Y(D,W,_,z,A)}}if(!M)return!1;return A||(A=new Dg),nM7(q,K,_,z,Y,A)}var Lw5=1,_X7=\"[object Arguments]\",zX7=\"[object Array]\",Pz8=\"[object Object]\",hw5,YX7,AX7;var OX7=L(()=>{Au6();Ha8();LM7();iM7();Ju6();RT();$u6();$z8();hw5=Object.prototype,YX7=hw5.hasOwnProperty;AX7=Rw5});function $X7(q,K,_,z,Y){if(q===K)return!0;if(q==null||K==null||!QP(q)&&!QP(K))return q!==q&&K!==K;return AX7(q,K,_,z,$X7,Y)}var eP6;var Dz8=L(()=>{OX7();Wg();eP6=$X7});function bw5(q,K,_,z){var Y=_.length,A=Y,O=!z;if(q==null)return!A;q=Object(q);while(Y--){var $=_[Y];if(O&&$[2]?$[1]!==q[$[0]]:!($[0]in q))return!1}while(++Y<A){$=_[Y];var w=$[0],j=q[w],H=$[1];if(O&&$[2]){if(j===void 0&&!(w in q))return!1}else{var J=new Dg;if(z)var M=z(j,H,w,q,K,J);if(!(M===void 0?eP6(H,j,Sw5|Cw5,z,J):M))return!1}}return!0}var Sw5=1,Cw5=2,wX7;var jX7=L(()=>{Au6();Dz8();wX7=bw5});function xw5(q){return q===q&&!PO(q)}var Wz8;var Va8=L(()=>{hT();Wz8=xw5});function Iw5(q){var K=tR(q),_=K.length;while(_--){var z=K[_],Y=q[z];K[_]=[z,Y,Wz8(Y)]}return K}var HX7;var JX7=L(()=>{Va8();P_6();HX7=Iw5});function uw5(q,K){return function(_){if(_==null)return!1;return _[q]===K&&(K!==void 0||(q in Object(_)))}}var fz8;var ka8=L(()=>{fz8=uw5});function mw5(q){var K=HX7(q);if(K.length==1&&K[0][2])return fz8(K[0][0],K[0][1]);return function(_){return _===q||wX7(_,q,K)}}var MX7;var XX7=L(()=>{jX7();JX7();ka8();MX7=mw5});function pw5(q){return typeof q==\"symbol\"||QP(q)&&YL(q)==Bw5}var Bw5=\"[object Symbol]\",ae;var Mu6=L(()=>{M_6();Wg();ae=pw5});function Uw5(q,K){if(DO(q))return!1;var _=typeof q;if(_==\"number\"||_==\"symbol\"||_==\"boolean\"||q==null||ae(q))return!0;return Fw5.test(q)||!gw5.test(q)||K!=null&&q in Object(K)}var gw5,Fw5,qD6;var Zz8=L(()=>{RT();Mu6();gw5=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,Fw5=/^\\w*$/;qD6=Uw5});function Na8(q,K){if(typeof q!=\"function\"||K!=null&&typeof K!=\"function\")throw TypeError(Qw5);var _=function(){var z=arguments,Y=K?K.apply(this,z):z[0],A=_.cache;if(A.has(Y))return A.get(Y);var O=q.apply(this,z);return _.cache=A.set(Y,O)||A,O};return _.cache=new(Na8.Cache||X_6),_}var Qw5=\"Expected a function\",A1;var h4=L(()=>{d_8();Na8.Cache=X_6;A1=Na8});function cw5(q){var K=A1(q,function(z){if(_.size===dw5)_.clear();return z}),_=K.cache;return K}var dw5=500,PX7;var DX7=L(()=>{h4();PX7=cw5});var lw5,nw5,iw5,WX7;var fX7=L(()=>{DX7();lw5=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,nw5=/\\\\(\\\\)?/g,iw5=PX7(function(q){var K=[];if(q.charCodeAt(0)===46)K.push(\"\");return q.replace(lw5,function(_,z,Y,A){K.push(Y?A.replace(nw5,\"$1\"):z||_)}),K}),WX7=iw5});function rw5(q,K){var _=-1,z=q==null?0:q.length,Y=Array(z);while(++_<z)Y[_]=K(q[_],_,q);return Y}var se;var Xu6=L(()=>{se=rw5});function vX7(q){if(typeof q==\"string\")return q;if(DO(q))return se(q,vX7)+\"\";if(ae(q))return GX7?GX7.call(q):\"\";var K=q+\"\";return K==\"0\"&&1/q==-ow5?\"-0\":K}var ow5=1/0,ZX7,GX7,TX7;var VX7=L(()=>{J_6();Xu6();RT();Mu6();ZX7=YW?YW.prototype:void 0,GX7=ZX7?ZX7.toString:void 0;TX7=vX7});function aw5(q){return q==null?\"\":TX7(q)}var KD6;var Gz8=L(()=>{VX7();KD6=aw5});function sw5(q,K){if(DO(q))return q;return qD6(q,K)?[q]:WX7(KD6(q))}var eR;var W_6=L(()=>{RT();Zz8();fX7();Gz8();eR=sw5});function ew5(q){if(typeof q==\"string\"||ae(q))return q;var K=q+\"\";return K==\"0\"&&1/q==-tw5?\"-0\":K}var tw5=1/0,qS;var f_6=L(()=>{Mu6();qS=ew5});function q25(q,K){K=eR(K,q);var _=0,z=K.length;while(q!=null&&_<z)q=q[qS(K[_++])];return _&&_==z?q:void 0}var te;var Pu6=L(()=>{W_6();f_6();te=q25});function K25(q,K,_){var z=q==null?void 0:te(q,K);return z===void 0?_:z}var kX7;var NX7=L(()=>{Pu6();kX7=K25});function _25(q,K){return q!=null&&K in Object(q)}var yX7;var EX7=L(()=>{yX7=_25});function z25(q,K,_){K=eR(K,q);var z=-1,Y=K.length,A=!1;while(++z<Y){var O=qS(K[z]);if(!(A=q!=null&&_(q,O)))break;q=q[O]}if(A||++z!=Y)return A;return Y=q==null?0:q.length,!!Y&&rP6(Y)&&re(O,Y)&&(DO(q)||al(q))}var LX7;var hX7=L(()=>{W_6();Ou6();RT();wu6();_z8();f_6();LX7=z25});function Y25(q,K){return q!=null&&LX7(q,K,yX7)}var RX7;var SX7=L(()=>{EX7();hX7();RX7=Y25});function $25(q,K){if(qD6(q)&&Wz8(K))return fz8(qS(q),K);return function(_){var z=kX7(_,q);return z===void 0&&z===K?RX7(_,q):eP6(K,z,A25|O25)}}var A25=1,O25=2,CX7;var bX7=L(()=>{Dz8();NX7();SX7();Zz8();Va8();ka8();f_6();CX7=$25});function w25(q){return q}var _D6;var vz8=L(()=>{_D6=w25});function j25(q){return function(K){return K==null?void 0:K[q]}}var xX7;var IX7=L(()=>{xX7=j25});function H25(q){return function(K){return te(K,q)}}var uX7;var mX7=L(()=>{Pu6();uX7=H25});function J25(q){return qD6(q)?xX7(qS(q)):uX7(q)}var BX7;var pX7=L(()=>{IX7();mX7();Zz8();f_6();BX7=J25});function M25(q){if(typeof q==\"function\")return q;if(q==null)return _D6;if(typeof q==\"object\")return DO(q)?CX7(q[0],q[1]):MX7(q);return BX7(q)}var rk;var ee=L(()=>{XX7();bX7();vz8();RT();pX7();rk=M25});function X25(q,K){var _,z=-1,Y=q.length;while(++z<Y){var A=K(q[z]);if(A!==void 0)_=_===void 0?A:_+A}return _}var gX7;var FX7=L(()=>{gX7=X25});function P25(q,K){return q&&q.length?gX7(q,rk(K,2)):0}var zD6;var UX7=L(()=>{ee();FX7();zD6=P25});import{randomUUID as Du6}from\"crypto\";var ya8=()=>{};function QX7(){return Ea8}function dX7(q){Ea8=q}function cX7(q){return Tz8.has(q)?Tz8.get(q):void 0}function lX7(q,K){Tz8.set(q,K)}function nX7(q){return La8.get(q)}function iX7(q,K){La8.set(q,K)}function AW(){Ea8=null,Tz8.clear(),La8.clear()}function Vz8(){return ha8}function rX7(q){ha8=q}function oX7(){ha8=void 0}var Ea8=null,Tz8,La8,ha8;var tl=L(()=>{Tz8=new Map;La8=new Map});function E9(){let q=new Set;return{subscribe(K){return q.add(K),()=>{q.delete(K)}},emit(...K){for(let _ of q)_(...K)},clear(){q.clear()}}}var DD6={};f8(DD6,{waitForScrollIdle:()=>Vu6,updateLastInteractionTime:()=>G_6,switchSession:()=>Yf,snapshotOutputTokensForTurn:()=>h25,setUserMsgOptIn:()=>Vg,setUseCoworkPlugins:()=>OL,setTracerProvider:()=>xz8,setThinkingClearLatched:()=>Yt8,setTeleportedSessionInfo:()=>Bu6,setSystemPromptSectionCacheEntry:()=>is8,setStrictToolResultPairing:()=>I25,setStatsStore:()=>ca8,setSessionTrustAccepted:()=>Iu6,setSessionSource:()=>fs8,setSessionPersistenceDisabled:()=>ms8,setSessionIngressToken:()=>y_6,setSessionBypassPermissionsMode:()=>Is8,setSdkBetas:()=>Ys8,setSdkAgentProgressSummariesEnabled:()=>Ps8,setScheduledTasksEnabled:()=>bu6,setQuestionPreviewFormat:()=>uz8,setPromptId:()=>Fu6,setPromptCache1hAllowlist:()=>ss8,setProjectRoot:()=>fu6,setOriginalCwd:()=>KS,setOauthTokenFromFd:()=>Vs8,setNeedsPlanModeExitAttachment:()=>gI,setNeedsAutoModeExitAttachment:()=>CG,setModelStrings:()=>Nu6,setMeterProvider:()=>bz8,setMeter:()=>As8,setMemoryToggledOff:()=>Ws8,setMainThreadAgentType:()=>_n,setMainLoopModelOverride:()=>dP,setLspRecommendationShownThisSession:()=>Us8,setLoopChainStartedAt:()=>g25,setLoggerProvider:()=>Sz8,setLastMainRequestId:()=>ea8,setLastEmittedDate:()=>PD6,setLastClassifierRequests:()=>hu6,setLastApiCompletionTimestamp:()=>Tu6,setLastAPIRequestMessages:()=>Ls8,setLastAPIRequest:()=>ys8,setKairosActive:()=>x25,setIsRemoteMode:()=>ls8,setIsInteractive:()=>Ms8,setInlinePlugins:()=>bs8,setInitialMainLoopModel:()=>zs8,setInitJsonSchema:()=>Qs8,setHasUnknownModelCost:()=>hz8,setHasExitedPlanMode:()=>$L,setHasDevChannels:()=>Qz8,setFlagSettingsPath:()=>Zs8,setFlagSettingsInline:()=>Gs8,setFastModeHeaderLatched:()=>Kt8,setEventLogger:()=>Cz8,setDirectConnectServerUrl:()=>W25,setCwdState:()=>Ia8,setCostStateForRestore:()=>ku6,setClientType:()=>Xs8,setChromeFlagOverride:()=>xs8,setCachedClaudeMdContent:()=>hs8,setCacheEditingHeaderLatched:()=>d25,setApiKeyFromFd:()=>Ns8,setAllowedSettingSources:()=>Cs8,setAllowedChannels:()=>zn,setAfkModeHeaderLatched:()=>es8,setAdditionalDirectoriesForClaudeMd:()=>pu6,setActiveRoutine:()=>Z25,resetTurnToolDuration:()=>Ua8,resetTurnHookDuration:()=>Fa8,resetTurnClassifierDuration:()=>da8,resetTotalDurationStateAndCost_FOR_TESTS_ONLY:()=>G25,resetStateForTests:()=>_P7,resetSdkInitState:()=>YP7,resetModelStringsForTestingOnly:()=>C25,resetCostState:()=>OD6,removeSessionCronTasks:()=>xu6,registerHookCallbacks:()=>z66,regenerateSessionId:()=>Sa8,preferThirdPartyAuthentication:()=>Ru6,onSessionSwitch:()=>xa8,onInteraction:()=>ra8,needsPlanModeExitAttachment:()=>Bs8,needsAutoModeExitAttachment:()=>ps8,markScrollActivity:()=>Ks8,markPostCompaction:()=>K66,markFirstTeleportMessageLogged:()=>Fz8,isSessionPersistenceDisabled:()=>ok,incrementBudgetContinuationCount:()=>S25,hasUnknownModelCost:()=>ta8,hasShownLspRecommendationThisSession:()=>Fs8,hasExitedPlanModeInSession:()=>uu6,handlePlanModeTransition:()=>Kn,handleAutoModeTransition:()=>gs8,getUserMsgOptIn:()=>AL,getUseCoworkPlugins:()=>Cu6,getUsageForModel:()=>_s8,getTurnToolDurationMs:()=>V25,getTurnToolCount:()=>k25,getTurnOutputTokens:()=>E25,getTurnHookDurationMs:()=>v25,getTurnHookCount:()=>T25,getTurnClassifierDurationMs:()=>N25,getTurnClassifierCount:()=>y25,getTracerProvider:()=>N_6,getTotalWebSearchRequests:()=>oa8,getTotalToolDuration:()=>ga8,getTotalOutputTokens:()=>el,getTotalLinesRemoved:()=>T_6,getTotalLinesAdded:()=>v_6,getTotalInputTokens:()=>V_6,getTotalDuration:()=>YD6,getTotalCostUSD:()=>XM,getTotalCacheReadInputTokens:()=>Zu6,getTotalCacheCreationInputTokens:()=>Gu6,getTotalAPIDurationWithoutRetries:()=>pa8,getTotalAPIDuration:()=>RG,getTokenCounter:()=>wD6,getThinkingClearLatched:()=>zt8,getTeleportedSessionInfo:()=>gz8,getSystemPromptSectionCache:()=>ns8,getStrictToolResultPairing:()=>Ds8,getStatsStore:()=>q66,getSlowOperations:()=>OP7,getSessionTrustAccepted:()=>MD6,getSessionSource:()=>u25,getSessionProjectDir:()=>Z_6,getSessionIngressToken:()=>vs8,getSessionId:()=>N8,getSessionCronTasks:()=>L_6,getSessionCreatedTeams:()=>mu6,getSessionCounter:()=>Os8,getSessionBypassPermissionsMode:()=>E_6,getSdkBetas:()=>OW,getSdkAgentProgressSummariesEnabled:()=>vg,getScheduledTasksEnabled:()=>JD6,getRegisteredHooks:()=>zS,getQuestionPreviewFormat:()=>Iz8,getPromptId:()=>gu6,getPromptCache1hAllowlist:()=>as8,getProjectRoot:()=>wz,getPrCounter:()=>yu6,getPlanSlugCache:()=>h_6,getParentSessionId:()=>Ca8,getOriginalCwd:()=>A7,getOauthTokenFromFd:()=>Ts8,getModelUsage:()=>ST,getModelStrings:()=>$D6,getMeterProvider:()=>Js8,getMeter:()=>b25,getMemoryToggledOff:()=>Tg,getMainThreadAgentType:()=>Ng,getMainLoopModelOverride:()=>pI,getLoopChainStartedAt:()=>p25,getLoggerProvider:()=>Lu6,getLocCounter:()=>Rz8,getLastMainRequestId:()=>vu6,getLastInteractionTime:()=>_S,getLastEmittedDate:()=>os8,getLastClassifierRequests:()=>zP7,getLastApiCompletionTimestamp:()=>qn,getLastAPIRequestMessages:()=>m25,getLastAPIRequest:()=>Es8,getKairosActive:()=>SG,getIsScrollDraining:()=>k_6,getIsRemoteMode:()=>cK,getIsNonInteractiveSession:()=>d7,getIsInteractive:()=>CT,getInvokedSkillsForAgent:()=>ds8,getInvokedSkills:()=>Q25,getInlinePlugins:()=>kg,getInitialMainLoopModel:()=>AD6,getInitJsonSchema:()=>Bz8,getHasDevChannels:()=>Uz8,getFlagSettingsPath:()=>_66,getFlagSettingsInline:()=>HD6,getFastModeHeaderLatched:()=>qt8,getEventLogger:()=>Hs8,getDirectConnectServerUrl:()=>ua8,getCwdState:()=>BI,getCurrentTurnTokenBudget:()=>L25,getCostCounter:()=>ws8,getCommitCounter:()=>$s8,getCodeEditToolDecisionCounter:()=>Eu6,getClientType:()=>jD6,getChromeFlagOverride:()=>Su6,getCachedClaudeMdContent:()=>Rs8,getCacheEditingHeaderLatched:()=>_t8,getBudgetContinuationCount:()=>R25,getApiKeyFromFd:()=>ks8,getAllowedSettingSources:()=>Ss8,getAllowedChannels:()=>TJ,getAgentColorMap:()=>mz8,getAfkModeHeaderLatched:()=>ts8,getAdditionalDirectoriesForClaudeMd:()=>bG,getActiveTimeCounter:()=>js8,getActiveRoutine:()=>f25,flushInteractionTime:()=>na8,deleteLoopChainStartedAt:()=>F25,consumePostCompaction:()=>qs8,clearSystemPromptSectionState:()=>rs8,clearRegisteredPluginHooks:()=>pz8,clearRegisteredHooks:()=>U25,clearInvokedSkillsForAgent:()=>Y66,clearInvokedSkills:()=>cs8,clearBetaHeaderLatches:()=>At8,addToTurnHookDuration:()=>yz8,addToTurnClassifierDuration:()=>Qa8,addToTotalLinesChanged:()=>Ez8,addToTotalDurationState:()=>ma8,addToTotalCostState:()=>Ba8,addToToolDuration:()=>Nz8,addToInMemoryErrorLog:()=>B25,addSlowOperation:()=>AP7,addSessionCronTask:()=>us8,addInvokedSkill:()=>XD6});import{realpathSync as aX7}from\"fs\";import{cwd as D25}from\"process\";function eX7(){let q=\"\";if(typeof process<\"u\"&&typeof process.cwd===\"function\"&&typeof aX7===\"function\"){let _=D25();try{q=aX7(_).normalize(\"NFC\")}catch{q=_.normalize(\"NFC\")}}return{originalCwd:q,projectRoot:q,totalCostUSD:0,totalAPIDuration:0,totalAPIDurationWithoutRetries:0,totalToolDuration:0,turnHookDurationMs:0,turnToolDurationMs:0,turnClassifierDurationMs:0,turnToolCount:0,turnHookCount:0,turnClassifierCount:0,startTime:Date.now(),lastInteractionTime:Date.now(),totalLinesAdded:0,totalLinesRemoved:0,hasUnknownModelCost:!1,cwd:q,modelUsage:{},mainLoopModelOverride:void 0,initialMainLoopModel:null,modelStrings:null,isInteractive:!1,kairosActive:!1,strictToolResultPairing:!1,memoryToggledOff:!1,sdkAgentProgressSummariesEnabled:!1,userMsgOptIn:!1,clientType:\"cli\",sessionSource:void 0,questionPreviewFormat:void 0,sessionIngressToken:void 0,oauthTokenFromFd:void 0,apiKeyFromFd:void 0,flagSettingsPath:void 0,flagSettingsInline:null,allowedSettingSources:[\"userSettings\",\"projectSettings\",\"localSettings\",\"flagSettings\",\"policySettings\"],meter:null,sessionCounter:null,locCounter:null,prCounter:null,commitCounter:null,costCounter:null,tokenCounter:null,codeEditToolDecisionCounter:null,activeTimeCounter:null,statsStore:null,sessionId:Du6(),parentSessionId:void 0,loggerProvider:null,eventLogger:null,meterProvider:null,tracerProvider:null,agentColorMap:new Map,agentColorIndex:0,lastAPIRequest:null,lastAPIRequestMessages:null,lastClassifierRequests:null,cachedClaudeMdContent:null,inMemoryErrorLog:[],inlinePlugins:[],chromeFlagOverride:void 0,useCoworkPlugins:!1,sessionBypassPermissionsMode:!1,scheduledTasksEnabled:!1,sessionCronTasks:[],loopChainStartedAt:Object.create(null),sessionCreatedTeams:new Set,sessionTrustAccepted:!1,sessionPersistenceDisabled:!1,hasExitedPlanMode:!1,needsPlanModeExitAttachment:!1,needsAutoModeExitAttachment:!1,lspRecommendationShownThisSession:!1,initJsonSchema:null,registeredHooks:null,planSlugCache:new Map,teleportedSessionInfo:null,invokedSkills:new Map,slowOperations:[],sdkBetas:void 0,mainThreadAgentType:void 0,isRemoteMode:!1,...!1,directConnectServerUrl:void 0,activeRoutine:void 0,systemPromptSectionCache:new Map,lastEmittedDate:null,additionalDirectoriesForClaudeMd:[],allowedChannels:[],hasDevChannels:!1,sessionProjectDir:null,promptCache1hAllowlist:null,afkModeHeaderLatched:null,fastModeHeaderLatched:null,cacheEditingHeaderLatched:null,thinkingClearLatched:null,promptId:null,lastMainRequestId:void 0,lastApiCompletionTimestamp:null,pendingPostCompaction:!1}}function N8(){return G8.sessionId}function Sa8(q={}){if(q.setCurrentAsParent)G8.parentSessionId=G8.sessionId;return G8.planSlugCache.delete(G8.sessionId),G8.sessionId=Du6(),G8.sessionProjectDir=null,G8.sessionId}function Ca8(){return G8.parentSessionId}function Yf(q,K=null){if(G8.sessionId!==q)G8.planSlugCache.delete(G8.sessionId);G8.sessionId=q,G8.sessionProjectDir=K,ba8.emit(q)}function Z_6(){return G8.sessionProjectDir}function A7(){return G8.originalCwd}function wz(){return G8.projectRoot}function KS(q){G8.originalCwd=q.normalize(\"NFC\")}function fu6(q){G8.projectRoot=q.normalize(\"NFC\")}function BI(){return G8.cwd}function Ia8(q){G8.cwd=q.normalize(\"NFC\")}function ua8(){return G8.directConnectServerUrl}function W25(q){G8.directConnectServerUrl=q}function f25(){return G8.activeRoutine}function Z25(q){G8.activeRoutine=q}function ma8(q,K){G8.totalAPIDuration+=q,G8.totalAPIDurationWithoutRetries+=K}function G25(){G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalCostUSD=0}function Ba8(q,K,_){G8.modelUsage[_]=K,G8.totalCostUSD+=q}function XM(){return G8.totalCostUSD}function RG(){return G8.totalAPIDuration}function YD6(){return Date.now()-G8.startTime}function pa8(){return G8.totalAPIDurationWithoutRetries}function ga8(){return G8.totalToolDuration}function Nz8(q){G8.totalToolDuration+=q,G8.turnToolDurationMs+=q,G8.turnToolCount++}function v25(){return G8.turnHookDurationMs}function yz8(q){G8.turnHookDurationMs+=q,G8.turnHookCount++}function Fa8(){G8.turnHookDurationMs=0,G8.turnHookCount=0}function T25(){return G8.turnHookCount}function V25(){return G8.turnToolDurationMs}function Ua8(){G8.turnToolDurationMs=0,G8.turnToolCount=0}function k25(){return G8.turnToolCount}function N25(){return G8.turnClassifierDurationMs}function Qa8(q){G8.turnClassifierDurationMs+=q,G8.turnClassifierCount++}function da8(){G8.turnClassifierDurationMs=0,G8.turnClassifierCount=0}function y25(){return G8.turnClassifierCount}function q66(){return G8.statsStore}function ca8(q){G8.statsStore=q}function G_6(q){if(q)qP7();else la8=!0}function na8(){if(la8)qP7()}function qP7(){G8.lastInteractionTime=Date.now(),la8=!1,ia8.emit()}function Ez8(q,K){G8.totalLinesAdded+=q,G8.totalLinesRemoved+=K}function v_6(){return G8.totalLinesAdded}function T_6(){return G8.totalLinesRemoved}function V_6(){return zD6(Object.values(G8.modelUsage),\"inputTokens\")}function el(){return zD6(Object.values(G8.modelUsage),\"outputTokens\")}function Zu6(){return zD6(Object.values(G8.modelUsage),\"cacheReadInputTokens\")}function Gu6(){return zD6(Object.values(G8.modelUsage),\"cacheCreationInputTokens\")}function oa8(){return zD6(Object.values(G8.modelUsage),\"webSearchRequests\")}function E25(){return el()-aa8}function L25(){return sa8}function h25(q){aa8=el(),sa8=q,Lz8=0}function R25(){return Lz8}function S25(){Lz8++}function hz8(){G8.hasUnknownModelCost=!0}function ta8(){return G8.hasUnknownModelCost}function vu6(){return G8.lastMainRequestId}function ea8(q){G8.lastMainRequestId=q}function qn(){return G8.lastApiCompletionTimestamp}function Tu6(q){G8.lastApiCompletionTimestamp=q}function K66(){G8.pendingPostCompaction=!0}function qs8(){let q=G8.pendingPostCompaction;return G8.pendingPostCompaction=!1,q}function _S(){return G8.lastInteractionTime}function Ks8(){if(kz8=!0,Wu6)clearTimeout(Wu6);Wu6=setTimeout(()=>{kz8=!1,Wu6=void 0},KP7),Wu6.unref?.()}function k_6(){return kz8}async function Vu6(){while(kz8)await new Promise((q)=>setTimeout(q,KP7).unref?.())}function ST(){return G8.modelUsage}function _s8(q){return G8.modelUsage[q]}function pI(){return G8.mainLoopModelOverride}function AD6(){return G8.initialMainLoopModel}function dP(q){G8.mainLoopModelOverride=q}function zs8(q){G8.initialMainLoopModel=q}function OW(){return G8.sdkBetas}function Ys8(q){G8.sdkBetas=q}function OD6(){G8.totalCostUSD=0,G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalToolDuration=0,G8.startTime=Date.now(),G8.totalLinesAdded=0,G8.totalLinesRemoved=0,G8.hasUnknownModelCost=!1,G8.modelUsage={},G8.promptId=null}function ku6({totalCostUSD:q,totalAPIDuration:K,totalAPIDurationWithoutRetries:_,totalToolDuration:z,totalLinesAdded:Y,totalLinesRemoved:A,lastDuration:O,modelUsage:$}){if(G8.totalCostUSD=q,G8.totalAPIDuration=K,G8.totalAPIDurationWithoutRetries=_,G8.totalToolDuration=z,G8.totalLinesAdded=Y,G8.totalLinesRemoved=A,$)G8.modelUsage=$;if(O)G8.startTime=Date.now()-O}function _P7(){throw Error(\"resetStateForTests can only be called in tests\")}function $D6(){return G8.modelStrings}function Nu6(q){G8.modelStrings=q}function C25(){G8.modelStrings=null}function As8(q,K){G8.meter=q,G8.sessionCounter=K(\"claude_code.session.count\",{description:\"Count of CLI sessions started\"}),G8.locCounter=K(\"claude_code.lines_of_code.count\",{description:\"Count of lines of code modified, with the 'type' attribute indicating whether lines were added or removed\"}),G8.prCounter=K(\"claude_code.pull_request.count\",{description:\"Number of pull requests created\"}),G8.commitCounter=K(\"claude_code.commit.count\",{description:\"Number of git commits created\"}),G8.costCounter=K(\"claude_code.cost.usage\",{description:\"Cost of the Claude Code session\",unit:\"USD\"}),G8.tokenCounter=K(\"claude_code.token.usage\",{description:\"Number of tokens used\",unit:\"tokens\"}),G8.codeEditToolDecisionCounter=K(\"claude_code.code_edit_tool.decision\",{description:\"Count of code editing tool permission decisions (accept/reject) for Edit, Write, and NotebookEdit tools\"}),G8.activeTimeCounter=K(\"claude_code.active_time.total\",{description:\"Total active time in seconds\",unit:\"s\"})}function b25(){return G8.meter}function Os8(){return G8.sessionCounter}function Rz8(){return G8.locCounter}function yu6(){return G8.prCounter}function $s8(){return G8.commitCounter}function ws8(){return G8.costCounter}function wD6(){return G8.tokenCounter}function Eu6(){return G8.codeEditToolDecisionCounter}function js8(){return G8.activeTimeCounter}function Lu6(){return G8.loggerProvider}function Sz8(q){G8.loggerProvider=q}function Hs8(){return G8.eventLogger}function Cz8(q){G8.eventLogger=q}function Js8(){return G8.meterProvider}function bz8(q){G8.meterProvider=q}function N_6(){return G8.tracerProvider}function xz8(q){G8.tracerProvider=q}function d7(){return!G8.isInteractive}function CT(){return G8.isInteractive}function Ms8(q){G8.isInteractive=q}function jD6(){return G8.clientType}function Xs8(q){G8.clientType=q}function vg(){return G8.sdkAgentProgressSummariesEnabled}function Ps8(q){G8.sdkAgentProgressSummariesEnabled=q}function SG(){return G8.kairosActive}function x25(q){G8.kairosActive=q}function Ds8(){return G8.strictToolResultPairing}function I25(q){G8.strictToolResultPairing=q}function Tg(){return G8.memoryToggledOff}function Ws8(q){G8.memoryToggledOff=q}function AL(){return G8.userMsgOptIn}function Vg(q){G8.userMsgOptIn=q}function u25(){return G8.sessionSource}function fs8(q){G8.sessionSource=q}function Iz8(){return G8.questionPreviewFormat}function uz8(q){G8.questionPreviewFormat=q}function mz8(){return G8.agentColorMap}function _66(){return G8.flagSettingsPath}function Zs8(q){G8.flagSettingsPath=q}function HD6(){return G8.flagSettingsInline}function Gs8(q){G8.flagSettingsInline=q}function vs8(){return G8.sessionIngressToken}function y_6(q){G8.sessionIngressToken=q}function Ts8(){return G8.oauthTokenFromFd}function Vs8(q){G8.oauthTokenFromFd=q}function ks8(){return G8.apiKeyFromFd}function Ns8(q){G8.apiKeyFromFd=q}function ys8(q){G8.lastAPIRequest=q}function Es8(){return G8.lastAPIRequest}function Ls8(q){G8.lastAPIRequestMessages=q}function m25(){return G8.lastAPIRequestMessages}function hu6(q){G8.lastClassifierRequests=q}function zP7(){return G8.lastClassifierRequests}function hs8(q){G8.cachedClaudeMdContent=q}function Rs8(){return G8.cachedClaudeMdContent}function B25(q){if(G8.inMemoryErrorLog.length>=100)G8.inMemoryErrorLog.shift();G8.inMemoryErrorLog.push(q)}function Ss8(){return G8.allowedSettingSources}function Cs8(q){G8.allowedSettingSources=q}function Ru6(){return d7()&&G8.clientType!==\"claude-vscode\"}function bs8(q){G8.inlinePlugins=q}function kg(){return G8.inlinePlugins}function xs8(q){G8.chromeFlagOverride=q}function Su6(){return G8.chromeFlagOverride}function OL(q){G8.useCoworkPlugins=q,AW()}function Cu6(){return G8.useCoworkPlugins}function Is8(q){G8.sessionBypassPermissionsMode=q}function E_6(){return G8.sessionBypassPermissionsMode}function bu6(q){G8.scheduledTasksEnabled=q}function JD6(){return G8.scheduledTasksEnabled}function L_6(){return G8.sessionCronTasks}function us8(q){G8.sessionCronTasks.push(q)}function p25(q){return G8.loopChainStartedAt[q]}function g25(q,K){G8.loopChainStartedAt[q]=K}function F25(q){delete G8.loopChainStartedAt[q]}function xu6(q){if(q.length===0)return 0;let K=new Set(q),_=G8.sessionCronTasks.filter((Y)=>!K.has(Y.id)),z=G8.sessionCronTasks.length-_.length;if(z===0)return 0;return G8.sessionCronTasks=_,z}function Iu6(q){G8.sessionTrustAccepted=q}function MD6(){return G8.sessionTrustAccepted}function ms8(q){G8.sessionPersistenceDisabled=q}function ok(){return G8.sessionPersistenceDisabled}function uu6(){return G8.hasExitedPlanMode}function $L(q){G8.hasExitedPlanMode=q}function Bs8(){return G8.needsPlanModeExitAttachment}function gI(q){G8.needsPlanModeExitAttachment=q}function Kn(q,K){if(K===\"plan\"&&q!==\"plan\")G8.needsPlanModeExitAttachment=!1;if(q===\"plan\"&&K!==\"plan\")G8.needsPlanModeExitAttachment=!0}function ps8(){return G8.needsAutoModeExitAttachment}function CG(q){G8.needsAutoModeExitAttachment=q}function gs8(q,K){if(q===\"auto\"&&K===\"plan\"||q===\"plan\"&&K===\"auto\")return;let _=q===\"auto\",z=K===\"auto\";if(z&&!_)G8.needsAutoModeExitAttachment=!1;if(_&&!z)G8.needsAutoModeExitAttachment=!0}function Fs8(){return G8.lspRecommendationShownThisSession}function Us8(q){G8.lspRecommendationShownThisSession=q}function Qs8(q){G8.initJsonSchema=q}function Bz8(){return G8.initJsonSchema}function z66(q){if(!G8.registeredHooks)G8.registeredHooks={};for(let[K,_]of Object.entries(q)){let z=K;if(!G8.registeredHooks[z])G8.registeredHooks[z]=[];G8.registeredHooks[z].push(..._)}}function zS(){return G8.registeredHooks}function U25(){G8.registeredHooks=null}function pz8(){if(!G8.registeredHooks)return;let q={};for(let[K,_]of Object.entries(G8.registeredHooks)){let z=_.filter((Y)=>!(\"pluginRoot\"in Y));if(z.length>0)q[K]=z}G8.registeredHooks=Object.keys(q).length>0?q:null}function YP7(){G8.initJsonSchema=null,G8.registeredHooks=null}function h_6(){return G8.planSlugCache}function mu6(){return G8.sessionCreatedTeams}function Bu6(q){G8.teleportedSessionInfo={isTeleported:!0,hasLoggedFirstMessage:!1,sessionId:q.sessionId}}function gz8(){return G8.teleportedSessionInfo}function Fz8(){if(G8.teleportedSessionInfo)G8.teleportedSessionInfo.hasLoggedFirstMessage=!0}function XD6(q,K,_,z=null){let Y=`${z??\"\"}:${q}`;G8.invokedSkills.set(Y,{skillName:q,skillPath:K,content:_,invokedAt:Date.now(),agentId:z})}function Q25(){return G8.invokedSkills}function ds8(q){let K=q??null,_=new Map;for(let[z,Y]of G8.invokedSkills)if(Y.agentId===K)_.set(z,Y);return _}function cs8(q){if(!q||q.size===0){G8.invokedSkills.clear();return}for(let[K,_]of G8.invokedSkills)if(_.agentId===null||!q.has(_.agentId))G8.invokedSkills.delete(K)}function Y66(q){for(let[K,_]of G8.invokedSkills)if(_.agentId===q)G8.invokedSkills.delete(K)}function AP7(q,K){return}function OP7(){if(G8.slowOperations.length===0)return tX7;let q=Date.now();if(G8.slowOperations.some((K)=>q-K.timestamp>=Ra8)){if(G8.slowOperations=G8.slowOperations.filter((K)=>q-K.timestamp<Ra8),G8.slowOperations.length===0)return tX7}return G8.slowOperations}function Ng(){return G8.mainThreadAgentType}function _n(q){G8.mainThreadAgentType=q}function cK(){return G8.isRemoteMode}function ls8(q){G8.isRemoteMode=q}function ns8(){return G8.systemPromptSectionCache}function is8(q,K){G8.systemPromptSectionCache.set(q,K)}function rs8(){G8.systemPromptSectionCache.clear()}function os8(){return G8.lastEmittedDate}function PD6(q){G8.lastEmittedDate=q}function bG(){return G8.additionalDirectoriesForClaudeMd}function pu6(q){G8.additionalDirectoriesForClaudeMd=q}function TJ(){return G8.allowedChannels}function zn(q){G8.allowedChannels=q}function Uz8(){return G8.hasDevChannels}function Qz8(q){G8.hasDevChannels=q}function as8(){return G8.promptCache1hAllowlist}function ss8(q){G8.promptCache1hAllowlist=q}function ts8(){return G8.afkModeHeaderLatched}function es8(q){G8.afkModeHeaderLatched=q}function qt8(){return G8.fastModeHeaderLatched}function Kt8(q){G8.fastModeHeaderLatched=q}function _t8(){return G8.cacheEditingHeaderLatched}function d25(q){G8.cacheEditingHeaderLatched=q}function zt8(){return G8.thinkingClearLatched}function Yt8(q){G8.thinkingClearLatched=q}function At8(){G8.afkModeHeaderLatched=null,G8.fastModeHeaderLatched=null,G8.cacheEditingHeaderLatched=null,G8.thinkingClearLatched=null}function gu6(){return G8.promptId}function Fu6(q){G8.promptId=q}var G8,ba8,xa8,la8=!1,ia8,ra8,aa8=0,sa8=null,Lz8=0,kz8=!1,Wu6,KP7=150,sX7=10,Ra8=1e4,tX7;var v8=L(()=>{UX7();ya8();tl();G8=eX7();ba8=E9(),xa8=ba8.subscribe;ia8=E9(),ra8=ia8.subscribe;tX7=[]});function dz8(q){let K;for(let _ in q)if(_.startsWith(\"_PROTO_\")){if(K===void 0)K={...q};delete K[_]}return K??q}function $P7(q){if(A66!==null)return;if(A66=q,Uu6.length>0){let K=[...Uu6];Uu6.length=0,queueMicrotask(()=>{for(let _ of K)if(_.async)A66.logEventAsync(_.eventName,_.metadata);else A66.logEvent(_.eventName,_.metadata)})}}function d(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!1});return}A66.logEvent(q,K)}async function wP7(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!0});return}await A66.logEventAsync(q,K)}var Uu6,A66=null;var T8=L(()=>{Uu6=[]});function WD6({writeFn:q,flushIntervalMs:K=1000,maxBufferSize:_=100,maxBufferBytes:z=1/0,immediateMode:Y=!1}){let A=[],O=0,$=null,w=null;function j(){if($)clearTimeout($),$=null}function H(){if(w)q(w.join(\"\")),w=null;if(A.length===0)return;q(A.join(\"\")),A=[],O=0,j()}function J(){if(!$)$=setTimeout(H,K)}function M(){if(w){w.push(...A),A=[],O=0,j();return}let X=A;A=[],O=0,j(),w=X,setImmediate(()=>{let P=w;if(w=null,P)q(P.join(\"\"))})}return{write(X){if(Y){q(X);return}if(A.push(X),O+=X.length,J(),A.length>=_||O>=z)M()},flush:H,dispose(){H()}}}function gq(q){return Ot8.add(q),()=>Ot8.delete(q)}async function jP7(){await Promise.all(Array.from(Ot8).map((q)=>q()))}var Ot8;var o9=L(()=>{Ot8=new Set});function c25(q){let K=[],_=q.match(/^MCP server [\"']([^\"']+)[\"']/);if(_&&_[1])K.push(\"mcp\"),K.push(_[1].toLowerCase());else{let A=q.match(/^([^:[]+):/);if(A&&A[1])K.push(A[1].trim().toLowerCase())}let z=q.match(/^\\[([^\\]]+)]/);if(z&&z[1])K.push(z[1].trim().toLowerCase());if(q.toLowerCase().includes(\"1p event:\"))K.push(\"1p\");let Y=q.match(/:\\s*([^:]+?)(?:\\s+(?:type|mode|status|event))?:/);if(Y&&Y[1]){let A=Y[1].trim().toLowerCase();if(A.length<30&&!A.includes(\" \"))K.push(A)}return Array.from(new Set(K))}function l25(q,K){if(!K)return!0;if(q.length===0)return!1;if(K.isExclusive)return!q.some((_)=>K.exclude.includes(_));else return q.some((_)=>K.include.includes(_))}function JP7(q,K){if(!K)return!0;let _=c25(q);return l25(_,K)}var HP7;var MP7=L(()=>{h4();HP7=A1((q)=>{if(!q||q.trim()===\"\")return null;let K=q.split(\",\").map((A)=>A.trim()).filter(Boolean);if(K.length===0)return null;let _=K.some((A)=>A.startsWith(\"!\")),z=K.some((A)=>!A.startsWith(\"!\"));if(_&&z)return null;let Y=K.map((A)=>A.replace(/^!/,\"\").toLowerCase());return{include:_?[]:Y,exclude:_?Y:[],isExclusive:_}})});import{homedir as n25}from\"os\";import{join as XP7}from\"path\";function fD6(){return XP7(O7(),\"teams\")}function ZD6(q){let K=process.env.NODE_OPTIONS;if(!K)return!1;return K.split(/\\s+/).includes(q)}function Yn(q,K){if(q===void 0)return K;let _=parseInt(q,10);return Number.isNaN(_)?K:_}function B6(q){if(!q)return!1;if(typeof q===\"boolean\")return q;let K=q.toLowerCase().trim();return[\"1\",\"true\",\"yes\",\"on\"].includes(K)}function a9(q){if(q===void 0)return!1;if(typeof q===\"boolean\")return!q;if(!q)return!1;let K=q.toLowerCase().trim();return[\"0\",\"false\",\"no\",\"off\"].includes(K)}function D9(){return B6(process.env.CLAUDE_CODE_SIMPLE)||process.argv.includes(\"--bare\")}function PP7(q){let K={};if(q)for(let _ of q){let[z,...Y]=_.split(\"=\");if(!z||Y.length===0)throw Error(`Invalid environment variable format: ${_}, environment variables should be added as: -e KEY1=value1 -e KEY2=value2`);K[z]=Y.join(\"=\")}return K}function YS(){return process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION||\"us-east-1\"}function cz8(){return process.env.CLOUD_ML_REGION||\"us-east5\"}function DP7(){return B6(process.env.CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR)}function Af(){return!1}function AS(){return!1}function WP7(){return{namespace:void 0,cluster:void 0}}function lz8(q){if(q){let K=i25.find(([_])=>q.startsWith(_));if(K)return process.env[K[1]]||cz8()}return cz8()}var O7,i25;var B8=L(()=>{h4();O7=A1(()=>{return(process.env.CLAUDE_CONFIG_DIR??XP7(n25(),\".claude\")).normalize(\"NFC\")},()=>process.env.CLAUDE_CONFIG_DIR);i25=[[\"claude-haiku-4-5\",\"VERTEX_REGION_CLAUDE_HAIKU_4_5\"],[\"claude-3-5-haiku\",\"VERTEX_REGION_CLAUDE_3_5_HAIKU\"],[\"claude-3-5-sonnet\",\"VERTEX_REGION_CLAUDE_3_5_SONNET\"],[\"claude-3-7-sonnet\",\"VERTEX_REGION_CLAUDE_3_7_SONNET\"],[\"claude-opus-4-6\",\"VERTEX_REGION_CLAUDE_4_6_OPUS\"],[\"claude-opus-4-1\",\"VERTEX_REGION_CLAUDE_4_1_OPUS\"],[\"claude-opus-4\",\"VERTEX_REGION_CLAUDE_4_0_OPUS\"],[\"claude-sonnet-4-6\",\"VERTEX_REGION_CLAUDE_4_6_SONNET\"],[\"claude-sonnet-4-5\",\"VERTEX_REGION_CLAUDE_4_5_SONNET\"],[\"claude-sonnet-4\",\"VERTEX_REGION_CLAUDE_4_0_SONNET\"]]});function $4(q,K,_,z,Y){if(z===\"m\")throw TypeError(\"Private method is not writable\");if(z===\"a\"&&!Y)throw TypeError(\"Private accessor was defined without a setter\");if(typeof K===\"function\"?q!==K||!Y:!K.has(q))throw TypeError(\"Cannot write private member to an object whose class did not declare it\");return z===\"a\"?Y.call(q,_):Y?Y.value=_:K.set(q,_),_}function u1(q,K,_,z){if(_===\"a\"&&!z)throw TypeError(\"Private accessor was defined without a getter\");if(typeof K===\"function\"?q!==K||!z:!K.has(q))throw TypeError(\"Cannot read private member from an object whose class did not declare it\");return _===\"m\"?z:_===\"a\"?z.call(q):z?z.value:K.get(q)}var An=()=>{};var $t8=function(){let{crypto:q}=globalThis;if(q?.randomUUID)return $t8=q.randomUUID.bind(q),q.randomUUID();let K=new Uint8Array(1),_=q?()=>q.getRandomValues(K)[0]:()=>Math.random()*255&255;return\"10000000-1000-4000-8000-100000000000\".replace(/[018]/g,(z)=>(+z^_()&15>>+z/4).toString(16))};function On(q){return typeof q===\"object\"&&q!==null&&((\"name\"in q)&&q.name===\"AbortError\"||(\"message\"in q)&&String(q.message).includes(\"FetchRequestCanceledException\"))}var Qu6=(q)=>{if(q instanceof Error)return q;if(typeof q===\"object\"&&q!==null){try{if(Object.prototype.toString.call(q)===\"[object Error]\"){let K=Error(q.message,q.cause?{cause:q.cause}:{});if(q.stack)K.stack=q.stack;if(q.cause&&!K.cause)K.cause=q.cause;if(q.name)K.name=q.name;return K}}catch{}try{return Error(JSON.stringify(q))}catch{}}return Error(q)};var vq,dq,c_,Of,yg,du6,R_6,cu6,S_6,lu6,nu6,iu6,ru6;var $W=L(()=>{vq=class vq extends Error{};dq=class dq extends vq{constructor(q,K,_,z,Y){super(`${dq.makeMessage(q,K,_)}`);this.status=q,this.headers=z,this.requestID=z?.get(\"request-id\"),this.error=K,this.type=Y??null}static makeMessage(q,K,_){let z=K?.message?typeof K.message===\"string\"?K.message:JSON.stringify(K.message):K?JSON.stringify(K):_;if(q&&z)return`${q} ${z}`;if(q)return`${q} status code (no body)`;if(z)return z;return\"(no status code or body)\"}static generate(q,K,_,z){if(!q||!z)return new Of({message:_,cause:Qu6(K)});let Y=K,A=Y?.error?.type;if(q===400)return new du6(q,Y,_,z,A);if(q===401)return new R_6(q,Y,_,z,A);if(q===403)return new cu6(q,Y,_,z,A);if(q===404)return new S_6(q,Y,_,z,A);if(q===409)return new lu6(q,Y,_,z,A);if(q===422)return new nu6(q,Y,_,z,A);if(q===429)return new iu6(q,Y,_,z,A);if(q>=500)return new ru6(q,Y,_,z,A);return new dq(q,Y,_,z,A)}};c_=class c_ extends dq{constructor({message:q}={}){super(void 0,void 0,q||\"Request was aborted.\",void 0)}};Of=class Of extends dq{constructor({message:q,cause:K}){super(void 0,void 0,q||\"Connection error.\",void 0);if(K)this.cause=K}};yg=class yg extends Of{constructor({message:q}={}){super({message:q??\"Request timed out.\"})}};du6=class du6 extends dq{};R_6=class R_6 extends dq{};cu6=class cu6 extends dq{};S_6=class S_6 extends dq{};lu6=class lu6 extends dq{};nu6=class nu6 extends dq{};iu6=class iu6 extends dq{};ru6=class ru6 extends dq{}});function nz8(q){if(typeof q!==\"object\")return{};return q??{}}function Ht8(q){if(!q)return!0;for(let K in q)return!1;return!0}function ZP7(q,K){return Object.prototype.hasOwnProperty.call(q,K)}var o25,fP7=(q)=>{return o25.test(q)},wt8=(q)=>(wt8=Array.isArray,wt8(q)),jt8,GP7=(q,K)=>{if(typeof K!==\"number\"||!Number.isInteger(K))throw new vq(`${q} must be an integer`);if(K<0)throw new vq(`${q} must be a positive integer`);return K},iz8=(q)=>{try{return JSON.parse(q)}catch(K){return}};var C_6=L(()=>{$W();o25=/^[a-z][a-z0-9+.-]*:/i,jt8=wt8});var vP7=(q)=>new Promise((K)=>setTimeout(K,q));var O66=\"0.81.0\";function a25(){if(typeof Deno<\"u\"&&Deno.build!=null)return\"deno\";if(typeof EdgeRuntime<\"u\")return\"edge\";if(Object.prototype.toString.call(typeof globalThis.process<\"u\"?globalThis.process:0)===\"[object process]\")return\"node\";return\"unknown\"}function t25(){if(typeof navigator>\"u\"||!navigator)return null;let q=[{key:\"edge\",pattern:/Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"ie\",pattern:/MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"ie\",pattern:/Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"chrome\",pattern:/Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"firefox\",pattern:/Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"safari\",pattern:/(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/}];for(let{key:K,pattern:_}of q){let z=_.exec(navigator.userAgent);if(z){let Y=z[1]||0,A=z[2]||0,O=z[3]||0;return{browser:K,version:`${Y}.${A}.${O}`}}}return null}var NP7=()=>{return typeof window<\"u\"&&typeof window.document<\"u\"&&typeof navigator<\"u\"},s25=()=>{let q=a25();if(q===\"deno\")return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":VP7(Deno.build.os),\"X-Stainless-Arch\":TP7(Deno.build.arch),\"X-Stainless-Runtime\":\"deno\",\"X-Stainless-Runtime-Version\":typeof Deno.version===\"string\"?Deno.version:Deno.version?.deno??\"unknown\"};if(typeof EdgeRuntime<\"u\")return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":\"Unknown\",\"X-Stainless-Arch\":`other:${EdgeRuntime}`,\"X-Stainless-Runtime\":\"edge\",\"X-Stainless-Runtime-Version\":globalThis.process.version};if(q===\"node\")return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":VP7(globalThis.process.platform??\"unknown\"),\"X-Stainless-Arch\":TP7(globalThis.process.arch??\"unknown\"),\"X-Stainless-Runtime\":\"node\",\"X-Stainless-Runtime-Version\":globalThis.process.version??\"unknown\"};let K=t25();if(K)return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":\"Unknown\",\"X-Stainless-Arch\":\"unknown\",\"X-Stainless-Runtime\":`browser:${K.browser}`,\"X-Stainless-Runtime-Version\":K.version};return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":\"Unknown\",\"X-Stainless-Arch\":\"unknown\",\"X-Stainless-Runtime\":\"unknown\",\"X-Stainless-Runtime-Version\":\"unknown\"}},TP7=(q)=>{if(q===\"x32\")return\"x32\";if(q===\"x86_64\"||q===\"x64\")return\"x64\";if(q===\"arm\")return\"arm\";if(q===\"aarch64\"||q===\"arm64\")return\"arm64\";if(q)return`other:${q}`;return\"unknown\"},VP7=(q)=>{if(q=q.toLowerCase(),q.includes(\"ios\"))return\"iOS\";if(q===\"android\")return\"Android\";if(q===\"darwin\")return\"MacOS\";if(q===\"win32\")return\"Windows\";if(q===\"freebsd\")return\"FreeBSD\";if(q===\"openbsd\")return\"OpenBSD\";if(q===\"linux\")return\"Linux\";if(q)return`Other:${q}`;return\"Unknown\"},kP7,yP7=()=>{return kP7??(kP7=s25())};var Jt8=()=>{};function EP7(){if(typeof fetch<\"u\")return fetch;throw Error(\"`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`\")}function Mt8(...q){let K=globalThis.ReadableStream;if(typeof K>\"u\")throw Error(\"`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`\");return new K(...q)}function rz8(q){let K=Symbol.asyncIterator in q?q[Symbol.asyncIterator]():q[Symbol.iterator]();return Mt8({start(){},async pull(_){let{done:z,value:Y}=await K.next();if(z)_.close();else _.enqueue(Y)},async cancel(){await K.return?.()}})}function ou6(q){if(q[Symbol.asyncIterator])return q;let K=q.getReader();return{async next(){try{let _=await K.read();if(_?.done)K.releaseLock();return _}catch(_){throw K.releaseLock(),_}},async return(){let _=K.cancel();return K.releaseLock(),await _,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function LP7(q){if(q===null||typeof q!==\"object\")return;if(q[Symbol.asyncIterator]){await q[Symbol.asyncIterator]().return?.();return}let K=q.getReader(),_=K.cancel();K.releaseLock(),await _}var hP7=({headers:q,body:K})=>{return{bodyHeaders:{\"content-type\":\"application/json\"},body:JSON.stringify(K)}};function RP7(q){return Object.entries(q).filter(([K,_])=>typeof _<\"u\").map(([K,_])=>{if(typeof _===\"string\"||typeof _===\"number\"||typeof _===\"boolean\")return`${encodeURIComponent(K)}=${encodeURIComponent(_)}`;if(_===null)return`${encodeURIComponent(K)}=`;throw new vq(`Cannot stringify type ${typeof _}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`)}).join(\"&\")}var SP7=L(()=>{$W()});function xP7(q){let K=0;for(let Y of q)K+=Y.length;let _=new Uint8Array(K),z=0;for(let Y of q)_.set(Y,z),z+=Y.length;return _}function au6(q){let K;return(CP7??(K=new globalThis.TextEncoder,CP7=K.encode.bind(K)))(q)}function Xt8(q){let K;return(bP7??(K=new globalThis.TextDecoder,bP7=K.decode.bind(K)))(q)}var CP7,bP7;class $66{constructor(){wL.set(this,void 0),jL.set(this,void 0),$4(this,wL,new Uint8Array,\"f\"),$4(this,jL,null,\"f\")}decode(q){if(q==null)return[];let K=q instanceof ArrayBuffer?new Uint8Array(q):typeof q===\"string\"?au6(q):q;$4(this,wL,xP7([u1(this,wL,\"f\"),K]),\"f\");let _=[],z;while((z=Kj5(u1(this,wL,\"f\"),u1(this,jL,\"f\")))!=null){if(z.carriage&&u1(this,jL,\"f\")==null){$4(this,jL,z.index,\"f\");continue}if(u1(this,jL,\"f\")!=null&&(z.index!==u1(this,jL,\"f\")+1||z.carriage)){_.push(Xt8(u1(this,wL,\"f\").subarray(0,u1(this,jL,\"f\")-1))),$4(this,wL,u1(this,wL,\"f\").subarray(u1(this,jL,\"f\")),\"f\"),$4(this,jL,null,\"f\");continue}let Y=u1(this,jL,\"f\")!==null?z.preceding-1:z.preceding,A=Xt8(u1(this,wL,\"f\").subarray(0,Y));_.push(A),$4(this,wL,u1(this,wL,\"f\").subarray(z.index),\"f\"),$4(this,jL,null,\"f\")}return _}flush(){if(!u1(this,wL,\"f\").length)return[];return this.decode(`\n ^^^\n\nSyntaxError: Unexpected token '??='\n at Loader.moduleStrategy (internal/modules/esm/translators.js:145:18)\n at async link (internal/modules/esm/module_job.js:47:21)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ nvm use 24\nNow using node v24.11.1 (npm v11.6.2)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude\n╭─── Claude Code v2.1.114 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ \n│ │ Tips for getting started │ \n│ Welcome back Lukas! │ Run /init to create a CLAUDE.md file with instructions for Claude │ \n│ │ Note: You have launched claude in your home directory. For the best experience, launch it in a project directory instead. │ \n│ ▐▛███▜▌ │ ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ \n│ ▝▜█████▛▘ │ Recent activity │ \n│ ▘▘ ▝▝ │ 10h ago nice │ \n│ Sonnet 4.6 · Claude Pro · kovaliklukas@gmail.com's │ 4d ago give me overview of what I did yesterday │ \n│ Organization │ 1w ago how to open screenshots related, how many are there aroudn that time │ \n│ /Users/lukas │ /resume for more │ \n╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ \n \n❯ You have access to Screenpipe data via the local SQLite database at ~/.screenpipe/db.sqlite \n \n Query the database using: sqlite3 -json ~/.screenpipe/db.sqlite \"YOUR SQL HERE\" \n \n Key tables: \n - ocr_text: columns id, frame_id, text, text_json, app_name, window_name, created_at \n - audio_transcriptions: columns id, audio_chunk_id, transcription, device, is_input, created_at \n - frames: columns id, file_path, timestamp, device_id \n - ui_events: columns id, event_type, element_text, app_name, created_at \n \n Build a full day activity summary for TODAY (use date() in SQL for today's date, timestamps are UTC). \n \n Steps: \n 1. Query ocr_text for today grouped by app_name + window_name with time ranges (MIN/MAX created_at), filtering out empty/junk text \n 2. Query audio_transcriptions for today to find meeting/call content (is_input=1 is microphone) \n 3. Correlate everything into a chronological timeline \n \n Output format — a narrative timeline like: \n 08:34–09:12 PhpStorm · JY-20458 — editing UserReportController.php, writing migration \n 09:12–09:45 Slack · #engineering — huddle with team, discussed deployment blocker \n 09:45–10:30 Chrome · Jira — reviewed ticket comments, updated description \n ... \n \n Rules: \n - Convert all UTC timestamps to local time (Europe/Sofia = UTC+3) \n - Merge consecutive entries of the same app/window within 5-minute gaps \n - Flag meetings/calls based on: Zoom/Meet/Teams in app_name OR microphone audio present \n - For code work: extract file names and ticket numbers from window titles \n - For Slack/browser: extract thread/page context from window_name \n - Minimum segment duration: 2 minutes (ignore flash switches) \n - End with a summary block: total focused work, meetings, context switches, top 3 apps by time \n ⎿ Please run /login · API Error: 401 {\"type\":\"error\",\"error\":{\"type\":\"authentication_error\",\"message\":\"Invalid authentication \n \u0000 credentials\"},\"request_id\":\"req_011CaFTE1idEzHpMgKT4Xunq\"}\n\n❯ is it ok now \n ⎿ Please run /login · API Error: 401 {\"type\":\"error\",\"error\":{\"type\":\"authentication_error\",\"message\":\"Invalid authentication \n credentials\"},\"request_id\":\"req_011CaFTEnQhm5weRqNt6SMq2\"} \n \n❯ /login \n ⎿ Login successful \n \n❯ You have access to Screenpipe data via the local SQLite database at ~/.screenpipe/db.sqlite \n \n Query the database using: sqlite3 -json ~/.screenpipe/db.sqlite \"YOUR SQL HERE\" \n \n Key tables: \n - ocr_text: columns id, frame_id, text, text_json, app_name, window_name, created_at \n - audio_transcriptions: columns id, audio_chunk_id, transcription, device, is_input, created_at \n - frames: columns id, file_path, timestamp, device_id \n - ui_events: columns id, event_type, element_text, app_name, created_at \n \n Build a full day activity summary for TODAY (use date() in SQL for today's date, timestamps are UTC). \n \n Steps: \n 1. Query ocr_text for today grouped by app_name + window_name with time ranges (MIN/MAX created_at), filtering out empty/junk text \n 2. Query audio_transcriptions for today to find meeting/call content (is_input=1 is microphone) \n 3. Correlate everything into a chronological timeline \n \n Output format — a narrative timeline like: \n 08:34–09:12 PhpStorm · JY-20458 — editing UserReportController.php, writing migration \n 09:12–09:45 Slack · #engineering — huddle with team, discussed deployment blocker \n 09:45–10:30 Chrome · Jira — reviewed ticket comments, updated description \n ... \n \n Rules: \n - Convert all UTC timestamps to local time (Europe/Sofia = UTC+3) \n - Merge consecutive entries of the same app/window within 5-minute gaps \n - Flag meetings/calls based on: Zoom/Meet/Teams in app_name OR microphone audio present \n - For code work: extract file names and ticket numbers from window titles \n - For Slack/browser: extract thread/page context from window_name \n - Minimum segment duration: 2 minutes (ignore flash switches) \n - End with a summary block: total focused work, meetings, context switches, top 3 apps by time \n\n⏺\u0000Querying the Screenpipe\u0000database\u0000for\u0000today's\u0000activity.\n \n⏺\u0000Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"SELECT\u0000app_name,\u0000window_name,\u0000MIN(created_at)\u0000as\u0000first_seen,\u0000MAX(created_at)\u0000as\u0000last_seen,\u0000COUNT(*)\u0000as\u0000entries\u0000FROM\u0000ocr_t…)\n ⎿ Error: Exit code 1 \n \u0000\u0000Error: in prepare, no such column: created_at\n SELECT app_name, window_name, MIN(created_at) as first_seen, MAX(created_at) a \n error here ---^ \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \"SELECT transcription, device, is_input, created_at FROM audio_transcriptions WHERE date(created_at) = date('now') AND len…) \n ⎿ Cancelled: parallel tool call Bash(sqlite3 -json ~/.screenpipe/db.sqlite \"S…) errored\n \n⏺ Let me check the actual schema first. \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \".schema ocr_text\" 2>&1 && echo \"---\" && sqlite3 ~/.screenpipe/db.sqlite \".schema audio_transcriptions\" 2>&1) \n ⎿ CREATE TABLE IF NOT EXISTS \"ocr_text\" ( \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000frame_id\u0000INTEGER\u0000NOT\u0000NULL,\n text TEXT NOT NULL, \n … +33 lines (ctrl+o to expand) \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \".schema frames\" 2>&1) \n ⎿ CREATE TABLE IF NOT EXISTS \"frames\" ( \n id INTEGER PRIMARY KEY AUTOINCREMENT, \n video_chunk_id INTEGER DEFAULT NULL, \n … +47 lines (ctrl+o to expand) \n \n⏺ Now I have the schema. The timestamps are in frames, not ocr_text. Querying with joins. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"app_name\":\"PhpStorm\",\"window_name\":\"\",\"first_seen_local\":\"2026-04-20\u000009:09:09\",\"last_seen_local\":\"2026-04-20\u000013:08:57\",\"entries\":47},\n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js – console [EU]\",\"first_seen_local\":\"2026-04-20 09:09:20\",\"last_seen_local\":\"2026-04-20 11:49:37\",\"entries\":31}, \n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js\u0000–\u0000console\u0000[PROD]\",\"first_seen_local\":\"2026-04-20\u000009:09:39\",\"last_seen_local\":\"2026-04-20\u000009:09:39\",\"entries\":1},\n … +94 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \u0000 \n ⎿ (No output) \n \n⏺ Let me get a bit more detail on the audio and the afternoon activity. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ (No output) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"\n SELECT…) \n ⎿ [{\"app_name\":\"PhpStorm\",\"window_name\":\"\",\"first_seen_local\":\"2026-04-20\u000009:09:09\",\"last_seen_local\":\"2026-04-20\u000013:08:57\",\"entries\":47},\n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js – console [EU]\",\"first_seen_local\":\"2026-04-20 09:09:20\",\"last_seen_local\":\"2026-04-20 11:49:37\",\"entries\":31}, \n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js\u0000–\u0000console\u0000[PROD]\",\"first_seen_local\":\"2026-04-20\u000009:09:39\",\"last_seen_local\":\"2026-04-20\u000009:09:39\",\"entries\":1},\n … +79 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ I have everything I need. Here's your day: \n \n --- \n Activity Summary — Monday, 20 April 2026 \n \n Chronological Timeline \n \n 09:09–09:21 PhpStorm · faVsco.js — started day, checked EU/PROD consoles, \n briefly opened connect.vue, ImportActivityTypes.php \n \n 09:17–09:30 Slack · Galya Dimitrova (DM) — morning check-in \n \n 09:21–10:36 PhpStorm · faVsco.js — main coding block: ReportController.php, \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000TrackAutomatedReportGeneratedEvent.php,\n TrackAutomatedReportGeneratedEventTest.php \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000(shelved\u0000changes,\u0000ran\u0000tests\u0000via\u0000Run\u0000panel)\n \n 09:30–09:44 Slack · multiple DMs — Aneliya/Nikolay/Steliyan group DM, \n Stoyan Tomov DM, #engineering glance \n \n 09:40–10:04 iTerm2 · EU (ssh) + PROD — terminal work on EU/PROD servers \n \n 09:45–10:05 Firefox · Meet - Daily - — 📹\u0000 MEETING: Platform daily standup (~20 min) \n Platform\n \n 10:04–10:18 Firefox · Work / Jira — post-standup Jira check, \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Platform\u0000Sprint\u00002\u0000Q2\u0000Scrum\u0000Board\n \n 10:21–10:44 Slack\u0000·\u0000platform-inner-team\u0000\u0000\u0000—\u0000#platform-inner-team\u0000channel,\n + Stefka Stoyanova DM DM with Stefka Stoyanova \n \n 10:26–11:13 Slack · Galya Dimitrova (DM) — extended DM thread with Galya \n \n 10:32–12:22 PhpStorm · Run — tests running in background \n \n 10:44–10:49 Slack · Huddle: @Galya — 📹\u0000 MEETING: Slack huddle with Galya (~5 min) \n Dimitrova\n \n 11:02–11:25 PhpStorm · faVsco.js — CreateSharedEvent.php, laravel.log (log review), \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000composer.json;\u0000iTerm2\u0000DEV\u0000(docker)\u0000briefly\n \n 11:08–11:32 Slack · #releases — watching release channel \n \n 11:32–11:40 PhpStorm · faVsco.js — User.php, AppServiceProvider.php \n\u0000\u0000 \n 11:33–11:48 Slack · Huddle: @Aneliya — 📹\u0000 MEETING: Slack huddle with Aneliya (~15 min) \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Angelova\n \n 11:35–11:55 Slack · Aneliya Angelova (DM) — follow-up DM after huddle \n \n 11:48–12:44 PhpStorm · faVsco.js — deep work: AskJiminnyReportActivityService.php, \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000RequestGenerateAskJiminnyReportJob.php,\n AskJiminnyReportsController.php \n\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000(local\u0000SF\u0000server\u0000running\u0000in\u0000background)\n \n 12:19–12:36\u0000\u0000PhpStorm\u0000·\u0000faVsco.js\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000—\u0000AutomatedReportsSendCommand.php,\n AutomatedReportsService.php, \n AutomatedReportsServiceTest.php \n \n 12:24–12:38 Slack · #confusion-clinic — checking confusion-clinic channel \n\u0000\u0000 \n 12:49–13:07 PhpStorm · faVsco.js — pivoted to HubSpot integration: \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000OpportunitySyncTrait.php,\u0000BaseService.php,\n AskJiminnyReportActivityServiceTest.php, \n HS_local env \n \n 13:06–13:07 PhpStorm · Commit Changes — committed the morning's work \n \n ≈ 13:07–13:38 BREAK — ~30 min gap in activity \n \n 13:38–18:55 PhpStorm + Firefox + iTerm2 — afternoon continued (generic capture mode; \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000window-level\u0000detail\u0000unavailable\u0000—\u0000likely\n continued Ask Jiminny / automated reports work; \n Activity Monitor checked 13:54–15:21, \n CleanShot X screenshots 15:01–16:55, \n Finder 16:58–17:07) \n \n --- \n Summary Block \n\u0000\u0000 \n\u0000\u0000┌────────────────────┬────────────────────────────────────────────────────────────────────┐\n\u0000\u0000│\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000 \u0000\u0000│\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├────────────────────┼────────────────────────────────────────────────────────────────────┤\n\u0000\u0000│ Day start / end\u0000 \u0000 │ 09:09 – ~18:55\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├────────────────────┼────────────────────────────────────────────────────────────────────┤\n │ Total tracked time │ ~9h 45min │ \n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Meetings / calls │ ~40 min (Platform daily standup + 2 Slack huddles) │ \n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Focused coding\u0000\u0000\u0000\u0000\u0000│\u0000~6–7\u0000h\u0000(PhpStorm\u0000dominant\u0000—\u0000Ask\u0000Jiminny\u0000automated\u0000reports\u0000feature)\u0000│\n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Communication \u0000\u0000\u0000\u0000\u0000│\u0000~1.5\u0000h\u0000(Slack:\u0000~10\u0000distinct\u0000DMs/channels)\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Context switches\u0000\u0000\u0000│\u0000High\u0000—\u0000~15\u0000Slack\u0000threads,\u0000frequent\u0000PhpStorm\u0000↔\u0000Slack\u0000↔\u0000Firefox\u0000\u0000\u0000\u0000\u0000\u0000│\n └────────────────────┴────────────────────────────────────────────────────────────────────┘ \n \n Top 3 apps by time: \n 1. PhpStorm — dominant\u0000all\u0000day;\u0000project:\u0000faVsco.js\u0000(Jiminny\u0000backend)\n 2. Firefox — browser work + Google Meet \n 3. iTerm2 — EU/PROD SSH +\u0000local Docker \n \n Main coding theme:\u0000Ask\u0000Jiminny\u0000automated\u0000reports\u0000pipeline\u0000—\u0000AskJiminnyReportActivityService,\u0000RequestGenerateAskJiminnyReportJob,\u0000AutomatedReportsService,\n AutomatedReportsSendCommand, AskJiminnyReportsController, plus related tests. Committed at 13:06. \n \n ▎ No audio transcriptions were captured today (microphone data empty), so meeting content was inferred from window titles only. \n \n✻ Sautéed for 1m 28s \n \n❯ what about between 15:00 and 17:00 approximatelly. I had a meeting. What was it about \n \n⏺ Let me dig into that window more carefully. \n \n⏺\u0000Bash(sqlite3 -json\u0000~/.screenpipe/db.sqlite\u0000\"\n SELECT…) \n ⎿ (No output)\n \n⏺ Bash(sqlite3 -json\u0000~/.screenpipe/db.sqlite\u0000\"\n SELECT transcription, device, is_input_device, datetime(timestamp, '+3 hours') as local_time…) \n ⎿ (No output) \n \n⏺ Wrong UTC offset in my query.\u0000Let\u0000me\u0000fix\u0000—\u000015:00–17:00\u0000local\u0000=\u000012:00–14:00\u0000UTC.\n \n⏺\u0000Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"\n SELECT…) \n ⎿ [{\"app_name\":\"iTerm2\",\"window_name\":\"iTerm2\",\"local_time\":\"2026-04-20 15:00:00\",\"text_preview\":\"FV faVsco.js\u0000v°9\u0000masterProjectphp\u0000artisan0\u0000composer.json0\u0000composer.lockde\n pendency-checker.json0 dev.jsonE ids.txtE infection.json.distM-INSTALL.mdM+ INTERNAL_WEBHOOK_SETUP.mdEjiminny storageM+licenses.mom Makerileраскаqе-lock. sonE phpstan.ne \n on.dist= phostan-baseline.neon<phpunit.xmlTe raw sal querv\"}, \n … +173 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT transcription, device, is_input_device, datetime(timestamp, '+3 hours') as local_time…) \n ⎿ (No output) \n \n⏺ Bash(cat /Users/lukas/.claude/projects/-Users-lukas/81aa3054-f078-4fb2-aeb0-937316d28f59/tool-results/b5ez8ga4k.txt\u0000|\u0000python3\u0000-c\u0000\"\n import json, sys…) \n ⎿ Traceback (most\u0000recent\u0000call\u0000last):\n File \"<string>\", line 15, in <module> \n File \"<string>\", line 15, in <genexpr> \n … +13 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ [{\"app_name\":\"iTerm2\",\"window_name\":\"iTerm2\",\"first_local\":\"2026-04-20 15:00:00\",\"last_local\":\"2026-04-20 17:07:40\"}, \n {\"app_name\":\"Raycast\",\"window_name\":\"Raycast\",\"first_local\":\"2026-04-20 15:00:26\",\"last_local\":\"2026-04-20 15:03:21\"}, \n {\"app_name\":\"Slack\",\"window_name\":\"Slack\",\"first_local\":\"2026-04-20 15:00:39\",\"last_local\":\"2026-04-20 17:26:13\"}, \n … +9 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"app_name\":\"Firefox\",\"window_name\":null,\"local_time\":\"2026-04-20 15:01:01\",\"text_preview\":\"slackActivityLaterJiminny ...Dratts & centi8 DirectoriesEb External connecti \n ons# Starred8 jiminny-x-integrati...& platform-inner-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinic# curiosity_lab# engineering# frontend# general# infra \n -changes# jiminny-bg# platform-tickets# product launches# random# releases# support# thank-yous# the_people_of_jimi...6 Direct messagesP. Aneliya Angelova \"}, \n … +155 lines (ctrl+o to expand) \n \n⏺ Found it. Let me get the meeting duration and the Jira tickets that were discussed. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:00:00\",\"text_preview\":\"FV faVsco.js v°9 masterProjectphp artisan0 composer.json0 composer.lockdependency-checker.json0 dev.jsonE ids.txtE i \n nfection.json.distM-INSTALL.mdM+ INTERNAL_WEBHOOK_SETUP.mdEjiminny storageM+licenses.mom Makerileраскаqе-lock. sonE phpstan.neon.dist= phostan-baseline.neon<phpunit.xmlT \n e raw sal querv.saM+ README.mdLo sonar-proiect propertiesE test.py<> Untited Diadram.xmliI vetur.config.jsMI WEBHOOK FILTERING IMPLEMENTATION.mo› ib External Librariesv \n … +14 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \u0000 \n ⎿ [{\"local_time\":\"2026-04-20 17:15:27\",\"text_preview\":\"Slack•0 ЕlActivityLateMoreVIewmistonWindowHeld@ Search: shared-activiJiminny ...Nikolay Nikolov→Drattc& contTMore un \n reads8 DieuurelMessagesr Filesщсе но като цяло на края както говорихме просто навсякьде където се псEb External connections& Starred@ liminny-x-integrati...platform-inne \n r-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinica curiosiiy ao# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product laun \n … +14 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n \u0000 SELECT…) \u0000 \n ⎿ [{\"local_time\":\"2026-04-20 15:00:39\",\"text_preview\":\"SlackO•• ЕlActivityLaterVIewHistoryWindowHelp@ Search: shared-actiJiminny ..Dratts & centi8 Directories# releases• M \n \u0000\u0000essagesEb\u0000External\u0000connections#\u0000Starred8\u0000jiminny-x-integrati...&\u0000platform-inner-teamE\u0000Channels#\u0000ai-chapter#\u0000alertsS\u0000hackendl#\u0000confusion-clinic#\u0000curiosity_lab#\u0000engineerin\n g# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# support# thank-yous# the_people_of_jimi...6 Direct messagesP. Anel \n … +106 lines (ctrl+o to expand) \n \n⏺ Let me find when the meeting ended by checking the last Meet frames. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 17:07:11\",\"text_preview\":\"SlackActivityMoreVIewMistonWindowHeld@ Search: shared-activiJiminny ...* • Nikolay Nikolov→Drattck cantTMore unreads \n 8 Dieeurel• MessagesEb External connections& Starred@ liminny-x-integrati...platform-inner-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinica curiosiiy ao# \n engineering# fr\"}, \n … +12 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 16:56:34\",\"text_preview\":\"FirefoxFileEditViewHistoryBookmarksProfiles→CToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0‹ >0 lhl100% <78• \n Mon 20 Apr 16:56:33=+Aneliya AngelovaGalya DimitrovaNikolay Yankov*Nikolay IvanovNikolay\u0000NikolovLukas\u0000Kovalik4:56\u0000PM\u0000|\u0000[Platform]\u0000Refinement\u0000•1:54:45\"},\n {\"local_time\":\"2026-04-20 16:56:32\",\"text_preview\":\"FirefoxFileEditViewHistoryBookmarksProfiles→CToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0‹ >0 lbl100% [8• M \n … +20 lines (ctrl+o to expand) \n \n⏺ Got everything. Here's the full picture: \n \n --- \n 📹\u0000 Meeting: [Platform] Refinement \n \n Time: 15:02 – ~16:57 · Duration: ~1h 55min \n Platform: Google Meet (meet.google.com/cxs-eips-npt) \n \n Participants: \n - Lukas Kovalik (you) \n\u0000\u0000- Nikolay Ivanov \n\u0000\u0000-\u0000Steliyan Georgiev\n\u0000\u0000-\u0000Nikolay Nikolov \n\u0000\u0000-\u0000Nikolay\u0000Yankov \n - Aneliya Angelova \n -\u0000Galya Dimitrova (presenting/annotating at the end)\n - Stefka Stoyanova \n \n What was covered:\n This was a sprint backlog refinement session. The browser tabs visible during the call show exactly which Jira tickets were open and likely discussed: \n \n ┌───────────┬──────────────────────────────────────────────────┐ \n │ Ticket │ Title │ \n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-19798\u0000 │ Evaluation for AI activity \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-20553\u0000 │ Improve CRM-sync delay\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├───────────┼──────────────────────────────────────────────────┤ \n │\u0000JY-20698\u0000 │ Handle failed field sync\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├───────────┼──────────────────────────────────────────────────┤ \n\u0000\u0000│ JY-20692 │ Change confirmation page\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-20543\u0000 │ AJ Reports > Tracking\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-18909\u0000\u0000│\u0000(Part\u00002)\u0000Automated\u0000Reports\u0000/\u0000Ask\u0000Jiminny\u0000Reports\u0000│\n ├───────────┼──────────────────────────────────────────────────┤ \n │\u0000SRD-67871\u0000│\u0000Issue\u0000with\u0000reconnecting\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n └───────────┴──────────────────────────────────────────────────┘ \n\u0000\u0000 \n You also had Postman open alongside the meeting with HubSpot (deal/object APIs) and Salesforce (tooling queries, field metadata) — likely looking up API details to clarify \n ticket\u0000scope.\n \n At ~16:56, Galya Dimitrova was screen-sharing (OCR shows \"Presenting, annotating\"), with Jira (jiminny.atlassian.net) visible — typical of a refinement session wrapping up by \n walking\u0000through\u0000the\u0000board.\n \n No audio was captured, so the actual discussion content isn't available — but the ticket list and ~2h duration match a thorough refinement session. \n \n✻ Crunched for 1m 50s \n \n❯ lets maybe focus on one monitor at the time. I probably worked on some stuf when the meeting was on on other monitor. Lets focus on the monitor where was the meeting \n \n⏺ Let me check what monitor/device info is available in the frames. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n \u0000\u0000\u0000SELECT\u0000DISTINCT\u0000device_name,\u0000COUNT(*)\u0000as\u0000cnt…)\n ⎿ [{\"device_name\":\"monitor_1\",\"cnt\":4390}, \n {\"device_name\":\"monitor_2\",\"cnt\":4703}]\n \n⏺\u0000Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"\n SELECT DISTINCT device_name…) \n ⎿ [{\"device_name\":\"monitor_1\"}, \n {\"device_name\":\"monitor_2\"}] \n \n⏺\u0000Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT f.device_name, COUNT(*) as meet_frames…) \n ⎿ monitor_1|1336 \n monitor_2|36 \n \n⏺\u0000monitor_1 was the meeting monitor. Now let me pull the\u0000full\u0000timeline\u0000for\u0000that\u0000monitor\u0000during\u0000the\u0000meeting.\n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"app_name\":\"iTerm2\",\"window_name\":\"iTerm2\",\"first_local\":\"2026-04-20 15:00:00\",\"last_local\":\"2026-04-20 17:07:40\",\"entries\":51}, \n {\"app_name\":\"Raycast\",\"window_name\":\"Raycast\",\"first_local\":\"2026-04-20 15:00:26\",\"last_local\":\"2026-04-20 15:00:26\",\"entries\":1}, \n {\"app_name\":\"Slack\",\"window_name\":\"Slack\",\"first_local\":\"2026-04-20 15:00:39\",\"last_local\":\"2026-04-20 17:26:09\",\"entries\":71}, \n … +8 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:01:21\",\"app_name\":\"Firefox\",\"window_name\":\"Firefox\",\"text\":\"iTerm2ShellEditViewSessionScriptsProfilesWindowHelpC$0 l 0100% C47 • Mon 20 Apr \n 15:01:20meet.google.com/cxs-eips-npt?authuser=0Meet - [Platform] Refinement• [EMAIL] account+ New TabLukas Kovalik[Platform] RefinementE Scheduled for4:00 PM. Use Gemin \n i to take notesShare\u0000notes and transcriptStartJoin\u0000anywayOther\u0000ways\u0000to\u0000join\u0000v{\u0000MacBook\u0000Pr...4\u0000System\u0000Def..•\u0000FaceTime\u0000H...[\u0000Backgroun...Gemini\u0000is\u0000available\u0000in\u0000Meet\u0000as\u0000you\n … +9 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:01:06\",\"app_name\":\"PhpStorm\",\"text\":\"iTerm2ShellEditViewSessionScriptsProfilesWindowHelp100% C8• Mon 20 Apr 15:01:06ec2-user@ip-10-30-159-1 \n 86:~DOCKERDEV (docker)H82APP (-zsh)-zsh*4screenpipe\\\"• *5ec2-user@ip-10-30-159-186:- (...[ec2-user@ip-10-30-159-186 ~]$ dockerexeс-it $(dockerps--format\\\"{{.ID}}\\\" --fil \n ter\\\"name=ecs-worker\\\" | head -1) /bin/bash -c \\\"cd\u0000/home/jiminny&&bash\\\"root@7dffb84e8e4e:/home/jiminny#\u0000php\u0000artisan\u0000aboutEnvironmentApplicationNameLaravel\u0000VersionPHP\u0000V\n … +15 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 16:36:20\",\"app_name\":\"PhpStorm\",\"text\":\"FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0Galya \n Dimitrova (Presenting, annotating)Galya DimitrovaStefka StoyanovaNikolay NikolovGalya Dimitrova (Presentation)4:36 PM | [Platform] Refinement •Lộ3100% K478• Mon 20 Apr \n 16:36:198Nikolay Ivanovukas Kovalik1:34:31\"}, \n … +35 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:01:15\",\"app_name\":\"iTerm2\",\"text\":\"iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zshDOCKER• ₴1DEV (docker)Last login: Mon Apr 20 13:2 \n 6:00 on ttys008182APP (-zsh)·3Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentsPoetry could not find a pyproject.toml file in /Users \n /lukas/jiminny/app or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny\u0000~/jiminny/app\u0000(JY-18909-automated-reports-ask-jiminny)\u0000$||A-zsh<\u0000>0\u0000ldolscreenpipe*100%\u0000C8•\u0000Mon\n … +89 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Now I have a rich picture. Here's the focused monitor_1 view: \n \n --- \n 📹\u0000 [Platform] Refinement — monitor_1 timeline \n \n 15:00–15:02 · Pre-meeting \n - iTerm2 active: SSH'd into EU production (ec2-user@ip-10-30-159-186) running php artisan about to check the live environment \n - Joined the Meet lobby at 15:01 — Steliyan Georgiev was already in, Nikolay Ivanov joined next \n \n 15:02 · In the call \n - You had Postman open alongside Meet (HubSpot deal API + Salesforce tooling queries for field metadata) — likely pre-loaded for reference during ticket discussions \n \n ~15:05–15:06 · Nikolay Yankov presenting \n - Walked through Jira: opened JY-20676 — \"Notify the user if a Panorama prompt is deleted but is used in AJ Report\" (with parent JY-19240) \n - Then showed the staging app (app.staging.jiminny.com/ondemand) — the Ask Jiminny on-demand view, seemingly demoing the current behavior \n -\u0000Then\u0000jumped\u0000into Figma — Project Phoenix design file, specifically the Automated\u0000Reports screens: \u0000 \u0000 \u0000 \u0000 \n - Email for generated / not generated report \n - Delete Saved Search \n - Automated Reports settings \n \n ~16:36–16:57 · Galya Dimitrova presenting \n\u0000\u0000- Opened Jira (jiminny.atlassian.net)\u0000—\u0000Platform\u0000Team\u0000board,\u0000Backlog\u0000+\u0000Active\u0000Sprints\u0000view\n - Then switched to Figma — Project Phoenix again, showing: \n \u0000- Deal Insights,\u0000Team Insights, AI Reports tabs\u0000 \n - AI Reports prompt screen (\"This prompt is used in reports — you want to keep, not delete the report to break…\") \n - Org Settings, Profile, Kiosk, Emails screens \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \n \n --- \n Summary: \n Nearly 2-hour refinement focused on the AJ Reports / Automated Reports / Project Phoenix feature set. Nikolay Yankov walked through ticket specs and staging demos; Galya \n\u0000\u0000Dimitrova closed\u0000with\u0000Figma\u0000designs\u0000for\u0000the\u0000same\u0000area.\u0000The\u0000Jira\u0000tickets\u0000open\u0000in\u0000your\u0000browser\u0000(JY-20676,\u0000JY-19240,\u0000JY-20543,\u0000JY-18909,\u0000JY-20553,\u0000JY-20698,\u0000JY-20692)\u0000were\u0000the\n likely agenda items worked through one by one. \n \n✻ Worked for 1m 39s \n \n❯ specifically for that meetings what were the tickets discussed and what data were populated \n \n⏺ Let me dig through all the Jira content captured on monitor_1 during the meeting. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n \u0000\u0000\u0000SELECT…)\n ⎿ 2026-04-20 15:01:15 | iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zshDOCKER• ₴1DEV (docker)Last login: Mon Apr 20 13:26:00 on ttys008182APP (-zsh)·3Poetry could \n not find a pyproject.toml\u0000file\u0000in\u0000/Users/lukas/jiminny/app\u0000or\u0000its\u0000parentsPoetry\u0000could\u0000not\u0000find\u0000a\u0000pyproject.toml\u0000file\u0000in\u0000/Users/lukas/jiminny/app\u0000or\u0000its\u0000parentslukas@Luka\n s-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $||A-zsh< >0 ldolscreenpipe*100% C8• Mon 20 Apr 15:01:14₴1• *5ec2-user@ip-10-30-15 \n\u0000\u0000 … +198 lines (ctrl+o to expand)\n \n⏺ Bash(cat /Users/lukas/.claude/projects/-Users-lukas/81aa3054-f078-4fb2-aeb0-937316d28f59/tool-results/b5bsv0n08.txt\u0000|\u0000python3\u0000-c\u0000\"\n import json, sys, re…) \n⏺ ⎿ Running… \n \n✢ DisTracebackt(most recent call last): \n\u0000 File \"<string>\",\u0000line\u00004,\u0000in\u0000<module>\n ─ File \"/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/__init__.py\",─line─293,─in─load────────────────────────────────────────────────────────────────\n❯ … +8 lines (ctrl+o to expand) \u0000 \u0000 \u0000 \u0000 \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \"\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000◐ medium · /effort\n SELECT…) \n ⎿ 2026-04-20 15:05:18|PostmanFilelEdit|ViewWindowHelp= C)meet.google.com/cxs-eips-npt?authuser=0Nikolay Yankov (Presenting, annotating)M nooe0 JмNкт@ For you© Recent$ Star \n red8? Apps0 Spaces(9 Service-DeskJiminny (01d)Jiminny (New)1 CD Piatform TeamCID Capture Team|CD Enterprise Stability I.ID Processing TeamCD SE Kanban= More spaces= Flte \n rsCB Dashboardse OperationsE3 ConfiuenceI: Teams5, Customise sidebarСл-аwr-axP Pioie XCUa x F POK X OSnin x ONM X OOVN X 4 De x8x Eu TanksD Dee, Search+ Createoneejimnay \n … +176 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ 2026-04-20 15:05:36|PostmanFileEdit|ViewWindowHelp= C)meet.google.com/cxs-eips-npt?authuser=0Nikolay Yankov (Presenting)EditM InboxHisteryBookmarks2 Pato xProfVesTabHNOл \n -9 xQAкa xE Font A: X•Corti xa UY-2 xF Projec X2 12-2 xP Projc X © Jmil@ devu x© dev.u x$ 04 Denehttps://iminny.atlassian.net/browse/JY-206768 JnrelD Projects0O8[EDatad \n # Caude O Crcledi E Sentry%X &u Lasks@ For youRecent |# Starred8. Apps0 SpacesStarred9) Service-DeskJiminny (O1d)Recent|Jiminny (New)I CID Platform TeamIID Capture TeamI \n … +178 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT substr(o.text, instr(o.text, 'browse/'), 200) as browse_context,…) \n ⎿ browse/JY-205007at/Origin=eyJpfjoiN/VmYzgxZjYzYTFhNDNjYTg4ZJYOYTZIZGZ/MmViZDUILCJwljoiamlyYS1zbGFjay1pbnQifoLUM Leaderooard.• TODODebug crm-sync... C Refine C Sentry C E \n S CJ Learn C AJ ChagterHomekevi|2026-04-20 15:27:28 \n browse/JY-205007at/Origin=eyJpfjolN/VmYzgxZjYzYTFhNDNjYTg4Z/YOYTZIZGZ/MmViZDUILC.JwljolamlyYS1zbGFjay1pbnQifQLuM Leaderiooard.D TODOC Debug crm-sync..- KelineCO Sentry C \n … +76 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ Error: Exit code 1 \n Error: in prepare, no such function: regexp_substr \n SELECT DISTINCT regexp_substr(o.text, 'browse/JY-[0-9]+') as ticket_url, \n ^--- error here \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ JY-206768 |2026-04-20 15:05:36|2026-04-20 15:05:36 \n JY-20676D |2026-04-20 15:05:43|2026-04-20 15:05:46 \n JY-20676C |2026-04-20 15:14:26|2026-04-20 15:14:26 \n … +30 lines (ctrl+o to expand) \n \n⏺ Good - I can see the real ticket IDs despite OCR noise: JY-20676, JY-20615, JY-20613, JY-20500, JY-20501. Let me pull the full content for each. \n \n⏺ Bash(for ticket in \"JY-20676\" \"JY-20615\" \"JY-20613\" \"JY-20500\" \"JY-20501\"; do \n echo \"=== $ticket ===\"…) \n ⎿ === JY-20676 === \n 2026-04-20 16:49:34|FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0100% 128• Mon 20 Apr 16:49:348+Galya Dimitrova (Pres \n enting, annotating)SafariFileEditViewHistoryBookmarksDevelopWindowHelpK/2-Q8•Mon 20 Apr 16:49jiminny.atlassian.net|AWS AIA Sentry3 HubSpot@ OрeпAlfi Seif ServiceDust Doc \n … +43 lines (ctrl+o to expand) \n \n⏺ Bash(for ticket in \"JY-20676\" \"JY-20615\" \"JY-20613\" \"JY-20500\" \"JY-20501\"; do \n echo \"=== $ticket BEST FRAME ===\"…) \n ⎿ === JY-20676 BEST FRAME === \n 2026-04-20 16:49:34|FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0100% 128• Mon 20 Apr 16:49:348+Galya Dimitrova (Pres \n enting, annotating)SafariFileEditViewHistoryBookmarksDevelopWindowHelpK/2-Q8•Mon 20 Apr 16:49jiminny.atlassian.net|AWS AIA Sentry3 HubSpot@ OрeпAlfi Seif ServiceDust Doc \n … +82 lines (ctrl+o to expand) \n \n⏺ Now let me check one more thing — what specific data was populated during the meeting (sprint assignments, estimates, description updates). \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT datetime(f.timestamp, '+3 hours') as t, o.text…) \n ⎿ 2026-04-20 16:49:34|FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0100% 128• Mon 20 Apr 16:49:348+Galya Dimitrova (Pres \n enting, annotating)SafariFileEditViewHistoryBookmarksDevelopWindowHelpK/2-Q8•Mon 20 Apr 16:49jiminny.atlassian.net|AWS AIA Sentry3 HubSpot@ OрeпAlfi Seif ServiceDust Doc \n s|AWS USS. GTM Tren.J AWS EU7 A Journey-PlanhatThe Reven...•J Emоlй|E3 Features4 LogRocket|P Postmark* Bamboo*. Campus xFirebaseAsk Jimin# Platform Te.88G. Demo ExnSearc \n … +27 lines (ctrl+o to expand) \n \n⏺ I have everything needed. Here's the complete ticket breakdown: \n \n --- \n Tickets Discussed — [Platform] Refinement \n \n --- \n JY-20676 · Notify the user if a Panorama prompt is deleted but is used in AJ Report \n \n Time on screen: 15:05–15:18 · Presenter: Nikolay Yankov \n Epic: AJ Reports · Status: BACKLOG \n \n Description: \n \n ▎ Users might attempt to delete a Panorama Prompt which is used in AJ Report. When they do that we need to let them know that the report will stop generating. \n ▎ - Show a confirmation modal when a user is deleting a Panorama Prompt that is used in an active/enabled report \n \n Figma linked: Project Phoenix (Automated Reports screens shown during discussion) \n Subtask: JY-20615 (below) \n Data populated: Description was already present; Figma designs walked through live \n \n --- \n JY-20615 · Notify the user if a Saved Search is deleted but is used in AJ Report \n \n Time on screen:\u000015:18–15:20\u0000·\u0000Presenter:\u0000Nikolay\u0000Yankov\n Epic: AJ Reports · Status: BACKLOG \n Linked to: JY-20676 (sibling ticket, same pattern for Saved Searches) \n \n --- \n JY-20613 · Allow owner's role to be selected when setting up a trial \n\u0000\u0000 \n\u0000\u0000Time on screen:\u000015:20–15:26\u0000·\u0000Presenter:\u0000Nikolay\u0000Yankov\n Status: BACKLOG · Estimate visible: 2.5 story points \n \n Description: \n \n ▎ Stoyan is seeing more cases where the Owner doesn't want to connect their calendar and email to Jiminny because they don't want to be a recorder. Currently when a trial is \n ▎ created the Owner is given a Recorder role by default.\n ▎ - Allow Implementations to select the role of the owner when setting up a trial \n\u0000\u0000▎ - Put the field below the Owner field\n\u0000\u0000▎\u0000- Choices: Recorder / Recorder & Voice / Analyst\n ▎ - This option shouldn't appear when editing an organisation \n ▎\u0000- When the owner signs in, they should have the selected role + Admin permissions\n \n\u0000\u0000--- \n\u0000\u0000JY-20500 · Batch initial sync for Salesforce\n \n Time on screen:\u000015:26–16:35\u0000(~70\u0000min,\u0000most\u0000of\u0000the\u0000meeting)\u0000·\u0000Multiple presenters\n Parent: JY-15971 CRM Synching Improvements · Epic: CRM Sync \n Sprint assigned during meeting: → Platform Sprint 3 Q2 \n Rank updated: None → Ranked higher (Galya updated) \n Need QA: No \n Description (Stefka Stoyanova updated): \n \n ▎ Currently synching CRM objects is not working sufficiently when a huge amount of objects are imported from the CRM into Jiminny. \n ▎ \n ▎ Problem: Importing deals, leads, accounts and contacts can take hours \n ▎ \n ▎ Solution: \n\u0000\u0000▎ - Separate obtaining which objects to import from updating them in Jiminny\n ▎ - The current sync object job should only read batches from Salesforce and store the payload in Redis \n ▎ - A separate {import_object} job processes batches of 100 deals/leads/accounts/contacts from Redis into Jiminny \n ▎ - Retry mechanism for spot instances being turned off \n ▎ - Clean Redis after 24 hours for unconsumed objects \n \n --- \n JY-20501 · Batch initial sync for HubSpot \n\u0000\u0000 \n\u0000\u0000Time on screen:\u000015:28–16:29\u0000(alongside\u0000JY-20500)\n Parent: JY-15971 · Sprint assigned: → Platform Sprint 3 Q2 \n Rank updated: None → Ranked higher (Galya updated) \n Key design note captured: \n \n ▎ \"We're just changing the source of IDs (HubSpot API instead of webhooks), but using the same Redis Batch Job pipeline — same retry/failure handling as regular webhook sync\" \n \n Description mirrors JY-20500 but targets HubSpot objects (deals, accounts, contacts) instead of Salesforce \n \n --- \n\u0000\u0000Also visible in backlog (not opened individually but listed):\n \n ┌──────────┬─────────────────────────────────────┬───────────────────┬──────────┐\n │ Ticket │ Title │ Epic │ Estimate │ \n\u0000\u0000├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤\n\u0000\u0000│ JY-20503 │ Batch insert/update CRM\u0000objects\u0000in…\u0000│\u0000CRM\u0000Sync\u0000 \u0000 \u0000\u0000\u0000\u0000 \u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000 \u0000│\n\u0000\u0000├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤\n │ JY-20503 │ Batch insert/update CRM objects │ CRM Sync │ — │ \n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │ JY-20699 │ Wrong formatting for summary in… │ — │ 2.5 │ \n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n\u0000\u0000│ JY-20412 │ Change\u0000Auto-log\u0000delay\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000Platform\u0000Sprint\u0000 \u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000 \u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │\u0000JY-20361\u0000│\u0000AJ\u0000Panorama\u0000for\u0000Call\u0000Scoring\u0000in\u0000OD\u0000\u0000│\u0000Automated\u0000Reports\u0000│\u00004\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │ JY-19628 │ Evaluation\u0000of\u0000AJ\u0000Panorama\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000Ask\u0000Anything\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n\u0000\u0000│ JY-20625 │ Jiminny\u0000MCP\u0000Connector\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │\u0000JY-20410\u0000│\u0000Update\u0000the\u0000template…\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n └──────────┴─────────────────────────────────────┴───────────────────┴──────────┘ \n\u0000\u0000 \n\u0000\u0000---\n\u0000\u0000Key outcomes from the session:\n - JY-20500 and JY-20501 were pulled into Platform Sprint 3 Q2 and ranked during the meeting \n -\u0000JY-20501\u0000description and JY-20500 description were updated by Stefka Stoyanova during the\u0000call\n - JY-20613 had its estimate confirmed at 2.5 points \n - Figma (Project Phoenix) was used to walk through JY-20676/JY-20615 UI flows \n \n✻ Brewed for 1m 57s \n \n※ recap: Platform refinement meeting reviewed 5 Jira tickets, mainly JY-20500/20501 batch CRM sync for Salesforce and HubSpot, both moved to Sprint 3 Q2. Next: check if sprint \n assignments saved correctly in Jira. (disable recaps in /config) \n \n───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n❯ \n───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000~112k uncached · /clear to start fresh\n\u0000\u0000? for shortcuts\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000new task? /clear to save 113.2k tokens","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.14097223,"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.14097223,"top":0.05888889,"width":0.14097223,"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.14513889,"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.28194445,"top":0.05888889,"width":0.14097223,"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.28611112,"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 (node)","depth":2,"bounds":{"left":0.42291668,"top":0.05888889,"width":0.14097223,"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.42708334,"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.5638889,"top":0.05888889,"width":0.14097223,"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.56805557,"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.7048611,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70902777,"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.8454861,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.84965277,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95763886,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"✳ Build full day activity summary from Screenpipe","depth":1,"bounds":{"left":0.3875,"top":0.033333335,"width":0.22708334,"height":0.017777778},"role_description":"text"}]...
|
3096752199376333151
|
1505577388600915004
|
app_switch
|
accessibility
|
NULL
|
!=null){if(typeof K!=="object"&&ty !=null){if(typeof K!=="object"&&typeof K!=="function")throw TypeError('Object expected to be assigned to "using" declaration');var z;if(_)z=K[PA5];if(z===void 0)z=K[XA5];if(typeof z!=="function")throw TypeError("Object not disposable");q.push([_,z,K])}else if(_)q.push([_]);return K},nz=(q,K,_)=>{var z=typeof SuppressedError==="function"?SuppressedError:function(O,$,w,j){return j=Error(w),j.name="SuppressedError",j.error=O,j.suppressed=$,j},Y=(O)=>K=_?new z(O,K,"An error was suppressed during disposal"):(_=!0,O),A=(O)=>{while(O=q.pop())try{var $=O[1]&&O[1].call(O[2]);if(O[0])return Promise.resolve($).then(A,(w)=>(Y(w),A()))}catch(w){Y(w)}if(_)throw K};return A()};function DA5(){this.__data__=[],this.size=0}var PJ7;var DJ7=L(()=>{PJ7=DA5});function WA5(q,K){return q===K||q!==q&&K!==K}var Pg;var pP6=L(()=>{Pg=WA5});function fA5(q,K){var _=q.length;while(_--)if(Pg(q[_][0],K))return _;return-1}var de;var qu6=L(()=>{pP6();de=fA5});function vA5(q){var K=this.__data__,_=de(K,q);if(_<0)return!1;var z=K.length-1;if(_==z)K.pop();else GA5.call(K,_,1);return--this.size,!0}var ZA5,GA5,WJ7;var fJ7=L(()=>{qu6();ZA5=Array.prototype,GA5=ZA5.splice;WJ7=vA5});function TA5(q){var K=this.__data__,_=de(K,q);return _<0?void 0:K[_][1]}var ZJ7;var GJ7=L(()=>{qu6();ZJ7=TA5});function VA5(q){return de(this.__data__,q)>-1}var vJ7;var TJ7=L(()=>{qu6();vJ7=VA5});function kA5(q,K){var _=this.__data__,z=de(_,q);if(z<0)++this.size,_.push([q,K]);else _[z][1]=K;return this}var VJ7;var kJ7=L(()=>{qu6();VJ7=kA5});function gP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var ce;var Ku6=L(()=>{DJ7();fJ7();GJ7();TJ7();kJ7();gP6.prototype.clear=PJ7;gP6.prototype.delete=WJ7;gP6.prototype.get=ZJ7;gP6.prototype.has=vJ7;gP6.prototype.set=VJ7;ce=gP6});function NA5(){this.__data__=new ce,this.size=0}var NJ7;var yJ7=L(()=>{Ku6();NJ7=NA5});function yA5(q){var K=this.__data__,_=K.delete(q);return this.size=K.size,_}var EJ7;var LJ7=L(()=>{EJ7=yA5});function EA5(q){return this.__data__.get(q)}var hJ7;var RJ7=L(()=>{hJ7=EA5});function LA5(q){return this.__data__.has(q)}var SJ7;var CJ7=L(()=>{SJ7=LA5});var hA5,g_8;var Aa8=L(()=>{hA5=typeof global=="object"&&global&&global.Object===Object&&global,g_8=hA5});var RA5,SA5,vJ;var sR=L(()=>{Aa8();RA5=typeof self=="object"&&self&&self.Object===Object&&self,SA5=g_8||RA5||Function("return this")(),vJ=SA5});var CA5,YW;var J_6=L(()=>{sR();CA5=vJ.Symbol,YW=CA5});function IA5(q){var K=bA5.call(q,_u6),_=q[_u6];try{q[_u6]=void 0;var z=!0}catch(A){}var Y=xA5.call(q);if(z)if(K)q[_u6]=_;else delete q[_u6];return Y}var bJ7,bA5,xA5,_u6,xJ7;var IJ7=L(()=>{J_6();bJ7=Object.prototype,bA5=bJ7.hasOwnProperty,xA5=bJ7.toString,_u6=YW?YW.toStringTag:void 0;xJ7=IA5});function BA5(q){return mA5.call(q)}var uA5,mA5,uJ7;var mJ7=L(()=>{uA5=Object.prototype,mA5=uA5.toString;uJ7=BA5});function FA5(q){if(q==null)return q===void 0?gA5:pA5;return BJ7&&BJ7 in Object(q)?xJ7(q):uJ7(q)}var pA5="[object Null]",gA5="[object Undefined]",BJ7,YL;var M_6=L(()=>{J_6();IJ7();mJ7();BJ7=YW?YW.toStringTag:void 0;YL=FA5});function UA5(q){var K=typeof q;return q!=null&&(K=="object"||K=="function")}var PO;var hT=L(()=>{PO=UA5});function nA5(q){if(!PO(q))return!1;var K=YL(q);return K==dA5||K==cA5||K==QA5||K==lA5}var QA5="[object AsyncFunction]",dA5="[object Function]",cA5="[object GeneratorFunction]",lA5="[object Proxy]",FP6;var F_8=L(()=>{M_6();hT();FP6=nA5});var iA5,U_8;var pJ7=L(()=>{sR();iA5=vJ["__core-js_shared__"],U_8=iA5});function rA5(q){return!!gJ7&&gJ7 in q}var gJ7,FJ7;var UJ7=L(()=>{pJ7();gJ7=function(){var q=/[^.]+$/.exec(U_8&&U_8.keys&&U_8.keys.IE_PROTO||"");return q?"Symbol(src)_1."+q:""}();FJ7=rA5});function sA5(q){if(q!=null){try{return aA5.call(q)}catch(K){}try{return q+""}catch(K){}}return""}var oA5,aA5,rl;var Oa8=L(()=>{oA5=Function.prototype,aA5=oA5.toString;rl=sA5});function AO5(q){if(!PO(q)||FJ7(q))return!1;var K=FP6(q)?YO5:eA5;return K.test(rl(q))}var tA5,eA5,qO5,KO5,_O5,zO5,YO5,QJ7;var dJ7=L(()=>{F_8();UJ7();hT();Oa8();tA5=/[\\^$.*+?()[\]{}|]/g,eA5=/^\[object .+?Constructor\]$/,qO5=Function.prototype,KO5=Object.prototype,_O5=qO5.toString,zO5=KO5.hasOwnProperty,YO5=RegExp("^"+_O5.call(zO5).replace(tA5,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");QJ7=AO5});function OO5(q,K){return q==null?void 0:q[K]}var cJ7;var lJ7=L(()=>{cJ7=OO5});function $O5(q,K){var _=cJ7(q,K);return QJ7(_)?_:void 0}var ik;var le=L(()=>{dJ7();lJ7();ik=$O5});var wO5,ne;var Q_8=L(()=>{le();sR();wO5=ik(vJ,"Map"),ne=wO5});var jO5,ol;var zu6=L(()=>{le();jO5=ik(Object,"create"),ol=jO5});function HO5(){this.__data__=ol?ol(null):{},this.size=0}var nJ7;var iJ7=L(()=>{zu6();nJ7=HO5});function JO5(q){var K=this.has(q)&&delete this.__data__[q];return this.size-=K?1:0,K}var rJ7;var oJ7=L(()=>{rJ7=JO5});function DO5(q){var K=this.__data__;if(ol){var _=K[q];return _===MO5?void 0:_}return PO5.call(K,q)?K[q]:void 0}var MO5="__lodash_hash_undefined__",XO5,PO5,aJ7;var sJ7=L(()=>{zu6();XO5=Object.prototype,PO5=XO5.hasOwnProperty;aJ7=DO5});function ZO5(q){var K=this.__data__;return ol?K[q]!==void 0:fO5.call(K,q)}var WO5,fO5,tJ7;var eJ7=L(()=>{zu6();WO5=Object.prototype,fO5=WO5.hasOwnProperty;tJ7=ZO5});function vO5(q,K){var _=this.__data__;return this.size+=this.has(q)?0:1,_[q]=ol&&K===void 0?GO5:K,this}var GO5="__lodash_hash_undefined__",qM7;var KM7=L(()=>{zu6();qM7=vO5});function UP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var $a8;var _M7=L(()=>{iJ7();oJ7();sJ7();eJ7();KM7();UP6.prototype.clear=nJ7;UP6.prototype.delete=rJ7;UP6.prototype.get=aJ7;UP6.prototype.has=tJ7;UP6.prototype.set=qM7;$a8=UP6});function TO5(){this.size=0,this.__data__={hash:new $a8,map:new(ne||ce),string:new $a8}}var zM7;var YM7=L(()=>{_M7();Ku6();Q_8();zM7=TO5});function VO5(q){var K=typeof q;return K=="string"||K=="number"||K=="symbol"||K=="boolean"?q!=="__proto__":q===null}var AM7;var OM7=L(()=>{AM7=VO5});function kO5(q,K){var _=q.__data__;return AM7(K)?_[typeof K=="string"?"string":"hash"]:_.map}var ie;var Yu6=L(()=>{OM7();ie=kO5});function NO5(q){var K=ie(this,q).delete(q);return this.size-=K?1:0,K}var $M7;var wM7=L(()=>{Yu6();$M7=NO5});function yO5(q){return ie(this,q).get(q)}var jM7;var HM7=L(()=>{Yu6();jM7=yO5});function EO5(q){return ie(this,q).has(q)}var JM7;var MM7=L(()=>{Yu6();JM7=EO5});function LO5(q,K){var _=ie(this,q),z=_.size;return _.set(q,K),this.size+=_.size==z?0:1,this}var XM7;var PM7=L(()=>{Yu6();XM7=LO5});function QP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var X_6;var d_8=L(()=>{YM7();wM7();HM7();MM7();PM7();QP6.prototype.clear=zM7;QP6.prototype.delete=$M7;QP6.prototype.get=jM7;QP6.prototype.has=JM7;QP6.prototype.set=XM7;X_6=QP6});function RO5(q,K){var _=this.__data__;if(_ instanceof ce){var z=_.__data__;if(!ne||z.length<hO5-1)return z.push([q,K]),this.size=++_.size,this;_=this.__data__=new X_6(z)}return _.set(q,K),this.size=_.size,this}var hO5=200,DM7;var WM7=L(()=>{Ku6();Q_8();d_8();DM7=RO5});function dP6(q){var K=this.__data__=new ce(q);this.size=K.size}var Dg;var Au6=L(()=>{Ku6();yJ7();LJ7();RJ7();CJ7();WM7();dP6.prototype.clear=NJ7;dP6.prototype.delete=EJ7;dP6.prototype.get=hJ7;dP6.prototype.has=SJ7;dP6.prototype.set=DM7;Dg=dP6});function CO5(q){return this.__data__.set(q,SO5),this}var SO5="__lodash_hash_undefined__",fM7;var ZM7=L(()=>{fM7=CO5});function bO5(q){return this.__data__.has(q)}var GM7;var vM7=L(()=>{GM7=bO5});function c_8(q){var K=-1,_=q==null?0:q.length;this.__data__=new X_6;while(++K<_)this.add(q[K])}var l_8;var wa8=L(()=>{d_8();ZM7();vM7();c_8.prototype.add=c_8.prototype.push=fM7;c_8.prototype.has=GM7;l_8=c_8});function xO5(q,K){var _=-1,z=q==null?0:q.length;while(++_<z)if(K(q[_],_,q))return!0;return!1}var TM7;var VM7=L(()=>{TM7=xO5});function IO5(q,K){return q.has(K)}var n_8;var ja8=L(()=>{n_8=IO5});function BO5(q,K,_,z,Y,A){var O=_&uO5,$=q.length,w=K.length;if($!=w&&!(O&&w>$))return!1;var j=A.get(q),H=A.get(K);if(j&&H)return j==K&&H==q;var J=-1,M=!0,X=_&mO5?new l_8:void 0;A.set(q,K),A.set(K,q);while(++J<$){var P=q[J],D=K[J];if(z)var W=O?z(D,P,J,K,q,A):z(P,D,J,q,K,A);if(W!==void 0){if(W)continue;M=!1;break}if(X){if(!TM7(K,function(f,G){if(!n_8(X,G)&&(P===f||Y(P,f,_,z,A)))return X.push(G)})){M=!1;break}}else if(!(P===D||Y(P,D,_,z,A))){M=!1;break}}return A.delete(q),A.delete(K),M}var uO5=1,mO5=2,i_8;var Ha8=L(()=>{wa8();VM7();ja8();i_8=BO5});var pO5,cP6;var Ja8=L(()=>{sR();pO5=vJ.Uint8Array,cP6=pO5});function gO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z,Y){_[++K]=[Y,z]}),_}var kM7;var NM7=L(()=>{kM7=gO5});function FO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z){_[++K]=z}),_}var lP6;var r_8=L(()=>{lP6=FO5});function q$5(q,K,_,z,Y,A,O){switch(_){case eO5:if(q.byteLength!=K.byteLength||q.byteOffset!=K.byteOffset)return!1;q=q.buffer,K=K.buffer;case tO5:if(q.byteLength!=K.byteLength||!A(new cP6(q),new cP6(K)))return!1;return!0;case dO5:case cO5:case iO5:return Pg(+q,+K);case lO5:return q.name==K.name&&q.message==K.message;case rO5:case aO5:return q==K+"";case nO5:var $=kM7;case oO5:var w=z&UO5;if($||($=lP6),q.size!=K.size&&!w)return!1;var j=O.get(q);if(j)return j==K;z|=QO5,O.set(q,K);var H=i_8($(q),$(K),z,Y,A,O);return O.delete(q),H;case sO5:if(Ma8)return Ma8.call(q)==Ma8.call(K)}return!1}var UO5=1,QO5=2,dO5="[object Boolean]",cO5="[object Date]",lO5="[object Error]",nO5="[object Map]",iO5="[object Number]",rO5="[object RegExp]",oO5="[object Set]",aO5="[object String]",sO5="[object Symbol]",tO5="[object ArrayBuffer]",eO5="[object DataView]",yM7,Ma8,EM7;var LM7=L(()=>{J_6();Ja8();pP6();Ha8();NM7();r_8();yM7=YW?YW.prototype:void 0,Ma8=yM7?yM7.valueOf:void 0;EM7=q$5});function K$5(q,K){var _=-1,z=K.length,Y=q.length;while(++_<z)q[Y+_]=K[_];return q}var nP6;var o_8=L(()=>{nP6=K$5});var _$5,DO;var RT=L(()=>{_$5=Array.isArray,DO=_$5});function z$5(q,K,_){var z=K(q);return DO(q)?z:nP6(z,_(q))}var a_8;var Xa8=L(()=>{o_8();RT();a_8=z$5});function Y$5(q,K){var _=-1,z=q==null?0:q.length,Y=0,A=[];while(++_<z){var O=q[_];if(K(O,_,q))A[Y++]=O}return A}var s_8;var Pa8=L(()=>{s_8=Y$5});function A$5(){return[]}var t_8;var Da8=L(()=>{t_8=A$5});var O$5,$$5,hM7,w$5,iP6;var e_8=L(()=>{Pa8();Da8();O$5=Object.prototype,$$5=O$5.propertyIsEnumerable,hM7=Object.getOwnPropertySymbols,w$5=!hM7?t_8:function(q){if(q==null)return[];return q=Object(q),s_8(hM7(q),function(K){return $$5.call(q,K)})},iP6=w$5});function j$5(q,K){var _=-1,z=Array(q);while(++_<q)z[_]=K(_);return z}var RM7;var SM7=L(()=>{RM7=j$5});function H$5(q){return q!=null&&typeof q=="object"}var QP;var Wg=L(()=>{QP=H$5});function M$5(q){return QP(q)&&YL(q)==J$5}var J$5="[object Arguments]",Wa8;var CM7=L(()=>{M_6();Wg();Wa8=M$5});var bM7,X$5,P$5,D$5,al;var Ou6=L(()=>{CM7();Wg();bM7=Object.prototype,X$5=bM7.hasOwnProperty,P$5=bM7.propertyIsEnumerable,D$5=Wa8(function(){return arguments}())?Wa8:function(q){return QP(q)&&X$5.call(q,"callee")&&!P$5.call(q,"callee")},al=D$5});function W$5(){return!1}var xM7;var IM7=L(()=>{xM7=W$5});var Kz8={};f8(Kz8,{default:()=>fg});var BM7,uM7,f$5,mM7,Z$5,G$5,fg;var $u6=L(()=>{sR();IM7();BM7=typeof Kz8=="object"&&Kz8&&!Kz8.nodeType&&Kz8,uM7=BM7&&typeof qz8=="object"&&qz8&&!qz8.nodeType&&qz8,f$5=uM7&&uM7.exports===BM7,mM7=f$5?vJ.Buffer:void 0,Z$5=mM7?mM7.isBuffer:void 0,G$5=Z$5||xM7,fg=G$5});function V$5(q,K){var _=typeof q;return K=K==null?v$5:K,!!K&&(_=="number"||_!="symbol"&&T$5.test(q))&&(q>-1&&q%1==0&&q<K)}var v$5=[CREDIT_CARD],T$5,re;var wu6=L(()=>{T$5=/^(?:0|[1-9]\d*)$/;re=V$5});function N$5(q){return typeof q=="number"&&q>-1&&q%1==0&&q<=k$5}var k$5=[CREDIT_CARD],rP6;var _z8=L(()=>{rP6=N$5});function o$5(q){return QP(q)&&rP6(q.length)&&!!G2[YL(q)]}var y$5="[object Arguments]",E$5="[object Array]",L$5="[object Boolean]",h$5="[object Date]",R$5="[object Error]",S$5="[object Function]",C$5="[object Map]",b$5="[object Number]",x$5="[object Object]",I$5="[object RegExp]",u$5="[object Set]",m$5="[object String]",B$5="[object WeakMap]",p$5="[object ArrayBuffer]",g$5="[object DataView]",F$5="[object Float32Array]",U$5="[object Float64Array]",Q$5="[object Int8Array]",d$5="[object Int16Array]",c$5="[object Int32Array]",l$5="[object Uint8Array]",n$5="[object Uint8ClampedArray]",i$5="[object Uint16Array]",r$5="[object Uint32Array]",G2,pM7;var gM7=L(()=>{M_6();_z8();Wg();G2={};G2[F$5]=G2[U$5]=G2[Q$5]=G2[d$5]=G2[c$5]=G2[l$5]=G2[n$5]=G2[i$5]=G2[r$5]=!0;G2[y$5]=G2[E$5]=G2[p$5]=G2[L$5]=G2[g$5]=G2[h$5]=G2[R$5]=G2[S$5]=G2[C$5]=G2[b$5]=G2[x$5]=G2[I$5]=G2[u$5]=G2[m$5]=G2[B$5]=!1;pM7=o$5});function a$5(q){return function(K){return q(K)}}var oP6;var zz8=L(()=>{oP6=a$5});var Az8={};f8(Az8,{default:()=>Zg});var FM7,ju6,s$5,fa8,t$5,Zg;var Oz8=L(()=>{Aa8();FM7=typeof Az8=="object"&&Az8&&!Az8.nodeType&&Az8,ju6=FM7&&typeof Yz8=="object"&&Yz8&&!Yz8.nodeType&&Yz8,s$5=ju6&&ju6.exports===FM7,fa8=s$5&&g_8.process,t$5=function(){try{var q=ju6&&ju6.require&&ju6.require("util").types;if(q)return q;return fa8&&fa8.binding&&fa8.binding("util")}catch(K){}}(),Zg=t$5});var UM7,e$5,aP6;var $z8=L(()=>{gM7();zz8();Oz8();UM7=Zg&&Zg.isTypedArray,e$5=UM7?oP6(UM7):pM7,aP6=e$5});function _w5(q,K){var _=DO(q),z=!_&&al(q),Y=!_&&!z&&fg(q),A=!_&&!z&&!Y&&aP6(q),O=_||z||Y||A,$=O?RM7(q.length,String):[],w=$.length;for(var j in q)if((K||Kw5.call(q,j))&&!(O&&(j=="length"||Y&&(j=="offset"||j=="parent")||A&&(j=="buffer"||j=="byteLength"||j=="byteOffset")||re(j,w))))$.push(j);return $}var qw5,Kw5,wz8;var Za8=L(()=>{SM7();Ou6();RT();$u6();wu6();$z8();qw5=Object.prototype,Kw5=qw5.hasOwnProperty;wz8=_w5});function Yw5(q){var K=q&&q.constructor,_=typeof K=="function"&&K.prototype||zw5;return q===_}var zw5,sP6;var jz8=L(()=>{zw5=Object.prototype;sP6=Yw5});function Aw5(q,K){return function(_){return q(K(_))}}var Hz8;var Ga8=L(()=>{Hz8=Aw5});var Ow5,QM7;var dM7=L(()=>{Ga8();Ow5=Hz8(Object.keys,Object),QM7=Ow5});function jw5(q){if(!sP6(q))return QM7(q);var K=[];for(var _ in Object(q))if(ww5.call(q,_)&&_!="constructor")K.push(_);return K}var $w5,ww5,cM7;var lM7=L(()=>{jz8();dM7();$w5=Object.prototype,ww5=$w5.hasOwnProperty;cM7=jw5});function Hw5(q){return q!=null&&rP6(q.length)&&!FP6(q)}var Gg;var tP6=L(()=>{F_8();_z8();Gg=Hw5});function Jw5(q){return Gg(q)?wz8(q):cM7(q)}var tR;var P_6=L(()=>{Za8();lM7();tP6();tR=Jw5});function Mw5(q){return a_8(q,tR,iP6)}var Hu6;var va8=L(()=>{Xa8();e_8();P_6();Hu6=Mw5});function Ww5(q,K,_,z,Y,A){var O=_&Xw5,$=Hu6(q),w=$.length,j=Hu6(K),H=j.length;if(w!=H&&!O)return!1;var J=w;while(J--){var M=$[J];if(!(O?M in K:Dw5.call(K,M)))return!1}var X=A.get(q),P=A.get(K);if(X&&P)return X==K&&P==q;var D=!0;A.set(q,K),A.set(K,q);var W=O;while(++J<w){M=$[J];var f=q[M],G=K[M];if(z)var Z=O?z(G,f,M,K,q,A):z(f,G,M,q,K,A);if(!(Z===void 0?f===G||Y(f,G,_,z,A):Z)){D=!1;break}W||(W=M=="constructor")}if(D&&!W){var v=q.constructor,V=K.constructor;if(v!=V&&(("constructor"in q)&&("constructor"in K))&&!(typeof v=="function"&&v instanceof v&&typeof V=="function"&&V instanceof V))D=!1}return A.delete(q),A.delete(K),D}var Xw5=1,Pw5,Dw5,nM7;var iM7=L(()=>{va8();Pw5=Object.prototype,Dw5=Pw5.hasOwnProperty;nM7=Ww5});var fw5,Jz8;var rM7=L(()=>{le();sR();fw5=ik(vJ,"DataView"),Jz8=fw5});var Zw5,Mz8;var oM7=L(()=>{le();sR();Zw5=ik(vJ,"Promise"),Mz8=Zw5});var Gw5,oe;var Ta8=L(()=>{le();sR();Gw5=ik(vJ,"Set"),oe=Gw5});var vw5,Xz8;var aM7=L(()=>{le();sR();vw5=ik(vJ,"WeakMap"),Xz8=vw5});var sM7="[object Map]",Tw5="[object Object]",tM7="[object Promise]",eM7="[object Set]",qX7="[object WeakMap]",KX7="[object DataView]",Vw5,kw5,Nw5,yw5,Ew5,D_6,sl;var Ju6=L(()=>{rM7();Q_8();oM7();Ta8();aM7();M_6();Oa8();Vw5=rl(Jz8),kw5=rl(ne),Nw5=rl(Mz8),yw5=rl(oe),Ew5=rl(Xz8),D_6=YL;if(Jz8&&D_6(new Jz8(new ArrayBuffer(1)))!=KX7||ne&&D_6(new ne)!=sM7||Mz8&&D_6(Mz8.resolve())!=tM7||oe&&D_6(new oe)!=eM7||Xz8&&D_6(new Xz8)!=qX7)D_6=function(q){var K=YL(q),_=K==Tw5?q.constructor:void 0,z=_?rl(_):"";if(z)switch(z){case Vw5:return KX7;case kw5:return sM7;case Nw5:return tM7;case yw5:return eM7;case Ew5:return qX7}return K};sl=D_6});function Rw5(q,K,_,z,Y,A){var O=DO(q),$=DO(K),w=O?zX7:sl(q),j=$?zX7:sl(K);w=w==_X7?Pz8:w,j=j==_X7?Pz8:j;var H=w==Pz8,J=j==Pz8,M=w==j;if(M&&fg(q)){if(!fg(K))return!1;O=!0,H=!1}if(M&&!H)return A||(A=new Dg),O||aP6(q)?i_8(q,K,_,z,Y,A):EM7(q,K,w,_,z,Y,A);if(!(_&Lw5)){var X=H&&YX7.call(q,"__wrapped__"),P=J&&YX7.call(K,"__wrapped__");if(X||P){var D=X?q.value():q,W=P?K.value():K;return A||(A=new Dg),Y(D,W,_,z,A)}}if(!M)return!1;return A||(A=new Dg),nM7(q,K,_,z,Y,A)}var Lw5=1,_X7="[object Arguments]",zX7="[object Array]",Pz8="[object Object]",hw5,YX7,AX7;var OX7=L(()=>{Au6();Ha8();LM7();iM7();Ju6();RT();$u6();$z8();hw5=Object.prototype,YX7=hw5.hasOwnProperty;AX7=Rw5});function $X7(q,K,_,z,Y){if(q===K)return!0;if(q==null||K==null||!QP(q)&&!QP(K))return q!==q&&K!==K;return AX7(q,K,_,z,$X7,Y)}var eP6;var Dz8=L(()=>{OX7();Wg();eP6=$X7});function bw5(q,K,_,z){var Y=_.length,A=Y,O=!z;if(q==null)return!A;q=Object(q);while(Y--){var $=_[Y];if(O&&$[2]?$[1]!==q[$[0]]:!($[0]in q))return!1}while(++Y<A){$=_[Y];var w=$[0],j=q[w],H=$[1];if(O&&$[2]){if(j===void 0&&!(w in q))return!1}else{var J=new Dg;if(z)var M=z(j,H,w,q,K,J);if(!(M===void 0?eP6(H,j,Sw5|Cw5,z,J):M))return!1}}return!0}var Sw5=1,Cw5=2,wX7;var jX7=L(()=>{Au6();Dz8();wX7=bw5});function xw5(q){return q===q&&!PO(q)}var Wz8;var Va8=L(()=>{hT();Wz8=xw5});function Iw5(q){var K=tR(q),_=K.length;while(_--){var z=K[_],Y=q[z];K[_]=[z,Y,Wz8(Y)]}return K}var HX7;var JX7=L(()=>{Va8();P_6();HX7=Iw5});function uw5(q,K){return function(_){if(_==null)return!1;return _[q]===K&&(K!==void 0||(q in Object(_)))}}var fz8;var ka8=L(()=>{fz8=uw5});function mw5(q){var K=HX7(q);if(K.length==1&&K[0][2])return fz8(K[0][0],K[0][1]);return function(_){return _===q||wX7(_,q,K)}}var MX7;var XX7=L(()=>{jX7();JX7();ka8();MX7=mw5});function pw5(q){return typeof q=="symbol"||QP(q)&&YL(q)==Bw5}var Bw5="[object Symbol]",ae;var Mu6=L(()=>{M_6();Wg();ae=pw5});function Uw5(q,K){if(DO(q))return!1;var _=typeof q;if(_=="number"||_=="symbol"||_=="boolean"||q==null||ae(q))return!0;return Fw5.test(q)||!gw5.test(q)||K!=null&&q in Object(K)}var gw5,Fw5,qD6;var Zz8=L(()=>{RT();Mu6();gw5=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Fw5=/^\w*$/;qD6=Uw5});function Na8(q,K){if(typeof q!="function"||K!=null&&typeof K!="function")throw TypeError(Qw5);var _=function(){var z=arguments,Y=K?K.apply(this,z):z[0],A=_.cache;if(A.has(Y))return A.get(Y);var O=q.apply(this,z);return _.cache=A.set(Y,O)||A,O};return _.cache=new(Na8.Cache||X_6),_}var Qw5="Expected a function",A1;var h4=L(()=>{d_8();Na8.Cache=X_6;A1=Na8});function cw5(q){var K=A1(q,function(z){if(_.size===dw5)_.clear();return z}),_=K.cache;return K}var dw5=500,PX7;var DX7=L(()=>{h4();PX7=cw5});var lw5,nw5,iw5,WX7;var fX7=L(()=>{DX7();lw5=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,nw5=/\\(\\)?/g,iw5=PX7(function(q){var K=[];if(q.charCodeAt(0)===46)K.push("");return q.replace(lw5,function(_,z,Y,A){K.push(Y?A.replace(nw5,"$1"):z||_)}),K}),WX7=iw5});function rw5(q,K){var _=-1,z=q==null?0:q.length,Y=Array(z);while(++_<z)Y[_]=K(q[_],_,q);return Y}var se;var Xu6=L(()=>{se=rw5});function vX7(q){if(typeof q=="string")return q;if(DO(q))return se(q,vX7)+"";if(ae(q))return GX7?GX7.call(q):"";var K=q+"";return K=="0"&&1/q==-ow5?"-0":K}var ow5=1/0,ZX7,GX7,TX7;var VX7=L(()=>{J_6();Xu6();RT();Mu6();ZX7=YW?YW.prototype:void 0,GX7=ZX7?ZX7.toString:void 0;TX7=vX7});function aw5(q){return q==null?"":TX7(q)}var KD6;var Gz8=L(()=>{VX7();KD6=aw5});function sw5(q,K){if(DO(q))return q;return qD6(q,K)?[q]:WX7(KD6(q))}var eR;var W_6=L(()=>{RT();Zz8();fX7();Gz8();eR=sw5});function ew5(q){if(typeof q=="string"||ae(q))return q;var K=q+"";return K=="0"&&1/q==-tw5?"-0":K}var tw5=1/0,qS;var f_6=L(()=>{Mu6();qS=ew5});function q25(q,K){K=eR(K,q);var _=0,z=K.length;while(q!=null&&_<z)q=q[qS(K[_++])];return _&&_==z?q:void 0}var te;var Pu6=L(()=>{W_6();f_6();te=q25});function K25(q,K,_){var z=q==null?void 0:te(q,K);return z===void 0?_:z}var kX7;var NX7=L(()=>{Pu6();kX7=K25});function _25(q,K){return q!=null&&K in Object(q)}var yX7;var EX7=L(()=>{yX7=_25});function z25(q,K,_){K=eR(K,q);var z=-1,Y=K.length,A=!1;while(++z<Y){var O=qS(K[z]);if(!(A=q!=null&&_(q,O)))break;q=q[O]}if(A||++z!=Y)return A;return Y=q==null?0:q.length,!!Y&&rP6(Y)&&re(O,Y)&&(DO(q)||al(q))}var LX7;var hX7=L(()=>{W_6();Ou6();RT();wu6();_z8();f_6();LX7=z25});function Y25(q,K){return q!=null&&LX7(q,K,yX7)}var RX7;var SX7=L(()=>{EX7();hX7();RX7=Y25});function $25(q,K){if(qD6(q)&&Wz8(K))return fz8(qS(q),K);return function(_){var z=kX7(_,q);return z===void 0&&z===K?RX7(_,q):eP6(K,z,A25|O25)}}var A25=1,O25=2,CX7;var bX7=L(()=>{Dz8();NX7();SX7();Zz8();Va8();ka8();f_6();CX7=$25});function w25(q){return q}var _D6;var vz8=L(()=>{_D6=w25});function j25(q){return function(K){return K==null?void 0:K[q]}}var xX7;var IX7=L(()=>{xX7=j25});function H25(q){return function(K){return te(K,q)}}var uX7;var mX7=L(()=>{Pu6();uX7=H25});function J25(q){return qD6(q)?xX7(qS(q)):uX7(q)}var BX7;var pX7=L(()=>{IX7();mX7();Zz8();f_6();BX7=J25});function M25(q){if(typeof q=="function")return q;if(q==null)return _D6;if(typeof q=="object")return DO(q)?CX7(q[0],q[1]):MX7(q);return BX7(q)}var rk;var ee=L(()=>{XX7();bX7();vz8();RT();pX7();rk=M25});function X25(q,K){var _,z=-1,Y=q.length;while(++z<Y){var A=K(q[z]);if(A!==void 0)_=_===void 0?A:_+A}return _}var gX7;var FX7=L(()=>{gX7=X25});function P25(q,K){return q&&q.length?gX7(q,rk(K,2)):0}var zD6;var UX7=L(()=>{ee();FX7();zD6=P25});import{randomUUID as Du6}from"crypto";var ya8=()=>{};function QX7(){return Ea8}function dX7(q){Ea8=q}function cX7(q){return Tz8.has(q)?Tz8.get(q):void 0}function lX7(q,K){Tz8.set(q,K)}function nX7(q){return La8.get(q)}function iX7(q,K){La8.set(q,K)}function AW(){Ea8=null,Tz8.clear(),La8.clear()}function Vz8(){return ha8}function rX7(q){ha8=q}function oX7(){ha8=void 0}var Ea8=null,Tz8,La8,ha8;var tl=L(()=>{Tz8=new Map;La8=new Map});function E9(){let q=new Set;return{subscribe(K){return q.add(K),()=>{q.delete(K)}},emit(...K){for(let _ of q)_(...K)},clear(){q.clear()}}}var DD6={};f8(DD6,{waitForScrollIdle:()=>Vu6,updateLastInteractionTime:()=>G_6,switchSession:()=>Yf,snapshotOutputTokensForTurn:()=>h25,setUserMsgOptIn:()=>Vg,setUseCoworkPlugins:()=>OL,setTracerProvider:()=>xz8,setThinkingClearLatched:()=>Yt8,setTeleportedSessionInfo:()=>Bu6,setSystemPromptSectionCacheEntry:()=>is8,setStrictToolResultPairing:()=>I25,setStatsStore:()=>ca8,setSessionTrustAccepted:()=>Iu6,setSessionSource:()=>fs8,setSessionPersistenceDisabled:()=>ms8,setSessionIngressToken:()=>y_6,setSessionBypassPermissionsMode:()=>Is8,setSdkBetas:()=>Ys8,setSdkAgentProgressSummariesEnabled:()=>Ps8,setScheduledTasksEnabled:()=>bu6,setQuestionPreviewFormat:()=>uz8,setPromptId:()=>Fu6,setPromptCache1hAllowlist:()=>ss8,setProjectRoot:()=>fu6,setOriginalCwd:()=>KS,setOauthTokenFromFd:()=>Vs8,setNeedsPlanModeExitAttachment:()=>gI,setNeedsAutoModeExitAttachment:()=>CG,setModelStrings:()=>Nu6,setMeterProvider:()=>bz8,setMeter:()=>As8,setMemoryToggledOff:()=>Ws8,setMainThreadAgentType:()=>_n,setMainLoopModelOverride:()=>dP,setLspRecommendationShownThisSession:()=>Us8,setLoopChainStartedAt:()=>g25,setLoggerProvider:()=>Sz8,setLastMainRequestId:()=>ea8,setLastEmittedDate:()=>PD6,setLastClassifierRequests:()=>hu6,setLastApiCompletionTimestamp:()=>Tu6,setLastAPIRequestMessages:()=>Ls8,setLastAPIRequest:()=>ys8,setKairosActive:()=>x25,setIsRemoteMode:()=>ls8,setIsInteractive:()=>Ms8,setInlinePlugins:()=>bs8,setInitialMainLoopModel:()=>zs8,setInitJsonSchema:()=>Qs8,setHasUnknownModelCost:()=>hz8,setHasExitedPlanMode:()=>$L,setHasDevChannels:()=>Qz8,setFlagSettingsPath:()=>Zs8,setFlagSettingsInline:()=>Gs8,setFastModeHeaderLatched:()=>Kt8,setEventLogger:()=>Cz8,setDirectConnectServerUrl:()=>W25,setCwdState:()=>Ia8,setCostStateForRestore:()=>ku6,setClientType:()=>Xs8,setChromeFlagOverride:()=>xs8,setCachedClaudeMdContent:()=>hs8,setCacheEditingHeaderLatched:()=>d25,setApiKeyFromFd:()=>Ns8,setAllowedSettingSources:()=>Cs8,setAllowedChannels:()=>zn,setAfkModeHeaderLatched:()=>es8,setAdditionalDirectoriesForClaudeMd:()=>pu6,setActiveRoutine:()=>Z25,resetTurnToolDuration:()=>Ua8,resetTurnHookDuration:()=>Fa8,resetTurnClassifierDuration:()=>da8,resetTotalDurationStateAndCost_FOR_TESTS_ONLY:()=>G25,resetStateForTests:()=>_P7,resetSdkInitState:()=>YP7,resetModelStringsForTestingOnly:()=>C25,resetCostState:()=>OD6,removeSessionCronTasks:()=>xu6,registerHookCallbacks:()=>z66,regenerateSessionId:()=>Sa8,preferThirdPartyAuthentication:()=>Ru6,onSessionSwitch:()=>xa8,onInteraction:()=>ra8,needsPlanModeExitAttachment:()=>Bs8,needsAutoModeExitAttachment:()=>ps8,markScrollActivity:()=>Ks8,markPostCompaction:()=>K66,markFirstTeleportMessageLogged:()=>Fz8,isSessionPersistenceDisabled:()=>ok,incrementBudgetContinuationCount:()=>S25,hasUnknownModelCost:()=>ta8,hasShownLspRecommendationThisSession:()=>Fs8,hasExitedPlanModeInSession:()=>uu6,handlePlanModeTransition:()=>Kn,handleAutoModeTransition:()=>gs8,getUserMsgOptIn:()=>AL,getUseCoworkPlugins:()=>Cu6,getUsageForModel:()=>_s8,getTurnToolDurationMs:()=>V25,getTurnToolCount:()=>k25,getTurnOutputTokens:()=>E25,getTurnHookDurationMs:()=>v25,getTurnHookCount:()=>T25,getTurnClassifierDurationMs:()=>N25,getTurnClassifierCount:()=>y25,getTracerProvider:()=>N_6,getTotalWebSearchRequests:()=>oa8,getTotalToolDuration:()=>ga8,getTotalOutputTokens:()=>el,getTotalLinesRemoved:()=>T_6,getTotalLinesAdded:()=>v_6,getTotalInputTokens:()=>V_6,getTotalDuration:()=>YD6,getTotalCostUSD:()=>XM,getTotalCacheReadInputTokens:()=>Zu6,getTotalCacheCreationInputTokens:()=>Gu6,getTotalAPIDurationWithoutRetries:()=>pa8,getTotalAPIDuration:()=>RG,getTokenCounter:()=>wD6,getThinkingClearLatched:()=>zt8,getTeleportedSessionInfo:()=>gz8,getSystemPromptSectionCache:()=>ns8,getStrictToolResultPairing:()=>Ds8,getStatsStore:()=>q66,getSlowOperations:()=>OP7,getSessionTrustAccepted:()=>MD6,getSessionSource:()=>u25,getSessionProjectDir:()=>Z_6,getSessionIngressToken:()=>vs8,getSessionId:()=>N8,getSessionCronTasks:()=>L_6,getSessionCreatedTeams:()=>mu6,getSessionCounter:()=>Os8,getSessionBypassPermissionsMode:()=>E_6,getSdkBetas:()=>OW,getSdkAgentProgressSummariesEnabled:()=>vg,getScheduledTasksEnabled:()=>JD6,getRegisteredHooks:()=>zS,getQuestionPreviewFormat:()=>Iz8,getPromptId:()=>gu6,getPromptCache1hAllowlist:()=>as8,getProjectRoot:()=>wz,getPrCounter:()=>yu6,getPlanSlugCache:()=>h_6,getParentSessionId:()=>Ca8,getOriginalCwd:()=>A7,getOauthTokenFromFd:()=>Ts8,getModelUsage:()=>ST,getModelStrings:()=>$D6,getMeterProvider:()=>Js8,getMeter:()=>b25,getMemoryToggledOff:()=>Tg,getMainThreadAgentType:()=>Ng,getMainLoopModelOverride:()=>pI,getLoopChainStartedAt:()=>p25,getLoggerProvider:()=>Lu6,getLocCounter:()=>Rz8,getLastMainRequestId:()=>vu6,getLastInteractionTime:()=>_S,getLastEmittedDate:()=>os8,getLastClassifierRequests:()=>zP7,getLastApiCompletionTimestamp:()=>qn,getLastAPIRequestMessages:()=>m25,getLastAPIRequest:()=>Es8,getKairosActive:()=>SG,getIsScrollDraining:()=>k_6,getIsRemoteMode:()=>cK,getIsNonInteractiveSession:()=>d7,getIsInteractive:()=>CT,getInvokedSkillsForAgent:()=>ds8,getInvokedSkills:()=>Q25,getInlinePlugins:()=>kg,getInitialMainLoopModel:()=>AD6,getInitJsonSchema:()=>Bz8,getHasDevChannels:()=>Uz8,getFlagSettingsPath:()=>_66,getFlagSettingsInline:()=>HD6,getFastModeHeaderLatched:()=>qt8,getEventLogger:()=>Hs8,getDirectConnectServerUrl:()=>ua8,getCwdState:()=>BI,getCurrentTurnTokenBudget:()=>L25,getCostCounter:()=>ws8,getCommitCounter:()=>$s8,getCodeEditToolDecisionCounter:()=>Eu6,getClientType:()=>jD6,getChromeFlagOverride:()=>Su6,getCachedClaudeMdContent:()=>Rs8,getCacheEditingHeaderLatched:()=>_t8,getBudgetContinuationCount:()=>R25,getApiKeyFromFd:()=>ks8,getAllowedSettingSources:()=>Ss8,getAllowedChannels:()=>TJ,getAgentColorMap:()=>mz8,getAfkModeHeaderLatched:()=>ts8,getAdditionalDirectoriesForClaudeMd:()=>bG,getActiveTimeCounter:()=>js8,getActiveRoutine:()=>f25,flushInteractionTime:()=>na8,deleteLoopChainStartedAt:()=>F25,consumePostCompaction:()=>qs8,clearSystemPromptSectionState:()=>rs8,clearRegisteredPluginHooks:()=>pz8,clearRegisteredHooks:()=>U25,clearInvokedSkillsForAgent:()=>Y66,clearInvokedSkills:()=>cs8,clearBetaHeaderLatches:()=>At8,addToTurnHookDuration:()=>yz8,addToTurnClassifierDuration:()=>Qa8,addToTotalLinesChanged:()=>Ez8,addToTotalDurationState:()=>ma8,addToTotalCostState:()=>Ba8,addToToolDuration:()=>Nz8,addToInMemoryErrorLog:()=>B25,addSlowOperation:()=>AP7,addSessionCronTask:()=>us8,addInvokedSkill:()=>XD6});import{realpathSync as aX7}from"fs";import{cwd as D25}from"process";function eX7(){let q="";if(typeof process<"u"&&typeof process.cwd==="function"&&typeof aX7==="function"){let _=D25();try{q=aX7(_).normalize("NFC")}catch{q=_.normalize("NFC")}}return{originalCwd:q,projectRoot:q,totalCostUSD:0,totalAPIDuration:0,totalAPIDurationWithoutRetries:0,totalToolDuration:0,turnHookDurationMs:0,turnToolDurationMs:0,turnClassifierDurationMs:0,turnToolCount:0,turnHookCount:0,turnClassifierCount:0,startTime:Date.now(),lastInteractionTime:Date.now(),totalLinesAdded:0,totalLinesRemoved:0,hasUnknownModelCost:!1,cwd:q,modelUsage:{},mainLoopModelOverride:void 0,initialMainLoopModel:null,modelStrings:null,isInteractive:!1,kairosActive:!1,strictToolResultPairing:!1,memoryToggledOff:!1,sdkAgentProgressSummariesEnabled:!1,userMsgOptIn:!1,clientType:"cli",sessionSource:void 0,questionPreviewFormat:void 0,sessionIngressToken:void 0,oauthTokenFromFd:void 0,apiKeyFromFd:void 0,flagSettingsPath:void 0,flagSettingsInline:null,allowedSettingSources:["userSettings","projectSettings","localSettings","flagSettings","policySettings"],meter:null,sessionCounter:null,locCounter:null,prCounter:null,commitCounter:null,costCounter:null,tokenCounter:null,codeEditToolDecisionCounter:null,activeTimeCounter:null,statsStore:null,sessionId:Du6(),parentSessionId:void 0,loggerProvider:null,eventLogger:null,meterProvider:null,tracerProvider:null,agentColorMap:new Map,agentColorIndex:0,lastAPIRequest:null,lastAPIRequestMessages:null,lastClassifierRequests:null,cachedClaudeMdContent:null,inMemoryErrorLog:[],inlinePlugins:[],chromeFlagOverride:void 0,useCoworkPlugins:!1,sessionBypassPermissionsMode:!1,scheduledTasksEnabled:!1,sessionCronTasks:[],loopChainStartedAt:Object.create(null),sessionCreatedTeams:new Set,sessionTrustAccepted:!1,sessionPersistenceDisabled:!1,hasExitedPlanMode:!1,needsPlanModeExitAttachment:!1,needsAutoModeExitAttachment:!1,lspRecommendationShownThisSession:!1,initJsonSchema:null,registeredHooks:null,planSlugCache:new Map,teleportedSessionInfo:null,invokedSkills:new Map,slowOperations:[],sdkBetas:void 0,mainThreadAgentType:void 0,isRemoteMode:!1,...!1,directConnectServerUrl:void 0,activeRoutine:void 0,systemPromptSectionCache:new Map,lastEmittedDate:null,additionalDirectoriesForClaudeMd:[],allowedChannels:[],hasDevChannels:!1,sessionProjectDir:null,promptCache1hAllowlist:null,afkModeHeaderLatched:null,fastModeHeaderLatched:null,cacheEditingHeaderLatched:null,thinkingClearLatched:null,promptId:null,lastMainRequestId:void 0,lastApiCompletionTimestamp:null,pendingPostCompaction:!1}}function N8(){return G8.sessionId}function Sa8(q={}){if(q.setCurrentAsParent)G8.parentSessionId=G8.sessionId;return G8.planSlugCache.delete(G8.sessionId),G8.sessionId=Du6(),G8.sessionProjectDir=null,G8.sessionId}function Ca8(){return G8.parentSessionId}function Yf(q,K=null){if(G8.sessionId!==q)G8.planSlugCache.delete(G8.sessionId);G8.sessionId=q,G8.sessionProjectDir=K,ba8.emit(q)}function Z_6(){return G8.sessionProjectDir}function A7(){return G8.originalCwd}function wz(){return G8.projectRoot}function KS(q){G8.originalCwd=q.normalize("NFC")}function fu6(q){G8.projectRoot=q.normalize("NFC")}function BI(){return G8.cwd}function Ia8(q){G8.cwd=q.normalize("NFC")}function ua8(){return G8.directConnectServerUrl}function W25(q){G8.directConnectServerUrl=q}function f25(){return G8.activeRoutine}function Z25(q){G8.activeRoutine=q}function ma8(q,K){G8.totalAPIDuration+=q,G8.totalAPIDurationWithoutRetries+=K}function G25(){G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalCostUSD=0}function Ba8(q,K,_){G8.modelUsage[_]=K,G8.totalCostUSD+=q}function XM(){return G8.totalCostUSD}function RG(){return G8.totalAPIDuration}function YD6(){return Date.now()-G8.startTime}function pa8(){return G8.totalAPIDurationWithoutRetries}function ga8(){return G8.totalToolDuration}function Nz8(q){G8.totalToolDuration+=q,G8.turnToolDurationMs+=q,G8.turnToolCount++}function v25(){return G8.turnHookDurationMs}function yz8(q){G8.turnHookDurationMs+=q,G8.turnHookCount++}function Fa8(){G8.turnHookDurationMs=0,G8.turnHookCount=0}function T25(){return G8.turnHookCount}function V25(){return G8.turnToolDurationMs}function Ua8(){G8.turnToolDurationMs=0,G8.turnToolCount=0}function k25(){return G8.turnToolCount}function N25(){return G8.turnClassifierDurationMs}function Qa8(q){G8.turnClassifierDurationMs+=q,G8.turnClassifierCount++}function da8(){G8.turnClassifierDurationMs=0,G8.turnClassifierCount=0}function y25(){return G8.turnClassifierCount}function q66(){return G8.statsStore}function ca8(q){G8.statsStore=q}function G_6(q){if(q)qP7();else la8=!0}function na8(){if(la8)qP7()}function qP7(){G8.lastInteractionTime=Date.now(),la8=!1,ia8.emit()}function Ez8(q,K){G8.totalLinesAdded+=q,G8.totalLinesRemoved+=K}function v_6(){return G8.totalLinesAdded}function T_6(){return G8.totalLinesRemoved}function V_6(){return zD6(Object.values(G8.modelUsage),"inputTokens")}function el(){return zD6(Object.values(G8.modelUsage),"outputTokens")}function Zu6(){return zD6(Object.values(G8.modelUsage),"cacheReadInputTokens")}function Gu6(){return zD6(Object.values(G8.modelUsage),"cacheCreationInputTokens")}function oa8(){return zD6(Object.values(G8.modelUsage),"webSearchRequests")}function E25(){return el()-aa8}function L25(){return sa8}function h25(q){aa8=el(),sa8=q,Lz8=0}function R25(){return Lz8}function S25(){Lz8++}function hz8(){G8.hasUnknownModelCost=!0}function ta8(){return G8.hasUnknownModelCost}function vu6(){return G8.lastMainRequestId}function ea8(q){G8.lastMainRequestId=q}function qn(){return G8.lastApiCompletionTimestamp}function Tu6(q){G8.lastApiCompletionTimestamp=q}function K66(){G8.pendingPostCompaction=!0}function qs8(){let q=G8.pendingPostCompaction;return G8.pendingPostCompaction=!1,q}function _S(){return G8.lastInteractionTime}function Ks8(){if(kz8=!0,Wu6)clearTimeout(Wu6);Wu6=setTimeout(()=>{kz8=!1,Wu6=void 0},KP7),Wu6.unref?.()}function k_6(){return kz8}async function Vu6(){while(kz8)await new Promise((q)=>setTimeout(q,KP7).unref?.())}function ST(){return G8.modelUsage}function _s8(q){return G8.modelUsage[q]}function pI(){return G8.mainLoopModelOverride}function AD6(){return G8.initialMainLoopModel}function dP(q){G8.mainLoopModelOverride=q}function zs8(q){G8.initialMainLoopModel=q}function OW(){return G8.sdkBetas}function Ys8(q){G8.sdkBetas=q}function OD6(){G8.totalCostUSD=0,G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalToolDuration=0,G8.startTime=Date.now(),G8.totalLinesAdded=0,G8.totalLinesRemoved=0,G8.hasUnknownModelCost=!1,G8.modelUsage={},G8.promptId=null}function ku6({totalCostUSD:q,totalAPIDuration:K,totalAPIDurationWithoutRetries:_,totalToolDuration:z,totalLinesAdded:Y,totalLinesRemoved:A,lastDuration:O,modelUsage:$}){if(G8.totalCostUSD=q,G8.totalAPIDuration=K,G8.totalAPIDurationWithoutRetries=_,G8.totalToolDuration=z,G8.totalLinesAdded=Y,G8.totalLinesRemoved=A,$)G8.modelUsage=$;if(O)G8.startTime=Date.now()-O}function _P7(){throw Error("resetStateForTests can only be called in tests")}function $D6(){return G8.modelStrings}function Nu6(q){G8.modelStrings=q}function C25(){G8.modelStrings=null}function As8(q,K){G8.meter=q,G8.sessionCounter=K("claude_code.session.count",{description:"Count of CLI sessions started"}),G8.locCounter=K("claude_code.lines_of_code.count",{description:"Count of lines of code modified, with the 'type' attribute indicating whether lines were added or removed"}),G8.prCounter=K("claude_code.pull_request.count",{description:"Number of pull requests created"}),G8.commitCounter=K("claude_code.commit.count",{description:"Number of git commits created"}),G8.costCounter=K("claude_code.cost.usage",{description:"Cost of the Claude Code session",unit:"USD"}),G8.tokenCounter=K("claude_code.token.usage",{description:"Number of tokens used",unit:"tokens"}),G8.codeEditToolDecisionCounter=K("claude_code.code_edit_tool.decision",{description:"Count of code editing tool permission decisions (accept/reject) for Edit, Write, and NotebookEdit tools"}),G8.activeTimeCounter=K("claude_code.active_time.total",{description:"Total active time in seconds",unit:"s"})}function b25(){return G8.meter}function Os8(){return G8.sessionCounter}function Rz8(){return G8.locCounter}function yu6(){return G8.prCounter}function $s8(){return G8.commitCounter}function ws8(){return G8.costCounter}function wD6(){return G8.tokenCounter}function Eu6(){return G8.codeEditToolDecisionCounter}function js8(){return G8.activeTimeCounter}function Lu6(){return G8.loggerProvider}function Sz8(q){G8.loggerProvider=q}function Hs8(){return G8.eventLogger}function Cz8(q){G8.eventLogger=q}function Js8(){return G8.meterProvider}function bz8(q){G8.meterProvider=q}function N_6(){return G8.tracerProvider}function xz8(q){G8.tracerProvider=q}function d7(){return!G8.isInteractive}function CT(){return G8.isInteractive}function Ms8(q){G8.isInteractive=q}function jD6(){return G8.clientType}function Xs8(q){G8.clientType=q}function vg(){return G8.sdkAgentProgressSummariesEnabled}function Ps8(q){G8.sdkAgentProgressSummariesEnabled=q}function SG(){return G8.kairosActive}function x25(q){G8.kairosActive=q}function Ds8(){return G8.strictToolResultPairing}function I25(q){G8.strictToolResultPairing=q}function Tg(){return G8.memoryToggledOff}function Ws8(q){G8.memoryToggledOff=q}function AL(){return G8.userMsgOptIn}function Vg(q){G8.userMsgOptIn=q}function u25(){return G8.sessionSource}function fs8(q){G8.sessionSource=q}function Iz8(){return G8.questionPreviewFormat}function uz8(q){G8.questionPreviewFormat=q}function mz8(){return G8.agentColorMap}function _66(){return G8.flagSettingsPath}function Zs8(q){G8.flagSettingsPath=q}function HD6(){return G8.flagSettingsInline}function Gs8(q){G8.flagSettingsInline=q}function vs8(){return G8.sessionIngressToken}function y_6(q){G8.sessionIngressToken=q}function Ts8(){return G8.oauthTokenFromFd}function Vs8(q){G8.oauthTokenFromFd=q}function ks8(){return G8.apiKeyFromFd}function Ns8(q){G8.apiKeyFromFd=q}function ys8(q){G8.lastAPIRequest=q}function Es8(){return G8.lastAPIRequest}function Ls8(q){G8.lastAPIRequestMessages=q}function m25(){return G8.lastAPIRequestMessages}function hu6(q){G8.lastClassifierRequests=q}function zP7(){return G8.lastClassifierRequests}function hs8(q){G8.cachedClaudeMdContent=q}function Rs8(){return G8.cachedClaudeMdContent}function B25(q){if(G8.inMemoryErrorLog.length>=100)G8.inMemoryErrorLog.shift();G8.inMemoryErrorLog.push(q)}function Ss8(){return G8.allowedSettingSources}function Cs8(q){G8.allowedSettingSources=q}function Ru6(){return d7()&&G8.clientType!=="claude-vscode"}function bs8(q){G8.inlinePlugins=q}function kg(){return G8.inlinePlugins}function xs8(q){G8.chromeFlagOverride=q}function Su6(){return G8.chromeFlagOverride}function OL(q){G8.useCoworkPlugins=q,AW()}function Cu6(){return G8.useCoworkPlugins}function Is8(q){G8.sessionBypassPermissionsMode=q}function E_6(){return G8.sessionBypassPermissionsMode}function bu6(q){G8.scheduledTasksEnabled=q}function JD6(){return G8.scheduledTasksEnabled}function L_6(){return G8.sessionCronTasks}function us8(q){G8.sessionCronTasks.push(q)}function p25(q){return G8.loopChainStartedAt[q]}function g25(q,K){G8.loopChainStartedAt[q]=K}function F25(q){delete G8.loopChainStartedAt[q]}function xu6(q){if(q.length===0)return 0;let K=new Set(q),_=G8.sessionCronTasks.filter((Y)=>!K.has(Y.id)),z=G8.sessionCronTasks.length-_.length;if(z===0)return 0;return G8.sessionCronTasks=_,z}function Iu6(q){G8.sessionTrustAccepted=q}function MD6(){return G8.sessionTrustAccepted}function ms8(q){G8.sessionPersistenceDisabled=q}function ok(){return G8.sessionPersistenceDisabled}function uu6(){return G8.hasExitedPlanMode}function $L(q){G8.hasExitedPlanMode=q}function Bs8(){return G8.needsPlanModeExitAttachment}function gI(q){G8.needsPlanModeExitAttachment=q}function Kn(q,K){if(K==="plan"&&q!=="plan")G8.needsPlanModeExitAttachment=!1;if(q==="plan"&&K!=="plan")G8.needsPlanModeExitAttachment=!0}function ps8(){return G8.needsAutoModeExitAttachment}function CG(q){G8.needsAutoModeExitAttachment=q}function gs8(q,K){if(q==="auto"&&K==="plan"||q==="plan"&&K==="auto")return;let _=q==="auto",z=K==="auto";if(z&&!_)G8.needsAutoModeExitAttachment=!1;if(_&&!z)G8.needsAutoModeExitAttachment=!0}function Fs8(){return G8.lspRecommendationShownThisSession}function Us8(q){G8.lspRecommendationShownThisSession=q}function Qs8(q){G8.initJsonSchema=q}function Bz8(){return G8.initJsonSchema}function z66(q){if(!G8.registeredHooks)G8.registeredHooks={};for(let[K,_]of Object.entries(q)){let z=K;if(!G8.registeredHooks[z])G8.registeredHooks[z]=[];G8.registeredHooks[z].push(..._)}}function zS(){return G8.registeredHooks}function U25(){G8.registeredHooks=null}function pz8(){if(!G8.registeredHooks)return;let q={};for(let[K,_]of Object.entries(G8.registeredHooks)){let z=_.filter((Y)=>!("pluginRoot"in Y));if(z.length>0)q[K]=z}G8.registeredHooks=Object.keys(q).length>0?q:null}function YP7(){G8.initJsonSchema=null,G8.registeredHooks=null}function h_6(){return G8.planSlugCache}function mu6(){return G8.sessionCreatedTeams}function Bu6(q){G8.teleportedSessionInfo={isTeleported:!0,hasLoggedFirstMessage:!1,sessionId:q.sessionId}}function gz8(){return G8.teleportedSessionInfo}function Fz8(){if(G8.teleportedSessionInfo)G8.teleportedSessionInfo.hasLoggedFirstMessage=!0}function XD6(q,K,_,z=null){let Y=`${z??""}:${q}`;G8.invokedSkills.set(Y,{skillName:q,skillPath:K,content:_,invokedAt:Date.now(),agentId:z})}function Q25(){return G8.invokedSkills}function ds8(q){let K=q??null,_=new Map;for(let[z,Y]of G8.invokedSkills)if(Y.agentId===K)_.set(z,Y);return _}function cs8(q){if(!q||q.size===0){G8.invokedSkills.clear();return}for(let[K,_]of G8.invokedSkills)if(_.agentId===null||!q.has(_.agentId))G8.invokedSkills.delete(K)}function Y66(q){for(let[K,_]of G8.invokedSkills)if(_.agentId===q)G8.invokedSkills.delete(K)}function AP7(q,K){return}function OP7(){if(G8.slowOperations.length===0)return tX7;let q=Date.now();if(G8.slowOperations.some((K)=>q-K.timestamp>=Ra8)){if(G8.slowOperations=G8.slowOperations.filter((K)=>q-K.timestamp<Ra8),G8.slowOperations.length===0)return tX7}return G8.slowOperations}function Ng(){return G8.mainThreadAgentType}function _n(q){G8.mainThreadAgentType=q}function cK(){return G8.isRemoteMode}function ls8(q){G8.isRemoteMode=q}function ns8(){return G8.systemPromptSectionCache}function is8(q,K){G8.systemPromptSectionCache.set(q,K)}function rs8(){G8.systemPromptSectionCache.clear()}function os8(){return G8.lastEmittedDate}function PD6(q){G8.lastEmittedDate=q}function bG(){return G8.additionalDirectoriesForClaudeMd}function pu6(q){G8.additionalDirectoriesForClaudeMd=q}function TJ(){return G8.allowedChannels}function zn(q){G8.allowedChannels=q}function Uz8(){return G8.hasDevChannels}function Qz8(q){G8.hasDevChannels=q}function as8(){return G8.promptCache1hAllowlist}function ss8(q){G8.promptCache1hAllowlist=q}function ts8(){return G8.afkModeHeaderLatched}function es8(q){G8.afkModeHeaderLatched=q}function qt8(){return G8.fastModeHeaderLatched}function Kt8(q){G8.fastModeHeaderLatched=q}function _t8(){return G8.cacheEditingHeaderLatched}function d25(q){G8.cacheEditingHeaderLatched=q}function zt8(){return G8.thinkingClearLatched}function Yt8(q){G8.thinkingClearLatched=q}function At8(){G8.afkModeHeaderLatched=null,G8.fastModeHeaderLatched=null,G8.cacheEditingHeaderLatched=null,G8.thinkingClearLatched=null}function gu6(){return G8.promptId}function Fu6(q){G8.promptId=q}var G8,ba8,xa8,la8=!1,ia8,ra8,aa8=0,sa8=null,Lz8=0,kz8=!1,Wu6,KP7=150,sX7=10,Ra8=1e4,tX7;var v8=L(()=>{UX7();ya8();tl();G8=eX7();ba8=E9(),xa8=ba8.subscribe;ia8=E9(),ra8=ia8.subscribe;tX7=[]});function dz8(q){let K;for(let _ in q)if(_.startsWith("_PROTO_")){if(K===void 0)K={...q};delete K[_]}return K??q}function $P7(q){if(A66!==null)return;if(A66=q,Uu6.length>0){let K=[...Uu6];Uu6.length=0,queueMicrotask(()=>{for(let _ of K)if(_.async)A66.logEventAsync(_.eventName,_.metadata);else A66.logEvent(_.eventName,_.metadata)})}}function d(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!1});return}A66.logEvent(q,K)}async function wP7(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!0});return}await A66.logEventAsync(q,K)}var Uu6,A66=null;var T8=L(()=>{Uu6=[]});function WD6({writeFn:q,flushIntervalMs:K=1000,maxBufferSize:_=100,maxBufferBytes:z=1/0,immediateMode:Y=!1}){let A=[],O=0,$=null,w=null;function j(){if($)clearTimeout($),$=null}function H(){if(w)q(w.join("")),w=null;if(A.length===0)return;q(A.join("")),A=[],O=0,j()}function J(){if(!$)$=setTimeout(H,K)}function M(){if(w){w.push(...A),A=[],O=0,j();return}let X=A;A=[],O=0,j(),w=X,setImmediate(()=>{let P=w;if(w=null,P)q(P.join(""))})}return{write(X){if(Y){q(X);return}if(A.push(X),O+=X.length,J(),A.length>=_||O>=z)M()},flush:H,dispose(){H()}}}function gq(q){return Ot8.add(q),()=>Ot8.delete(q)}async function jP7(){await Promise.all(Array.from(Ot8).map((q)=>q()))}var Ot8;var o9=L(()=>{Ot8=new Set});function c25(q){let K=[],_=q.match(/^MCP server ["']([^"']+)["']/);if(_&&_[1])K.push("mcp"),K.push(_[1].toLowerCase());else{let A=q.match(/^([^:[]+):/);if(A&&A[1])K.push(A[1].trim().toLowerCase())}let z=q.match(/^\[([^\]]+)]/);if(z&&z[1])K.push(z[1].trim().toLowerCase());if(q.toLowerCase().includes("1p event:"))K.push("1p");let Y=q.match(/:\s*([^:]+?)(?:\s+(?:type|mode|status|event))?:/);if(Y&&Y[1]){let A=Y[1].trim().toLowerCase();if(A.length<30&&!A.includes(" "))K.push(A)}return Array.from(new Set(K))}function l25(q,K){if(!K)return!0;if(q.length===0)return!1;if(K.isExclusive)return!q.some((_)=>K.exclude.includes(_));else return q.some((_)=>K.include.includes(_))}function JP7(q,K){if(!K)return!0;let _=c25(q);return l25(_,K)}var HP7;var MP7=L(()=>{h4();HP7=A1((q)=>{if(!q||q.trim()==="")return null;let K=q.split(",").map((A)=>A.trim()).filter(Boolean);if(K.length===0)return null;let _=K.some((A)=>A.startsWith("!")),z=K.some((A)=>!A.startsWith("!"));if(_&&z)return null;let Y=K.map((A)=>A.replace(/^!/,"").toLowerCase());return{include:_?[]:Y,exclude:_?Y:[],isExclusive:_}})});import{homedir as n25}from"os";import{join as XP7}from"path";function fD6(){return XP7(O7(),"teams")}function ZD6(q){let K=process.env.NODE_OPTIONS;if(!K)return!1;return K.split(/\s+/).includes(q)}function Yn(q,K){if(q===void 0)return K;let _=parseInt(q,10);return Number.isNaN(_)?K:_}function B6(q){if(!q)return!1;if(typeof q==="boolean")return q;let K=q.toLowerCase().trim();return["1","true","yes","on"].includes(K)}function a9(q){if(q===void 0)return!1;if(typeof q==="boolean")return!q;if(!q)return!1;let K=q.toLowerCase().trim();return["0","false","no","off"].includes(K)}function D9(){return B6(process.env.CLAUDE_CODE_SIMPLE)||process.argv.includes("--bare")}function PP7(q){let K={};if(q)for(let _ of q){let[z,...Y]=_.split("=");if(!z||Y.length===0)throw Error(`Invalid environment variable format: ${_}, environment variables should be added as: -e KEY1=value1 -e KEY2=value2`);K[z]=Y.join("=")}return K}function YS(){return process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION||"us-east-1"}function cz8(){return process.env.CLOUD_ML_REGION||"us-east5"}function DP7(){return B6(process.env.CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR)}function Af(){return!1}function AS(){return!1}function WP7(){return{namespace:void 0,cluster:void 0}}function lz8(q){if(q){let K=i25.find(([_])=>q.startsWith(_));if(K)return process.env[K[1]]||cz8()}return cz8()}var O7,i25;var B8=L(()=>{h4();O7=A1(()=>{return(process.env.CLAUDE_CONFIG_DIR??XP7(n25(),".claude")).normalize("NFC")},()=>process.env.CLAUDE_CONFIG_DIR);i25=[["claude-haiku-4-5","VERTEX_REGION_CLAUDE_HAIKU_4_5"],["claude-3-5-haiku","VERTEX_REGION_CLAUDE_3_5_HAIKU"],["claude-3-5-sonnet","VERTEX_REGION_CLAUDE_3_5_SONNET"],["claude-3-7-sonnet","VERTEX_REGION_CLAUDE_3_7_SONNET"],["claude-opus-4-6","VERTEX_REGION_CLAUDE_4_6_OPUS"],["claude-opus-4-1","VERTEX_REGION_CLAUDE_4_1_OPUS"],["claude-opus-4","VERTEX_REGION_CLAUDE_4_0_OPUS"],["claude-sonnet-4-6","VERTEX_REGION_CLAUDE_4_6_SONNET"],["claude-sonnet-4-5","VERTEX_REGION_CLAUDE_4_5_SONNET"],["claude-sonnet-4","VERTEX_REGION_CLAUDE_4_0_SONNET"]]});function $4(q,K,_,z,Y){if(z==="m")throw TypeError("Private method is not writable");if(z==="a"&&!Y)throw TypeError("Private accessor was defined without a setter");if(typeof K==="function"?q!==K||!Y:!K.has(q))throw TypeError("Cannot write private member to an object whose class did not declare it");return z==="a"?Y.call(q,_):Y?Y.value=_:K.set(q,_),_}function u1(q,K,_,z){if(_==="a"&&!z)throw TypeError("Private accessor was defined without a getter");if(typeof K==="function"?q!==K||!z:!K.has(q))throw TypeError("Cannot read private member from an object whose class did not declare it");return _==="m"?z:_==="a"?z.call(q):z?z.value:K.get(q)}var An=()=>{};var $t8=function(){let{crypto:q}=globalThis;if(q?.randomUUID)return $t8=q.randomUUID.bind(q),q.randomUUID();let K=new Uint8Array(1),_=q?()=>q.getRandomValues(K)[0]:()=>Math.random()*255&255;return"[CREDIT_CARD]-[CREDIT_CARD]".replace(/[018]/g,(z)=>(+z^_()&15>>+z/4).toString(16))};function On(q){return typeof q==="object"&&q!==null&&(("name"in q)&&q.name==="AbortError"||("message"in q)&&String(q.message).includes("FetchRequestCanceledException"))}var Qu6=(q)=>{if(q instanceof Error)return q;if(typeof q==="object"&&q!==null){try{if(Object.prototype.toString.call(q)==="[object Error]"){let K=Error(q.message,q.cause?{cause:q.cause}:{});if(q.stack)K.stack=q.stack;if(q.cause&&!K.cause)K.cause=q.cause;if(q.name)K.name=q.name;return K}}catch{}try{return Error(JSON.stringify(q))}...
|
NULL
|
|
60878
|
1313
|
18
|
2026-04-21T06:23:34.967313+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752614967_m2.jpg...
|
iTerm2
|
✳ Build full day activity summary from Screenpipe
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
!=null){if(typeof K!=="object"&&ty !=null){if(typeof K!=="object"&&typeof K!=="function")throw TypeError('Object expected to be assigned to "using" declaration');var z;if(_)z=K[PA5];if(z===void 0)z=K[XA5];if(typeof z!=="function")throw TypeError("Object not disposable");q.push([_,z,K])}else if(_)q.push([_]);return K},nz=(q,K,_)=>{var z=typeof SuppressedError==="function"?SuppressedError:function(O,$,w,j){return j=Error(w),j.name="SuppressedError",j.error=O,j.suppressed=$,j},Y=(O)=>K=_?new z(O,K,"An error was suppressed during disposal"):(_=!0,O),A=(O)=>{while(O=q.pop())try{var $=O[1]&&O[1].call(O[2]);if(O[0])return Promise.resolve($).then(A,(w)=>(Y(w),A()))}catch(w){Y(w)}if(_)throw K};return A()};function DA5(){this.__data__=[],this.size=0}var PJ7;var DJ7=L(()=>{PJ7=DA5});function WA5(q,K){return q===K||q!==q&&K!==K}var Pg;var pP6=L(()=>{Pg=WA5});function fA5(q,K){var _=q.length;while(_--)if(Pg(q[_][0],K))return _;return-1}var de;var qu6=L(()=>{pP6();de=fA5});function vA5(q){var K=this.__data__,_=de(K,q);if(_<0)return!1;var z=K.length-1;if(_==z)K.pop();else GA5.call(K,_,1);return--this.size,!0}var ZA5,GA5,WJ7;var fJ7=L(()=>{qu6();ZA5=Array.prototype,GA5=ZA5.splice;WJ7=vA5});function TA5(q){var K=this.__data__,_=de(K,q);return _<0?void 0:K[_][1]}var ZJ7;var GJ7=L(()=>{qu6();ZJ7=TA5});function VA5(q){return de(this.__data__,q)>-1}var vJ7;var TJ7=L(()=>{qu6();vJ7=VA5});function kA5(q,K){var _=this.__data__,z=de(_,q);if(z<0)++this.size,_.push([q,K]);else _[z][1]=K;return this}var VJ7;var kJ7=L(()=>{qu6();VJ7=kA5});function gP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var ce;var Ku6=L(()=>{DJ7();fJ7();GJ7();TJ7();kJ7();gP6.prototype.clear=PJ7;gP6.prototype.delete=WJ7;gP6.prototype.get=ZJ7;gP6.prototype.has=vJ7;gP6.prototype.set=VJ7;ce=gP6});function NA5(){this.__data__=new ce,this.size=0}var NJ7;var yJ7=L(()=>{Ku6();NJ7=NA5});function yA5(q){var K=this.__data__,_=K.delete(q);return this.size=K.size,_}var EJ7;var LJ7=L(()=>{EJ7=yA5});function EA5(q){return this.__data__.get(q)}var hJ7;var RJ7=L(()=>{hJ7=EA5});function LA5(q){return this.__data__.has(q)}var SJ7;var CJ7=L(()=>{SJ7=LA5});var hA5,g_8;var Aa8=L(()=>{hA5=typeof global=="object"&&global&&global.Object===Object&&global,g_8=hA5});var RA5,SA5,vJ;var sR=L(()=>{Aa8();RA5=typeof self=="object"&&self&&self.Object===Object&&self,SA5=g_8||RA5||Function("return this")(),vJ=SA5});var CA5,YW;var J_6=L(()=>{sR();CA5=vJ.Symbol,YW=CA5});function IA5(q){var K=bA5.call(q,_u6),_=q[_u6];try{q[_u6]=void 0;var z=!0}catch(A){}var Y=xA5.call(q);if(z)if(K)q[_u6]=_;else delete q[_u6];return Y}var bJ7,bA5,xA5,_u6,xJ7;var IJ7=L(()=>{J_6();bJ7=Object.prototype,bA5=bJ7.hasOwnProperty,xA5=bJ7.toString,_u6=YW?YW.toStringTag:void 0;xJ7=IA5});function BA5(q){return mA5.call(q)}var uA5,mA5,uJ7;var mJ7=L(()=>{uA5=Object.prototype,mA5=uA5.toString;uJ7=BA5});function FA5(q){if(q==null)return q===void 0?gA5:pA5;return BJ7&&BJ7 in Object(q)?xJ7(q):uJ7(q)}var pA5="[object Null]",gA5="[object Undefined]",BJ7,YL;var M_6=L(()=>{J_6();IJ7();mJ7();BJ7=YW?YW.toStringTag:void 0;YL=FA5});function UA5(q){var K=typeof q;return q!=null&&(K=="object"||K=="function")}var PO;var hT=L(()=>{PO=UA5});function nA5(q){if(!PO(q))return!1;var K=YL(q);return K==dA5||K==cA5||K==QA5||K==lA5}var QA5="[object AsyncFunction]",dA5="[object Function]",cA5="[object GeneratorFunction]",lA5="[object Proxy]",FP6;var F_8=L(()=>{M_6();hT();FP6=nA5});var iA5,U_8;var pJ7=L(()=>{sR();iA5=vJ["__core-js_shared__"],U_8=iA5});function rA5(q){return!!gJ7&&gJ7 in q}var gJ7,FJ7;var UJ7=L(()=>{pJ7();gJ7=function(){var q=/[^.]+$/.exec(U_8&&U_8.keys&&U_8.keys.IE_PROTO||"");return q?"Symbol(src)_1."+q:""}();FJ7=rA5});function sA5(q){if(q!=null){try{return aA5.call(q)}catch(K){}try{return q+""}catch(K){}}return""}var oA5,aA5,rl;var Oa8=L(()=>{oA5=Function.prototype,aA5=oA5.toString;rl=sA5});function AO5(q){if(!PO(q)||FJ7(q))return!1;var K=FP6(q)?YO5:eA5;return K.test(rl(q))}var tA5,eA5,qO5,KO5,_O5,zO5,YO5,QJ7;var dJ7=L(()=>{F_8();UJ7();hT();Oa8();tA5=/[\\^$.*+?()[\]{}|]/g,eA5=/^\[object .+?Constructor\]$/,qO5=Function.prototype,KO5=Object.prototype,_O5=qO5.toString,zO5=KO5.hasOwnProperty,YO5=RegExp("^"+_O5.call(zO5).replace(tA5,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");QJ7=AO5});function OO5(q,K){return q==null?void 0:q[K]}var cJ7;var lJ7=L(()=>{cJ7=OO5});function $O5(q,K){var _=cJ7(q,K);return QJ7(_)?_:void 0}var ik;var le=L(()=>{dJ7();lJ7();ik=$O5});var wO5,ne;var Q_8=L(()=>{le();sR();wO5=ik(vJ,"Map"),ne=wO5});var jO5,ol;var zu6=L(()=>{le();jO5=ik(Object,"create"),ol=jO5});function HO5(){this.__data__=ol?ol(null):{},this.size=0}var nJ7;var iJ7=L(()=>{zu6();nJ7=HO5});function JO5(q){var K=this.has(q)&&delete this.__data__[q];return this.size-=K?1:0,K}var rJ7;var oJ7=L(()=>{rJ7=JO5});function DO5(q){var K=this.__data__;if(ol){var _=K[q];return _===MO5?void 0:_}return PO5.call(K,q)?K[q]:void 0}var MO5="__lodash_hash_undefined__",XO5,PO5,aJ7;var sJ7=L(()=>{zu6();XO5=Object.prototype,PO5=XO5.hasOwnProperty;aJ7=DO5});function ZO5(q){var K=this.__data__;return ol?K[q]!==void 0:fO5.call(K,q)}var WO5,fO5,tJ7;var eJ7=L(()=>{zu6();WO5=Object.prototype,fO5=WO5.hasOwnProperty;tJ7=ZO5});function vO5(q,K){var _=this.__data__;return this.size+=this.has(q)?0:1,_[q]=ol&&K===void 0?GO5:K,this}var GO5="__lodash_hash_undefined__",qM7;var KM7=L(()=>{zu6();qM7=vO5});function UP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var $a8;var _M7=L(()=>{iJ7();oJ7();sJ7();eJ7();KM7();UP6.prototype.clear=nJ7;UP6.prototype.delete=rJ7;UP6.prototype.get=aJ7;UP6.prototype.has=tJ7;UP6.prototype.set=qM7;$a8=UP6});function TO5(){this.size=0,this.__data__={hash:new $a8,map:new(ne||ce),string:new $a8}}var zM7;var YM7=L(()=>{_M7();Ku6();Q_8();zM7=TO5});function VO5(q){var K=typeof q;return K=="string"||K=="number"||K=="symbol"||K=="boolean"?q!=="__proto__":q===null}var AM7;var OM7=L(()=>{AM7=VO5});function kO5(q,K){var _=q.__data__;return AM7(K)?_[typeof K=="string"?"string":"hash"]:_.map}var ie;var Yu6=L(()=>{OM7();ie=kO5});function NO5(q){var K=ie(this,q).delete(q);return this.size-=K?1:0,K}var $M7;var wM7=L(()=>{Yu6();$M7=NO5});function yO5(q){return ie(this,q).get(q)}var jM7;var HM7=L(()=>{Yu6();jM7=yO5});function EO5(q){return ie(this,q).has(q)}var JM7;var MM7=L(()=>{Yu6();JM7=EO5});function LO5(q,K){var _=ie(this,q),z=_.size;return _.set(q,K),this.size+=_.size==z?0:1,this}var XM7;var PM7=L(()=>{Yu6();XM7=LO5});function QP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var X_6;var d_8=L(()=>{YM7();wM7();HM7();MM7();PM7();QP6.prototype.clear=zM7;QP6.prototype.delete=$M7;QP6.prototype.get=jM7;QP6.prototype.has=JM7;QP6.prototype.set=XM7;X_6=QP6});function RO5(q,K){var _=this.__data__;if(_ instanceof ce){var z=_.__data__;if(!ne||z.length<hO5-1)return z.push([q,K]),this.size=++_.size,this;_=this.__data__=new X_6(z)}return _.set(q,K),this.size=_.size,this}var hO5=200,DM7;var WM7=L(()=>{Ku6();Q_8();d_8();DM7=RO5});function dP6(q){var K=this.__data__=new ce(q);this.size=K.size}var Dg;var Au6=L(()=>{Ku6();yJ7();LJ7();RJ7();CJ7();WM7();dP6.prototype.clear=NJ7;dP6.prototype.delete=EJ7;dP6.prototype.get=hJ7;dP6.prototype.has=SJ7;dP6.prototype.set=DM7;Dg=dP6});function CO5(q){return this.__data__.set(q,SO5),this}var SO5="__lodash_hash_undefined__",fM7;var ZM7=L(()=>{fM7=CO5});function bO5(q){return this.__data__.has(q)}var GM7;var vM7=L(()=>{GM7=bO5});function c_8(q){var K=-1,_=q==null?0:q.length;this.__data__=new X_6;while(++K<_)this.add(q[K])}var l_8;var wa8=L(()=>{d_8();ZM7();vM7();c_8.prototype.add=c_8.prototype.push=fM7;c_8.prototype.has=GM7;l_8=c_8});function xO5(q,K){var _=-1,z=q==null?0:q.length;while(++_<z)if(K(q[_],_,q))return!0;return!1}var TM7;var VM7=L(()=>{TM7=xO5});function IO5(q,K){return q.has(K)}var n_8;var ja8=L(()=>{n_8=IO5});function BO5(q,K,_,z,Y,A){var O=_&uO5,$=q.length,w=K.length;if($!=w&&!(O&&w>$))return!1;var j=A.get(q),H=A.get(K);if(j&&H)return j==K&&H==q;var J=-1,M=!0,X=_&mO5?new l_8:void 0;A.set(q,K),A.set(K,q);while(++J<$){var P=q[J],D=K[J];if(z)var W=O?z(D,P,J,K,q,A):z(P,D,J,q,K,A);if(W!==void 0){if(W)continue;M=!1;break}if(X){if(!TM7(K,function(f,G){if(!n_8(X,G)&&(P===f||Y(P,f,_,z,A)))return X.push(G)})){M=!1;break}}else if(!(P===D||Y(P,D,_,z,A))){M=!1;break}}return A.delete(q),A.delete(K),M}var uO5=1,mO5=2,i_8;var Ha8=L(()=>{wa8();VM7();ja8();i_8=BO5});var pO5,cP6;var Ja8=L(()=>{sR();pO5=vJ.Uint8Array,cP6=pO5});function gO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z,Y){_[++K]=[Y,z]}),_}var kM7;var NM7=L(()=>{kM7=gO5});function FO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z){_[++K]=z}),_}var lP6;var r_8=L(()=>{lP6=FO5});function q$5(q,K,_,z,Y,A,O){switch(_){case eO5:if(q.byteLength!=K.byteLength||q.byteOffset!=K.byteOffset)return!1;q=q.buffer,K=K.buffer;case tO5:if(q.byteLength!=K.byteLength||!A(new cP6(q),new cP6(K)))return!1;return!0;case dO5:case cO5:case iO5:return Pg(+q,+K);case lO5:return q.name==K.name&&q.message==K.message;case rO5:case aO5:return q==K+"";case nO5:var $=kM7;case oO5:var w=z&UO5;if($||($=lP6),q.size!=K.size&&!w)return!1;var j=O.get(q);if(j)return j==K;z|=QO5,O.set(q,K);var H=i_8($(q),$(K),z,Y,A,O);return O.delete(q),H;case sO5:if(Ma8)return Ma8.call(q)==Ma8.call(K)}return!1}var UO5=1,QO5=2,dO5="[object Boolean]",cO5="[object Date]",lO5="[object Error]",nO5="[object Map]",iO5="[object Number]",rO5="[object RegExp]",oO5="[object Set]",aO5="[object String]",sO5="[object Symbol]",tO5="[object ArrayBuffer]",eO5="[object DataView]",yM7,Ma8,EM7;var LM7=L(()=>{J_6();Ja8();pP6();Ha8();NM7();r_8();yM7=YW?YW.prototype:void 0,Ma8=yM7?yM7.valueOf:void 0;EM7=q$5});function K$5(q,K){var _=-1,z=K.length,Y=q.length;while(++_<z)q[Y+_]=K[_];return q}var nP6;var o_8=L(()=>{nP6=K$5});var _$5,DO;var RT=L(()=>{_$5=Array.isArray,DO=_$5});function z$5(q,K,_){var z=K(q);return DO(q)?z:nP6(z,_(q))}var a_8;var Xa8=L(()=>{o_8();RT();a_8=z$5});function Y$5(q,K){var _=-1,z=q==null?0:q.length,Y=0,A=[];while(++_<z){var O=q[_];if(K(O,_,q))A[Y++]=O}return A}var s_8;var Pa8=L(()=>{s_8=Y$5});function A$5(){return[]}var t_8;var Da8=L(()=>{t_8=A$5});var O$5,$$5,hM7,w$5,iP6;var e_8=L(()=>{Pa8();Da8();O$5=Object.prototype,$$5=O$5.propertyIsEnumerable,hM7=Object.getOwnPropertySymbols,w$5=!hM7?t_8:function(q){if(q==null)return[];return q=Object(q),s_8(hM7(q),function(K){return $$5.call(q,K)})},iP6=w$5});function j$5(q,K){var _=-1,z=Array(q);while(++_<q)z[_]=K(_);return z}var RM7;var SM7=L(()=>{RM7=j$5});function H$5(q){return q!=null&&typeof q=="object"}var QP;var Wg=L(()=>{QP=H$5});function M$5(q){return QP(q)&&YL(q)==J$5}var J$5="[object Arguments]",Wa8;var CM7=L(()=>{M_6();Wg();Wa8=M$5});var bM7,X$5,P$5,D$5,al;var Ou6=L(()=>{CM7();Wg();bM7=Object.prototype,X$5=bM7.hasOwnProperty,P$5=bM7.propertyIsEnumerable,D$5=Wa8(function(){return arguments}())?Wa8:function(q){return QP(q)&&X$5.call(q,"callee")&&!P$5.call(q,"callee")},al=D$5});function W$5(){return!1}var xM7;var IM7=L(()=>{xM7=W$5});var Kz8={};f8(Kz8,{default:()=>fg});var BM7,uM7,f$5,mM7,Z$5,G$5,fg;var $u6=L(()=>{sR();IM7();BM7=typeof Kz8=="object"&&Kz8&&!Kz8.nodeType&&Kz8,uM7=BM7&&typeof qz8=="object"&&qz8&&!qz8.nodeType&&qz8,f$5=uM7&&uM7.exports===BM7,mM7=f$5?vJ.Buffer:void 0,Z$5=mM7?mM7.isBuffer:void 0,G$5=Z$5||xM7,fg=G$5});function V$5(q,K){var _=typeof q;return K=K==null?v$5:K,!!K&&(_=="number"||_!="symbol"&&T$5.test(q))&&(q>-1&&q%1==0&&q<K)}var v$5=[CREDIT_CARD],T$5,re;var wu6=L(()=>{T$5=/^(?:0|[1-9]\d*)$/;re=V$5});function N$5(q){return typeof q=="number"&&q>-1&&q%1==0&&q<=k$5}var k$5=[CREDIT_CARD],rP6;var _z8=L(()=>{rP6=N$5});function o$5(q){return QP(q)&&rP6(q.length)&&!!G2[YL(q)]}var y$5="[object Arguments]",E$5="[object Array]",L$5="[object Boolean]",h$5="[object Date]",R$5="[object Error]",S$5="[object Function]",C$5="[object Map]",b$5="[object Number]",x$5="[object Object]",I$5="[object RegExp]",u$5="[object Set]",m$5="[object String]",B$5="[object WeakMap]",p$5="[object ArrayBuffer]",g$5="[object DataView]",F$5="[object Float32Array]",U$5="[object Float64Array]",Q$5="[object Int8Array]",d$5="[object Int16Array]",c$5="[object Int32Array]",l$5="[object Uint8Array]",n$5="[object Uint8ClampedArray]",i$5="[object Uint16Array]",r$5="[object Uint32Array]",G2,pM7;var gM7=L(()=>{M_6();_z8();Wg();G2={};G2[F$5]=G2[U$5]=G2[Q$5]=G2[d$5]=G2[c$5]=G2[l$5]=G2[n$5]=G2[i$5]=G2[r$5]=!0;G2[y$5]=G2[E$5]=G2[p$5]=G2[L$5]=G2[g$5]=G2[h$5]=G2[R$5]=G2[S$5]=G2[C$5]=G2[b$5]=G2[x$5]=G2[I$5]=G2[u$5]=G2[m$5]=G2[B$5]=!1;pM7=o$5});function a$5(q){return function(K){return q(K)}}var oP6;var zz8=L(()=>{oP6=a$5});var Az8={};f8(Az8,{default:()=>Zg});var FM7,ju6,s$5,fa8,t$5,Zg;var Oz8=L(()=>{Aa8();FM7=typeof Az8=="object"&&Az8&&!Az8.nodeType&&Az8,ju6=FM7&&typeof Yz8=="object"&&Yz8&&!Yz8.nodeType&&Yz8,s$5=ju6&&ju6.exports===FM7,fa8=s$5&&g_8.process,t$5=function(){try{var q=ju6&&ju6.require&&ju6.require("util").types;if(q)return q;return fa8&&fa8.binding&&fa8.binding("util")}catch(K){}}(),Zg=t$5});var UM7,e$5,aP6;var $z8=L(()=>{gM7();zz8();Oz8();UM7=Zg&&Zg.isTypedArray,e$5=UM7?oP6(UM7):pM7,aP6=e$5});function _w5(q,K){var _=DO(q),z=!_&&al(q),Y=!_&&!z&&fg(q),A=!_&&!z&&!Y&&aP6(q),O=_||z||Y||A,$=O?RM7(q.length,String):[],w=$.length;for(var j in q)if((K||Kw5.call(q,j))&&!(O&&(j=="length"||Y&&(j=="offset"||j=="parent")||A&&(j=="buffer"||j=="byteLength"||j=="byteOffset")||re(j,w))))$.push(j);return $}var qw5,Kw5,wz8;var Za8=L(()=>{SM7();Ou6();RT();$u6();wu6();$z8();qw5=Object.prototype,Kw5=qw5.hasOwnProperty;wz8=_w5});function Yw5(q){var K=q&&q.constructor,_=typeof K=="function"&&K.prototype||zw5;return q===_}var zw5,sP6;var jz8=L(()=>{zw5=Object.prototype;sP6=Yw5});function Aw5(q,K){return function(_){return q(K(_))}}var Hz8;var Ga8=L(()=>{Hz8=Aw5});var Ow5,QM7;var dM7=L(()=>{Ga8();Ow5=Hz8(Object.keys,Object),QM7=Ow5});function jw5(q){if(!sP6(q))return QM7(q);var K=[];for(var _ in Object(q))if(ww5.call(q,_)&&_!="constructor")K.push(_);return K}var $w5,ww5,cM7;var lM7=L(()=>{jz8();dM7();$w5=Object.prototype,ww5=$w5.hasOwnProperty;cM7=jw5});function Hw5(q){return q!=null&&rP6(q.length)&&!FP6(q)}var Gg;var tP6=L(()=>{F_8();_z8();Gg=Hw5});function Jw5(q){return Gg(q)?wz8(q):cM7(q)}var tR;var P_6=L(()=>{Za8();lM7();tP6();tR=Jw5});function Mw5(q){return a_8(q,tR,iP6)}var Hu6;var va8=L(()=>{Xa8();e_8();P_6();Hu6=Mw5});function Ww5(q,K,_,z,Y,A){var O=_&Xw5,$=Hu6(q),w=$.length,j=Hu6(K),H=j.length;if(w!=H&&!O)return!1;var J=w;while(J--){var M=$[J];if(!(O?M in K:Dw5.call(K,M)))return!1}var X=A.get(q),P=A.get(K);if(X&&P)return X==K&&P==q;var D=!0;A.set(q,K),A.set(K,q);var W=O;while(++J<w){M=$[J];var f=q[M],G=K[M];if(z)var Z=O?z(G,f,M,K,q,A):z(f,G,M,q,K,A);if(!(Z===void 0?f===G||Y(f,G,_,z,A):Z)){D=!1;break}W||(W=M=="constructor")}if(D&&!W){var v=q.constructor,V=K.constructor;if(v!=V&&(("constructor"in q)&&("constructor"in K))&&!(typeof v=="function"&&v instanceof v&&typeof V=="function"&&V instanceof V))D=!1}return A.delete(q),A.delete(K),D}var Xw5=1,Pw5,Dw5,nM7;var iM7=L(()=>{va8();Pw5=Object.prototype,Dw5=Pw5.hasOwnProperty;nM7=Ww5});var fw5,Jz8;var rM7=L(()=>{le();sR();fw5=ik(vJ,"DataView"),Jz8=fw5});var Zw5,Mz8;var oM7=L(()=>{le();sR();Zw5=ik(vJ,"Promise"),Mz8=Zw5});var Gw5,oe;var Ta8=L(()=>{le();sR();Gw5=ik(vJ,"Set"),oe=Gw5});var vw5,Xz8;var aM7=L(()=>{le();sR();vw5=ik(vJ,"WeakMap"),Xz8=vw5});var sM7="[object Map]",Tw5="[object Object]",tM7="[object Promise]",eM7="[object Set]",qX7="[object WeakMap]",KX7="[object DataView]",Vw5,kw5,Nw5,yw5,Ew5,D_6,sl;var Ju6=L(()=>{rM7();Q_8();oM7();Ta8();aM7();M_6();Oa8();Vw5=rl(Jz8),kw5=rl(ne),Nw5=rl(Mz8),yw5=rl(oe),Ew5=rl(Xz8),D_6=YL;if(Jz8&&D_6(new Jz8(new ArrayBuffer(1)))!=KX7||ne&&D_6(new ne)!=sM7||Mz8&&D_6(Mz8.resolve())!=tM7||oe&&D_6(new oe)!=eM7||Xz8&&D_6(new Xz8)!=qX7)D_6=function(q){var K=YL(q),_=K==Tw5?q.constructor:void 0,z=_?rl(_):"";if(z)switch(z){case Vw5:return KX7;case kw5:return sM7;case Nw5:return tM7;case yw5:return eM7;case Ew5:return qX7}return K};sl=D_6});function Rw5(q,K,_,z,Y,A){var O=DO(q),$=DO(K),w=O?zX7:sl(q),j=$?zX7:sl(K);w=w==_X7?Pz8:w,j=j==_X7?Pz8:j;var H=w==Pz8,J=j==Pz8,M=w==j;if(M&&fg(q)){if(!fg(K))return!1;O=!0,H=!1}if(M&&!H)return A||(A=new Dg),O||aP6(q)?i_8(q,K,_,z,Y,A):EM7(q,K,w,_,z,Y,A);if(!(_&Lw5)){var X=H&&YX7.call(q,"__wrapped__"),P=J&&YX7.call(K,"__wrapped__");if(X||P){var D=X?q.value():q,W=P?K.value():K;return A||(A=new Dg),Y(D,W,_,z,A)}}if(!M)return!1;return A||(A=new Dg),nM7(q,K,_,z,Y,A)}var Lw5=1,_X7="[object Arguments]",zX7="[object Array]",Pz8="[object Object]",hw5,YX7,AX7;var OX7=L(()=>{Au6();Ha8();LM7();iM7();Ju6();RT();$u6();$z8();hw5=Object.prototype,YX7=hw5.hasOwnProperty;AX7=Rw5});function $X7(q,K,_,z,Y){if(q===K)return!0;if(q==null||K==null||!QP(q)&&!QP(K))return q!==q&&K!==K;return AX7(q,K,_,z,$X7,Y)}var eP6;var Dz8=L(()=>{OX7();Wg();eP6=$X7});function bw5(q,K,_,z){var Y=_.length,A=Y,O=!z;if(q==null)return!A;q=Object(q);while(Y--){var $=_[Y];if(O&&$[2]?$[1]!==q[$[0]]:!($[0]in q))return!1}while(++Y<A){$=_[Y];var w=$[0],j=q[w],H=$[1];if(O&&$[2]){if(j===void 0&&!(w in q))return!1}else{var J=new Dg;if(z)var M=z(j,H,w,q,K,J);if(!(M===void 0?eP6(H,j,Sw5|Cw5,z,J):M))return!1}}return!0}var Sw5=1,Cw5=2,wX7;var jX7=L(()=>{Au6();Dz8();wX7=bw5});function xw5(q){return q===q&&!PO(q)}var Wz8;var Va8=L(()=>{hT();Wz8=xw5});function Iw5(q){var K=tR(q),_=K.length;while(_--){var z=K[_],Y=q[z];K[_]=[z,Y,Wz8(Y)]}return K}var HX7;var JX7=L(()=>{Va8();P_6();HX7=Iw5});function uw5(q,K){return function(_){if(_==null)return!1;return _[q]===K&&(K!==void 0||(q in Object(_)))}}var fz8;var ka8=L(()=>{fz8=uw5});function mw5(q){var K=HX7(q);if(K.length==1&&K[0][2])return fz8(K[0][0],K[0][1]);return function(_){return _===q||wX7(_,q,K)}}var MX7;var XX7=L(()=>{jX7();JX7();ka8();MX7=mw5});function pw5(q){return typeof q=="symbol"||QP(q)&&YL(q)==Bw5}var Bw5="[object Symbol]",ae;var Mu6=L(()=>{M_6();Wg();ae=pw5});function Uw5(q,K){if(DO(q))return!1;var _=typeof q;if(_=="number"||_=="symbol"||_=="boolean"||q==null||ae(q))return!0;return Fw5.test(q)||!gw5.test(q)||K!=null&&q in Object(K)}var gw5,Fw5,qD6;var Zz8=L(()=>{RT();Mu6();gw5=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Fw5=/^\w*$/;qD6=Uw5});function Na8(q,K){if(typeof q!="function"||K!=null&&typeof K!="function")throw TypeError(Qw5);var _=function(){var z=arguments,Y=K?K.apply(this,z):z[0],A=_.cache;if(A.has(Y))return A.get(Y);var O=q.apply(this,z);return _.cache=A.set(Y,O)||A,O};return _.cache=new(Na8.Cache||X_6),_}var Qw5="Expected a function",A1;var h4=L(()=>{d_8();Na8.Cache=X_6;A1=Na8});function cw5(q){var K=A1(q,function(z){if(_.size===dw5)_.clear();return z}),_=K.cache;return K}var dw5=500,PX7;var DX7=L(()=>{h4();PX7=cw5});var lw5,nw5,iw5,WX7;var fX7=L(()=>{DX7();lw5=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,nw5=/\\(\\)?/g,iw5=PX7(function(q){var K=[];if(q.charCodeAt(0)===46)K.push("");return q.replace(lw5,function(_,z,Y,A){K.push(Y?A.replace(nw5,"$1"):z||_)}),K}),WX7=iw5});function rw5(q,K){var _=-1,z=q==null?0:q.length,Y=Array(z);while(++_<z)Y[_]=K(q[_],_,q);return Y}var se;var Xu6=L(()=>{se=rw5});function vX7(q){if(typeof q=="string")return q;if(DO(q))return se(q,vX7)+"";if(ae(q))return GX7?GX7.call(q):"";var K=q+"";return K=="0"&&1/q==-ow5?"-0":K}var ow5=1/0,ZX7,GX7,TX7;var VX7=L(()=>{J_6();Xu6();RT();Mu6();ZX7=YW?YW.prototype:void 0,GX7=ZX7?ZX7.toString:void 0;TX7=vX7});function aw5(q){return q==null?"":TX7(q)}var KD6;var Gz8=L(()=>{VX7();KD6=aw5});function sw5(q,K){if(DO(q))return q;return qD6(q,K)?[q]:WX7(KD6(q))}var eR;var W_6=L(()=>{RT();Zz8();fX7();Gz8();eR=sw5});function ew5(q){if(typeof q=="string"||ae(q))return q;var K=q+"";return K=="0"&&1/q==-tw5?"-0":K}var tw5=1/0,qS;var f_6=L(()=>{Mu6();qS=ew5});function q25(q,K){K=eR(K,q);var _=0,z=K.length;while(q!=null&&_<z)q=q[qS(K[_++])];return _&&_==z?q:void 0}var te;var Pu6=L(()=>{W_6();f_6();te=q25});function K25(q,K,_){var z=q==null?void 0:te(q,K);return z===void 0?_:z}var kX7;var NX7=L(()=>{Pu6();kX7=K25});function _25(q,K){return q!=null&&K in Object(q)}var yX7;var EX7=L(()=>{yX7=_25});function z25(q,K,_){K=eR(K,q);var z=-1,Y=K.length,A=!1;while(++z<Y){var O=qS(K[z]);if(!(A=q!=null&&_(q,O)))break;q=q[O]}if(A||++z!=Y)return A;return Y=q==null?0:q.length,!!Y&&rP6(Y)&&re(O,Y)&&(DO(q)||al(q))}var LX7;var hX7=L(()=>{W_6();Ou6();RT();wu6();_z8();f_6();LX7=z25});function Y25(q,K){return q!=null&&LX7(q,K,yX7)}var RX7;var SX7=L(()=>{EX7();hX7();RX7=Y25});function $25(q,K){if(qD6(q)&&Wz8(K))return fz8(qS(q),K);return function(_){var z=kX7(_,q);return z===void 0&&z===K?RX7(_,q):eP6(K,z,A25|O25)}}var A25=1,O25=2,CX7;var bX7=L(()=>{Dz8();NX7();SX7();Zz8();Va8();ka8();f_6();CX7=$25});function w25(q){return q}var _D6;var vz8=L(()=>{_D6=w25});function j25(q){return function(K){return K==null?void 0:K[q]}}var xX7;var IX7=L(()=>{xX7=j25});function H25(q){return function(K){return te(K,q)}}var uX7;var mX7=L(()=>{Pu6();uX7=H25});function J25(q){return qD6(q)?xX7(qS(q)):uX7(q)}var BX7;var pX7=L(()=>{IX7();mX7();Zz8();f_6();BX7=J25});function M25(q){if(typeof q=="function")return q;if(q==null)return _D6;if(typeof q=="object")return DO(q)?CX7(q[0],q[1]):MX7(q);return BX7(q)}var rk;var ee=L(()=>{XX7();bX7();vz8();RT();pX7();rk=M25});function X25(q,K){var _,z=-1,Y=q.length;while(++z<Y){var A=K(q[z]);if(A!==void 0)_=_===void 0?A:_+A}return _}var gX7;var FX7=L(()=>{gX7=X25});function P25(q,K){return q&&q.length?gX7(q,rk(K,2)):0}var zD6;var UX7=L(()=>{ee();FX7();zD6=P25});import{randomUUID as Du6}from"crypto";var ya8=()=>{};function QX7(){return Ea8}function dX7(q){Ea8=q}function cX7(q){return Tz8.has(q)?Tz8.get(q):void 0}function lX7(q,K){Tz8.set(q,K)}function nX7(q){return La8.get(q)}function iX7(q,K){La8.set(q,K)}function AW(){Ea8=null,Tz8.clear(),La8.clear()}function Vz8(){return ha8}function rX7(q){ha8=q}function oX7(){ha8=void 0}var Ea8=null,Tz8,La8,ha8;var tl=L(()=>{Tz8=new Map;La8=new Map});function E9(){let q=new Set;return{subscribe(K){return q.add(K),()=>{q.delete(K)}},emit(...K){for(let _ of q)_(...K)},clear(){q.clear()}}}var DD6={};f8(DD6,{waitForScrollIdle:()=>Vu6,updateLastInteractionTime:()=>G_6,switchSession:()=>Yf,snapshotOutputTokensForTurn:()=>h25,setUserMsgOptIn:()=>Vg,setUseCoworkPlugins:()=>OL,setTracerProvider:()=>xz8,setThinkingClearLatched:()=>Yt8,setTeleportedSessionInfo:()=>Bu6,setSystemPromptSectionCacheEntry:()=>is8,setStrictToolResultPairing:()=>I25,setStatsStore:()=>ca8,setSessionTrustAccepted:()=>Iu6,setSessionSource:()=>fs8,setSessionPersistenceDisabled:()=>ms8,setSessionIngressToken:()=>y_6,setSessionBypassPermissionsMode:()=>Is8,setSdkBetas:()=>Ys8,setSdkAgentProgressSummariesEnabled:()=>Ps8,setScheduledTasksEnabled:()=>bu6,setQuestionPreviewFormat:()=>uz8,setPromptId:()=>Fu6,setPromptCache1hAllowlist:()=>ss8,setProjectRoot:()=>fu6,setOriginalCwd:()=>KS,setOauthTokenFromFd:()=>Vs8,setNeedsPlanModeExitAttachment:()=>gI,setNeedsAutoModeExitAttachment:()=>CG,setModelStrings:()=>Nu6,setMeterProvider:()=>bz8,setMeter:()=>As8,setMemoryToggledOff:()=>Ws8,setMainThreadAgentType:()=>_n,setMainLoopModelOverride:()=>dP,setLspRecommendationShownThisSession:()=>Us8,setLoopChainStartedAt:()=>g25,setLoggerProvider:()=>Sz8,setLastMainRequestId:()=>ea8,setLastEmittedDate:()=>PD6,setLastClassifierRequests:()=>hu6,setLastApiCompletionTimestamp:()=>Tu6,setLastAPIRequestMessages:()=>Ls8,setLastAPIRequest:()=>ys8,setKairosActive:()=>x25,setIsRemoteMode:()=>ls8,setIsInteractive:()=>Ms8,setInlinePlugins:()=>bs8,setInitialMainLoopModel:()=>zs8,setInitJsonSchema:()=>Qs8,setHasUnknownModelCost:()=>hz8,setHasExitedPlanMode:()=>$L,setHasDevChannels:()=>Qz8,setFlagSettingsPath:()=>Zs8,setFlagSettingsInline:()=>Gs8,setFastModeHeaderLatched:()=>Kt8,setEventLogger:()=>Cz8,setDirectConnectServerUrl:()=>W25,setCwdState:()=>Ia8,setCostStateForRestore:()=>ku6,setClientType:()=>Xs8,setChromeFlagOverride:()=>xs8,setCachedClaudeMdContent:()=>hs8,setCacheEditingHeaderLatched:()=>d25,setApiKeyFromFd:()=>Ns8,setAllowedSettingSources:()=>Cs8,setAllowedChannels:()=>zn,setAfkModeHeaderLatched:()=>es8,setAdditionalDirectoriesForClaudeMd:()=>pu6,setActiveRoutine:()=>Z25,resetTurnToolDuration:()=>Ua8,resetTurnHookDuration:()=>Fa8,resetTurnClassifierDuration:()=>da8,resetTotalDurationStateAndCost_FOR_TESTS_ONLY:()=>G25,resetStateForTests:()=>_P7,resetSdkInitState:()=>YP7,resetModelStringsForTestingOnly:()=>C25,resetCostState:()=>OD6,removeSessionCronTasks:()=>xu6,registerHookCallbacks:()=>z66,regenerateSessionId:()=>Sa8,preferThirdPartyAuthentication:()=>Ru6,onSessionSwitch:()=>xa8,onInteraction:()=>ra8,needsPlanModeExitAttachment:()=>Bs8,needsAutoModeExitAttachment:()=>ps8,markScrollActivity:()=>Ks8,markPostCompaction:()=>K66,markFirstTeleportMessageLogged:()=>Fz8,isSessionPersistenceDisabled:()=>ok,incrementBudgetContinuationCount:()=>S25,hasUnknownModelCost:()=>ta8,hasShownLspRecommendationThisSession:()=>Fs8,hasExitedPlanModeInSession:()=>uu6,handlePlanModeTransition:()=>Kn,handleAutoModeTransition:()=>gs8,getUserMsgOptIn:()=>AL,getUseCoworkPlugins:()=>Cu6,getUsageForModel:()=>_s8,getTurnToolDurationMs:()=>V25,getTurnToolCount:()=>k25,getTurnOutputTokens:()=>E25,getTurnHookDurationMs:()=>v25,getTurnHookCount:()=>T25,getTurnClassifierDurationMs:()=>N25,getTurnClassifierCount:()=>y25,getTracerProvider:()=>N_6,getTotalWebSearchRequests:()=>oa8,getTotalToolDuration:()=>ga8,getTotalOutputTokens:()=>el,getTotalLinesRemoved:()=>T_6,getTotalLinesAdded:()=>v_6,getTotalInputTokens:()=>V_6,getTotalDuration:()=>YD6,getTotalCostUSD:()=>XM,getTotalCacheReadInputTokens:()=>Zu6,getTotalCacheCreationInputTokens:()=>Gu6,getTotalAPIDurationWithoutRetries:()=>pa8,getTotalAPIDuration:()=>RG,getTokenCounter:()=>wD6,getThinkingClearLatched:()=>zt8,getTeleportedSessionInfo:()=>gz8,getSystemPromptSectionCache:()=>ns8,getStrictToolResultPairing:()=>Ds8,getStatsStore:()=>q66,getSlowOperations:()=>OP7,getSessionTrustAccepted:()=>MD6,getSessionSource:()=>u25,getSessionProjectDir:()=>Z_6,getSessionIngressToken:()=>vs8,getSessionId:()=>N8,getSessionCronTasks:()=>L_6,getSessionCreatedTeams:()=>mu6,getSessionCounter:()=>Os8,getSessionBypassPermissionsMode:()=>E_6,getSdkBetas:()=>OW,getSdkAgentProgressSummariesEnabled:()=>vg,getScheduledTasksEnabled:()=>JD6,getRegisteredHooks:()=>zS,getQuestionPreviewFormat:()=>Iz8,getPromptId:()=>gu6,getPromptCache1hAllowlist:()=>as8,getProjectRoot:()=>wz,getPrCounter:()=>yu6,getPlanSlugCache:()=>h_6,getParentSessionId:()=>Ca8,getOriginalCwd:()=>A7,getOauthTokenFromFd:()=>Ts8,getModelUsage:()=>ST,getModelStrings:()=>$D6,getMeterProvider:()=>Js8,getMeter:()=>b25,getMemoryToggledOff:()=>Tg,getMainThreadAgentType:()=>Ng,getMainLoopModelOverride:()=>pI,getLoopChainStartedAt:()=>p25,getLoggerProvider:()=>Lu6,getLocCounter:()=>Rz8,getLastMainRequestId:()=>vu6,getLastInteractionTime:()=>_S,getLastEmittedDate:()=>os8,getLastClassifierRequests:()=>zP7,getLastApiCompletionTimestamp:()=>qn,getLastAPIRequestMessages:()=>m25,getLastAPIRequest:()=>Es8,getKairosActive:()=>SG,getIsScrollDraining:()=>k_6,getIsRemoteMode:()=>cK,getIsNonInteractiveSession:()=>d7,getIsInteractive:()=>CT,getInvokedSkillsForAgent:()=>ds8,getInvokedSkills:()=>Q25,getInlinePlugins:()=>kg,getInitialMainLoopModel:()=>AD6,getInitJsonSchema:()=>Bz8,getHasDevChannels:()=>Uz8,getFlagSettingsPath:()=>_66,getFlagSettingsInline:()=>HD6,getFastModeHeaderLatched:()=>qt8,getEventLogger:()=>Hs8,getDirectConnectServerUrl:()=>ua8,getCwdState:()=>BI,getCurrentTurnTokenBudget:()=>L25,getCostCounter:()=>ws8,getCommitCounter:()=>$s8,getCodeEditToolDecisionCounter:()=>Eu6,getClientType:()=>jD6,getChromeFlagOverride:()=>Su6,getCachedClaudeMdContent:()=>Rs8,getCacheEditingHeaderLatched:()=>_t8,getBudgetContinuationCount:()=>R25,getApiKeyFromFd:()=>ks8,getAllowedSettingSources:()=>Ss8,getAllowedChannels:()=>TJ,getAgentColorMap:()=>mz8,getAfkModeHeaderLatched:()=>ts8,getAdditionalDirectoriesForClaudeMd:()=>bG,getActiveTimeCounter:()=>js8,getActiveRoutine:()=>f25,flushInteractionTime:()=>na8,deleteLoopChainStartedAt:()=>F25,consumePostCompaction:()=>qs8,clearSystemPromptSectionState:()=>rs8,clearRegisteredPluginHooks:()=>pz8,clearRegisteredHooks:()=>U25,clearInvokedSkillsForAgent:()=>Y66,clearInvokedSkills:()=>cs8,clearBetaHeaderLatches:()=>At8,addToTurnHookDuration:()=>yz8,addToTurnClassifierDuration:()=>Qa8,addToTotalLinesChanged:()=>Ez8,addToTotalDurationState:()=>ma8,addToTotalCostState:()=>Ba8,addToToolDuration:()=>Nz8,addToInMemoryErrorLog:()=>B25,addSlowOperation:()=>AP7,addSessionCronTask:()=>us8,addInvokedSkill:()=>XD6});import{realpathSync as aX7}from"fs";import{cwd as D25}from"process";function eX7(){let q="";if(typeof process<"u"&&typeof process.cwd==="function"&&typeof aX7==="function"){let _=D25();try{q=aX7(_).normalize("NFC")}catch{q=_.normalize("NFC")}}return{originalCwd:q,projectRoot:q,totalCostUSD:0,totalAPIDuration:0,totalAPIDurationWithoutRetries:0,totalToolDuration:0,turnHookDurationMs:0,turnToolDurationMs:0,turnClassifierDurationMs:0,turnToolCount:0,turnHookCount:0,turnClassifierCount:0,startTime:Date.now(),lastInteractionTime:Date.now(),totalLinesAdded:0,totalLinesRemoved:0,hasUnknownModelCost:!1,cwd:q,modelUsage:{},mainLoopModelOverride:void 0,initialMainLoopModel:null,modelStrings:null,isInteractive:!1,kairosActive:!1,strictToolResultPairing:!1,memoryToggledOff:!1,sdkAgentProgressSummariesEnabled:!1,userMsgOptIn:!1,clientType:"cli",sessionSource:void 0,questionPreviewFormat:void 0,sessionIngressToken:void 0,oauthTokenFromFd:void 0,apiKeyFromFd:void 0,flagSettingsPath:void 0,flagSettingsInline:null,allowedSettingSources:["userSettings","projectSettings","localSettings","flagSettings","policySettings"],meter:null,sessionCounter:null,locCounter:null,prCounter:null,commitCounter:null,costCounter:null,tokenCounter:null,codeEditToolDecisionCounter:null,activeTimeCounter:null,statsStore:null,sessionId:Du6(),parentSessionId:void 0,loggerProvider:null,eventLogger:null,meterProvider:null,tracerProvider:null,agentColorMap:new Map,agentColorIndex:0,lastAPIRequest:null,lastAPIRequestMessages:null,lastClassifierRequests:null,cachedClaudeMdContent:null,inMemoryErrorLog:[],inlinePlugins:[],chromeFlagOverride:void 0,useCoworkPlugins:!1,sessionBypassPermissionsMode:!1,scheduledTasksEnabled:!1,sessionCronTasks:[],loopChainStartedAt:Object.create(null),sessionCreatedTeams:new Set,sessionTrustAccepted:!1,sessionPersistenceDisabled:!1,hasExitedPlanMode:!1,needsPlanModeExitAttachment:!1,needsAutoModeExitAttachment:!1,lspRecommendationShownThisSession:!1,initJsonSchema:null,registeredHooks:null,planSlugCache:new Map,teleportedSessionInfo:null,invokedSkills:new Map,slowOperations:[],sdkBetas:void 0,mainThreadAgentType:void 0,isRemoteMode:!1,...!1,directConnectServerUrl:void 0,activeRoutine:void 0,systemPromptSectionCache:new Map,lastEmittedDate:null,additionalDirectoriesForClaudeMd:[],allowedChannels:[],hasDevChannels:!1,sessionProjectDir:null,promptCache1hAllowlist:null,afkModeHeaderLatched:null,fastModeHeaderLatched:null,cacheEditingHeaderLatched:null,thinkingClearLatched:null,promptId:null,lastMainRequestId:void 0,lastApiCompletionTimestamp:null,pendingPostCompaction:!1}}function N8(){return G8.sessionId}function Sa8(q={}){if(q.setCurrentAsParent)G8.parentSessionId=G8.sessionId;return G8.planSlugCache.delete(G8.sessionId),G8.sessionId=Du6(),G8.sessionProjectDir=null,G8.sessionId}function Ca8(){return G8.parentSessionId}function Yf(q,K=null){if(G8.sessionId!==q)G8.planSlugCache.delete(G8.sessionId);G8.sessionId=q,G8.sessionProjectDir=K,ba8.emit(q)}function Z_6(){return G8.sessionProjectDir}function A7(){return G8.originalCwd}function wz(){return G8.projectRoot}function KS(q){G8.originalCwd=q.normalize("NFC")}function fu6(q){G8.projectRoot=q.normalize("NFC")}function BI(){return G8.cwd}function Ia8(q){G8.cwd=q.normalize("NFC")}function ua8(){return G8.directConnectServerUrl}function W25(q){G8.directConnectServerUrl=q}function f25(){return G8.activeRoutine}function Z25(q){G8.activeRoutine=q}function ma8(q,K){G8.totalAPIDuration+=q,G8.totalAPIDurationWithoutRetries+=K}function G25(){G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalCostUSD=0}function Ba8(q,K,_){G8.modelUsage[_]=K,G8.totalCostUSD+=q}function XM(){return G8.totalCostUSD}function RG(){return G8.totalAPIDuration}function YD6(){return Date.now()-G8.startTime}function pa8(){return G8.totalAPIDurationWithoutRetries}function ga8(){return G8.totalToolDuration}function Nz8(q){G8.totalToolDuration+=q,G8.turnToolDurationMs+=q,G8.turnToolCount++}function v25(){return G8.turnHookDurationMs}function yz8(q){G8.turnHookDurationMs+=q,G8.turnHookCount++}function Fa8(){G8.turnHookDurationMs=0,G8.turnHookCount=0}function T25(){return G8.turnHookCount}function V25(){return G8.turnToolDurationMs}function Ua8(){G8.turnToolDurationMs=0,G8.turnToolCount=0}function k25(){return G8.turnToolCount}function N25(){return G8.turnClassifierDurationMs}function Qa8(q){G8.turnClassifierDurationMs+=q,G8.turnClassifierCount++}function da8(){G8.turnClassifierDurationMs=0,G8.turnClassifierCount=0}function y25(){return G8.turnClassifierCount}function q66(){return G8.statsStore}function ca8(q){G8.statsStore=q}function G_6(q){if(q)qP7();else la8=!0}function na8(){if(la8)qP7()}function qP7(){G8.lastInteractionTime=Date.now(),la8=!1,ia8.emit()}function Ez8(q,K){G8.totalLinesAdded+=q,G8.totalLinesRemoved+=K}function v_6(){return G8.totalLinesAdded}function T_6(){return G8.totalLinesRemoved}function V_6(){return zD6(Object.values(G8.modelUsage),"inputTokens")}function el(){return zD6(Object.values(G8.modelUsage),"outputTokens")}function Zu6(){return zD6(Object.values(G8.modelUsage),"cacheReadInputTokens")}function Gu6(){return zD6(Object.values(G8.modelUsage),"cacheCreationInputTokens")}function oa8(){return zD6(Object.values(G8.modelUsage),"webSearchRequests")}function E25(){return el()-aa8}function L25(){return sa8}function h25(q){aa8=el(),sa8=q,Lz8=0}function R25(){return Lz8}function S25(){Lz8++}function hz8(){G8.hasUnknownModelCost=!0}function ta8(){return G8.hasUnknownModelCost}function vu6(){return G8.lastMainRequestId}function ea8(q){G8.lastMainRequestId=q}function qn(){return G8.lastApiCompletionTimestamp}function Tu6(q){G8.lastApiCompletionTimestamp=q}function K66(){G8.pendingPostCompaction=!0}function qs8(){let q=G8.pendingPostCompaction;return G8.pendingPostCompaction=!1,q}function _S(){return G8.lastInteractionTime}function Ks8(){if(kz8=!0,Wu6)clearTimeout(Wu6);Wu6=setTimeout(()=>{kz8=!1,Wu6=void 0},KP7),Wu6.unref?.()}function k_6(){return kz8}async function Vu6(){while(kz8)await new Promise((q)=>setTimeout(q,KP7).unref?.())}function ST(){return G8.modelUsage}function _s8(q){return G8.modelUsage[q]}function pI(){return G8.mainLoopModelOverride}function AD6(){return G8.initialMainLoopModel}function dP(q){G8.mainLoopModelOverride=q}function zs8(q){G8.initialMainLoopModel=q}function OW(){return G8.sdkBetas}function Ys8(q){G8.sdkBetas=q}function OD6(){G8.totalCostUSD=0,G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalToolDuration=0,G8.startTime=Date.now(),G8.totalLinesAdded=0,G8.totalLinesRemoved=0,G8.hasUnknownModelCost=!1,G8.modelUsage={},G8.promptId=null}function ku6({totalCostUSD:q,totalAPIDuration:K,totalAPIDurationWithoutRetries:_,totalToolDuration:z,totalLinesAdded:Y,totalLinesRemoved:A,lastDuration:O,modelUsage:$}){if(G8.totalCostUSD=q,G8.totalAPIDuration=K,G8.totalAPIDurationWithoutRetries=_,G8.totalToolDuration=z,G8.totalLinesAdded=Y,G8.totalLinesRemoved=A,$)G8.modelUsage=$;if(O)G8.startTime=Date.now()-O}function _P7(){throw Error("resetStateForTests can only be called in tests")}function $D6(){return G8.modelStrings}function Nu6(q){G8.modelStrings=q}function C25(){G8.modelStrings=null}function As8(q,K){G8.meter=q,G8.sessionCounter=K("claude_code.session.count",{description:"Count of CLI sessions started"}),G8.locCounter=K("claude_code.lines_of_code.count",{description:"Count of lines of code modified, with the 'type' attribute indicating whether lines were added or removed"}),G8.prCounter=K("claude_code.pull_request.count",{description:"Number of pull requests created"}),G8.commitCounter=K("claude_code.commit.count",{description:"Number of git commits created"}),G8.costCounter=K("claude_code.cost.usage",{description:"Cost of the Claude Code session",unit:"USD"}),G8.tokenCounter=K("claude_code.token.usage",{description:"Number of tokens used",unit:"tokens"}),G8.codeEditToolDecisionCounter=K("claude_code.code_edit_tool.decision",{description:"Count of code editing tool permission decisions (accept/reject) for Edit, Write, and NotebookEdit tools"}),G8.activeTimeCounter=K("claude_code.active_time.total",{description:"Total active time in seconds",unit:"s"})}function b25(){return G8.meter}function Os8(){return G8.sessionCounter}function Rz8(){return G8.locCounter}function yu6(){return G8.prCounter}function $s8(){return G8.commitCounter}function ws8(){return G8.costCounter}function wD6(){return G8.tokenCounter}function Eu6(){return G8.codeEditToolDecisionCounter}function js8(){return G8.activeTimeCounter}function Lu6(){return G8.loggerProvider}function Sz8(q){G8.loggerProvider=q}function Hs8(){return G8.eventLogger}function Cz8(q){G8.eventLogger=q}function Js8(){return G8.meterProvider}function bz8(q){G8.meterProvider=q}function N_6(){return G8.tracerProvider}function xz8(q){G8.tracerProvider=q}function d7(){return!G8.isInteractive}function CT(){return G8.isInteractive}function Ms8(q){G8.isInteractive=q}function jD6(){return G8.clientType}function Xs8(q){G8.clientType=q}function vg(){return G8.sdkAgentProgressSummariesEnabled}function Ps8(q){G8.sdkAgentProgressSummariesEnabled=q}function SG(){return G8.kairosActive}function x25(q){G8.kairosActive=q}function Ds8(){return G8.strictToolResultPairing}function I25(q){G8.strictToolResultPairing=q}function Tg(){return G8.memoryToggledOff}function Ws8(q){G8.memoryToggledOff=q}function AL(){return G8.userMsgOptIn}function Vg(q){G8.userMsgOptIn=q}function u25(){return G8.sessionSource}function fs8(q){G8.sessionSource=q}function Iz8(){return G8.questionPreviewFormat}function uz8(q){G8.questionPreviewFormat=q}function mz8(){return G8.agentColorMap}function _66(){return G8.flagSettingsPath}function Zs8(q){G8.flagSettingsPath=q}function HD6(){return G8.flagSettingsInline}function Gs8(q){G8.flagSettingsInline=q}function vs8(){return G8.sessionIngressToken}function y_6(q){G8.sessionIngressToken=q}function Ts8(){return G8.oauthTokenFromFd}function Vs8(q){G8.oauthTokenFromFd=q}function ks8(){return G8.apiKeyFromFd}function Ns8(q){G8.apiKeyFromFd=q}function ys8(q){G8.lastAPIRequest=q}function Es8(){return G8.lastAPIRequest}function Ls8(q){G8.lastAPIRequestMessages=q}function m25(){return G8.lastAPIRequestMessages}function hu6(q){G8.lastClassifierRequests=q}function zP7(){return G8.lastClassifierRequests}function hs8(q){G8.cachedClaudeMdContent=q}function Rs8(){return G8.cachedClaudeMdContent}function B25(q){if(G8.inMemoryErrorLog.length>=100)G8.inMemoryErrorLog.shift();G8.inMemoryErrorLog.push(q)}function Ss8(){return G8.allowedSettingSources}function Cs8(q){G8.allowedSettingSources=q}function Ru6(){return d7()&&G8.clientType!=="claude-vscode"}function bs8(q){G8.inlinePlugins=q}function kg(){return G8.inlinePlugins}function xs8(q){G8.chromeFlagOverride=q}function Su6(){return G8.chromeFlagOverride}function OL(q){G8.useCoworkPlugins=q,AW()}function Cu6(){return G8.useCoworkPlugins}function Is8(q){G8.sessionBypassPermissionsMode=q}function E_6(){return G8.sessionBypassPermissionsMode}function bu6(q){G8.scheduledTasksEnabled=q}function JD6(){return G8.scheduledTasksEnabled}function L_6(){return G8.sessionCronTasks}function us8(q){G8.sessionCronTasks.push(q)}function p25(q){return G8.loopChainStartedAt[q]}function g25(q,K){G8.loopChainStartedAt[q]=K}function F25(q){delete G8.loopChainStartedAt[q]}function xu6(q){if(q.length===0)return 0;let K=new Set(q),_=G8.sessionCronTasks.filter((Y)=>!K.has(Y.id)),z=G8.sessionCronTasks.length-_.length;if(z===0)return 0;return G8.sessionCronTasks=_,z}function Iu6(q){G8.sessionTrustAccepted=q}function MD6(){return G8.sessionTrustAccepted}function ms8(q){G8.sessionPersistenceDisabled=q}function ok(){return G8.sessionPersistenceDisabled}function uu6(){return G8.hasExitedPlanMode}function $L(q){G8.hasExitedPlanMode=q}function Bs8(){return G8.needsPlanModeExitAttachment}function gI(q){G8.needsPlanModeExitAttachment=q}function Kn(q,K){if(K==="plan"&&q!=="plan")G8.needsPlanModeExitAttachment=!1;if(q==="plan"&&K!=="plan")G8.needsPlanModeExitAttachment=!0}function ps8(){return G8.needsAutoModeExitAttachment}function CG(q){G8.needsAutoModeExitAttachment=q}function gs8(q,K){if(q==="auto"&&K==="plan"||q==="plan"&&K==="auto")return;let _=q==="auto",z=K==="auto";if(z&&!_)G8.needsAutoModeExitAttachment=!1;if(_&&!z)G8.needsAutoModeExitAttachment=!0}function Fs8(){return G8.lspRecommendationShownThisSession}function Us8(q){G8.lspRecommendationShownThisSession=q}function Qs8(q){G8.initJsonSchema=q}function Bz8(){return G8.initJsonSchema}function z66(q){if(!G8.registeredHooks)G8.registeredHooks={};for(let[K,_]of Object.entries(q)){let z=K;if(!G8.registeredHooks[z])G8.registeredHooks[z]=[];G8.registeredHooks[z].push(..._)}}function zS(){return G8.registeredHooks}function U25(){G8.registeredHooks=null}function pz8(){if(!G8.registeredHooks)return;let q={};for(let[K,_]of Object.entries(G8.registeredHooks)){let z=_.filter((Y)=>!("pluginRoot"in Y));if(z.length>0)q[K]=z}G8.registeredHooks=Object.keys(q).length>0?q:null}function YP7(){G8.initJsonSchema=null,G8.registeredHooks=null}function h_6(){return G8.planSlugCache}function mu6(){return G8.sessionCreatedTeams}function Bu6(q){G8.teleportedSessionInfo={isTeleported:!0,hasLoggedFirstMessage:!1,sessionId:q.sessionId}}function gz8(){return G8.teleportedSessionInfo}function Fz8(){if(G8.teleportedSessionInfo)G8.teleportedSessionInfo.hasLoggedFirstMessage=!0}function XD6(q,K,_,z=null){let Y=`${z??""}:${q}`;G8.invokedSkills.set(Y,{skillName:q,skillPath:K,content:_,invokedAt:Date.now(),agentId:z})}function Q25(){return G8.invokedSkills}function ds8(q){let K=q??null,_=new Map;for(let[z,Y]of G8.invokedSkills)if(Y.agentId===K)_.set(z,Y);return _}function cs8(q){if(!q||q.size===0){G8.invokedSkills.clear();return}for(let[K,_]of G8.invokedSkills)if(_.agentId===null||!q.has(_.agentId))G8.invokedSkills.delete(K)}function Y66(q){for(let[K,_]of G8.invokedSkills)if(_.agentId===q)G8.invokedSkills.delete(K)}function AP7(q,K){return}function OP7(){if(G8.slowOperations.length===0)return tX7;let q=Date.now();if(G8.slowOperations.some((K)=>q-K.timestamp>=Ra8)){if(G8.slowOperations=G8.slowOperations.filter((K)=>q-K.timestamp<Ra8),G8.slowOperations.length===0)return tX7}return G8.slowOperations}function Ng(){return G8.mainThreadAgentType}function _n(q){G8.mainThreadAgentType=q}function cK(){return G8.isRemoteMode}function ls8(q){G8.isRemoteMode=q}function ns8(){return G8.systemPromptSectionCache}function is8(q,K){G8.systemPromptSectionCache.set(q,K)}function rs8(){G8.systemPromptSectionCache.clear()}function os8(){return G8.lastEmittedDate}function PD6(q){G8.lastEmittedDate=q}function bG(){return G8.additionalDirectoriesForClaudeMd}function pu6(q){G8.additionalDirectoriesForClaudeMd=q}function TJ(){return G8.allowedChannels}function zn(q){G8.allowedChannels=q}function Uz8(){return G8.hasDevChannels}function Qz8(q){G8.hasDevChannels=q}function as8(){return G8.promptCache1hAllowlist}function ss8(q){G8.promptCache1hAllowlist=q}function ts8(){return G8.afkModeHeaderLatched}function es8(q){G8.afkModeHeaderLatched=q}function qt8(){return G8.fastModeHeaderLatched}function Kt8(q){G8.fastModeHeaderLatched=q}function _t8(){return G8.cacheEditingHeaderLatched}function d25(q){G8.cacheEditingHeaderLatched=q}function zt8(){return G8.thinkingClearLatched}function Yt8(q){G8.thinkingClearLatched=q}function At8(){G8.afkModeHeaderLatched=null,G8.fastModeHeaderLatched=null,G8.cacheEditingHeaderLatched=null,G8.thinkingClearLatched=null}function gu6(){return G8.promptId}function Fu6(q){G8.promptId=q}var G8,ba8,xa8,la8=!1,ia8,ra8,aa8=0,sa8=null,Lz8=0,kz8=!1,Wu6,KP7=150,sX7=10,Ra8=1e4,tX7;var v8=L(()=>{UX7();ya8();tl();G8=eX7();ba8=E9(),xa8=ba8.subscribe;ia8=E9(),ra8=ia8.subscribe;tX7=[]});function dz8(q){let K;for(let _ in q)if(_.startsWith("_PROTO_")){if(K===void 0)K={...q};delete K[_]}return K??q}function $P7(q){if(A66!==null)return;if(A66=q,Uu6.length>0){let K=[...Uu6];Uu6.length=0,queueMicrotask(()=>{for(let _ of K)if(_.async)A66.logEventAsync(_.eventName,_.metadata);else A66.logEvent(_.eventName,_.metadata)})}}function d(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!1});return}A66.logEvent(q,K)}async function wP7(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!0});return}await A66.logEventAsync(q,K)}var Uu6,A66=null;var T8=L(()=>{Uu6=[]});function WD6({writeFn:q,flushIntervalMs:K=1000,maxBufferSize:_=100,maxBufferBytes:z=1/0,immediateMode:Y=!1}){let A=[],O=0,$=null,w=null;function j(){if($)clearTimeout($),$=null}function H(){if(w)q(w.join("")),w=null;if(A.length===0)return;q(A.join("")),A=[],O=0,j()}function J(){if(!$)$=setTimeout(H,K)}function M(){if(w){w.push(...A),A=[],O=0,j();return}let X=A;A=[],O=0,j(),w=X,setImmediate(()=>{let P=w;if(w=null,P)q(P.join(""))})}return{write(X){if(Y){q(X);return}if(A.push(X),O+=X.length,J(),A.length>=_||O>=z)M()},flush:H,dispose(){H()}}}function gq(q){return Ot8.add(q),()=>Ot8.delete(q)}async function jP7(){await Promise.all(Array.from(Ot8).map((q)=>q()))}var Ot8;var o9=L(()=>{Ot8=new Set});function c25(q){let K=[],_=q.match(/^MCP server ["']([^"']+)["']/);if(_&&_[1])K.push("mcp"),K.push(_[1].toLowerCase());else{let A=q.match(/^([^:[]+):/);if(A&&A[1])K.push(A[1].trim().toLowerCase())}let z=q.match(/^\[([^\]]+)]/);if(z&&z[1])K.push(z[1].trim().toLowerCase());if(q.toLowerCase().includes("1p event:"))K.push("1p");let Y=q.match(/:\s*([^:]+?)(?:\s+(?:type|mode|status|event))?:/);if(Y&&Y[1]){let A=Y[1].trim().toLowerCase();if(A.length<30&&!A.includes(" "))K.push(A)}return Array.from(new Set(K))}function l25(q,K){if(!K)return!0;if(q.length===0)return!1;if(K.isExclusive)return!q.some((_)=>K.exclude.includes(_));else return q.some((_)=>K.include.includes(_))}function JP7(q,K){if(!K)return!0;let _=c25(q);return l25(_,K)}var HP7;var MP7=L(()=>{h4();HP7=A1((q)=>{if(!q||q.trim()==="")return null;let K=q.split(",").map((A)=>A.trim()).filter(Boolean);if(K.length===0)return null;let _=K.some((A)=>A.startsWith("!")),z=K.some((A)=>!A.startsWith("!"));if(_&&z)return null;let Y=K.map((A)=>A.replace(/^!/,"").toLowerCase());return{include:_?[]:Y,exclude:_?Y:[],isExclusive:_}})});import{homedir as n25}from"os";import{join as XP7}from"path";function fD6(){return XP7(O7(),"teams")}function ZD6(q){let K=process.env.NODE_OPTIONS;if(!K)return!1;return K.split(/\s+/).includes(q)}function Yn(q,K){if(q===void 0)return K;let _=parseInt(q,10);return Number.isNaN(_)?K:_}function B6(q){if(!q)return!1;if(typeof q==="boolean")return q;let K=q.toLowerCase().trim();return["1","true","yes","on"].includes(K)}function a9(q){if(q===void 0)return!1;if(typeof q==="boolean")return!q;if(!q)return!1;let K=q.toLowerCase().trim();return["0","false","no","off"].includes(K)}function D9(){return B6(process.env.CLAUDE_CODE_SIMPLE)||process.argv.includes("--bare")}function PP7(q){let K={};if(q)for(let _ of q){let[z,...Y]=_.split("=");if(!z||Y.length===0)throw Error(`Invalid environment variable format: ${_}, environment variables should be added as: -e KEY1=value1 -e KEY2=value2`);K[z]=Y.join("=")}return K}function YS(){return process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION||"us-east-1"}function cz8(){return process.env.CLOUD_ML_REGION||"us-east5"}function DP7(){return B6(process.env.CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR)}function Af(){return!1}function AS(){return!1}function WP7(){return{namespace:void 0,cluster:void 0}}function lz8(q){if(q){let K=i25.find(([_])=>q.startsWith(_));if(K)return process.env[K[1]]||cz8()}return cz8()}var O7,i25;var B8=L(()=>{h4();O7=A1(()=>{return(process.env.CLAUDE_CONFIG_DIR??XP7(n25(),".claude")).normalize("NFC")},()=>process.env.CLAUDE_CONFIG_DIR);i25=[["claude-haiku-4-5","VERTEX_REGION_CLAUDE_HAIKU_4_5"],["claude-3-5-haiku","VERTEX_REGION_CLAUDE_3_5_HAIKU"],["claude-3-5-sonnet","VERTEX_REGION_CLAUDE_3_5_SONNET"],["claude-3-7-sonnet","VERTEX_REGION_CLAUDE_3_7_SONNET"],["claude-opus-4-6","VERTEX_REGION_CLAUDE_4_6_OPUS"],["claude-opus-4-1","VERTEX_REGION_CLAUDE_4_1_OPUS"],["claude-opus-4","VERTEX_REGION_CLAUDE_4_0_OPUS"],["claude-sonnet-4-6","VERTEX_REGION_CLAUDE_4_6_SONNET"],["claude-sonnet-4-5","VERTEX_REGION_CLAUDE_4_5_SONNET"],["claude-sonnet-4","VERTEX_REGION_CLAUDE_4_0_SONNET"]]});function $4(q,K,_,z,Y){if(z==="m")throw TypeError("Private method is not writable");if(z==="a"&&!Y)throw TypeError("Private accessor was defined without a setter");if(typeof K==="function"?q!==K||!Y:!K.has(q))throw TypeError("Cannot write private member to an object whose class did not declare it");return z==="a"?Y.call(q,_):Y?Y.value=_:K.set(q,_),_}function u1(q,K,_,z){if(_==="a"&&!z)throw TypeError("Private accessor was defined without a getter");if(typeof K==="function"?q!==K||!z:!K.has(q))throw TypeError("Cannot read private member from an object whose class did not declare it");return _==="m"?z:_==="a"?z.call(q):z?z.value:K.get(q)}var An=()=>{};var $t8=function(){let{crypto:q}=globalThis;if(q?.randomUUID)return $t8=q.randomUUID.bind(q),q.randomUUID();let K=new Uint8Array(1),_=q?()=>q.getRandomValues(K)[0]:()=>Math.random()*255&255;return"[CREDIT_CARD]-[CREDIT_CARD]".replace(/[018]/g,(z)=>(+z^_()&15>>+z/4).toString(16))};function On(q){return typeof q==="object"&&q!==null&&(("name"in q)&&q.name==="AbortError"||("message"in q)&&String(q.message).includes("FetchRequestCanceledException"))}var Qu6=(q)=>{if(q instanceof Error)return q;if(typeof q==="object"&&q!==null){try{if(Object.prototype.toString.call(q)==="[object Error]"){let K=Error(q.message,q.cause?{cause:q.cause}:{});if(q.stack)K.stack=q.stack;if(q.cause&&!K.cause)K.cause=q.cause;if(q.name)K.name=q.name;return K}}catch{}try{return Error(JSON.stringify(q))}...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"!=null){if(typeof K!==\"object\"&&typeof K!==\"function\")throw TypeError('Object expected to be assigned to \"using\" declaration');var z;if(_)z=K[PA5];if(z===void 0)z=K[XA5];if(typeof z!==\"function\")throw TypeError(\"Object not disposable\");q.push([_,z,K])}else if(_)q.push([_]);return K},nz=(q,K,_)=>{var z=typeof SuppressedError===\"function\"?SuppressedError:function(O,$,w,j){return j=Error(w),j.name=\"SuppressedError\",j.error=O,j.suppressed=$,j},Y=(O)=>K=_?new z(O,K,\"An error was suppressed during disposal\"):(_=!0,O),A=(O)=>{while(O=q.pop())try{var $=O[1]&&O[1].call(O[2]);if(O[0])return Promise.resolve($).then(A,(w)=>(Y(w),A()))}catch(w){Y(w)}if(_)throw K};return A()};function DA5(){this.__data__=[],this.size=0}var PJ7;var DJ7=L(()=>{PJ7=DA5});function WA5(q,K){return q===K||q!==q&&K!==K}var Pg;var pP6=L(()=>{Pg=WA5});function fA5(q,K){var _=q.length;while(_--)if(Pg(q[_][0],K))return _;return-1}var de;var qu6=L(()=>{pP6();de=fA5});function vA5(q){var K=this.__data__,_=de(K,q);if(_<0)return!1;var z=K.length-1;if(_==z)K.pop();else GA5.call(K,_,1);return--this.size,!0}var ZA5,GA5,WJ7;var fJ7=L(()=>{qu6();ZA5=Array.prototype,GA5=ZA5.splice;WJ7=vA5});function TA5(q){var K=this.__data__,_=de(K,q);return _<0?void 0:K[_][1]}var ZJ7;var GJ7=L(()=>{qu6();ZJ7=TA5});function VA5(q){return de(this.__data__,q)>-1}var vJ7;var TJ7=L(()=>{qu6();vJ7=VA5});function kA5(q,K){var _=this.__data__,z=de(_,q);if(z<0)++this.size,_.push([q,K]);else _[z][1]=K;return this}var VJ7;var kJ7=L(()=>{qu6();VJ7=kA5});function gP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var ce;var Ku6=L(()=>{DJ7();fJ7();GJ7();TJ7();kJ7();gP6.prototype.clear=PJ7;gP6.prototype.delete=WJ7;gP6.prototype.get=ZJ7;gP6.prototype.has=vJ7;gP6.prototype.set=VJ7;ce=gP6});function NA5(){this.__data__=new ce,this.size=0}var NJ7;var yJ7=L(()=>{Ku6();NJ7=NA5});function yA5(q){var K=this.__data__,_=K.delete(q);return this.size=K.size,_}var EJ7;var LJ7=L(()=>{EJ7=yA5});function EA5(q){return this.__data__.get(q)}var hJ7;var RJ7=L(()=>{hJ7=EA5});function LA5(q){return this.__data__.has(q)}var SJ7;var CJ7=L(()=>{SJ7=LA5});var hA5,g_8;var Aa8=L(()=>{hA5=typeof global==\"object\"&&global&&global.Object===Object&&global,g_8=hA5});var RA5,SA5,vJ;var sR=L(()=>{Aa8();RA5=typeof self==\"object\"&&self&&self.Object===Object&&self,SA5=g_8||RA5||Function(\"return this\")(),vJ=SA5});var CA5,YW;var J_6=L(()=>{sR();CA5=vJ.Symbol,YW=CA5});function IA5(q){var K=bA5.call(q,_u6),_=q[_u6];try{q[_u6]=void 0;var z=!0}catch(A){}var Y=xA5.call(q);if(z)if(K)q[_u6]=_;else delete q[_u6];return Y}var bJ7,bA5,xA5,_u6,xJ7;var IJ7=L(()=>{J_6();bJ7=Object.prototype,bA5=bJ7.hasOwnProperty,xA5=bJ7.toString,_u6=YW?YW.toStringTag:void 0;xJ7=IA5});function BA5(q){return mA5.call(q)}var uA5,mA5,uJ7;var mJ7=L(()=>{uA5=Object.prototype,mA5=uA5.toString;uJ7=BA5});function FA5(q){if(q==null)return q===void 0?gA5:pA5;return BJ7&&BJ7 in Object(q)?xJ7(q):uJ7(q)}var pA5=\"[object Null]\",gA5=\"[object Undefined]\",BJ7,YL;var M_6=L(()=>{J_6();IJ7();mJ7();BJ7=YW?YW.toStringTag:void 0;YL=FA5});function UA5(q){var K=typeof q;return q!=null&&(K==\"object\"||K==\"function\")}var PO;var hT=L(()=>{PO=UA5});function nA5(q){if(!PO(q))return!1;var K=YL(q);return K==dA5||K==cA5||K==QA5||K==lA5}var QA5=\"[object AsyncFunction]\",dA5=\"[object Function]\",cA5=\"[object GeneratorFunction]\",lA5=\"[object Proxy]\",FP6;var F_8=L(()=>{M_6();hT();FP6=nA5});var iA5,U_8;var pJ7=L(()=>{sR();iA5=vJ[\"__core-js_shared__\"],U_8=iA5});function rA5(q){return!!gJ7&&gJ7 in q}var gJ7,FJ7;var UJ7=L(()=>{pJ7();gJ7=function(){var q=/[^.]+$/.exec(U_8&&U_8.keys&&U_8.keys.IE_PROTO||\"\");return q?\"Symbol(src)_1.\"+q:\"\"}();FJ7=rA5});function sA5(q){if(q!=null){try{return aA5.call(q)}catch(K){}try{return q+\"\"}catch(K){}}return\"\"}var oA5,aA5,rl;var Oa8=L(()=>{oA5=Function.prototype,aA5=oA5.toString;rl=sA5});function AO5(q){if(!PO(q)||FJ7(q))return!1;var K=FP6(q)?YO5:eA5;return K.test(rl(q))}var tA5,eA5,qO5,KO5,_O5,zO5,YO5,QJ7;var dJ7=L(()=>{F_8();UJ7();hT();Oa8();tA5=/[\\\\^$.*+?()[\\]{}|]/g,eA5=/^\\[object .+?Constructor\\]$/,qO5=Function.prototype,KO5=Object.prototype,_O5=qO5.toString,zO5=KO5.hasOwnProperty,YO5=RegExp(\"^\"+_O5.call(zO5).replace(tA5,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");QJ7=AO5});function OO5(q,K){return q==null?void 0:q[K]}var cJ7;var lJ7=L(()=>{cJ7=OO5});function $O5(q,K){var _=cJ7(q,K);return QJ7(_)?_:void 0}var ik;var le=L(()=>{dJ7();lJ7();ik=$O5});var wO5,ne;var Q_8=L(()=>{le();sR();wO5=ik(vJ,\"Map\"),ne=wO5});var jO5,ol;var zu6=L(()=>{le();jO5=ik(Object,\"create\"),ol=jO5});function HO5(){this.__data__=ol?ol(null):{},this.size=0}var nJ7;var iJ7=L(()=>{zu6();nJ7=HO5});function JO5(q){var K=this.has(q)&&delete this.__data__[q];return this.size-=K?1:0,K}var rJ7;var oJ7=L(()=>{rJ7=JO5});function DO5(q){var K=this.__data__;if(ol){var _=K[q];return _===MO5?void 0:_}return PO5.call(K,q)?K[q]:void 0}var MO5=\"__lodash_hash_undefined__\",XO5,PO5,aJ7;var sJ7=L(()=>{zu6();XO5=Object.prototype,PO5=XO5.hasOwnProperty;aJ7=DO5});function ZO5(q){var K=this.__data__;return ol?K[q]!==void 0:fO5.call(K,q)}var WO5,fO5,tJ7;var eJ7=L(()=>{zu6();WO5=Object.prototype,fO5=WO5.hasOwnProperty;tJ7=ZO5});function vO5(q,K){var _=this.__data__;return this.size+=this.has(q)?0:1,_[q]=ol&&K===void 0?GO5:K,this}var GO5=\"__lodash_hash_undefined__\",qM7;var KM7=L(()=>{zu6();qM7=vO5});function UP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var $a8;var _M7=L(()=>{iJ7();oJ7();sJ7();eJ7();KM7();UP6.prototype.clear=nJ7;UP6.prototype.delete=rJ7;UP6.prototype.get=aJ7;UP6.prototype.has=tJ7;UP6.prototype.set=qM7;$a8=UP6});function TO5(){this.size=0,this.__data__={hash:new $a8,map:new(ne||ce),string:new $a8}}var zM7;var YM7=L(()=>{_M7();Ku6();Q_8();zM7=TO5});function VO5(q){var K=typeof q;return K==\"string\"||K==\"number\"||K==\"symbol\"||K==\"boolean\"?q!==\"__proto__\":q===null}var AM7;var OM7=L(()=>{AM7=VO5});function kO5(q,K){var _=q.__data__;return AM7(K)?_[typeof K==\"string\"?\"string\":\"hash\"]:_.map}var ie;var Yu6=L(()=>{OM7();ie=kO5});function NO5(q){var K=ie(this,q).delete(q);return this.size-=K?1:0,K}var $M7;var wM7=L(()=>{Yu6();$M7=NO5});function yO5(q){return ie(this,q).get(q)}var jM7;var HM7=L(()=>{Yu6();jM7=yO5});function EO5(q){return ie(this,q).has(q)}var JM7;var MM7=L(()=>{Yu6();JM7=EO5});function LO5(q,K){var _=ie(this,q),z=_.size;return _.set(q,K),this.size+=_.size==z?0:1,this}var XM7;var PM7=L(()=>{Yu6();XM7=LO5});function QP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var X_6;var d_8=L(()=>{YM7();wM7();HM7();MM7();PM7();QP6.prototype.clear=zM7;QP6.prototype.delete=$M7;QP6.prototype.get=jM7;QP6.prototype.has=JM7;QP6.prototype.set=XM7;X_6=QP6});function RO5(q,K){var _=this.__data__;if(_ instanceof ce){var z=_.__data__;if(!ne||z.length<hO5-1)return z.push([q,K]),this.size=++_.size,this;_=this.__data__=new X_6(z)}return _.set(q,K),this.size=_.size,this}var hO5=200,DM7;var WM7=L(()=>{Ku6();Q_8();d_8();DM7=RO5});function dP6(q){var K=this.__data__=new ce(q);this.size=K.size}var Dg;var Au6=L(()=>{Ku6();yJ7();LJ7();RJ7();CJ7();WM7();dP6.prototype.clear=NJ7;dP6.prototype.delete=EJ7;dP6.prototype.get=hJ7;dP6.prototype.has=SJ7;dP6.prototype.set=DM7;Dg=dP6});function CO5(q){return this.__data__.set(q,SO5),this}var SO5=\"__lodash_hash_undefined__\",fM7;var ZM7=L(()=>{fM7=CO5});function bO5(q){return this.__data__.has(q)}var GM7;var vM7=L(()=>{GM7=bO5});function c_8(q){var K=-1,_=q==null?0:q.length;this.__data__=new X_6;while(++K<_)this.add(q[K])}var l_8;var wa8=L(()=>{d_8();ZM7();vM7();c_8.prototype.add=c_8.prototype.push=fM7;c_8.prototype.has=GM7;l_8=c_8});function xO5(q,K){var _=-1,z=q==null?0:q.length;while(++_<z)if(K(q[_],_,q))return!0;return!1}var TM7;var VM7=L(()=>{TM7=xO5});function IO5(q,K){return q.has(K)}var n_8;var ja8=L(()=>{n_8=IO5});function BO5(q,K,_,z,Y,A){var O=_&uO5,$=q.length,w=K.length;if($!=w&&!(O&&w>$))return!1;var j=A.get(q),H=A.get(K);if(j&&H)return j==K&&H==q;var J=-1,M=!0,X=_&mO5?new l_8:void 0;A.set(q,K),A.set(K,q);while(++J<$){var P=q[J],D=K[J];if(z)var W=O?z(D,P,J,K,q,A):z(P,D,J,q,K,A);if(W!==void 0){if(W)continue;M=!1;break}if(X){if(!TM7(K,function(f,G){if(!n_8(X,G)&&(P===f||Y(P,f,_,z,A)))return X.push(G)})){M=!1;break}}else if(!(P===D||Y(P,D,_,z,A))){M=!1;break}}return A.delete(q),A.delete(K),M}var uO5=1,mO5=2,i_8;var Ha8=L(()=>{wa8();VM7();ja8();i_8=BO5});var pO5,cP6;var Ja8=L(()=>{sR();pO5=vJ.Uint8Array,cP6=pO5});function gO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z,Y){_[++K]=[Y,z]}),_}var kM7;var NM7=L(()=>{kM7=gO5});function FO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z){_[++K]=z}),_}var lP6;var r_8=L(()=>{lP6=FO5});function q$5(q,K,_,z,Y,A,O){switch(_){case eO5:if(q.byteLength!=K.byteLength||q.byteOffset!=K.byteOffset)return!1;q=q.buffer,K=K.buffer;case tO5:if(q.byteLength!=K.byteLength||!A(new cP6(q),new cP6(K)))return!1;return!0;case dO5:case cO5:case iO5:return Pg(+q,+K);case lO5:return q.name==K.name&&q.message==K.message;case rO5:case aO5:return q==K+\"\";case nO5:var $=kM7;case oO5:var w=z&UO5;if($||($=lP6),q.size!=K.size&&!w)return!1;var j=O.get(q);if(j)return j==K;z|=QO5,O.set(q,K);var H=i_8($(q),$(K),z,Y,A,O);return O.delete(q),H;case sO5:if(Ma8)return Ma8.call(q)==Ma8.call(K)}return!1}var UO5=1,QO5=2,dO5=\"[object Boolean]\",cO5=\"[object Date]\",lO5=\"[object Error]\",nO5=\"[object Map]\",iO5=\"[object Number]\",rO5=\"[object RegExp]\",oO5=\"[object Set]\",aO5=\"[object String]\",sO5=\"[object Symbol]\",tO5=\"[object ArrayBuffer]\",eO5=\"[object DataView]\",yM7,Ma8,EM7;var LM7=L(()=>{J_6();Ja8();pP6();Ha8();NM7();r_8();yM7=YW?YW.prototype:void 0,Ma8=yM7?yM7.valueOf:void 0;EM7=q$5});function K$5(q,K){var _=-1,z=K.length,Y=q.length;while(++_<z)q[Y+_]=K[_];return q}var nP6;var o_8=L(()=>{nP6=K$5});var _$5,DO;var RT=L(()=>{_$5=Array.isArray,DO=_$5});function z$5(q,K,_){var z=K(q);return DO(q)?z:nP6(z,_(q))}var a_8;var Xa8=L(()=>{o_8();RT();a_8=z$5});function Y$5(q,K){var _=-1,z=q==null?0:q.length,Y=0,A=[];while(++_<z){var O=q[_];if(K(O,_,q))A[Y++]=O}return A}var s_8;var Pa8=L(()=>{s_8=Y$5});function A$5(){return[]}var t_8;var Da8=L(()=>{t_8=A$5});var O$5,$$5,hM7,w$5,iP6;var e_8=L(()=>{Pa8();Da8();O$5=Object.prototype,$$5=O$5.propertyIsEnumerable,hM7=Object.getOwnPropertySymbols,w$5=!hM7?t_8:function(q){if(q==null)return[];return q=Object(q),s_8(hM7(q),function(K){return $$5.call(q,K)})},iP6=w$5});function j$5(q,K){var _=-1,z=Array(q);while(++_<q)z[_]=K(_);return z}var RM7;var SM7=L(()=>{RM7=j$5});function H$5(q){return q!=null&&typeof q==\"object\"}var QP;var Wg=L(()=>{QP=H$5});function M$5(q){return QP(q)&&YL(q)==J$5}var J$5=\"[object Arguments]\",Wa8;var CM7=L(()=>{M_6();Wg();Wa8=M$5});var bM7,X$5,P$5,D$5,al;var Ou6=L(()=>{CM7();Wg();bM7=Object.prototype,X$5=bM7.hasOwnProperty,P$5=bM7.propertyIsEnumerable,D$5=Wa8(function(){return arguments}())?Wa8:function(q){return QP(q)&&X$5.call(q,\"callee\")&&!P$5.call(q,\"callee\")},al=D$5});function W$5(){return!1}var xM7;var IM7=L(()=>{xM7=W$5});var Kz8={};f8(Kz8,{default:()=>fg});var BM7,uM7,f$5,mM7,Z$5,G$5,fg;var $u6=L(()=>{sR();IM7();BM7=typeof Kz8==\"object\"&&Kz8&&!Kz8.nodeType&&Kz8,uM7=BM7&&typeof qz8==\"object\"&&qz8&&!qz8.nodeType&&qz8,f$5=uM7&&uM7.exports===BM7,mM7=f$5?vJ.Buffer:void 0,Z$5=mM7?mM7.isBuffer:void 0,G$5=Z$5||xM7,fg=G$5});function V$5(q,K){var _=typeof q;return K=K==null?v$5:K,!!K&&(_==\"number\"||_!=\"symbol\"&&T$5.test(q))&&(q>-1&&q%1==0&&q<K)}var v$5=9007199254740991,T$5,re;var wu6=L(()=>{T$5=/^(?:0|[1-9]\\d*)$/;re=V$5});function N$5(q){return typeof q==\"number\"&&q>-1&&q%1==0&&q<=k$5}var k$5=9007199254740991,rP6;var _z8=L(()=>{rP6=N$5});function o$5(q){return QP(q)&&rP6(q.length)&&!!G2[YL(q)]}var y$5=\"[object Arguments]\",E$5=\"[object Array]\",L$5=\"[object Boolean]\",h$5=\"[object Date]\",R$5=\"[object Error]\",S$5=\"[object Function]\",C$5=\"[object Map]\",b$5=\"[object Number]\",x$5=\"[object Object]\",I$5=\"[object RegExp]\",u$5=\"[object Set]\",m$5=\"[object String]\",B$5=\"[object WeakMap]\",p$5=\"[object ArrayBuffer]\",g$5=\"[object DataView]\",F$5=\"[object Float32Array]\",U$5=\"[object Float64Array]\",Q$5=\"[object Int8Array]\",d$5=\"[object Int16Array]\",c$5=\"[object Int32Array]\",l$5=\"[object Uint8Array]\",n$5=\"[object Uint8ClampedArray]\",i$5=\"[object Uint16Array]\",r$5=\"[object Uint32Array]\",G2,pM7;var gM7=L(()=>{M_6();_z8();Wg();G2={};G2[F$5]=G2[U$5]=G2[Q$5]=G2[d$5]=G2[c$5]=G2[l$5]=G2[n$5]=G2[i$5]=G2[r$5]=!0;G2[y$5]=G2[E$5]=G2[p$5]=G2[L$5]=G2[g$5]=G2[h$5]=G2[R$5]=G2[S$5]=G2[C$5]=G2[b$5]=G2[x$5]=G2[I$5]=G2[u$5]=G2[m$5]=G2[B$5]=!1;pM7=o$5});function a$5(q){return function(K){return q(K)}}var oP6;var zz8=L(()=>{oP6=a$5});var Az8={};f8(Az8,{default:()=>Zg});var FM7,ju6,s$5,fa8,t$5,Zg;var Oz8=L(()=>{Aa8();FM7=typeof Az8==\"object\"&&Az8&&!Az8.nodeType&&Az8,ju6=FM7&&typeof Yz8==\"object\"&&Yz8&&!Yz8.nodeType&&Yz8,s$5=ju6&&ju6.exports===FM7,fa8=s$5&&g_8.process,t$5=function(){try{var q=ju6&&ju6.require&&ju6.require(\"util\").types;if(q)return q;return fa8&&fa8.binding&&fa8.binding(\"util\")}catch(K){}}(),Zg=t$5});var UM7,e$5,aP6;var $z8=L(()=>{gM7();zz8();Oz8();UM7=Zg&&Zg.isTypedArray,e$5=UM7?oP6(UM7):pM7,aP6=e$5});function _w5(q,K){var _=DO(q),z=!_&&al(q),Y=!_&&!z&&fg(q),A=!_&&!z&&!Y&&aP6(q),O=_||z||Y||A,$=O?RM7(q.length,String):[],w=$.length;for(var j in q)if((K||Kw5.call(q,j))&&!(O&&(j==\"length\"||Y&&(j==\"offset\"||j==\"parent\")||A&&(j==\"buffer\"||j==\"byteLength\"||j==\"byteOffset\")||re(j,w))))$.push(j);return $}var qw5,Kw5,wz8;var Za8=L(()=>{SM7();Ou6();RT();$u6();wu6();$z8();qw5=Object.prototype,Kw5=qw5.hasOwnProperty;wz8=_w5});function Yw5(q){var K=q&&q.constructor,_=typeof K==\"function\"&&K.prototype||zw5;return q===_}var zw5,sP6;var jz8=L(()=>{zw5=Object.prototype;sP6=Yw5});function Aw5(q,K){return function(_){return q(K(_))}}var Hz8;var Ga8=L(()=>{Hz8=Aw5});var Ow5,QM7;var dM7=L(()=>{Ga8();Ow5=Hz8(Object.keys,Object),QM7=Ow5});function jw5(q){if(!sP6(q))return QM7(q);var K=[];for(var _ in Object(q))if(ww5.call(q,_)&&_!=\"constructor\")K.push(_);return K}var $w5,ww5,cM7;var lM7=L(()=>{jz8();dM7();$w5=Object.prototype,ww5=$w5.hasOwnProperty;cM7=jw5});function Hw5(q){return q!=null&&rP6(q.length)&&!FP6(q)}var Gg;var tP6=L(()=>{F_8();_z8();Gg=Hw5});function Jw5(q){return Gg(q)?wz8(q):cM7(q)}var tR;var P_6=L(()=>{Za8();lM7();tP6();tR=Jw5});function Mw5(q){return a_8(q,tR,iP6)}var Hu6;var va8=L(()=>{Xa8();e_8();P_6();Hu6=Mw5});function Ww5(q,K,_,z,Y,A){var O=_&Xw5,$=Hu6(q),w=$.length,j=Hu6(K),H=j.length;if(w!=H&&!O)return!1;var J=w;while(J--){var M=$[J];if(!(O?M in K:Dw5.call(K,M)))return!1}var X=A.get(q),P=A.get(K);if(X&&P)return X==K&&P==q;var D=!0;A.set(q,K),A.set(K,q);var W=O;while(++J<w){M=$[J];var f=q[M],G=K[M];if(z)var Z=O?z(G,f,M,K,q,A):z(f,G,M,q,K,A);if(!(Z===void 0?f===G||Y(f,G,_,z,A):Z)){D=!1;break}W||(W=M==\"constructor\")}if(D&&!W){var v=q.constructor,V=K.constructor;if(v!=V&&((\"constructor\"in q)&&(\"constructor\"in K))&&!(typeof v==\"function\"&&v instanceof v&&typeof V==\"function\"&&V instanceof V))D=!1}return A.delete(q),A.delete(K),D}var Xw5=1,Pw5,Dw5,nM7;var iM7=L(()=>{va8();Pw5=Object.prototype,Dw5=Pw5.hasOwnProperty;nM7=Ww5});var fw5,Jz8;var rM7=L(()=>{le();sR();fw5=ik(vJ,\"DataView\"),Jz8=fw5});var Zw5,Mz8;var oM7=L(()=>{le();sR();Zw5=ik(vJ,\"Promise\"),Mz8=Zw5});var Gw5,oe;var Ta8=L(()=>{le();sR();Gw5=ik(vJ,\"Set\"),oe=Gw5});var vw5,Xz8;var aM7=L(()=>{le();sR();vw5=ik(vJ,\"WeakMap\"),Xz8=vw5});var sM7=\"[object Map]\",Tw5=\"[object Object]\",tM7=\"[object Promise]\",eM7=\"[object Set]\",qX7=\"[object WeakMap]\",KX7=\"[object DataView]\",Vw5,kw5,Nw5,yw5,Ew5,D_6,sl;var Ju6=L(()=>{rM7();Q_8();oM7();Ta8();aM7();M_6();Oa8();Vw5=rl(Jz8),kw5=rl(ne),Nw5=rl(Mz8),yw5=rl(oe),Ew5=rl(Xz8),D_6=YL;if(Jz8&&D_6(new Jz8(new ArrayBuffer(1)))!=KX7||ne&&D_6(new ne)!=sM7||Mz8&&D_6(Mz8.resolve())!=tM7||oe&&D_6(new oe)!=eM7||Xz8&&D_6(new Xz8)!=qX7)D_6=function(q){var K=YL(q),_=K==Tw5?q.constructor:void 0,z=_?rl(_):\"\";if(z)switch(z){case Vw5:return KX7;case kw5:return sM7;case Nw5:return tM7;case yw5:return eM7;case Ew5:return qX7}return K};sl=D_6});function Rw5(q,K,_,z,Y,A){var O=DO(q),$=DO(K),w=O?zX7:sl(q),j=$?zX7:sl(K);w=w==_X7?Pz8:w,j=j==_X7?Pz8:j;var H=w==Pz8,J=j==Pz8,M=w==j;if(M&&fg(q)){if(!fg(K))return!1;O=!0,H=!1}if(M&&!H)return A||(A=new Dg),O||aP6(q)?i_8(q,K,_,z,Y,A):EM7(q,K,w,_,z,Y,A);if(!(_&Lw5)){var X=H&&YX7.call(q,\"__wrapped__\"),P=J&&YX7.call(K,\"__wrapped__\");if(X||P){var D=X?q.value():q,W=P?K.value():K;return A||(A=new Dg),Y(D,W,_,z,A)}}if(!M)return!1;return A||(A=new Dg),nM7(q,K,_,z,Y,A)}var Lw5=1,_X7=\"[object Arguments]\",zX7=\"[object Array]\",Pz8=\"[object Object]\",hw5,YX7,AX7;var OX7=L(()=>{Au6();Ha8();LM7();iM7();Ju6();RT();$u6();$z8();hw5=Object.prototype,YX7=hw5.hasOwnProperty;AX7=Rw5});function $X7(q,K,_,z,Y){if(q===K)return!0;if(q==null||K==null||!QP(q)&&!QP(K))return q!==q&&K!==K;return AX7(q,K,_,z,$X7,Y)}var eP6;var Dz8=L(()=>{OX7();Wg();eP6=$X7});function bw5(q,K,_,z){var Y=_.length,A=Y,O=!z;if(q==null)return!A;q=Object(q);while(Y--){var $=_[Y];if(O&&$[2]?$[1]!==q[$[0]]:!($[0]in q))return!1}while(++Y<A){$=_[Y];var w=$[0],j=q[w],H=$[1];if(O&&$[2]){if(j===void 0&&!(w in q))return!1}else{var J=new Dg;if(z)var M=z(j,H,w,q,K,J);if(!(M===void 0?eP6(H,j,Sw5|Cw5,z,J):M))return!1}}return!0}var Sw5=1,Cw5=2,wX7;var jX7=L(()=>{Au6();Dz8();wX7=bw5});function xw5(q){return q===q&&!PO(q)}var Wz8;var Va8=L(()=>{hT();Wz8=xw5});function Iw5(q){var K=tR(q),_=K.length;while(_--){var z=K[_],Y=q[z];K[_]=[z,Y,Wz8(Y)]}return K}var HX7;var JX7=L(()=>{Va8();P_6();HX7=Iw5});function uw5(q,K){return function(_){if(_==null)return!1;return _[q]===K&&(K!==void 0||(q in Object(_)))}}var fz8;var ka8=L(()=>{fz8=uw5});function mw5(q){var K=HX7(q);if(K.length==1&&K[0][2])return fz8(K[0][0],K[0][1]);return function(_){return _===q||wX7(_,q,K)}}var MX7;var XX7=L(()=>{jX7();JX7();ka8();MX7=mw5});function pw5(q){return typeof q==\"symbol\"||QP(q)&&YL(q)==Bw5}var Bw5=\"[object Symbol]\",ae;var Mu6=L(()=>{M_6();Wg();ae=pw5});function Uw5(q,K){if(DO(q))return!1;var _=typeof q;if(_==\"number\"||_==\"symbol\"||_==\"boolean\"||q==null||ae(q))return!0;return Fw5.test(q)||!gw5.test(q)||K!=null&&q in Object(K)}var gw5,Fw5,qD6;var Zz8=L(()=>{RT();Mu6();gw5=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,Fw5=/^\\w*$/;qD6=Uw5});function Na8(q,K){if(typeof q!=\"function\"||K!=null&&typeof K!=\"function\")throw TypeError(Qw5);var _=function(){var z=arguments,Y=K?K.apply(this,z):z[0],A=_.cache;if(A.has(Y))return A.get(Y);var O=q.apply(this,z);return _.cache=A.set(Y,O)||A,O};return _.cache=new(Na8.Cache||X_6),_}var Qw5=\"Expected a function\",A1;var h4=L(()=>{d_8();Na8.Cache=X_6;A1=Na8});function cw5(q){var K=A1(q,function(z){if(_.size===dw5)_.clear();return z}),_=K.cache;return K}var dw5=500,PX7;var DX7=L(()=>{h4();PX7=cw5});var lw5,nw5,iw5,WX7;var fX7=L(()=>{DX7();lw5=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,nw5=/\\\\(\\\\)?/g,iw5=PX7(function(q){var K=[];if(q.charCodeAt(0)===46)K.push(\"\");return q.replace(lw5,function(_,z,Y,A){K.push(Y?A.replace(nw5,\"$1\"):z||_)}),K}),WX7=iw5});function rw5(q,K){var _=-1,z=q==null?0:q.length,Y=Array(z);while(++_<z)Y[_]=K(q[_],_,q);return Y}var se;var Xu6=L(()=>{se=rw5});function vX7(q){if(typeof q==\"string\")return q;if(DO(q))return se(q,vX7)+\"\";if(ae(q))return GX7?GX7.call(q):\"\";var K=q+\"\";return K==\"0\"&&1/q==-ow5?\"-0\":K}var ow5=1/0,ZX7,GX7,TX7;var VX7=L(()=>{J_6();Xu6();RT();Mu6();ZX7=YW?YW.prototype:void 0,GX7=ZX7?ZX7.toString:void 0;TX7=vX7});function aw5(q){return q==null?\"\":TX7(q)}var KD6;var Gz8=L(()=>{VX7();KD6=aw5});function sw5(q,K){if(DO(q))return q;return qD6(q,K)?[q]:WX7(KD6(q))}var eR;var W_6=L(()=>{RT();Zz8();fX7();Gz8();eR=sw5});function ew5(q){if(typeof q==\"string\"||ae(q))return q;var K=q+\"\";return K==\"0\"&&1/q==-tw5?\"-0\":K}var tw5=1/0,qS;var f_6=L(()=>{Mu6();qS=ew5});function q25(q,K){K=eR(K,q);var _=0,z=K.length;while(q!=null&&_<z)q=q[qS(K[_++])];return _&&_==z?q:void 0}var te;var Pu6=L(()=>{W_6();f_6();te=q25});function K25(q,K,_){var z=q==null?void 0:te(q,K);return z===void 0?_:z}var kX7;var NX7=L(()=>{Pu6();kX7=K25});function _25(q,K){return q!=null&&K in Object(q)}var yX7;var EX7=L(()=>{yX7=_25});function z25(q,K,_){K=eR(K,q);var z=-1,Y=K.length,A=!1;while(++z<Y){var O=qS(K[z]);if(!(A=q!=null&&_(q,O)))break;q=q[O]}if(A||++z!=Y)return A;return Y=q==null?0:q.length,!!Y&&rP6(Y)&&re(O,Y)&&(DO(q)||al(q))}var LX7;var hX7=L(()=>{W_6();Ou6();RT();wu6();_z8();f_6();LX7=z25});function Y25(q,K){return q!=null&&LX7(q,K,yX7)}var RX7;var SX7=L(()=>{EX7();hX7();RX7=Y25});function $25(q,K){if(qD6(q)&&Wz8(K))return fz8(qS(q),K);return function(_){var z=kX7(_,q);return z===void 0&&z===K?RX7(_,q):eP6(K,z,A25|O25)}}var A25=1,O25=2,CX7;var bX7=L(()=>{Dz8();NX7();SX7();Zz8();Va8();ka8();f_6();CX7=$25});function w25(q){return q}var _D6;var vz8=L(()=>{_D6=w25});function j25(q){return function(K){return K==null?void 0:K[q]}}var xX7;var IX7=L(()=>{xX7=j25});function H25(q){return function(K){return te(K,q)}}var uX7;var mX7=L(()=>{Pu6();uX7=H25});function J25(q){return qD6(q)?xX7(qS(q)):uX7(q)}var BX7;var pX7=L(()=>{IX7();mX7();Zz8();f_6();BX7=J25});function M25(q){if(typeof q==\"function\")return q;if(q==null)return _D6;if(typeof q==\"object\")return DO(q)?CX7(q[0],q[1]):MX7(q);return BX7(q)}var rk;var ee=L(()=>{XX7();bX7();vz8();RT();pX7();rk=M25});function X25(q,K){var _,z=-1,Y=q.length;while(++z<Y){var A=K(q[z]);if(A!==void 0)_=_===void 0?A:_+A}return _}var gX7;var FX7=L(()=>{gX7=X25});function P25(q,K){return q&&q.length?gX7(q,rk(K,2)):0}var zD6;var UX7=L(()=>{ee();FX7();zD6=P25});import{randomUUID as Du6}from\"crypto\";var ya8=()=>{};function QX7(){return Ea8}function dX7(q){Ea8=q}function cX7(q){return Tz8.has(q)?Tz8.get(q):void 0}function lX7(q,K){Tz8.set(q,K)}function nX7(q){return La8.get(q)}function iX7(q,K){La8.set(q,K)}function AW(){Ea8=null,Tz8.clear(),La8.clear()}function Vz8(){return ha8}function rX7(q){ha8=q}function oX7(){ha8=void 0}var Ea8=null,Tz8,La8,ha8;var tl=L(()=>{Tz8=new Map;La8=new Map});function E9(){let q=new Set;return{subscribe(K){return q.add(K),()=>{q.delete(K)}},emit(...K){for(let _ of q)_(...K)},clear(){q.clear()}}}var DD6={};f8(DD6,{waitForScrollIdle:()=>Vu6,updateLastInteractionTime:()=>G_6,switchSession:()=>Yf,snapshotOutputTokensForTurn:()=>h25,setUserMsgOptIn:()=>Vg,setUseCoworkPlugins:()=>OL,setTracerProvider:()=>xz8,setThinkingClearLatched:()=>Yt8,setTeleportedSessionInfo:()=>Bu6,setSystemPromptSectionCacheEntry:()=>is8,setStrictToolResultPairing:()=>I25,setStatsStore:()=>ca8,setSessionTrustAccepted:()=>Iu6,setSessionSource:()=>fs8,setSessionPersistenceDisabled:()=>ms8,setSessionIngressToken:()=>y_6,setSessionBypassPermissionsMode:()=>Is8,setSdkBetas:()=>Ys8,setSdkAgentProgressSummariesEnabled:()=>Ps8,setScheduledTasksEnabled:()=>bu6,setQuestionPreviewFormat:()=>uz8,setPromptId:()=>Fu6,setPromptCache1hAllowlist:()=>ss8,setProjectRoot:()=>fu6,setOriginalCwd:()=>KS,setOauthTokenFromFd:()=>Vs8,setNeedsPlanModeExitAttachment:()=>gI,setNeedsAutoModeExitAttachment:()=>CG,setModelStrings:()=>Nu6,setMeterProvider:()=>bz8,setMeter:()=>As8,setMemoryToggledOff:()=>Ws8,setMainThreadAgentType:()=>_n,setMainLoopModelOverride:()=>dP,setLspRecommendationShownThisSession:()=>Us8,setLoopChainStartedAt:()=>g25,setLoggerProvider:()=>Sz8,setLastMainRequestId:()=>ea8,setLastEmittedDate:()=>PD6,setLastClassifierRequests:()=>hu6,setLastApiCompletionTimestamp:()=>Tu6,setLastAPIRequestMessages:()=>Ls8,setLastAPIRequest:()=>ys8,setKairosActive:()=>x25,setIsRemoteMode:()=>ls8,setIsInteractive:()=>Ms8,setInlinePlugins:()=>bs8,setInitialMainLoopModel:()=>zs8,setInitJsonSchema:()=>Qs8,setHasUnknownModelCost:()=>hz8,setHasExitedPlanMode:()=>$L,setHasDevChannels:()=>Qz8,setFlagSettingsPath:()=>Zs8,setFlagSettingsInline:()=>Gs8,setFastModeHeaderLatched:()=>Kt8,setEventLogger:()=>Cz8,setDirectConnectServerUrl:()=>W25,setCwdState:()=>Ia8,setCostStateForRestore:()=>ku6,setClientType:()=>Xs8,setChromeFlagOverride:()=>xs8,setCachedClaudeMdContent:()=>hs8,setCacheEditingHeaderLatched:()=>d25,setApiKeyFromFd:()=>Ns8,setAllowedSettingSources:()=>Cs8,setAllowedChannels:()=>zn,setAfkModeHeaderLatched:()=>es8,setAdditionalDirectoriesForClaudeMd:()=>pu6,setActiveRoutine:()=>Z25,resetTurnToolDuration:()=>Ua8,resetTurnHookDuration:()=>Fa8,resetTurnClassifierDuration:()=>da8,resetTotalDurationStateAndCost_FOR_TESTS_ONLY:()=>G25,resetStateForTests:()=>_P7,resetSdkInitState:()=>YP7,resetModelStringsForTestingOnly:()=>C25,resetCostState:()=>OD6,removeSessionCronTasks:()=>xu6,registerHookCallbacks:()=>z66,regenerateSessionId:()=>Sa8,preferThirdPartyAuthentication:()=>Ru6,onSessionSwitch:()=>xa8,onInteraction:()=>ra8,needsPlanModeExitAttachment:()=>Bs8,needsAutoModeExitAttachment:()=>ps8,markScrollActivity:()=>Ks8,markPostCompaction:()=>K66,markFirstTeleportMessageLogged:()=>Fz8,isSessionPersistenceDisabled:()=>ok,incrementBudgetContinuationCount:()=>S25,hasUnknownModelCost:()=>ta8,hasShownLspRecommendationThisSession:()=>Fs8,hasExitedPlanModeInSession:()=>uu6,handlePlanModeTransition:()=>Kn,handleAutoModeTransition:()=>gs8,getUserMsgOptIn:()=>AL,getUseCoworkPlugins:()=>Cu6,getUsageForModel:()=>_s8,getTurnToolDurationMs:()=>V25,getTurnToolCount:()=>k25,getTurnOutputTokens:()=>E25,getTurnHookDurationMs:()=>v25,getTurnHookCount:()=>T25,getTurnClassifierDurationMs:()=>N25,getTurnClassifierCount:()=>y25,getTracerProvider:()=>N_6,getTotalWebSearchRequests:()=>oa8,getTotalToolDuration:()=>ga8,getTotalOutputTokens:()=>el,getTotalLinesRemoved:()=>T_6,getTotalLinesAdded:()=>v_6,getTotalInputTokens:()=>V_6,getTotalDuration:()=>YD6,getTotalCostUSD:()=>XM,getTotalCacheReadInputTokens:()=>Zu6,getTotalCacheCreationInputTokens:()=>Gu6,getTotalAPIDurationWithoutRetries:()=>pa8,getTotalAPIDuration:()=>RG,getTokenCounter:()=>wD6,getThinkingClearLatched:()=>zt8,getTeleportedSessionInfo:()=>gz8,getSystemPromptSectionCache:()=>ns8,getStrictToolResultPairing:()=>Ds8,getStatsStore:()=>q66,getSlowOperations:()=>OP7,getSessionTrustAccepted:()=>MD6,getSessionSource:()=>u25,getSessionProjectDir:()=>Z_6,getSessionIngressToken:()=>vs8,getSessionId:()=>N8,getSessionCronTasks:()=>L_6,getSessionCreatedTeams:()=>mu6,getSessionCounter:()=>Os8,getSessionBypassPermissionsMode:()=>E_6,getSdkBetas:()=>OW,getSdkAgentProgressSummariesEnabled:()=>vg,getScheduledTasksEnabled:()=>JD6,getRegisteredHooks:()=>zS,getQuestionPreviewFormat:()=>Iz8,getPromptId:()=>gu6,getPromptCache1hAllowlist:()=>as8,getProjectRoot:()=>wz,getPrCounter:()=>yu6,getPlanSlugCache:()=>h_6,getParentSessionId:()=>Ca8,getOriginalCwd:()=>A7,getOauthTokenFromFd:()=>Ts8,getModelUsage:()=>ST,getModelStrings:()=>$D6,getMeterProvider:()=>Js8,getMeter:()=>b25,getMemoryToggledOff:()=>Tg,getMainThreadAgentType:()=>Ng,getMainLoopModelOverride:()=>pI,getLoopChainStartedAt:()=>p25,getLoggerProvider:()=>Lu6,getLocCounter:()=>Rz8,getLastMainRequestId:()=>vu6,getLastInteractionTime:()=>_S,getLastEmittedDate:()=>os8,getLastClassifierRequests:()=>zP7,getLastApiCompletionTimestamp:()=>qn,getLastAPIRequestMessages:()=>m25,getLastAPIRequest:()=>Es8,getKairosActive:()=>SG,getIsScrollDraining:()=>k_6,getIsRemoteMode:()=>cK,getIsNonInteractiveSession:()=>d7,getIsInteractive:()=>CT,getInvokedSkillsForAgent:()=>ds8,getInvokedSkills:()=>Q25,getInlinePlugins:()=>kg,getInitialMainLoopModel:()=>AD6,getInitJsonSchema:()=>Bz8,getHasDevChannels:()=>Uz8,getFlagSettingsPath:()=>_66,getFlagSettingsInline:()=>HD6,getFastModeHeaderLatched:()=>qt8,getEventLogger:()=>Hs8,getDirectConnectServerUrl:()=>ua8,getCwdState:()=>BI,getCurrentTurnTokenBudget:()=>L25,getCostCounter:()=>ws8,getCommitCounter:()=>$s8,getCodeEditToolDecisionCounter:()=>Eu6,getClientType:()=>jD6,getChromeFlagOverride:()=>Su6,getCachedClaudeMdContent:()=>Rs8,getCacheEditingHeaderLatched:()=>_t8,getBudgetContinuationCount:()=>R25,getApiKeyFromFd:()=>ks8,getAllowedSettingSources:()=>Ss8,getAllowedChannels:()=>TJ,getAgentColorMap:()=>mz8,getAfkModeHeaderLatched:()=>ts8,getAdditionalDirectoriesForClaudeMd:()=>bG,getActiveTimeCounter:()=>js8,getActiveRoutine:()=>f25,flushInteractionTime:()=>na8,deleteLoopChainStartedAt:()=>F25,consumePostCompaction:()=>qs8,clearSystemPromptSectionState:()=>rs8,clearRegisteredPluginHooks:()=>pz8,clearRegisteredHooks:()=>U25,clearInvokedSkillsForAgent:()=>Y66,clearInvokedSkills:()=>cs8,clearBetaHeaderLatches:()=>At8,addToTurnHookDuration:()=>yz8,addToTurnClassifierDuration:()=>Qa8,addToTotalLinesChanged:()=>Ez8,addToTotalDurationState:()=>ma8,addToTotalCostState:()=>Ba8,addToToolDuration:()=>Nz8,addToInMemoryErrorLog:()=>B25,addSlowOperation:()=>AP7,addSessionCronTask:()=>us8,addInvokedSkill:()=>XD6});import{realpathSync as aX7}from\"fs\";import{cwd as D25}from\"process\";function eX7(){let q=\"\";if(typeof process<\"u\"&&typeof process.cwd===\"function\"&&typeof aX7===\"function\"){let _=D25();try{q=aX7(_).normalize(\"NFC\")}catch{q=_.normalize(\"NFC\")}}return{originalCwd:q,projectRoot:q,totalCostUSD:0,totalAPIDuration:0,totalAPIDurationWithoutRetries:0,totalToolDuration:0,turnHookDurationMs:0,turnToolDurationMs:0,turnClassifierDurationMs:0,turnToolCount:0,turnHookCount:0,turnClassifierCount:0,startTime:Date.now(),lastInteractionTime:Date.now(),totalLinesAdded:0,totalLinesRemoved:0,hasUnknownModelCost:!1,cwd:q,modelUsage:{},mainLoopModelOverride:void 0,initialMainLoopModel:null,modelStrings:null,isInteractive:!1,kairosActive:!1,strictToolResultPairing:!1,memoryToggledOff:!1,sdkAgentProgressSummariesEnabled:!1,userMsgOptIn:!1,clientType:\"cli\",sessionSource:void 0,questionPreviewFormat:void 0,sessionIngressToken:void 0,oauthTokenFromFd:void 0,apiKeyFromFd:void 0,flagSettingsPath:void 0,flagSettingsInline:null,allowedSettingSources:[\"userSettings\",\"projectSettings\",\"localSettings\",\"flagSettings\",\"policySettings\"],meter:null,sessionCounter:null,locCounter:null,prCounter:null,commitCounter:null,costCounter:null,tokenCounter:null,codeEditToolDecisionCounter:null,activeTimeCounter:null,statsStore:null,sessionId:Du6(),parentSessionId:void 0,loggerProvider:null,eventLogger:null,meterProvider:null,tracerProvider:null,agentColorMap:new Map,agentColorIndex:0,lastAPIRequest:null,lastAPIRequestMessages:null,lastClassifierRequests:null,cachedClaudeMdContent:null,inMemoryErrorLog:[],inlinePlugins:[],chromeFlagOverride:void 0,useCoworkPlugins:!1,sessionBypassPermissionsMode:!1,scheduledTasksEnabled:!1,sessionCronTasks:[],loopChainStartedAt:Object.create(null),sessionCreatedTeams:new Set,sessionTrustAccepted:!1,sessionPersistenceDisabled:!1,hasExitedPlanMode:!1,needsPlanModeExitAttachment:!1,needsAutoModeExitAttachment:!1,lspRecommendationShownThisSession:!1,initJsonSchema:null,registeredHooks:null,planSlugCache:new Map,teleportedSessionInfo:null,invokedSkills:new Map,slowOperations:[],sdkBetas:void 0,mainThreadAgentType:void 0,isRemoteMode:!1,...!1,directConnectServerUrl:void 0,activeRoutine:void 0,systemPromptSectionCache:new Map,lastEmittedDate:null,additionalDirectoriesForClaudeMd:[],allowedChannels:[],hasDevChannels:!1,sessionProjectDir:null,promptCache1hAllowlist:null,afkModeHeaderLatched:null,fastModeHeaderLatched:null,cacheEditingHeaderLatched:null,thinkingClearLatched:null,promptId:null,lastMainRequestId:void 0,lastApiCompletionTimestamp:null,pendingPostCompaction:!1}}function N8(){return G8.sessionId}function Sa8(q={}){if(q.setCurrentAsParent)G8.parentSessionId=G8.sessionId;return G8.planSlugCache.delete(G8.sessionId),G8.sessionId=Du6(),G8.sessionProjectDir=null,G8.sessionId}function Ca8(){return G8.parentSessionId}function Yf(q,K=null){if(G8.sessionId!==q)G8.planSlugCache.delete(G8.sessionId);G8.sessionId=q,G8.sessionProjectDir=K,ba8.emit(q)}function Z_6(){return G8.sessionProjectDir}function A7(){return G8.originalCwd}function wz(){return G8.projectRoot}function KS(q){G8.originalCwd=q.normalize(\"NFC\")}function fu6(q){G8.projectRoot=q.normalize(\"NFC\")}function BI(){return G8.cwd}function Ia8(q){G8.cwd=q.normalize(\"NFC\")}function ua8(){return G8.directConnectServerUrl}function W25(q){G8.directConnectServerUrl=q}function f25(){return G8.activeRoutine}function Z25(q){G8.activeRoutine=q}function ma8(q,K){G8.totalAPIDuration+=q,G8.totalAPIDurationWithoutRetries+=K}function G25(){G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalCostUSD=0}function Ba8(q,K,_){G8.modelUsage[_]=K,G8.totalCostUSD+=q}function XM(){return G8.totalCostUSD}function RG(){return G8.totalAPIDuration}function YD6(){return Date.now()-G8.startTime}function pa8(){return G8.totalAPIDurationWithoutRetries}function ga8(){return G8.totalToolDuration}function Nz8(q){G8.totalToolDuration+=q,G8.turnToolDurationMs+=q,G8.turnToolCount++}function v25(){return G8.turnHookDurationMs}function yz8(q){G8.turnHookDurationMs+=q,G8.turnHookCount++}function Fa8(){G8.turnHookDurationMs=0,G8.turnHookCount=0}function T25(){return G8.turnHookCount}function V25(){return G8.turnToolDurationMs}function Ua8(){G8.turnToolDurationMs=0,G8.turnToolCount=0}function k25(){return G8.turnToolCount}function N25(){return G8.turnClassifierDurationMs}function Qa8(q){G8.turnClassifierDurationMs+=q,G8.turnClassifierCount++}function da8(){G8.turnClassifierDurationMs=0,G8.turnClassifierCount=0}function y25(){return G8.turnClassifierCount}function q66(){return G8.statsStore}function ca8(q){G8.statsStore=q}function G_6(q){if(q)qP7();else la8=!0}function na8(){if(la8)qP7()}function qP7(){G8.lastInteractionTime=Date.now(),la8=!1,ia8.emit()}function Ez8(q,K){G8.totalLinesAdded+=q,G8.totalLinesRemoved+=K}function v_6(){return G8.totalLinesAdded}function T_6(){return G8.totalLinesRemoved}function V_6(){return zD6(Object.values(G8.modelUsage),\"inputTokens\")}function el(){return zD6(Object.values(G8.modelUsage),\"outputTokens\")}function Zu6(){return zD6(Object.values(G8.modelUsage),\"cacheReadInputTokens\")}function Gu6(){return zD6(Object.values(G8.modelUsage),\"cacheCreationInputTokens\")}function oa8(){return zD6(Object.values(G8.modelUsage),\"webSearchRequests\")}function E25(){return el()-aa8}function L25(){return sa8}function h25(q){aa8=el(),sa8=q,Lz8=0}function R25(){return Lz8}function S25(){Lz8++}function hz8(){G8.hasUnknownModelCost=!0}function ta8(){return G8.hasUnknownModelCost}function vu6(){return G8.lastMainRequestId}function ea8(q){G8.lastMainRequestId=q}function qn(){return G8.lastApiCompletionTimestamp}function Tu6(q){G8.lastApiCompletionTimestamp=q}function K66(){G8.pendingPostCompaction=!0}function qs8(){let q=G8.pendingPostCompaction;return G8.pendingPostCompaction=!1,q}function _S(){return G8.lastInteractionTime}function Ks8(){if(kz8=!0,Wu6)clearTimeout(Wu6);Wu6=setTimeout(()=>{kz8=!1,Wu6=void 0},KP7),Wu6.unref?.()}function k_6(){return kz8}async function Vu6(){while(kz8)await new Promise((q)=>setTimeout(q,KP7).unref?.())}function ST(){return G8.modelUsage}function _s8(q){return G8.modelUsage[q]}function pI(){return G8.mainLoopModelOverride}function AD6(){return G8.initialMainLoopModel}function dP(q){G8.mainLoopModelOverride=q}function zs8(q){G8.initialMainLoopModel=q}function OW(){return G8.sdkBetas}function Ys8(q){G8.sdkBetas=q}function OD6(){G8.totalCostUSD=0,G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalToolDuration=0,G8.startTime=Date.now(),G8.totalLinesAdded=0,G8.totalLinesRemoved=0,G8.hasUnknownModelCost=!1,G8.modelUsage={},G8.promptId=null}function ku6({totalCostUSD:q,totalAPIDuration:K,totalAPIDurationWithoutRetries:_,totalToolDuration:z,totalLinesAdded:Y,totalLinesRemoved:A,lastDuration:O,modelUsage:$}){if(G8.totalCostUSD=q,G8.totalAPIDuration=K,G8.totalAPIDurationWithoutRetries=_,G8.totalToolDuration=z,G8.totalLinesAdded=Y,G8.totalLinesRemoved=A,$)G8.modelUsage=$;if(O)G8.startTime=Date.now()-O}function _P7(){throw Error(\"resetStateForTests can only be called in tests\")}function $D6(){return G8.modelStrings}function Nu6(q){G8.modelStrings=q}function C25(){G8.modelStrings=null}function As8(q,K){G8.meter=q,G8.sessionCounter=K(\"claude_code.session.count\",{description:\"Count of CLI sessions started\"}),G8.locCounter=K(\"claude_code.lines_of_code.count\",{description:\"Count of lines of code modified, with the 'type' attribute indicating whether lines were added or removed\"}),G8.prCounter=K(\"claude_code.pull_request.count\",{description:\"Number of pull requests created\"}),G8.commitCounter=K(\"claude_code.commit.count\",{description:\"Number of git commits created\"}),G8.costCounter=K(\"claude_code.cost.usage\",{description:\"Cost of the Claude Code session\",unit:\"USD\"}),G8.tokenCounter=K(\"claude_code.token.usage\",{description:\"Number of tokens used\",unit:\"tokens\"}),G8.codeEditToolDecisionCounter=K(\"claude_code.code_edit_tool.decision\",{description:\"Count of code editing tool permission decisions (accept/reject) for Edit, Write, and NotebookEdit tools\"}),G8.activeTimeCounter=K(\"claude_code.active_time.total\",{description:\"Total active time in seconds\",unit:\"s\"})}function b25(){return G8.meter}function Os8(){return G8.sessionCounter}function Rz8(){return G8.locCounter}function yu6(){return G8.prCounter}function $s8(){return G8.commitCounter}function ws8(){return G8.costCounter}function wD6(){return G8.tokenCounter}function Eu6(){return G8.codeEditToolDecisionCounter}function js8(){return G8.activeTimeCounter}function Lu6(){return G8.loggerProvider}function Sz8(q){G8.loggerProvider=q}function Hs8(){return G8.eventLogger}function Cz8(q){G8.eventLogger=q}function Js8(){return G8.meterProvider}function bz8(q){G8.meterProvider=q}function N_6(){return G8.tracerProvider}function xz8(q){G8.tracerProvider=q}function d7(){return!G8.isInteractive}function CT(){return G8.isInteractive}function Ms8(q){G8.isInteractive=q}function jD6(){return G8.clientType}function Xs8(q){G8.clientType=q}function vg(){return G8.sdkAgentProgressSummariesEnabled}function Ps8(q){G8.sdkAgentProgressSummariesEnabled=q}function SG(){return G8.kairosActive}function x25(q){G8.kairosActive=q}function Ds8(){return G8.strictToolResultPairing}function I25(q){G8.strictToolResultPairing=q}function Tg(){return G8.memoryToggledOff}function Ws8(q){G8.memoryToggledOff=q}function AL(){return G8.userMsgOptIn}function Vg(q){G8.userMsgOptIn=q}function u25(){return G8.sessionSource}function fs8(q){G8.sessionSource=q}function Iz8(){return G8.questionPreviewFormat}function uz8(q){G8.questionPreviewFormat=q}function mz8(){return G8.agentColorMap}function _66(){return G8.flagSettingsPath}function Zs8(q){G8.flagSettingsPath=q}function HD6(){return G8.flagSettingsInline}function Gs8(q){G8.flagSettingsInline=q}function vs8(){return G8.sessionIngressToken}function y_6(q){G8.sessionIngressToken=q}function Ts8(){return G8.oauthTokenFromFd}function Vs8(q){G8.oauthTokenFromFd=q}function ks8(){return G8.apiKeyFromFd}function Ns8(q){G8.apiKeyFromFd=q}function ys8(q){G8.lastAPIRequest=q}function Es8(){return G8.lastAPIRequest}function Ls8(q){G8.lastAPIRequestMessages=q}function m25(){return G8.lastAPIRequestMessages}function hu6(q){G8.lastClassifierRequests=q}function zP7(){return G8.lastClassifierRequests}function hs8(q){G8.cachedClaudeMdContent=q}function Rs8(){return G8.cachedClaudeMdContent}function B25(q){if(G8.inMemoryErrorLog.length>=100)G8.inMemoryErrorLog.shift();G8.inMemoryErrorLog.push(q)}function Ss8(){return G8.allowedSettingSources}function Cs8(q){G8.allowedSettingSources=q}function Ru6(){return d7()&&G8.clientType!==\"claude-vscode\"}function bs8(q){G8.inlinePlugins=q}function kg(){return G8.inlinePlugins}function xs8(q){G8.chromeFlagOverride=q}function Su6(){return G8.chromeFlagOverride}function OL(q){G8.useCoworkPlugins=q,AW()}function Cu6(){return G8.useCoworkPlugins}function Is8(q){G8.sessionBypassPermissionsMode=q}function E_6(){return G8.sessionBypassPermissionsMode}function bu6(q){G8.scheduledTasksEnabled=q}function JD6(){return G8.scheduledTasksEnabled}function L_6(){return G8.sessionCronTasks}function us8(q){G8.sessionCronTasks.push(q)}function p25(q){return G8.loopChainStartedAt[q]}function g25(q,K){G8.loopChainStartedAt[q]=K}function F25(q){delete G8.loopChainStartedAt[q]}function xu6(q){if(q.length===0)return 0;let K=new Set(q),_=G8.sessionCronTasks.filter((Y)=>!K.has(Y.id)),z=G8.sessionCronTasks.length-_.length;if(z===0)return 0;return G8.sessionCronTasks=_,z}function Iu6(q){G8.sessionTrustAccepted=q}function MD6(){return G8.sessionTrustAccepted}function ms8(q){G8.sessionPersistenceDisabled=q}function ok(){return G8.sessionPersistenceDisabled}function uu6(){return G8.hasExitedPlanMode}function $L(q){G8.hasExitedPlanMode=q}function Bs8(){return G8.needsPlanModeExitAttachment}function gI(q){G8.needsPlanModeExitAttachment=q}function Kn(q,K){if(K===\"plan\"&&q!==\"plan\")G8.needsPlanModeExitAttachment=!1;if(q===\"plan\"&&K!==\"plan\")G8.needsPlanModeExitAttachment=!0}function ps8(){return G8.needsAutoModeExitAttachment}function CG(q){G8.needsAutoModeExitAttachment=q}function gs8(q,K){if(q===\"auto\"&&K===\"plan\"||q===\"plan\"&&K===\"auto\")return;let _=q===\"auto\",z=K===\"auto\";if(z&&!_)G8.needsAutoModeExitAttachment=!1;if(_&&!z)G8.needsAutoModeExitAttachment=!0}function Fs8(){return G8.lspRecommendationShownThisSession}function Us8(q){G8.lspRecommendationShownThisSession=q}function Qs8(q){G8.initJsonSchema=q}function Bz8(){return G8.initJsonSchema}function z66(q){if(!G8.registeredHooks)G8.registeredHooks={};for(let[K,_]of Object.entries(q)){let z=K;if(!G8.registeredHooks[z])G8.registeredHooks[z]=[];G8.registeredHooks[z].push(..._)}}function zS(){return G8.registeredHooks}function U25(){G8.registeredHooks=null}function pz8(){if(!G8.registeredHooks)return;let q={};for(let[K,_]of Object.entries(G8.registeredHooks)){let z=_.filter((Y)=>!(\"pluginRoot\"in Y));if(z.length>0)q[K]=z}G8.registeredHooks=Object.keys(q).length>0?q:null}function YP7(){G8.initJsonSchema=null,G8.registeredHooks=null}function h_6(){return G8.planSlugCache}function mu6(){return G8.sessionCreatedTeams}function Bu6(q){G8.teleportedSessionInfo={isTeleported:!0,hasLoggedFirstMessage:!1,sessionId:q.sessionId}}function gz8(){return G8.teleportedSessionInfo}function Fz8(){if(G8.teleportedSessionInfo)G8.teleportedSessionInfo.hasLoggedFirstMessage=!0}function XD6(q,K,_,z=null){let Y=`${z??\"\"}:${q}`;G8.invokedSkills.set(Y,{skillName:q,skillPath:K,content:_,invokedAt:Date.now(),agentId:z})}function Q25(){return G8.invokedSkills}function ds8(q){let K=q??null,_=new Map;for(let[z,Y]of G8.invokedSkills)if(Y.agentId===K)_.set(z,Y);return _}function cs8(q){if(!q||q.size===0){G8.invokedSkills.clear();return}for(let[K,_]of G8.invokedSkills)if(_.agentId===null||!q.has(_.agentId))G8.invokedSkills.delete(K)}function Y66(q){for(let[K,_]of G8.invokedSkills)if(_.agentId===q)G8.invokedSkills.delete(K)}function AP7(q,K){return}function OP7(){if(G8.slowOperations.length===0)return tX7;let q=Date.now();if(G8.slowOperations.some((K)=>q-K.timestamp>=Ra8)){if(G8.slowOperations=G8.slowOperations.filter((K)=>q-K.timestamp<Ra8),G8.slowOperations.length===0)return tX7}return G8.slowOperations}function Ng(){return G8.mainThreadAgentType}function _n(q){G8.mainThreadAgentType=q}function cK(){return G8.isRemoteMode}function ls8(q){G8.isRemoteMode=q}function ns8(){return G8.systemPromptSectionCache}function is8(q,K){G8.systemPromptSectionCache.set(q,K)}function rs8(){G8.systemPromptSectionCache.clear()}function os8(){return G8.lastEmittedDate}function PD6(q){G8.lastEmittedDate=q}function bG(){return G8.additionalDirectoriesForClaudeMd}function pu6(q){G8.additionalDirectoriesForClaudeMd=q}function TJ(){return G8.allowedChannels}function zn(q){G8.allowedChannels=q}function Uz8(){return G8.hasDevChannels}function Qz8(q){G8.hasDevChannels=q}function as8(){return G8.promptCache1hAllowlist}function ss8(q){G8.promptCache1hAllowlist=q}function ts8(){return G8.afkModeHeaderLatched}function es8(q){G8.afkModeHeaderLatched=q}function qt8(){return G8.fastModeHeaderLatched}function Kt8(q){G8.fastModeHeaderLatched=q}function _t8(){return G8.cacheEditingHeaderLatched}function d25(q){G8.cacheEditingHeaderLatched=q}function zt8(){return G8.thinkingClearLatched}function Yt8(q){G8.thinkingClearLatched=q}function At8(){G8.afkModeHeaderLatched=null,G8.fastModeHeaderLatched=null,G8.cacheEditingHeaderLatched=null,G8.thinkingClearLatched=null}function gu6(){return G8.promptId}function Fu6(q){G8.promptId=q}var G8,ba8,xa8,la8=!1,ia8,ra8,aa8=0,sa8=null,Lz8=0,kz8=!1,Wu6,KP7=150,sX7=10,Ra8=1e4,tX7;var v8=L(()=>{UX7();ya8();tl();G8=eX7();ba8=E9(),xa8=ba8.subscribe;ia8=E9(),ra8=ia8.subscribe;tX7=[]});function dz8(q){let K;for(let _ in q)if(_.startsWith(\"_PROTO_\")){if(K===void 0)K={...q};delete K[_]}return K??q}function $P7(q){if(A66!==null)return;if(A66=q,Uu6.length>0){let K=[...Uu6];Uu6.length=0,queueMicrotask(()=>{for(let _ of K)if(_.async)A66.logEventAsync(_.eventName,_.metadata);else A66.logEvent(_.eventName,_.metadata)})}}function d(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!1});return}A66.logEvent(q,K)}async function wP7(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!0});return}await A66.logEventAsync(q,K)}var Uu6,A66=null;var T8=L(()=>{Uu6=[]});function WD6({writeFn:q,flushIntervalMs:K=1000,maxBufferSize:_=100,maxBufferBytes:z=1/0,immediateMode:Y=!1}){let A=[],O=0,$=null,w=null;function j(){if($)clearTimeout($),$=null}function H(){if(w)q(w.join(\"\")),w=null;if(A.length===0)return;q(A.join(\"\")),A=[],O=0,j()}function J(){if(!$)$=setTimeout(H,K)}function M(){if(w){w.push(...A),A=[],O=0,j();return}let X=A;A=[],O=0,j(),w=X,setImmediate(()=>{let P=w;if(w=null,P)q(P.join(\"\"))})}return{write(X){if(Y){q(X);return}if(A.push(X),O+=X.length,J(),A.length>=_||O>=z)M()},flush:H,dispose(){H()}}}function gq(q){return Ot8.add(q),()=>Ot8.delete(q)}async function jP7(){await Promise.all(Array.from(Ot8).map((q)=>q()))}var Ot8;var o9=L(()=>{Ot8=new Set});function c25(q){let K=[],_=q.match(/^MCP server [\"']([^\"']+)[\"']/);if(_&&_[1])K.push(\"mcp\"),K.push(_[1].toLowerCase());else{let A=q.match(/^([^:[]+):/);if(A&&A[1])K.push(A[1].trim().toLowerCase())}let z=q.match(/^\\[([^\\]]+)]/);if(z&&z[1])K.push(z[1].trim().toLowerCase());if(q.toLowerCase().includes(\"1p event:\"))K.push(\"1p\");let Y=q.match(/:\\s*([^:]+?)(?:\\s+(?:type|mode|status|event))?:/);if(Y&&Y[1]){let A=Y[1].trim().toLowerCase();if(A.length<30&&!A.includes(\" \"))K.push(A)}return Array.from(new Set(K))}function l25(q,K){if(!K)return!0;if(q.length===0)return!1;if(K.isExclusive)return!q.some((_)=>K.exclude.includes(_));else return q.some((_)=>K.include.includes(_))}function JP7(q,K){if(!K)return!0;let _=c25(q);return l25(_,K)}var HP7;var MP7=L(()=>{h4();HP7=A1((q)=>{if(!q||q.trim()===\"\")return null;let K=q.split(\",\").map((A)=>A.trim()).filter(Boolean);if(K.length===0)return null;let _=K.some((A)=>A.startsWith(\"!\")),z=K.some((A)=>!A.startsWith(\"!\"));if(_&&z)return null;let Y=K.map((A)=>A.replace(/^!/,\"\").toLowerCase());return{include:_?[]:Y,exclude:_?Y:[],isExclusive:_}})});import{homedir as n25}from\"os\";import{join as XP7}from\"path\";function fD6(){return XP7(O7(),\"teams\")}function ZD6(q){let K=process.env.NODE_OPTIONS;if(!K)return!1;return K.split(/\\s+/).includes(q)}function Yn(q,K){if(q===void 0)return K;let _=parseInt(q,10);return Number.isNaN(_)?K:_}function B6(q){if(!q)return!1;if(typeof q===\"boolean\")return q;let K=q.toLowerCase().trim();return[\"1\",\"true\",\"yes\",\"on\"].includes(K)}function a9(q){if(q===void 0)return!1;if(typeof q===\"boolean\")return!q;if(!q)return!1;let K=q.toLowerCase().trim();return[\"0\",\"false\",\"no\",\"off\"].includes(K)}function D9(){return B6(process.env.CLAUDE_CODE_SIMPLE)||process.argv.includes(\"--bare\")}function PP7(q){let K={};if(q)for(let _ of q){let[z,...Y]=_.split(\"=\");if(!z||Y.length===0)throw Error(`Invalid environment variable format: ${_}, environment variables should be added as: -e KEY1=value1 -e KEY2=value2`);K[z]=Y.join(\"=\")}return K}function YS(){return process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION||\"us-east-1\"}function cz8(){return process.env.CLOUD_ML_REGION||\"us-east5\"}function DP7(){return B6(process.env.CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR)}function Af(){return!1}function AS(){return!1}function WP7(){return{namespace:void 0,cluster:void 0}}function lz8(q){if(q){let K=i25.find(([_])=>q.startsWith(_));if(K)return process.env[K[1]]||cz8()}return cz8()}var O7,i25;var B8=L(()=>{h4();O7=A1(()=>{return(process.env.CLAUDE_CONFIG_DIR??XP7(n25(),\".claude\")).normalize(\"NFC\")},()=>process.env.CLAUDE_CONFIG_DIR);i25=[[\"claude-haiku-4-5\",\"VERTEX_REGION_CLAUDE_HAIKU_4_5\"],[\"claude-3-5-haiku\",\"VERTEX_REGION_CLAUDE_3_5_HAIKU\"],[\"claude-3-5-sonnet\",\"VERTEX_REGION_CLAUDE_3_5_SONNET\"],[\"claude-3-7-sonnet\",\"VERTEX_REGION_CLAUDE_3_7_SONNET\"],[\"claude-opus-4-6\",\"VERTEX_REGION_CLAUDE_4_6_OPUS\"],[\"claude-opus-4-1\",\"VERTEX_REGION_CLAUDE_4_1_OPUS\"],[\"claude-opus-4\",\"VERTEX_REGION_CLAUDE_4_0_OPUS\"],[\"claude-sonnet-4-6\",\"VERTEX_REGION_CLAUDE_4_6_SONNET\"],[\"claude-sonnet-4-5\",\"VERTEX_REGION_CLAUDE_4_5_SONNET\"],[\"claude-sonnet-4\",\"VERTEX_REGION_CLAUDE_4_0_SONNET\"]]});function $4(q,K,_,z,Y){if(z===\"m\")throw TypeError(\"Private method is not writable\");if(z===\"a\"&&!Y)throw TypeError(\"Private accessor was defined without a setter\");if(typeof K===\"function\"?q!==K||!Y:!K.has(q))throw TypeError(\"Cannot write private member to an object whose class did not declare it\");return z===\"a\"?Y.call(q,_):Y?Y.value=_:K.set(q,_),_}function u1(q,K,_,z){if(_===\"a\"&&!z)throw TypeError(\"Private accessor was defined without a getter\");if(typeof K===\"function\"?q!==K||!z:!K.has(q))throw TypeError(\"Cannot read private member from an object whose class did not declare it\");return _===\"m\"?z:_===\"a\"?z.call(q):z?z.value:K.get(q)}var An=()=>{};var $t8=function(){let{crypto:q}=globalThis;if(q?.randomUUID)return $t8=q.randomUUID.bind(q),q.randomUUID();let K=new Uint8Array(1),_=q?()=>q.getRandomValues(K)[0]:()=>Math.random()*255&255;return\"10000000-1000-4000-8000-100000000000\".replace(/[018]/g,(z)=>(+z^_()&15>>+z/4).toString(16))};function On(q){return typeof q===\"object\"&&q!==null&&((\"name\"in q)&&q.name===\"AbortError\"||(\"message\"in q)&&String(q.message).includes(\"FetchRequestCanceledException\"))}var Qu6=(q)=>{if(q instanceof Error)return q;if(typeof q===\"object\"&&q!==null){try{if(Object.prototype.toString.call(q)===\"[object Error]\"){let K=Error(q.message,q.cause?{cause:q.cause}:{});if(q.stack)K.stack=q.stack;if(q.cause&&!K.cause)K.cause=q.cause;if(q.name)K.name=q.name;return K}}catch{}try{return Error(JSON.stringify(q))}catch{}}return Error(q)};var vq,dq,c_,Of,yg,du6,R_6,cu6,S_6,lu6,nu6,iu6,ru6;var $W=L(()=>{vq=class vq extends Error{};dq=class dq extends vq{constructor(q,K,_,z,Y){super(`${dq.makeMessage(q,K,_)}`);this.status=q,this.headers=z,this.requestID=z?.get(\"request-id\"),this.error=K,this.type=Y??null}static makeMessage(q,K,_){let z=K?.message?typeof K.message===\"string\"?K.message:JSON.stringify(K.message):K?JSON.stringify(K):_;if(q&&z)return`${q} ${z}`;if(q)return`${q} status code (no body)`;if(z)return z;return\"(no status code or body)\"}static generate(q,K,_,z){if(!q||!z)return new Of({message:_,cause:Qu6(K)});let Y=K,A=Y?.error?.type;if(q===400)return new du6(q,Y,_,z,A);if(q===401)return new R_6(q,Y,_,z,A);if(q===403)return new cu6(q,Y,_,z,A);if(q===404)return new S_6(q,Y,_,z,A);if(q===409)return new lu6(q,Y,_,z,A);if(q===422)return new nu6(q,Y,_,z,A);if(q===429)return new iu6(q,Y,_,z,A);if(q>=500)return new ru6(q,Y,_,z,A);return new dq(q,Y,_,z,A)}};c_=class c_ extends dq{constructor({message:q}={}){super(void 0,void 0,q||\"Request was aborted.\",void 0)}};Of=class Of extends dq{constructor({message:q,cause:K}){super(void 0,void 0,q||\"Connection error.\",void 0);if(K)this.cause=K}};yg=class yg extends Of{constructor({message:q}={}){super({message:q??\"Request timed out.\"})}};du6=class du6 extends dq{};R_6=class R_6 extends dq{};cu6=class cu6 extends dq{};S_6=class S_6 extends dq{};lu6=class lu6 extends dq{};nu6=class nu6 extends dq{};iu6=class iu6 extends dq{};ru6=class ru6 extends dq{}});function nz8(q){if(typeof q!==\"object\")return{};return q??{}}function Ht8(q){if(!q)return!0;for(let K in q)return!1;return!0}function ZP7(q,K){return Object.prototype.hasOwnProperty.call(q,K)}var o25,fP7=(q)=>{return o25.test(q)},wt8=(q)=>(wt8=Array.isArray,wt8(q)),jt8,GP7=(q,K)=>{if(typeof K!==\"number\"||!Number.isInteger(K))throw new vq(`${q} must be an integer`);if(K<0)throw new vq(`${q} must be a positive integer`);return K},iz8=(q)=>{try{return JSON.parse(q)}catch(K){return}};var C_6=L(()=>{$W();o25=/^[a-z][a-z0-9+.-]*:/i,jt8=wt8});var vP7=(q)=>new Promise((K)=>setTimeout(K,q));var O66=\"0.81.0\";function a25(){if(typeof Deno<\"u\"&&Deno.build!=null)return\"deno\";if(typeof EdgeRuntime<\"u\")return\"edge\";if(Object.prototype.toString.call(typeof globalThis.process<\"u\"?globalThis.process:0)===\"[object process]\")return\"node\";return\"unknown\"}function t25(){if(typeof navigator>\"u\"||!navigator)return null;let q=[{key:\"edge\",pattern:/Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"ie\",pattern:/MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"ie\",pattern:/Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"chrome\",pattern:/Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"firefox\",pattern:/Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"safari\",pattern:/(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/}];for(let{key:K,pattern:_}of q){let z=_.exec(navigator.userAgent);if(z){let Y=z[1]||0,A=z[2]||0,O=z[3]||0;return{browser:K,version:`${Y}.${A}.${O}`}}}return null}var NP7=()=>{return typeof window<\"u\"&&typeof window.document<\"u\"&&typeof navigator<\"u\"},s25=()=>{let q=a25();if(q===\"deno\")return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":VP7(Deno.build.os),\"X-Stainless-Arch\":TP7(Deno.build.arch),\"X-Stainless-Runtime\":\"deno\",\"X-Stainless-Runtime-Version\":typeof Deno.version===\"string\"?Deno.version:Deno.version?.deno??\"unknown\"};if(typeof EdgeRuntime<\"u\")return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":\"Unknown\",\"X-Stainless-Arch\":`other:${EdgeRuntime}`,\"X-Stainless-Runtime\":\"edge\",\"X-Stainless-Runtime-Version\":globalThis.process.version};if(q===\"node\")return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":VP7(globalThis.process.platform??\"unknown\"),\"X-Stainless-Arch\":TP7(globalThis.process.arch??\"unknown\"),\"X-Stainless-Runtime\":\"node\",\"X-Stainless-Runtime-Version\":globalThis.process.version??\"unknown\"};let K=t25();if(K)return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":\"Unknown\",\"X-Stainless-Arch\":\"unknown\",\"X-Stainless-Runtime\":`browser:${K.browser}`,\"X-Stainless-Runtime-Version\":K.version};return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":\"Unknown\",\"X-Stainless-Arch\":\"unknown\",\"X-Stainless-Runtime\":\"unknown\",\"X-Stainless-Runtime-Version\":\"unknown\"}},TP7=(q)=>{if(q===\"x32\")return\"x32\";if(q===\"x86_64\"||q===\"x64\")return\"x64\";if(q===\"arm\")return\"arm\";if(q===\"aarch64\"||q===\"arm64\")return\"arm64\";if(q)return`other:${q}`;return\"unknown\"},VP7=(q)=>{if(q=q.toLowerCase(),q.includes(\"ios\"))return\"iOS\";if(q===\"android\")return\"Android\";if(q===\"darwin\")return\"MacOS\";if(q===\"win32\")return\"Windows\";if(q===\"freebsd\")return\"FreeBSD\";if(q===\"openbsd\")return\"OpenBSD\";if(q===\"linux\")return\"Linux\";if(q)return`Other:${q}`;return\"Unknown\"},kP7,yP7=()=>{return kP7??(kP7=s25())};var Jt8=()=>{};function EP7(){if(typeof fetch<\"u\")return fetch;throw Error(\"`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`\")}function Mt8(...q){let K=globalThis.ReadableStream;if(typeof K>\"u\")throw Error(\"`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`\");return new K(...q)}function rz8(q){let K=Symbol.asyncIterator in q?q[Symbol.asyncIterator]():q[Symbol.iterator]();return Mt8({start(){},async pull(_){let{done:z,value:Y}=await K.next();if(z)_.close();else _.enqueue(Y)},async cancel(){await K.return?.()}})}function ou6(q){if(q[Symbol.asyncIterator])return q;let K=q.getReader();return{async next(){try{let _=await K.read();if(_?.done)K.releaseLock();return _}catch(_){throw K.releaseLock(),_}},async return(){let _=K.cancel();return K.releaseLock(),await _,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function LP7(q){if(q===null||typeof q!==\"object\")return;if(q[Symbol.asyncIterator]){await q[Symbol.asyncIterator]().return?.();return}let K=q.getReader(),_=K.cancel();K.releaseLock(),await _}var hP7=({headers:q,body:K})=>{return{bodyHeaders:{\"content-type\":\"application/json\"},body:JSON.stringify(K)}};function RP7(q){return Object.entries(q).filter(([K,_])=>typeof _<\"u\").map(([K,_])=>{if(typeof _===\"string\"||typeof _===\"number\"||typeof _===\"boolean\")return`${encodeURIComponent(K)}=${encodeURIComponent(_)}`;if(_===null)return`${encodeURIComponent(K)}=`;throw new vq(`Cannot stringify type ${typeof _}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`)}).join(\"&\")}var SP7=L(()=>{$W()});function xP7(q){let K=0;for(let Y of q)K+=Y.length;let _=new Uint8Array(K),z=0;for(let Y of q)_.set(Y,z),z+=Y.length;return _}function au6(q){let K;return(CP7??(K=new globalThis.TextEncoder,CP7=K.encode.bind(K)))(q)}function Xt8(q){let K;return(bP7??(K=new globalThis.TextDecoder,bP7=K.decode.bind(K)))(q)}var CP7,bP7;class $66{constructor(){wL.set(this,void 0),jL.set(this,void 0),$4(this,wL,new Uint8Array,\"f\"),$4(this,jL,null,\"f\")}decode(q){if(q==null)return[];let K=q instanceof ArrayBuffer?new Uint8Array(q):typeof q===\"string\"?au6(q):q;$4(this,wL,xP7([u1(this,wL,\"f\"),K]),\"f\");let _=[],z;while((z=Kj5(u1(this,wL,\"f\"),u1(this,jL,\"f\")))!=null){if(z.carriage&&u1(this,jL,\"f\")==null){$4(this,jL,z.index,\"f\");continue}if(u1(this,jL,\"f\")!=null&&(z.index!==u1(this,jL,\"f\")+1||z.carriage)){_.push(Xt8(u1(this,wL,\"f\").subarray(0,u1(this,jL,\"f\")-1))),$4(this,wL,u1(this,wL,\"f\").subarray(u1(this,jL,\"f\")),\"f\"),$4(this,jL,null,\"f\");continue}let Y=u1(this,jL,\"f\")!==null?z.preceding-1:z.preceding,A=Xt8(u1(this,wL,\"f\").subarray(0,Y));_.push(A),$4(this,wL,u1(this,wL,\"f\").subarray(z.index),\"f\"),$4(this,jL,null,\"f\")}return _}flush(){if(!u1(this,wL,\"f\").length)return[];return this.decode(`\n ^^^\n\nSyntaxError: Unexpected token '??='\n at Loader.moduleStrategy (internal/modules/esm/translators.js:145:18)\n at async link (internal/modules/esm/module_job.js:47:21)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ nvm use 24\nNow using node v24.11.1 (npm v11.6.2)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude\n╭─── Claude Code v2.1.114 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ \n│ │ Tips for getting started │ \n│ Welcome back Lukas! │ Run /init to create a CLAUDE.md file with instructions for Claude │ \n│ │ Note: You have launched claude in your home directory. For the best experience, launch it in a project directory instead. │ \n│ ▐▛███▜▌ │ ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ \n│ ▝▜█████▛▘ │ Recent activity │ \n│ ▘▘ ▝▝ │ 10h ago nice │ \n│ Sonnet 4.6 · Claude Pro · kovaliklukas@gmail.com's │ 4d ago give me overview of what I did yesterday │ \n│ Organization │ 1w ago how to open screenshots related, how many are there aroudn that time │ \n│ /Users/lukas │ /resume for more │ \n╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ \n \n❯ You have access to Screenpipe data via the local SQLite database at ~/.screenpipe/db.sqlite \n \n Query the database using: sqlite3 -json ~/.screenpipe/db.sqlite \"YOUR SQL HERE\" \n \n Key tables: \n - ocr_text: columns id, frame_id, text, text_json, app_name, window_name, created_at \n - audio_transcriptions: columns id, audio_chunk_id, transcription, device, is_input, created_at \n - frames: columns id, file_path, timestamp, device_id \n - ui_events: columns id, event_type, element_text, app_name, created_at \n \n Build a full day activity summary for TODAY (use date() in SQL for today's date, timestamps are UTC). \n \n Steps: \n 1. Query ocr_text for today grouped by app_name + window_name with time ranges (MIN/MAX created_at), filtering out empty/junk text \n 2. Query audio_transcriptions for today to find meeting/call content (is_input=1 is microphone) \n 3. Correlate everything into a chronological timeline \n \n Output format — a narrative timeline like: \n 08:34–09:12 PhpStorm · JY-20458 — editing UserReportController.php, writing migration \n 09:12–09:45 Slack · #engineering — huddle with team, discussed deployment blocker \n 09:45–10:30 Chrome · Jira — reviewed ticket comments, updated description \n ... \n \n Rules: \n - Convert all UTC timestamps to local time (Europe/Sofia = UTC+3) \n - Merge consecutive entries of the same app/window within 5-minute gaps \n - Flag meetings/calls based on: Zoom/Meet/Teams in app_name OR microphone audio present \n - For code work: extract file names and ticket numbers from window titles \n - For Slack/browser: extract thread/page context from window_name \n - Minimum segment duration: 2 minutes (ignore flash switches) \n - End with a summary block: total focused work, meetings, context switches, top 3 apps by time \n ⎿ Please run /login · API Error: 401 {\"type\":\"error\",\"error\":{\"type\":\"authentication_error\",\"message\":\"Invalid authentication \n \u0000 credentials\"},\"request_id\":\"req_011CaFTE1idEzHpMgKT4Xunq\"}\n\n❯ is it ok now \n ⎿ Please run /login · API Error: 401 {\"type\":\"error\",\"error\":{\"type\":\"authentication_error\",\"message\":\"Invalid authentication \n credentials\"},\"request_id\":\"req_011CaFTEnQhm5weRqNt6SMq2\"} \n \n❯ /login \n ⎿ Login successful \n \n❯ You have access to Screenpipe data via the local SQLite database at ~/.screenpipe/db.sqlite \n \n Query the database using: sqlite3 -json ~/.screenpipe/db.sqlite \"YOUR SQL HERE\" \n \n Key tables: \n - ocr_text: columns id, frame_id, text, text_json, app_name, window_name, created_at \n - audio_transcriptions: columns id, audio_chunk_id, transcription, device, is_input, created_at \n - frames: columns id, file_path, timestamp, device_id \n - ui_events: columns id, event_type, element_text, app_name, created_at \n \n Build a full day activity summary for TODAY (use date() in SQL for today's date, timestamps are UTC). \n \n Steps: \n 1. Query ocr_text for today grouped by app_name + window_name with time ranges (MIN/MAX created_at), filtering out empty/junk text \n 2. Query audio_transcriptions for today to find meeting/call content (is_input=1 is microphone) \n 3. Correlate everything into a chronological timeline \n \n Output format — a narrative timeline like: \n 08:34–09:12 PhpStorm · JY-20458 — editing UserReportController.php, writing migration \n 09:12–09:45 Slack · #engineering — huddle with team, discussed deployment blocker \n 09:45–10:30 Chrome · Jira — reviewed ticket comments, updated description \n ... \n \n Rules: \n - Convert all UTC timestamps to local time (Europe/Sofia = UTC+3) \n - Merge consecutive entries of the same app/window within 5-minute gaps \n - Flag meetings/calls based on: Zoom/Meet/Teams in app_name OR microphone audio present \n - For code work: extract file names and ticket numbers from window titles \n - For Slack/browser: extract thread/page context from window_name \n - Minimum segment duration: 2 minutes (ignore flash switches) \n - End with a summary block: total focused work, meetings, context switches, top 3 apps by time \n\n⏺\u0000Querying the Screenpipe\u0000database\u0000for\u0000today's\u0000activity.\n \n⏺\u0000Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"SELECT\u0000app_name,\u0000window_name,\u0000MIN(created_at)\u0000as\u0000first_seen,\u0000MAX(created_at)\u0000as\u0000last_seen,\u0000COUNT(*)\u0000as\u0000entries\u0000FROM\u0000ocr_t…)\n ⎿ Error: Exit code 1 \n \u0000\u0000Error: in prepare, no such column: created_at\n SELECT app_name, window_name, MIN(created_at) as first_seen, MAX(created_at) a \n error here ---^ \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \"SELECT transcription, device, is_input, created_at FROM audio_transcriptions WHERE date(created_at) = date('now') AND len…) \n ⎿ Cancelled: parallel tool call Bash(sqlite3 -json ~/.screenpipe/db.sqlite \"S…) errored\n \n⏺ Let me check the actual schema first. \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \".schema ocr_text\" 2>&1 && echo \"---\" && sqlite3 ~/.screenpipe/db.sqlite \".schema audio_transcriptions\" 2>&1) \n ⎿ CREATE TABLE IF NOT EXISTS \"ocr_text\" ( \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000frame_id\u0000INTEGER\u0000NOT\u0000NULL,\n text TEXT NOT NULL, \n … +33 lines (ctrl+o to expand) \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \".schema frames\" 2>&1) \n ⎿ CREATE TABLE IF NOT EXISTS \"frames\" ( \n id INTEGER PRIMARY KEY AUTOINCREMENT, \n video_chunk_id INTEGER DEFAULT NULL, \n … +47 lines (ctrl+o to expand) \n \n⏺ Now I have the schema. The timestamps are in frames, not ocr_text. Querying with joins. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"app_name\":\"PhpStorm\",\"window_name\":\"\",\"first_seen_local\":\"2026-04-20\u000009:09:09\",\"last_seen_local\":\"2026-04-20\u000013:08:57\",\"entries\":47},\n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js – console [EU]\",\"first_seen_local\":\"2026-04-20 09:09:20\",\"last_seen_local\":\"2026-04-20 11:49:37\",\"entries\":31}, \n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js\u0000–\u0000console\u0000[PROD]\",\"first_seen_local\":\"2026-04-20\u000009:09:39\",\"last_seen_local\":\"2026-04-20\u000009:09:39\",\"entries\":1},\n … +94 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \u0000 \n ⎿ (No output) \n \n⏺ Let me get a bit more detail on the audio and the afternoon activity. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ (No output) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"\n SELECT…) \n ⎿ [{\"app_name\":\"PhpStorm\",\"window_name\":\"\",\"first_seen_local\":\"2026-04-20\u000009:09:09\",\"last_seen_local\":\"2026-04-20\u000013:08:57\",\"entries\":47},\n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js – console [EU]\",\"first_seen_local\":\"2026-04-20 09:09:20\",\"last_seen_local\":\"2026-04-20 11:49:37\",\"entries\":31}, \n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js\u0000–\u0000console\u0000[PROD]\",\"first_seen_local\":\"2026-04-20\u000009:09:39\",\"last_seen_local\":\"2026-04-20\u000009:09:39\",\"entries\":1},\n … +79 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ I have everything I need. Here's your day: \n \n --- \n Activity Summary — Monday, 20 April 2026 \n \n Chronological Timeline \n \n 09:09–09:21 PhpStorm · faVsco.js — started day, checked EU/PROD consoles, \n briefly opened connect.vue, ImportActivityTypes.php \n \n 09:17–09:30 Slack · Galya Dimitrova (DM) — morning check-in \n \n 09:21–10:36 PhpStorm · faVsco.js — main coding block: ReportController.php, \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000TrackAutomatedReportGeneratedEvent.php,\n TrackAutomatedReportGeneratedEventTest.php \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000(shelved\u0000changes,\u0000ran\u0000tests\u0000via\u0000Run\u0000panel)\n \n 09:30–09:44 Slack · multiple DMs — Aneliya/Nikolay/Steliyan group DM, \n Stoyan Tomov DM, #engineering glance \n \n 09:40–10:04 iTerm2 · EU (ssh) + PROD — terminal work on EU/PROD servers \n \n 09:45–10:05 Firefox · Meet - Daily - — 📹\u0000 MEETING: Platform daily standup (~20 min) \n Platform\n \n 10:04–10:18 Firefox · Work / Jira — post-standup Jira check, \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Platform\u0000Sprint\u00002\u0000Q2\u0000Scrum\u0000Board\n \n 10:21–10:44 Slack\u0000·\u0000platform-inner-team\u0000\u0000\u0000—\u0000#platform-inner-team\u0000channel,\n + Stefka Stoyanova DM DM with Stefka Stoyanova \n \n 10:26–11:13 Slack · Galya Dimitrova (DM) — extended DM thread with Galya \n \n 10:32–12:22 PhpStorm · Run — tests running in background \n \n 10:44–10:49 Slack · Huddle: @Galya — 📹\u0000 MEETING: Slack huddle with Galya (~5 min) \n Dimitrova\n \n 11:02–11:25 PhpStorm · faVsco.js — CreateSharedEvent.php, laravel.log (log review), \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000composer.json;\u0000iTerm2\u0000DEV\u0000(docker)\u0000briefly\n \n 11:08–11:32 Slack · #releases — watching release channel \n \n 11:32–11:40 PhpStorm · faVsco.js — User.php, AppServiceProvider.php \n\u0000\u0000 \n 11:33–11:48 Slack · Huddle: @Aneliya — 📹\u0000 MEETING: Slack huddle with Aneliya (~15 min) \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Angelova\n \n 11:35–11:55 Slack · Aneliya Angelova (DM) — follow-up DM after huddle \n \n 11:48–12:44 PhpStorm · faVsco.js — deep work: AskJiminnyReportActivityService.php, \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000RequestGenerateAskJiminnyReportJob.php,\n AskJiminnyReportsController.php \n\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000(local\u0000SF\u0000server\u0000running\u0000in\u0000background)\n \n 12:19–12:36\u0000\u0000PhpStorm\u0000·\u0000faVsco.js\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000—\u0000AutomatedReportsSendCommand.php,\n AutomatedReportsService.php, \n AutomatedReportsServiceTest.php \n \n 12:24–12:38 Slack · #confusion-clinic — checking confusion-clinic channel \n\u0000\u0000 \n 12:49–13:07 PhpStorm · faVsco.js — pivoted to HubSpot integration: \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000OpportunitySyncTrait.php,\u0000BaseService.php,\n AskJiminnyReportActivityServiceTest.php, \n HS_local env \n \n 13:06–13:07 PhpStorm · Commit Changes — committed the morning's work \n \n ≈ 13:07–13:38 BREAK — ~30 min gap in activity \n \n 13:38–18:55 PhpStorm + Firefox + iTerm2 — afternoon continued (generic capture mode; \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000window-level\u0000detail\u0000unavailable\u0000—\u0000likely\n continued Ask Jiminny / automated reports work; \n Activity Monitor checked 13:54–15:21, \n CleanShot X screenshots 15:01–16:55, \n Finder 16:58–17:07) \n \n --- \n Summary Block \n\u0000\u0000 \n\u0000\u0000┌────────────────────┬────────────────────────────────────────────────────────────────────┐\n\u0000\u0000│\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000 \u0000\u0000│\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├────────────────────┼────────────────────────────────────────────────────────────────────┤\n\u0000\u0000│ Day start / end\u0000 \u0000 │ 09:09 – ~18:55\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├────────────────────┼────────────────────────────────────────────────────────────────────┤\n │ Total tracked time │ ~9h 45min │ \n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Meetings / calls │ ~40 min (Platform daily standup + 2 Slack huddles) │ \n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Focused coding\u0000\u0000\u0000\u0000\u0000│\u0000~6–7\u0000h\u0000(PhpStorm\u0000dominant\u0000—\u0000Ask\u0000Jiminny\u0000automated\u0000reports\u0000feature)\u0000│\n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Communication \u0000\u0000\u0000\u0000\u0000│\u0000~1.5\u0000h\u0000(Slack:\u0000~10\u0000distinct\u0000DMs/channels)\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Context switches\u0000\u0000\u0000│\u0000High\u0000—\u0000~15\u0000Slack\u0000threads,\u0000frequent\u0000PhpStorm\u0000↔\u0000Slack\u0000↔\u0000Firefox\u0000\u0000\u0000\u0000\u0000\u0000│\n └────────────────────┴────────────────────────────────────────────────────────────────────┘ \n \n Top 3 apps by time: \n 1. PhpStorm — dominant\u0000all\u0000day;\u0000project:\u0000faVsco.js\u0000(Jiminny\u0000backend)\n 2. Firefox — browser work + Google Meet \n 3. iTerm2 — EU/PROD SSH +\u0000local Docker \n \n Main coding theme:\u0000Ask\u0000Jiminny\u0000automated\u0000reports\u0000pipeline\u0000—\u0000AskJiminnyReportActivityService,\u0000RequestGenerateAskJiminnyReportJob,\u0000AutomatedReportsService,\n AutomatedReportsSendCommand, AskJiminnyReportsController, plus related tests. Committed at 13:06. \n \n ▎ No audio transcriptions were captured today (microphone data empty), so meeting content was inferred from window titles only. \n \n✻ Sautéed for 1m 28s \n \n❯ what about between 15:00 and 17:00 approximatelly. I had a meeting. What was it about \n \n⏺ Let me dig into that window more carefully. \n \n⏺\u0000Bash(sqlite3 -json\u0000~/.screenpipe/db.sqlite\u0000\"\n SELECT…) \n ⎿ (No output)\n \n⏺ Bash(sqlite3 -json\u0000~/.screenpipe/db.sqlite\u0000\"\n SELECT transcription, device, is_input_device, datetime(timestamp, '+3 hours') as local_time…) \n ⎿ (No output) \n \n⏺ Wrong UTC offset in my query.\u0000Let\u0000me\u0000fix\u0000—\u000015:00–17:00\u0000local\u0000=\u000012:00–14:00\u0000UTC.\n \n⏺\u0000Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"\n SELECT…) \n ⎿ [{\"app_name\":\"iTerm2\",\"window_name\":\"iTerm2\",\"local_time\":\"2026-04-20 15:00:00\",\"text_preview\":\"FV faVsco.js\u0000v°9\u0000masterProjectphp\u0000artisan0\u0000composer.json0\u0000composer.lockde\n pendency-checker.json0 dev.jsonE ids.txtE infection.json.distM-INSTALL.mdM+ INTERNAL_WEBHOOK_SETUP.mdEjiminny storageM+licenses.mom Makerileраскаqе-lock. sonE phpstan.ne \n on.dist= phostan-baseline.neon<phpunit.xmlTe raw sal querv\"}, \n … +173 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT transcription, device, is_input_device, datetime(timestamp, '+3 hours') as local_time…) \n ⎿ (No output) \n \n⏺ Bash(cat /Users/lukas/.claude/projects/-Users-lukas/81aa3054-f078-4fb2-aeb0-937316d28f59/tool-results/b5ez8ga4k.txt\u0000|\u0000python3\u0000-c\u0000\"\n import json, sys…) \n ⎿ Traceback (most\u0000recent\u0000call\u0000last):\n File \"<string>\", line 15, in <module> \n File \"<string>\", line 15, in <genexpr> \n … +13 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ [{\"app_name\":\"iTerm2\",\"window_name\":\"iTerm2\",\"first_local\":\"2026-04-20 15:00:00\",\"last_local\":\"2026-04-20 17:07:40\"}, \n {\"app_name\":\"Raycast\",\"window_name\":\"Raycast\",\"first_local\":\"2026-04-20 15:00:26\",\"last_local\":\"2026-04-20 15:03:21\"}, \n {\"app_name\":\"Slack\",\"window_name\":\"Slack\",\"first_local\":\"2026-04-20 15:00:39\",\"last_local\":\"2026-04-20 17:26:13\"}, \n … +9 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"app_name\":\"Firefox\",\"window_name\":null,\"local_time\":\"2026-04-20 15:01:01\",\"text_preview\":\"slackActivityLaterJiminny ...Dratts & centi8 DirectoriesEb External connecti \n ons# Starred8 jiminny-x-integrati...& platform-inner-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinic# curiosity_lab# engineering# frontend# general# infra \n -changes# jiminny-bg# platform-tickets# product launches# random# releases# support# thank-yous# the_people_of_jimi...6 Direct messagesP. Aneliya Angelova \"}, \n … +155 lines (ctrl+o to expand) \n \n⏺ Found it. Let me get the meeting duration and the Jira tickets that were discussed. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:00:00\",\"text_preview\":\"FV faVsco.js v°9 masterProjectphp artisan0 composer.json0 composer.lockdependency-checker.json0 dev.jsonE ids.txtE i \n nfection.json.distM-INSTALL.mdM+ INTERNAL_WEBHOOK_SETUP.mdEjiminny storageM+licenses.mom Makerileраскаqе-lock. sonE phpstan.neon.dist= phostan-baseline.neon<phpunit.xmlT \n e raw sal querv.saM+ README.mdLo sonar-proiect propertiesE test.py<> Untited Diadram.xmliI vetur.config.jsMI WEBHOOK FILTERING IMPLEMENTATION.mo› ib External Librariesv \n … +14 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \u0000 \n ⎿ [{\"local_time\":\"2026-04-20 17:15:27\",\"text_preview\":\"Slack•0 ЕlActivityLateMoreVIewmistonWindowHeld@ Search: shared-activiJiminny ...Nikolay Nikolov→Drattc& contTMore un \n reads8 DieuurelMessagesr Filesщсе но като цяло на края както говорихме просто навсякьде където се псEb External connections& Starred@ liminny-x-integrati...platform-inne \n r-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinica curiosiiy ao# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product laun \n … +14 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n \u0000 SELECT…) \u0000 \n ⎿ [{\"local_time\":\"2026-04-20 15:00:39\",\"text_preview\":\"SlackO•• ЕlActivityLaterVIewHistoryWindowHelp@ Search: shared-actiJiminny ..Dratts & centi8 Directories# releases• M \n \u0000\u0000essagesEb\u0000External\u0000connections#\u0000Starred8\u0000jiminny-x-integrati...&\u0000platform-inner-teamE\u0000Channels#\u0000ai-chapter#\u0000alertsS\u0000hackendl#\u0000confusion-clinic#\u0000curiosity_lab#\u0000engineerin\n g# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# support# thank-yous# the_people_of_jimi...6 Direct messagesP. Anel \n … +106 lines (ctrl+o to expand) \n \n⏺ Let me find when the meeting ended by checking the last Meet frames. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 17:07:11\",\"text_preview\":\"SlackActivityMoreVIewMistonWindowHeld@ Search: shared-activiJiminny ...* • Nikolay Nikolov→Drattck cantTMore unreads \n 8 Dieeurel• MessagesEb External connections& Starred@ liminny-x-integrati...platform-inner-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinica curiosiiy ao# \n engineering# fr\"}, \n … +12 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 16:56:34\",\"text_preview\":\"FirefoxFileEditViewHistoryBookmarksProfiles→CToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0‹ >0 lhl100% <78• \n Mon 20 Apr 16:56:33=+Aneliya AngelovaGalya DimitrovaNikolay Yankov*Nikolay IvanovNikolay\u0000NikolovLukas\u0000Kovalik4:56\u0000PM\u0000|\u0000[Platform]\u0000Refinement\u0000•1:54:45\"},\n {\"local_time\":\"2026-04-20 16:56:32\",\"text_preview\":\"FirefoxFileEditViewHistoryBookmarksProfiles→CToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0‹ >0 lbl100% [8• M \n … +20 lines (ctrl+o to expand) \n \n⏺ Got everything. Here's the full picture: \n \n --- \n 📹\u0000 Meeting: [Platform] Refinement \n \n Time: 15:02 – ~16:57 · Duration: ~1h 55min \n Platform: Google Meet (meet.google.com/cxs-eips-npt) \n \n Participants: \n - Lukas Kovalik (you) \n\u0000\u0000- Nikolay Ivanov \n\u0000\u0000-\u0000Steliyan Georgiev\n\u0000\u0000-\u0000Nikolay Nikolov \n\u0000\u0000-\u0000Nikolay\u0000Yankov \n - Aneliya Angelova \n -\u0000Galya Dimitrova (presenting/annotating at the end)\n - Stefka Stoyanova \n \n What was covered:\n This was a sprint backlog refinement session. The browser tabs visible during the call show exactly which Jira tickets were open and likely discussed: \n \n ┌───────────┬──────────────────────────────────────────────────┐ \n │ Ticket │ Title │ \n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-19798\u0000 │ Evaluation for AI activity \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-20553\u0000 │ Improve CRM-sync delay\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├───────────┼──────────────────────────────────────────────────┤ \n │\u0000JY-20698\u0000 │ Handle failed field sync\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├───────────┼──────────────────────────────────────────────────┤ \n\u0000\u0000│ JY-20692 │ Change confirmation page\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-20543\u0000 │ AJ Reports > Tracking\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-18909\u0000\u0000│\u0000(Part\u00002)\u0000Automated\u0000Reports\u0000/\u0000Ask\u0000Jiminny\u0000Reports\u0000│\n ├───────────┼──────────────────────────────────────────────────┤ \n │\u0000SRD-67871\u0000│\u0000Issue\u0000with\u0000reconnecting\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n └───────────┴──────────────────────────────────────────────────┘ \n\u0000\u0000 \n You also had Postman open alongside the meeting with HubSpot (deal/object APIs) and Salesforce (tooling queries, field metadata) — likely looking up API details to clarify \n ticket\u0000scope.\n \n At ~16:56, Galya Dimitrova was screen-sharing (OCR shows \"Presenting, annotating\"), with Jira (jiminny.atlassian.net) visible — typical of a refinement session wrapping up by \n walking\u0000through\u0000the\u0000board.\n \n No audio was captured, so the actual discussion content isn't available — but the ticket list and ~2h duration match a thorough refinement session. \n \n✻ Crunched for 1m 50s \n \n❯ lets maybe focus on one monitor at the time. I probably worked on some stuf when the meeting was on on other monitor. Lets focus on the monitor where was the meeting \n \n⏺ Let me check what monitor/device info is available in the frames. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n \u0000\u0000\u0000SELECT\u0000DISTINCT\u0000device_name,\u0000COUNT(*)\u0000as\u0000cnt…)\n ⎿ [{\"device_name\":\"monitor_1\",\"cnt\":4390}, \n {\"device_name\":\"monitor_2\",\"cnt\":4703}]\n \n⏺\u0000Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"\n SELECT DISTINCT device_name…) \n ⎿ [{\"device_name\":\"monitor_1\"}, \n {\"device_name\":\"monitor_2\"}] \n \n⏺\u0000Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT f.device_name, COUNT(*) as meet_frames…) \n ⎿ monitor_1|1336 \n monitor_2|36 \n \n⏺\u0000monitor_1 was the meeting monitor. Now let me pull the\u0000full\u0000timeline\u0000for\u0000that\u0000monitor\u0000during\u0000the\u0000meeting.\n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"app_name\":\"iTerm2\",\"window_name\":\"iTerm2\",\"first_local\":\"2026-04-20 15:00:00\",\"last_local\":\"2026-04-20 17:07:40\",\"entries\":51}, \n {\"app_name\":\"Raycast\",\"window_name\":\"Raycast\",\"first_local\":\"2026-04-20 15:00:26\",\"last_local\":\"2026-04-20 15:00:26\",\"entries\":1}, \n {\"app_name\":\"Slack\",\"window_name\":\"Slack\",\"first_local\":\"2026-04-20 15:00:39\",\"last_local\":\"2026-04-20 17:26:09\",\"entries\":71}, \n … +8 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:01:21\",\"app_name\":\"Firefox\",\"window_name\":\"Firefox\",\"text\":\"iTerm2ShellEditViewSessionScriptsProfilesWindowHelpC$0 l 0100% C47 • Mon 20 Apr \n 15:01:20meet.google.com/cxs-eips-npt?authuser=0Meet - [Platform] Refinement• [EMAIL] account+ New TabLukas Kovalik[Platform] RefinementE Scheduled for4:00 PM. Use Gemin \n i to take notesShare\u0000notes and transcriptStartJoin\u0000anywayOther\u0000ways\u0000to\u0000join\u0000v{\u0000MacBook\u0000Pr...4\u0000System\u0000Def..•\u0000FaceTime\u0000H...[\u0000Backgroun...Gemini\u0000is\u0000available\u0000in\u0000Meet\u0000as\u0000you\n … +9 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:01:06\",\"app_name\":\"PhpStorm\",\"text\":\"iTerm2ShellEditViewSessionScriptsProfilesWindowHelp100% C8• Mon 20 Apr 15:01:06ec2-user@ip-10-30-159-1 \n 86:~DOCKERDEV (docker)H82APP (-zsh)-zsh*4screenpipe\\\"• *5ec2-user@ip-10-30-159-186:- (...[ec2-user@ip-10-30-159-186 ~]$ dockerexeс-it $(dockerps--format\\\"{{.ID}}\\\" --fil \n ter\\\"name=ecs-worker\\\" | head -1) /bin/bash -c \\\"cd\u0000/home/jiminny&&bash\\\"root@7dffb84e8e4e:/home/jiminny#\u0000php\u0000artisan\u0000aboutEnvironmentApplicationNameLaravel\u0000VersionPHP\u0000V\n … +15 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 16:36:20\",\"app_name\":\"PhpStorm\",\"text\":\"FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0Galya \n Dimitrova (Presenting, annotating)Galya DimitrovaStefka StoyanovaNikolay NikolovGalya Dimitrova (Presentation)4:36 PM | [Platform] Refinement •Lộ3100% K478• Mon 20 Apr \n 16:36:198Nikolay Ivanovukas Kovalik1:34:31\"}, \n … +35 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:01:15\",\"app_name\":\"iTerm2\",\"text\":\"iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zshDOCKER• ₴1DEV (docker)Last login: Mon Apr 20 13:2 \n 6:00 on ttys008182APP (-zsh)·3Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentsPoetry could not find a pyproject.toml file in /Users \n /lukas/jiminny/app or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny\u0000~/jiminny/app\u0000(JY-18909-automated-reports-ask-jiminny)\u0000$||A-zsh<\u0000>0\u0000ldolscreenpipe*100%\u0000C8•\u0000Mon\n … +89 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Now I have a rich picture. Here's the focused monitor_1 view: \n \n --- \n 📹\u0000 [Platform] Refinement — monitor_1 timeline \n \n 15:00–15:02 · Pre-meeting \n - iTerm2 active: SSH'd into EU production (ec2-user@ip-10-30-159-186) running php artisan about to check the live environment \n - Joined the Meet lobby at 15:01 — Steliyan Georgiev was already in, Nikolay Ivanov joined next \n \n 15:02 · In the call \n - You had Postman open alongside Meet (HubSpot deal API + Salesforce tooling queries for field metadata) — likely pre-loaded for reference during ticket discussions \n \n ~15:05–15:06 · Nikolay Yankov presenting \n - Walked through Jira: opened JY-20676 — \"Notify the user if a Panorama prompt is deleted but is used in AJ Report\" (with parent JY-19240) \n - Then showed the staging app (app.staging.jiminny.com/ondemand) — the Ask Jiminny on-demand view, seemingly demoing the current behavior \n -\u0000Then\u0000jumped\u0000into Figma — Project Phoenix design file, specifically the Automated\u0000Reports screens: \u0000 \u0000 \u0000 \u0000 \n - Email for generated / not generated report \n - Delete Saved Search \n - Automated Reports settings \n \n ~16:36–16:57 · Galya Dimitrova presenting \n\u0000\u0000- Opened Jira (jiminny.atlassian.net)\u0000—\u0000Platform\u0000Team\u0000board,\u0000Backlog\u0000+\u0000Active\u0000Sprints\u0000view\n - Then switched to Figma — Project Phoenix again, showing: \n \u0000- Deal Insights,\u0000Team Insights, AI Reports tabs\u0000 \n - AI Reports prompt screen (\"This prompt is used in reports — you want to keep, not delete the report to break…\") \n - Org Settings, Profile, Kiosk, Emails screens \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \n \n --- \n Summary: \n Nearly 2-hour refinement focused on the AJ Reports / Automated Reports / Project Phoenix feature set. Nikolay Yankov walked through ticket specs and staging demos; Galya \n\u0000\u0000Dimitrova closed\u0000with\u0000Figma\u0000designs\u0000for\u0000the\u0000same\u0000area.\u0000The\u0000Jira\u0000tickets\u0000open\u0000in\u0000your\u0000browser\u0000(JY-20676,\u0000JY-19240,\u0000JY-20543,\u0000JY-18909,\u0000JY-20553,\u0000JY-20698,\u0000JY-20692)\u0000were\u0000the\n likely agenda items worked through one by one. \n \n✻ Worked for 1m 39s \n \n❯ specifically for that meetings what were the tickets discussed and what data were populated \n \n⏺ Let me dig through all the Jira content captured on monitor_1 during the meeting. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n \u0000\u0000\u0000SELECT…)\n ⎿ 2026-04-20 15:01:15 | iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zshDOCKER• ₴1DEV (docker)Last login: Mon Apr 20 13:26:00 on ttys008182APP (-zsh)·3Poetry could \n not find a pyproject.toml\u0000file\u0000in\u0000/Users/lukas/jiminny/app\u0000or\u0000its\u0000parentsPoetry\u0000could\u0000not\u0000find\u0000a\u0000pyproject.toml\u0000file\u0000in\u0000/Users/lukas/jiminny/app\u0000or\u0000its\u0000parentslukas@Luka\n s-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $||A-zsh< >0 ldolscreenpipe*100% C8• Mon 20 Apr 15:01:14₴1• *5ec2-user@ip-10-30-15 \n\u0000\u0000 … +198 lines (ctrl+o to expand)\n \n⏺ Bash(cat /Users/lukas/.claude/projects/-Users-lukas/81aa3054-f078-4fb2-aeb0-937316d28f59/tool-results/b5bsv0n08.txt\u0000|\u0000python3\u0000-c\u0000\"\n import json, sys, re…) \n⏺ ⎿ Running… \n \n✢ DisTracebackt(most recent call last): \n\u0000 File \"<string>\",\u0000line\u00004,\u0000in\u0000<module>\n ─ File \"/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/__init__.py\",─line─293,─in─load────────────────────────────────────────────────────────────────\n❯ … +8 lines (ctrl+o to expand) \u0000 \u0000 \u0000 \u0000 \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \"\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000◐ medium · /effort\n SELECT…) \n ⎿ 2026-04-20 15:05:18|PostmanFilelEdit|ViewWindowHelp= C)meet.google.com/cxs-eips-npt?authuser=0Nikolay Yankov (Presenting, annotating)M nooe0 JмNкт@ For you© Recent$ Star \n red8? Apps0 Spaces(9 Service-DeskJiminny (01d)Jiminny (New)1 CD Piatform TeamCID Capture Team|CD Enterprise Stability I.ID Processing TeamCD SE Kanban= More spaces= Flte \n rsCB Dashboardse OperationsE3 ConfiuenceI: Teams5, Customise sidebarСл-аwr-axP Pioie XCUa x F POK X OSnin x ONM X OOVN X 4 De x8x Eu TanksD Dee, Search+ Createoneejimnay \n … +176 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ 2026-04-20 15:05:36|PostmanFileEdit|ViewWindowHelp= C)meet.google.com/cxs-eips-npt?authuser=0Nikolay Yankov (Presenting)EditM InboxHisteryBookmarks2 Pato xProfVesTabHNOл \n -9 xQAкa xE Font A: X•Corti xa UY-2 xF Projec X2 12-2 xP Projc X © Jmil@ devu x© dev.u x$ 04 Denehttps://iminny.atlassian.net/browse/JY-206768 JnrelD Projects0O8[EDatad \n # Caude O Crcledi E Sentry%X &u Lasks@ For youRecent |# Starred8. Apps0 SpacesStarred9) Service-DeskJiminny (O1d)Recent|Jiminny (New)I CID Platform TeamIID Capture TeamI \n … +178 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT substr(o.text, instr(o.text, 'browse/'), 200) as browse_context,…) \n ⎿ browse/JY-205007at/Origin=eyJpfjoiN/VmYzgxZjYzYTFhNDNjYTg4ZJYOYTZIZGZ/MmViZDUILCJwljoiamlyYS1zbGFjay1pbnQifoLUM Leaderooard.• TODODebug crm-sync... C Refine C Sentry C E \n S CJ Learn C AJ ChagterHomekevi|2026-04-20 15:27:28 \n browse/JY-205007at/Origin=eyJpfjolN/VmYzgxZjYzYTFhNDNjYTg4Z/YOYTZIZGZ/MmViZDUILC.JwljolamlyYS1zbGFjay1pbnQifQLuM Leaderiooard.D TODOC Debug crm-sync..- KelineCO Sentry C \n … +76 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ Error: Exit code 1 \n Error: in prepare, no such function: regexp_substr \n SELECT DISTINCT regexp_substr(o.text, 'browse/JY-[0-9]+') as ticket_url, \n ^--- error here \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ JY-206768 |2026-04-20 15:05:36|2026-04-20 15:05:36 \n JY-20676D |2026-04-20 15:05:43|2026-04-20 15:05:46 \n JY-20676C |2026-04-20 15:14:26|2026-04-20 15:14:26 \n … +30 lines (ctrl+o to expand) \n \n⏺ Good - I can see the real ticket IDs despite OCR noise: JY-20676, JY-20615, JY-20613, JY-20500, JY-20501. Let me pull the full content for each. \n \n⏺ Bash(for ticket in \"JY-20676\" \"JY-20615\" \"JY-20613\" \"JY-20500\" \"JY-20501\"; do \n echo \"=== $ticket ===\"…) \n ⎿ === JY-20676 === \n 2026-04-20 16:49:34|FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0100% 128• Mon 20 Apr 16:49:348+Galya Dimitrova (Pres \n enting, annotating)SafariFileEditViewHistoryBookmarksDevelopWindowHelpK/2-Q8•Mon 20 Apr 16:49jiminny.atlassian.net|AWS AIA Sentry3 HubSpot@ OрeпAlfi Seif ServiceDust Doc \n … +43 lines (ctrl+o to expand) \n \n⏺ Bash(for ticket in \"JY-20676\" \"JY-20615\" \"JY-20613\" \"JY-20500\" \"JY-20501\"; do \n echo \"=== $ticket BEST FRAME ===\"…) \n ⎿ === JY-20676 BEST FRAME === \n 2026-04-20 16:49:34|FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0100% 128• Mon 20 Apr 16:49:348+Galya Dimitrova (Pres \n enting, annotating)SafariFileEditViewHistoryBookmarksDevelopWindowHelpK/2-Q8•Mon 20 Apr 16:49jiminny.atlassian.net|AWS AIA Sentry3 HubSpot@ OрeпAlfi Seif ServiceDust Doc \n … +82 lines (ctrl+o to expand) \n \n⏺ Now let me check one more thing — what specific data was populated during the meeting (sprint assignments, estimates, description updates). \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT datetime(f.timestamp, '+3 hours') as t, o.text…) \n ⎿ 2026-04-20 16:49:34|FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0100% 128• Mon 20 Apr 16:49:348+Galya Dimitrova (Pres \n enting, annotating)SafariFileEditViewHistoryBookmarksDevelopWindowHelpK/2-Q8•Mon 20 Apr 16:49jiminny.atlassian.net|AWS AIA Sentry3 HubSpot@ OрeпAlfi Seif ServiceDust Doc \n s|AWS USS. GTM Tren.J AWS EU7 A Journey-PlanhatThe Reven...•J Emоlй|E3 Features4 LogRocket|P Postmark* Bamboo*. Campus xFirebaseAsk Jimin# Platform Te.88G. Demo ExnSearc \n … +27 lines (ctrl+o to expand) \n \n⏺ I have everything needed. Here's the complete ticket breakdown: \n \n --- \n Tickets Discussed — [Platform] Refinement \n \n --- \n JY-20676 · Notify the user if a Panorama prompt is deleted but is used in AJ Report \n \n Time on screen: 15:05–15:18 · Presenter: Nikolay Yankov \n Epic: AJ Reports · Status: BACKLOG \n \n Description: \n \n ▎ Users might attempt to delete a Panorama Prompt which is used in AJ Report. When they do that we need to let them know that the report will stop generating. \n ▎ - Show a confirmation modal when a user is deleting a Panorama Prompt that is used in an active/enabled report \n \n Figma linked: Project Phoenix (Automated Reports screens shown during discussion) \n Subtask: JY-20615 (below) \n Data populated: Description was already present; Figma designs walked through live \n \n --- \n JY-20615 · Notify the user if a Saved Search is deleted but is used in AJ Report \n \n Time on screen:\u000015:18–15:20\u0000·\u0000Presenter:\u0000Nikolay\u0000Yankov\n Epic: AJ Reports · Status: BACKLOG \n Linked to: JY-20676 (sibling ticket, same pattern for Saved Searches) \n \n --- \n JY-20613 · Allow owner's role to be selected when setting up a trial \n\u0000\u0000 \n\u0000\u0000Time on screen:\u000015:20–15:26\u0000·\u0000Presenter:\u0000Nikolay\u0000Yankov\n Status: BACKLOG · Estimate visible: 2.5 story points \n \n Description: \n \n ▎ Stoyan is seeing more cases where the Owner doesn't want to connect their calendar and email to Jiminny because they don't want to be a recorder. Currently when a trial is \n ▎ created the Owner is given a Recorder role by default.\n ▎ - Allow Implementations to select the role of the owner when setting up a trial \n\u0000\u0000▎ - Put the field below the Owner field\n\u0000\u0000▎\u0000- Choices: Recorder / Recorder & Voice / Analyst\n ▎ - This option shouldn't appear when editing an organisation \n ▎\u0000- When the owner signs in, they should have the selected role + Admin permissions\n \n\u0000\u0000--- \n\u0000\u0000JY-20500 · Batch initial sync for Salesforce\n \n Time on screen:\u000015:26–16:35\u0000(~70\u0000min,\u0000most\u0000of\u0000the\u0000meeting)\u0000·\u0000Multiple presenters\n Parent: JY-15971 CRM Synching Improvements · Epic: CRM Sync \n Sprint assigned during meeting: → Platform Sprint 3 Q2 \n Rank updated: None → Ranked higher (Galya updated) \n Need QA: No \n Description (Stefka Stoyanova updated): \n \n ▎ Currently synching CRM objects is not working sufficiently when a huge amount of objects are imported from the CRM into Jiminny. \n ▎ \n ▎ Problem: Importing deals, leads, accounts and contacts can take hours \n ▎ \n ▎ Solution: \n\u0000\u0000▎ - Separate obtaining which objects to import from updating them in Jiminny\n ▎ - The current sync object job should only read batches from Salesforce and store the payload in Redis \n ▎ - A separate {import_object} job processes batches of 100 deals/leads/accounts/contacts from Redis into Jiminny \n ▎ - Retry mechanism for spot instances being turned off \n ▎ - Clean Redis after 24 hours for unconsumed objects \n \n --- \n JY-20501 · Batch initial sync for HubSpot \n\u0000\u0000 \n\u0000\u0000Time on screen:\u000015:28–16:29\u0000(alongside\u0000JY-20500)\n Parent: JY-15971 · Sprint assigned: → Platform Sprint 3 Q2 \n Rank updated: None → Ranked higher (Galya updated) \n Key design note captured: \n \n ▎ \"We're just changing the source of IDs (HubSpot API instead of webhooks), but using the same Redis Batch Job pipeline — same retry/failure handling as regular webhook sync\" \n \n Description mirrors JY-20500 but targets HubSpot objects (deals, accounts, contacts) instead of Salesforce \n \n --- \n\u0000\u0000Also visible in backlog (not opened individually but listed):\n \n ┌──────────┬─────────────────────────────────────┬───────────────────┬──────────┐\n │ Ticket │ Title │ Epic │ Estimate │ \n\u0000\u0000├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤\n\u0000\u0000│ JY-20503 │ Batch insert/update CRM\u0000objects\u0000in…\u0000│\u0000CRM\u0000Sync\u0000 \u0000 \u0000\u0000\u0000\u0000 \u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000 \u0000│\n\u0000\u0000├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤\n │ JY-20503 │ Batch insert/update CRM objects │ CRM Sync │ — │ \n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │ JY-20699 │ Wrong formatting for summary in… │ — │ 2.5 │ \n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n\u0000\u0000│ JY-20412 │ Change\u0000Auto-log\u0000delay\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000Platform\u0000Sprint\u0000 \u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000 \u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │\u0000JY-20361\u0000│\u0000AJ\u0000Panorama\u0000for\u0000Call\u0000Scoring\u0000in\u0000OD\u0000\u0000│\u0000Automated\u0000Reports\u0000│\u00004\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │ JY-19628 │ Evaluation\u0000of\u0000AJ\u0000Panorama\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000Ask\u0000Anything\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n\u0000\u0000│ JY-20625 │ Jiminny\u0000MCP\u0000Connector\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │\u0000JY-20410\u0000│\u0000Update\u0000the\u0000template…\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n └──────────┴─────────────────────────────────────┴───────────────────┴──────────┘ \n\u0000\u0000 \n\u0000\u0000---\n\u0000\u0000Key outcomes from the session:\n - JY-20500 and JY-20501 were pulled into Platform Sprint 3 Q2 and ranked during the meeting \n -\u0000JY-20501\u0000description and JY-20500 description were updated by Stefka Stoyanova during the\u0000call\n - JY-20613 had its estimate confirmed at 2.5 points \n - Figma (Project Phoenix) was used to walk through JY-20676/JY-20615 UI flows \n \n✻ Brewed for 1m 57s \n \n※ recap: Platform refinement meeting reviewed 5 Jira tickets, mainly JY-20500/20501 batch CRM sync for Salesforce and HubSpot, both moved to Sprint 3 Q2. Next: check if sprint \n assignments saved correctly in Jira. (disable recaps in /config) \n \n───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n❯ \n───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000~112k uncached · /clear to start fresh\n\u0000\u0000? for shortcuts\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000new task? /clear to save 113.2k tokens","depth":4,"value":"!=null){if(typeof K!==\"object\"&&typeof K!==\"function\")throw TypeError('Object expected to be assigned to \"using\" declaration');var z;if(_)z=K[PA5];if(z===void 0)z=K[XA5];if(typeof z!==\"function\")throw TypeError(\"Object not disposable\");q.push([_,z,K])}else if(_)q.push([_]);return K},nz=(q,K,_)=>{var z=typeof SuppressedError===\"function\"?SuppressedError:function(O,$,w,j){return j=Error(w),j.name=\"SuppressedError\",j.error=O,j.suppressed=$,j},Y=(O)=>K=_?new z(O,K,\"An error was suppressed during disposal\"):(_=!0,O),A=(O)=>{while(O=q.pop())try{var $=O[1]&&O[1].call(O[2]);if(O[0])return Promise.resolve($).then(A,(w)=>(Y(w),A()))}catch(w){Y(w)}if(_)throw K};return A()};function DA5(){this.__data__=[],this.size=0}var PJ7;var DJ7=L(()=>{PJ7=DA5});function WA5(q,K){return q===K||q!==q&&K!==K}var Pg;var pP6=L(()=>{Pg=WA5});function fA5(q,K){var _=q.length;while(_--)if(Pg(q[_][0],K))return _;return-1}var de;var qu6=L(()=>{pP6();de=fA5});function vA5(q){var K=this.__data__,_=de(K,q);if(_<0)return!1;var z=K.length-1;if(_==z)K.pop();else GA5.call(K,_,1);return--this.size,!0}var ZA5,GA5,WJ7;var fJ7=L(()=>{qu6();ZA5=Array.prototype,GA5=ZA5.splice;WJ7=vA5});function TA5(q){var K=this.__data__,_=de(K,q);return _<0?void 0:K[_][1]}var ZJ7;var GJ7=L(()=>{qu6();ZJ7=TA5});function VA5(q){return de(this.__data__,q)>-1}var vJ7;var TJ7=L(()=>{qu6();vJ7=VA5});function kA5(q,K){var _=this.__data__,z=de(_,q);if(z<0)++this.size,_.push([q,K]);else _[z][1]=K;return this}var VJ7;var kJ7=L(()=>{qu6();VJ7=kA5});function gP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var ce;var Ku6=L(()=>{DJ7();fJ7();GJ7();TJ7();kJ7();gP6.prototype.clear=PJ7;gP6.prototype.delete=WJ7;gP6.prototype.get=ZJ7;gP6.prototype.has=vJ7;gP6.prototype.set=VJ7;ce=gP6});function NA5(){this.__data__=new ce,this.size=0}var NJ7;var yJ7=L(()=>{Ku6();NJ7=NA5});function yA5(q){var K=this.__data__,_=K.delete(q);return this.size=K.size,_}var EJ7;var LJ7=L(()=>{EJ7=yA5});function EA5(q){return this.__data__.get(q)}var hJ7;var RJ7=L(()=>{hJ7=EA5});function LA5(q){return this.__data__.has(q)}var SJ7;var CJ7=L(()=>{SJ7=LA5});var hA5,g_8;var Aa8=L(()=>{hA5=typeof global==\"object\"&&global&&global.Object===Object&&global,g_8=hA5});var RA5,SA5,vJ;var sR=L(()=>{Aa8();RA5=typeof self==\"object\"&&self&&self.Object===Object&&self,SA5=g_8||RA5||Function(\"return this\")(),vJ=SA5});var CA5,YW;var J_6=L(()=>{sR();CA5=vJ.Symbol,YW=CA5});function IA5(q){var K=bA5.call(q,_u6),_=q[_u6];try{q[_u6]=void 0;var z=!0}catch(A){}var Y=xA5.call(q);if(z)if(K)q[_u6]=_;else delete q[_u6];return Y}var bJ7,bA5,xA5,_u6,xJ7;var IJ7=L(()=>{J_6();bJ7=Object.prototype,bA5=bJ7.hasOwnProperty,xA5=bJ7.toString,_u6=YW?YW.toStringTag:void 0;xJ7=IA5});function BA5(q){return mA5.call(q)}var uA5,mA5,uJ7;var mJ7=L(()=>{uA5=Object.prototype,mA5=uA5.toString;uJ7=BA5});function FA5(q){if(q==null)return q===void 0?gA5:pA5;return BJ7&&BJ7 in Object(q)?xJ7(q):uJ7(q)}var pA5=\"[object Null]\",gA5=\"[object Undefined]\",BJ7,YL;var M_6=L(()=>{J_6();IJ7();mJ7();BJ7=YW?YW.toStringTag:void 0;YL=FA5});function UA5(q){var K=typeof q;return q!=null&&(K==\"object\"||K==\"function\")}var PO;var hT=L(()=>{PO=UA5});function nA5(q){if(!PO(q))return!1;var K=YL(q);return K==dA5||K==cA5||K==QA5||K==lA5}var QA5=\"[object AsyncFunction]\",dA5=\"[object Function]\",cA5=\"[object GeneratorFunction]\",lA5=\"[object Proxy]\",FP6;var F_8=L(()=>{M_6();hT();FP6=nA5});var iA5,U_8;var pJ7=L(()=>{sR();iA5=vJ[\"__core-js_shared__\"],U_8=iA5});function rA5(q){return!!gJ7&&gJ7 in q}var gJ7,FJ7;var UJ7=L(()=>{pJ7();gJ7=function(){var q=/[^.]+$/.exec(U_8&&U_8.keys&&U_8.keys.IE_PROTO||\"\");return q?\"Symbol(src)_1.\"+q:\"\"}();FJ7=rA5});function sA5(q){if(q!=null){try{return aA5.call(q)}catch(K){}try{return q+\"\"}catch(K){}}return\"\"}var oA5,aA5,rl;var Oa8=L(()=>{oA5=Function.prototype,aA5=oA5.toString;rl=sA5});function AO5(q){if(!PO(q)||FJ7(q))return!1;var K=FP6(q)?YO5:eA5;return K.test(rl(q))}var tA5,eA5,qO5,KO5,_O5,zO5,YO5,QJ7;var dJ7=L(()=>{F_8();UJ7();hT();Oa8();tA5=/[\\\\^$.*+?()[\\]{}|]/g,eA5=/^\\[object .+?Constructor\\]$/,qO5=Function.prototype,KO5=Object.prototype,_O5=qO5.toString,zO5=KO5.hasOwnProperty,YO5=RegExp(\"^\"+_O5.call(zO5).replace(tA5,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");QJ7=AO5});function OO5(q,K){return q==null?void 0:q[K]}var cJ7;var lJ7=L(()=>{cJ7=OO5});function $O5(q,K){var _=cJ7(q,K);return QJ7(_)?_:void 0}var ik;var le=L(()=>{dJ7();lJ7();ik=$O5});var wO5,ne;var Q_8=L(()=>{le();sR();wO5=ik(vJ,\"Map\"),ne=wO5});var jO5,ol;var zu6=L(()=>{le();jO5=ik(Object,\"create\"),ol=jO5});function HO5(){this.__data__=ol?ol(null):{},this.size=0}var nJ7;var iJ7=L(()=>{zu6();nJ7=HO5});function JO5(q){var K=this.has(q)&&delete this.__data__[q];return this.size-=K?1:0,K}var rJ7;var oJ7=L(()=>{rJ7=JO5});function DO5(q){var K=this.__data__;if(ol){var _=K[q];return _===MO5?void 0:_}return PO5.call(K,q)?K[q]:void 0}var MO5=\"__lodash_hash_undefined__\",XO5,PO5,aJ7;var sJ7=L(()=>{zu6();XO5=Object.prototype,PO5=XO5.hasOwnProperty;aJ7=DO5});function ZO5(q){var K=this.__data__;return ol?K[q]!==void 0:fO5.call(K,q)}var WO5,fO5,tJ7;var eJ7=L(()=>{zu6();WO5=Object.prototype,fO5=WO5.hasOwnProperty;tJ7=ZO5});function vO5(q,K){var _=this.__data__;return this.size+=this.has(q)?0:1,_[q]=ol&&K===void 0?GO5:K,this}var GO5=\"__lodash_hash_undefined__\",qM7;var KM7=L(()=>{zu6();qM7=vO5});function UP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var $a8;var _M7=L(()=>{iJ7();oJ7();sJ7();eJ7();KM7();UP6.prototype.clear=nJ7;UP6.prototype.delete=rJ7;UP6.prototype.get=aJ7;UP6.prototype.has=tJ7;UP6.prototype.set=qM7;$a8=UP6});function TO5(){this.size=0,this.__data__={hash:new $a8,map:new(ne||ce),string:new $a8}}var zM7;var YM7=L(()=>{_M7();Ku6();Q_8();zM7=TO5});function VO5(q){var K=typeof q;return K==\"string\"||K==\"number\"||K==\"symbol\"||K==\"boolean\"?q!==\"__proto__\":q===null}var AM7;var OM7=L(()=>{AM7=VO5});function kO5(q,K){var _=q.__data__;return AM7(K)?_[typeof K==\"string\"?\"string\":\"hash\"]:_.map}var ie;var Yu6=L(()=>{OM7();ie=kO5});function NO5(q){var K=ie(this,q).delete(q);return this.size-=K?1:0,K}var $M7;var wM7=L(()=>{Yu6();$M7=NO5});function yO5(q){return ie(this,q).get(q)}var jM7;var HM7=L(()=>{Yu6();jM7=yO5});function EO5(q){return ie(this,q).has(q)}var JM7;var MM7=L(()=>{Yu6();JM7=EO5});function LO5(q,K){var _=ie(this,q),z=_.size;return _.set(q,K),this.size+=_.size==z?0:1,this}var XM7;var PM7=L(()=>{Yu6();XM7=LO5});function QP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var X_6;var d_8=L(()=>{YM7();wM7();HM7();MM7();PM7();QP6.prototype.clear=zM7;QP6.prototype.delete=$M7;QP6.prototype.get=jM7;QP6.prototype.has=JM7;QP6.prototype.set=XM7;X_6=QP6});function RO5(q,K){var _=this.__data__;if(_ instanceof ce){var z=_.__data__;if(!ne||z.length<hO5-1)return z.push([q,K]),this.size=++_.size,this;_=this.__data__=new X_6(z)}return _.set(q,K),this.size=_.size,this}var hO5=200,DM7;var WM7=L(()=>{Ku6();Q_8();d_8();DM7=RO5});function dP6(q){var K=this.__data__=new ce(q);this.size=K.size}var Dg;var Au6=L(()=>{Ku6();yJ7();LJ7();RJ7();CJ7();WM7();dP6.prototype.clear=NJ7;dP6.prototype.delete=EJ7;dP6.prototype.get=hJ7;dP6.prototype.has=SJ7;dP6.prototype.set=DM7;Dg=dP6});function CO5(q){return this.__data__.set(q,SO5),this}var SO5=\"__lodash_hash_undefined__\",fM7;var ZM7=L(()=>{fM7=CO5});function bO5(q){return this.__data__.has(q)}var GM7;var vM7=L(()=>{GM7=bO5});function c_8(q){var K=-1,_=q==null?0:q.length;this.__data__=new X_6;while(++K<_)this.add(q[K])}var l_8;var wa8=L(()=>{d_8();ZM7();vM7();c_8.prototype.add=c_8.prototype.push=fM7;c_8.prototype.has=GM7;l_8=c_8});function xO5(q,K){var _=-1,z=q==null?0:q.length;while(++_<z)if(K(q[_],_,q))return!0;return!1}var TM7;var VM7=L(()=>{TM7=xO5});function IO5(q,K){return q.has(K)}var n_8;var ja8=L(()=>{n_8=IO5});function BO5(q,K,_,z,Y,A){var O=_&uO5,$=q.length,w=K.length;if($!=w&&!(O&&w>$))return!1;var j=A.get(q),H=A.get(K);if(j&&H)return j==K&&H==q;var J=-1,M=!0,X=_&mO5?new l_8:void 0;A.set(q,K),A.set(K,q);while(++J<$){var P=q[J],D=K[J];if(z)var W=O?z(D,P,J,K,q,A):z(P,D,J,q,K,A);if(W!==void 0){if(W)continue;M=!1;break}if(X){if(!TM7(K,function(f,G){if(!n_8(X,G)&&(P===f||Y(P,f,_,z,A)))return X.push(G)})){M=!1;break}}else if(!(P===D||Y(P,D,_,z,A))){M=!1;break}}return A.delete(q),A.delete(K),M}var uO5=1,mO5=2,i_8;var Ha8=L(()=>{wa8();VM7();ja8();i_8=BO5});var pO5,cP6;var Ja8=L(()=>{sR();pO5=vJ.Uint8Array,cP6=pO5});function gO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z,Y){_[++K]=[Y,z]}),_}var kM7;var NM7=L(()=>{kM7=gO5});function FO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z){_[++K]=z}),_}var lP6;var r_8=L(()=>{lP6=FO5});function q$5(q,K,_,z,Y,A,O){switch(_){case eO5:if(q.byteLength!=K.byteLength||q.byteOffset!=K.byteOffset)return!1;q=q.buffer,K=K.buffer;case tO5:if(q.byteLength!=K.byteLength||!A(new cP6(q),new cP6(K)))return!1;return!0;case dO5:case cO5:case iO5:return Pg(+q,+K);case lO5:return q.name==K.name&&q.message==K.message;case rO5:case aO5:return q==K+\"\";case nO5:var $=kM7;case oO5:var w=z&UO5;if($||($=lP6),q.size!=K.size&&!w)return!1;var j=O.get(q);if(j)return j==K;z|=QO5,O.set(q,K);var H=i_8($(q),$(K),z,Y,A,O);return O.delete(q),H;case sO5:if(Ma8)return Ma8.call(q)==Ma8.call(K)}return!1}var UO5=1,QO5=2,dO5=\"[object Boolean]\",cO5=\"[object Date]\",lO5=\"[object Error]\",nO5=\"[object Map]\",iO5=\"[object Number]\",rO5=\"[object RegExp]\",oO5=\"[object Set]\",aO5=\"[object String]\",sO5=\"[object Symbol]\",tO5=\"[object ArrayBuffer]\",eO5=\"[object DataView]\",yM7,Ma8,EM7;var LM7=L(()=>{J_6();Ja8();pP6();Ha8();NM7();r_8();yM7=YW?YW.prototype:void 0,Ma8=yM7?yM7.valueOf:void 0;EM7=q$5});function K$5(q,K){var _=-1,z=K.length,Y=q.length;while(++_<z)q[Y+_]=K[_];return q}var nP6;var o_8=L(()=>{nP6=K$5});var _$5,DO;var RT=L(()=>{_$5=Array.isArray,DO=_$5});function z$5(q,K,_){var z=K(q);return DO(q)?z:nP6(z,_(q))}var a_8;var Xa8=L(()=>{o_8();RT();a_8=z$5});function Y$5(q,K){var _=-1,z=q==null?0:q.length,Y=0,A=[];while(++_<z){var O=q[_];if(K(O,_,q))A[Y++]=O}return A}var s_8;var Pa8=L(()=>{s_8=Y$5});function A$5(){return[]}var t_8;var Da8=L(()=>{t_8=A$5});var O$5,$$5,hM7,w$5,iP6;var e_8=L(()=>{Pa8();Da8();O$5=Object.prototype,$$5=O$5.propertyIsEnumerable,hM7=Object.getOwnPropertySymbols,w$5=!hM7?t_8:function(q){if(q==null)return[];return q=Object(q),s_8(hM7(q),function(K){return $$5.call(q,K)})},iP6=w$5});function j$5(q,K){var _=-1,z=Array(q);while(++_<q)z[_]=K(_);return z}var RM7;var SM7=L(()=>{RM7=j$5});function H$5(q){return q!=null&&typeof q==\"object\"}var QP;var Wg=L(()=>{QP=H$5});function M$5(q){return QP(q)&&YL(q)==J$5}var J$5=\"[object Arguments]\",Wa8;var CM7=L(()=>{M_6();Wg();Wa8=M$5});var bM7,X$5,P$5,D$5,al;var Ou6=L(()=>{CM7();Wg();bM7=Object.prototype,X$5=bM7.hasOwnProperty,P$5=bM7.propertyIsEnumerable,D$5=Wa8(function(){return arguments}())?Wa8:function(q){return QP(q)&&X$5.call(q,\"callee\")&&!P$5.call(q,\"callee\")},al=D$5});function W$5(){return!1}var xM7;var IM7=L(()=>{xM7=W$5});var Kz8={};f8(Kz8,{default:()=>fg});var BM7,uM7,f$5,mM7,Z$5,G$5,fg;var $u6=L(()=>{sR();IM7();BM7=typeof Kz8==\"object\"&&Kz8&&!Kz8.nodeType&&Kz8,uM7=BM7&&typeof qz8==\"object\"&&qz8&&!qz8.nodeType&&qz8,f$5=uM7&&uM7.exports===BM7,mM7=f$5?vJ.Buffer:void 0,Z$5=mM7?mM7.isBuffer:void 0,G$5=Z$5||xM7,fg=G$5});function V$5(q,K){var _=typeof q;return K=K==null?v$5:K,!!K&&(_==\"number\"||_!=\"symbol\"&&T$5.test(q))&&(q>-1&&q%1==0&&q<K)}var v$5=9007199254740991,T$5,re;var wu6=L(()=>{T$5=/^(?:0|[1-9]\\d*)$/;re=V$5});function N$5(q){return typeof q==\"number\"&&q>-1&&q%1==0&&q<=k$5}var k$5=9007199254740991,rP6;var _z8=L(()=>{rP6=N$5});function o$5(q){return QP(q)&&rP6(q.length)&&!!G2[YL(q)]}var y$5=\"[object Arguments]\",E$5=\"[object Array]\",L$5=\"[object Boolean]\",h$5=\"[object Date]\",R$5=\"[object Error]\",S$5=\"[object Function]\",C$5=\"[object Map]\",b$5=\"[object Number]\",x$5=\"[object Object]\",I$5=\"[object RegExp]\",u$5=\"[object Set]\",m$5=\"[object String]\",B$5=\"[object WeakMap]\",p$5=\"[object ArrayBuffer]\",g$5=\"[object DataView]\",F$5=\"[object Float32Array]\",U$5=\"[object Float64Array]\",Q$5=\"[object Int8Array]\",d$5=\"[object Int16Array]\",c$5=\"[object Int32Array]\",l$5=\"[object Uint8Array]\",n$5=\"[object Uint8ClampedArray]\",i$5=\"[object Uint16Array]\",r$5=\"[object Uint32Array]\",G2,pM7;var gM7=L(()=>{M_6();_z8();Wg();G2={};G2[F$5]=G2[U$5]=G2[Q$5]=G2[d$5]=G2[c$5]=G2[l$5]=G2[n$5]=G2[i$5]=G2[r$5]=!0;G2[y$5]=G2[E$5]=G2[p$5]=G2[L$5]=G2[g$5]=G2[h$5]=G2[R$5]=G2[S$5]=G2[C$5]=G2[b$5]=G2[x$5]=G2[I$5]=G2[u$5]=G2[m$5]=G2[B$5]=!1;pM7=o$5});function a$5(q){return function(K){return q(K)}}var oP6;var zz8=L(()=>{oP6=a$5});var Az8={};f8(Az8,{default:()=>Zg});var FM7,ju6,s$5,fa8,t$5,Zg;var Oz8=L(()=>{Aa8();FM7=typeof Az8==\"object\"&&Az8&&!Az8.nodeType&&Az8,ju6=FM7&&typeof Yz8==\"object\"&&Yz8&&!Yz8.nodeType&&Yz8,s$5=ju6&&ju6.exports===FM7,fa8=s$5&&g_8.process,t$5=function(){try{var q=ju6&&ju6.require&&ju6.require(\"util\").types;if(q)return q;return fa8&&fa8.binding&&fa8.binding(\"util\")}catch(K){}}(),Zg=t$5});var UM7,e$5,aP6;var $z8=L(()=>{gM7();zz8();Oz8();UM7=Zg&&Zg.isTypedArray,e$5=UM7?oP6(UM7):pM7,aP6=e$5});function _w5(q,K){var _=DO(q),z=!_&&al(q),Y=!_&&!z&&fg(q),A=!_&&!z&&!Y&&aP6(q),O=_||z||Y||A,$=O?RM7(q.length,String):[],w=$.length;for(var j in q)if((K||Kw5.call(q,j))&&!(O&&(j==\"length\"||Y&&(j==\"offset\"||j==\"parent\")||A&&(j==\"buffer\"||j==\"byteLength\"||j==\"byteOffset\")||re(j,w))))$.push(j);return $}var qw5,Kw5,wz8;var Za8=L(()=>{SM7();Ou6();RT();$u6();wu6();$z8();qw5=Object.prototype,Kw5=qw5.hasOwnProperty;wz8=_w5});function Yw5(q){var K=q&&q.constructor,_=typeof K==\"function\"&&K.prototype||zw5;return q===_}var zw5,sP6;var jz8=L(()=>{zw5=Object.prototype;sP6=Yw5});function Aw5(q,K){return function(_){return q(K(_))}}var Hz8;var Ga8=L(()=>{Hz8=Aw5});var Ow5,QM7;var dM7=L(()=>{Ga8();Ow5=Hz8(Object.keys,Object),QM7=Ow5});function jw5(q){if(!sP6(q))return QM7(q);var K=[];for(var _ in Object(q))if(ww5.call(q,_)&&_!=\"constructor\")K.push(_);return K}var $w5,ww5,cM7;var lM7=L(()=>{jz8();dM7();$w5=Object.prototype,ww5=$w5.hasOwnProperty;cM7=jw5});function Hw5(q){return q!=null&&rP6(q.length)&&!FP6(q)}var Gg;var tP6=L(()=>{F_8();_z8();Gg=Hw5});function Jw5(q){return Gg(q)?wz8(q):cM7(q)}var tR;var P_6=L(()=>{Za8();lM7();tP6();tR=Jw5});function Mw5(q){return a_8(q,tR,iP6)}var Hu6;var va8=L(()=>{Xa8();e_8();P_6();Hu6=Mw5});function Ww5(q,K,_,z,Y,A){var O=_&Xw5,$=Hu6(q),w=$.length,j=Hu6(K),H=j.length;if(w!=H&&!O)return!1;var J=w;while(J--){var M=$[J];if(!(O?M in K:Dw5.call(K,M)))return!1}var X=A.get(q),P=A.get(K);if(X&&P)return X==K&&P==q;var D=!0;A.set(q,K),A.set(K,q);var W=O;while(++J<w){M=$[J];var f=q[M],G=K[M];if(z)var Z=O?z(G,f,M,K,q,A):z(f,G,M,q,K,A);if(!(Z===void 0?f===G||Y(f,G,_,z,A):Z)){D=!1;break}W||(W=M==\"constructor\")}if(D&&!W){var v=q.constructor,V=K.constructor;if(v!=V&&((\"constructor\"in q)&&(\"constructor\"in K))&&!(typeof v==\"function\"&&v instanceof v&&typeof V==\"function\"&&V instanceof V))D=!1}return A.delete(q),A.delete(K),D}var Xw5=1,Pw5,Dw5,nM7;var iM7=L(()=>{va8();Pw5=Object.prototype,Dw5=Pw5.hasOwnProperty;nM7=Ww5});var fw5,Jz8;var rM7=L(()=>{le();sR();fw5=ik(vJ,\"DataView\"),Jz8=fw5});var Zw5,Mz8;var oM7=L(()=>{le();sR();Zw5=ik(vJ,\"Promise\"),Mz8=Zw5});var Gw5,oe;var Ta8=L(()=>{le();sR();Gw5=ik(vJ,\"Set\"),oe=Gw5});var vw5,Xz8;var aM7=L(()=>{le();sR();vw5=ik(vJ,\"WeakMap\"),Xz8=vw5});var sM7=\"[object Map]\",Tw5=\"[object Object]\",tM7=\"[object Promise]\",eM7=\"[object Set]\",qX7=\"[object WeakMap]\",KX7=\"[object DataView]\",Vw5,kw5,Nw5,yw5,Ew5,D_6,sl;var Ju6=L(()=>{rM7();Q_8();oM7();Ta8();aM7();M_6();Oa8();Vw5=rl(Jz8),kw5=rl(ne),Nw5=rl(Mz8),yw5=rl(oe),Ew5=rl(Xz8),D_6=YL;if(Jz8&&D_6(new Jz8(new ArrayBuffer(1)))!=KX7||ne&&D_6(new ne)!=sM7||Mz8&&D_6(Mz8.resolve())!=tM7||oe&&D_6(new oe)!=eM7||Xz8&&D_6(new Xz8)!=qX7)D_6=function(q){var K=YL(q),_=K==Tw5?q.constructor:void 0,z=_?rl(_):\"\";if(z)switch(z){case Vw5:return KX7;case kw5:return sM7;case Nw5:return tM7;case yw5:return eM7;case Ew5:return qX7}return K};sl=D_6});function Rw5(q,K,_,z,Y,A){var O=DO(q),$=DO(K),w=O?zX7:sl(q),j=$?zX7:sl(K);w=w==_X7?Pz8:w,j=j==_X7?Pz8:j;var H=w==Pz8,J=j==Pz8,M=w==j;if(M&&fg(q)){if(!fg(K))return!1;O=!0,H=!1}if(M&&!H)return A||(A=new Dg),O||aP6(q)?i_8(q,K,_,z,Y,A):EM7(q,K,w,_,z,Y,A);if(!(_&Lw5)){var X=H&&YX7.call(q,\"__wrapped__\"),P=J&&YX7.call(K,\"__wrapped__\");if(X||P){var D=X?q.value():q,W=P?K.value():K;return A||(A=new Dg),Y(D,W,_,z,A)}}if(!M)return!1;return A||(A=new Dg),nM7(q,K,_,z,Y,A)}var Lw5=1,_X7=\"[object Arguments]\",zX7=\"[object Array]\",Pz8=\"[object Object]\",hw5,YX7,AX7;var OX7=L(()=>{Au6();Ha8();LM7();iM7();Ju6();RT();$u6();$z8();hw5=Object.prototype,YX7=hw5.hasOwnProperty;AX7=Rw5});function $X7(q,K,_,z,Y){if(q===K)return!0;if(q==null||K==null||!QP(q)&&!QP(K))return q!==q&&K!==K;return AX7(q,K,_,z,$X7,Y)}var eP6;var Dz8=L(()=>{OX7();Wg();eP6=$X7});function bw5(q,K,_,z){var Y=_.length,A=Y,O=!z;if(q==null)return!A;q=Object(q);while(Y--){var $=_[Y];if(O&&$[2]?$[1]!==q[$[0]]:!($[0]in q))return!1}while(++Y<A){$=_[Y];var w=$[0],j=q[w],H=$[1];if(O&&$[2]){if(j===void 0&&!(w in q))return!1}else{var J=new Dg;if(z)var M=z(j,H,w,q,K,J);if(!(M===void 0?eP6(H,j,Sw5|Cw5,z,J):M))return!1}}return!0}var Sw5=1,Cw5=2,wX7;var jX7=L(()=>{Au6();Dz8();wX7=bw5});function xw5(q){return q===q&&!PO(q)}var Wz8;var Va8=L(()=>{hT();Wz8=xw5});function Iw5(q){var K=tR(q),_=K.length;while(_--){var z=K[_],Y=q[z];K[_]=[z,Y,Wz8(Y)]}return K}var HX7;var JX7=L(()=>{Va8();P_6();HX7=Iw5});function uw5(q,K){return function(_){if(_==null)return!1;return _[q]===K&&(K!==void 0||(q in Object(_)))}}var fz8;var ka8=L(()=>{fz8=uw5});function mw5(q){var K=HX7(q);if(K.length==1&&K[0][2])return fz8(K[0][0],K[0][1]);return function(_){return _===q||wX7(_,q,K)}}var MX7;var XX7=L(()=>{jX7();JX7();ka8();MX7=mw5});function pw5(q){return typeof q==\"symbol\"||QP(q)&&YL(q)==Bw5}var Bw5=\"[object Symbol]\",ae;var Mu6=L(()=>{M_6();Wg();ae=pw5});function Uw5(q,K){if(DO(q))return!1;var _=typeof q;if(_==\"number\"||_==\"symbol\"||_==\"boolean\"||q==null||ae(q))return!0;return Fw5.test(q)||!gw5.test(q)||K!=null&&q in Object(K)}var gw5,Fw5,qD6;var Zz8=L(()=>{RT();Mu6();gw5=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,Fw5=/^\\w*$/;qD6=Uw5});function Na8(q,K){if(typeof q!=\"function\"||K!=null&&typeof K!=\"function\")throw TypeError(Qw5);var _=function(){var z=arguments,Y=K?K.apply(this,z):z[0],A=_.cache;if(A.has(Y))return A.get(Y);var O=q.apply(this,z);return _.cache=A.set(Y,O)||A,O};return _.cache=new(Na8.Cache||X_6),_}var Qw5=\"Expected a function\",A1;var h4=L(()=>{d_8();Na8.Cache=X_6;A1=Na8});function cw5(q){var K=A1(q,function(z){if(_.size===dw5)_.clear();return z}),_=K.cache;return K}var dw5=500,PX7;var DX7=L(()=>{h4();PX7=cw5});var lw5,nw5,iw5,WX7;var fX7=L(()=>{DX7();lw5=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,nw5=/\\\\(\\\\)?/g,iw5=PX7(function(q){var K=[];if(q.charCodeAt(0)===46)K.push(\"\");return q.replace(lw5,function(_,z,Y,A){K.push(Y?A.replace(nw5,\"$1\"):z||_)}),K}),WX7=iw5});function rw5(q,K){var _=-1,z=q==null?0:q.length,Y=Array(z);while(++_<z)Y[_]=K(q[_],_,q);return Y}var se;var Xu6=L(()=>{se=rw5});function vX7(q){if(typeof q==\"string\")return q;if(DO(q))return se(q,vX7)+\"\";if(ae(q))return GX7?GX7.call(q):\"\";var K=q+\"\";return K==\"0\"&&1/q==-ow5?\"-0\":K}var ow5=1/0,ZX7,GX7,TX7;var VX7=L(()=>{J_6();Xu6();RT();Mu6();ZX7=YW?YW.prototype:void 0,GX7=ZX7?ZX7.toString:void 0;TX7=vX7});function aw5(q){return q==null?\"\":TX7(q)}var KD6;var Gz8=L(()=>{VX7();KD6=aw5});function sw5(q,K){if(DO(q))return q;return qD6(q,K)?[q]:WX7(KD6(q))}var eR;var W_6=L(()=>{RT();Zz8();fX7();Gz8();eR=sw5});function ew5(q){if(typeof q==\"string\"||ae(q))return q;var K=q+\"\";return K==\"0\"&&1/q==-tw5?\"-0\":K}var tw5=1/0,qS;var f_6=L(()=>{Mu6();qS=ew5});function q25(q,K){K=eR(K,q);var _=0,z=K.length;while(q!=null&&_<z)q=q[qS(K[_++])];return _&&_==z?q:void 0}var te;var Pu6=L(()=>{W_6();f_6();te=q25});function K25(q,K,_){var z=q==null?void 0:te(q,K);return z===void 0?_:z}var kX7;var NX7=L(()=>{Pu6();kX7=K25});function _25(q,K){return q!=null&&K in Object(q)}var yX7;var EX7=L(()=>{yX7=_25});function z25(q,K,_){K=eR(K,q);var z=-1,Y=K.length,A=!1;while(++z<Y){var O=qS(K[z]);if(!(A=q!=null&&_(q,O)))break;q=q[O]}if(A||++z!=Y)return A;return Y=q==null?0:q.length,!!Y&&rP6(Y)&&re(O,Y)&&(DO(q)||al(q))}var LX7;var hX7=L(()=>{W_6();Ou6();RT();wu6();_z8();f_6();LX7=z25});function Y25(q,K){return q!=null&&LX7(q,K,yX7)}var RX7;var SX7=L(()=>{EX7();hX7();RX7=Y25});function $25(q,K){if(qD6(q)&&Wz8(K))return fz8(qS(q),K);return function(_){var z=kX7(_,q);return z===void 0&&z===K?RX7(_,q):eP6(K,z,A25|O25)}}var A25=1,O25=2,CX7;var bX7=L(()=>{Dz8();NX7();SX7();Zz8();Va8();ka8();f_6();CX7=$25});function w25(q){return q}var _D6;var vz8=L(()=>{_D6=w25});function j25(q){return function(K){return K==null?void 0:K[q]}}var xX7;var IX7=L(()=>{xX7=j25});function H25(q){return function(K){return te(K,q)}}var uX7;var mX7=L(()=>{Pu6();uX7=H25});function J25(q){return qD6(q)?xX7(qS(q)):uX7(q)}var BX7;var pX7=L(()=>{IX7();mX7();Zz8();f_6();BX7=J25});function M25(q){if(typeof q==\"function\")return q;if(q==null)return _D6;if(typeof q==\"object\")return DO(q)?CX7(q[0],q[1]):MX7(q);return BX7(q)}var rk;var ee=L(()=>{XX7();bX7();vz8();RT();pX7();rk=M25});function X25(q,K){var _,z=-1,Y=q.length;while(++z<Y){var A=K(q[z]);if(A!==void 0)_=_===void 0?A:_+A}return _}var gX7;var FX7=L(()=>{gX7=X25});function P25(q,K){return q&&q.length?gX7(q,rk(K,2)):0}var zD6;var UX7=L(()=>{ee();FX7();zD6=P25});import{randomUUID as Du6}from\"crypto\";var ya8=()=>{};function QX7(){return Ea8}function dX7(q){Ea8=q}function cX7(q){return Tz8.has(q)?Tz8.get(q):void 0}function lX7(q,K){Tz8.set(q,K)}function nX7(q){return La8.get(q)}function iX7(q,K){La8.set(q,K)}function AW(){Ea8=null,Tz8.clear(),La8.clear()}function Vz8(){return ha8}function rX7(q){ha8=q}function oX7(){ha8=void 0}var Ea8=null,Tz8,La8,ha8;var tl=L(()=>{Tz8=new Map;La8=new Map});function E9(){let q=new Set;return{subscribe(K){return q.add(K),()=>{q.delete(K)}},emit(...K){for(let _ of q)_(...K)},clear(){q.clear()}}}var DD6={};f8(DD6,{waitForScrollIdle:()=>Vu6,updateLastInteractionTime:()=>G_6,switchSession:()=>Yf,snapshotOutputTokensForTurn:()=>h25,setUserMsgOptIn:()=>Vg,setUseCoworkPlugins:()=>OL,setTracerProvider:()=>xz8,setThinkingClearLatched:()=>Yt8,setTeleportedSessionInfo:()=>Bu6,setSystemPromptSectionCacheEntry:()=>is8,setStrictToolResultPairing:()=>I25,setStatsStore:()=>ca8,setSessionTrustAccepted:()=>Iu6,setSessionSource:()=>fs8,setSessionPersistenceDisabled:()=>ms8,setSessionIngressToken:()=>y_6,setSessionBypassPermissionsMode:()=>Is8,setSdkBetas:()=>Ys8,setSdkAgentProgressSummariesEnabled:()=>Ps8,setScheduledTasksEnabled:()=>bu6,setQuestionPreviewFormat:()=>uz8,setPromptId:()=>Fu6,setPromptCache1hAllowlist:()=>ss8,setProjectRoot:()=>fu6,setOriginalCwd:()=>KS,setOauthTokenFromFd:()=>Vs8,setNeedsPlanModeExitAttachment:()=>gI,setNeedsAutoModeExitAttachment:()=>CG,setModelStrings:()=>Nu6,setMeterProvider:()=>bz8,setMeter:()=>As8,setMemoryToggledOff:()=>Ws8,setMainThreadAgentType:()=>_n,setMainLoopModelOverride:()=>dP,setLspRecommendationShownThisSession:()=>Us8,setLoopChainStartedAt:()=>g25,setLoggerProvider:()=>Sz8,setLastMainRequestId:()=>ea8,setLastEmittedDate:()=>PD6,setLastClassifierRequests:()=>hu6,setLastApiCompletionTimestamp:()=>Tu6,setLastAPIRequestMessages:()=>Ls8,setLastAPIRequest:()=>ys8,setKairosActive:()=>x25,setIsRemoteMode:()=>ls8,setIsInteractive:()=>Ms8,setInlinePlugins:()=>bs8,setInitialMainLoopModel:()=>zs8,setInitJsonSchema:()=>Qs8,setHasUnknownModelCost:()=>hz8,setHasExitedPlanMode:()=>$L,setHasDevChannels:()=>Qz8,setFlagSettingsPath:()=>Zs8,setFlagSettingsInline:()=>Gs8,setFastModeHeaderLatched:()=>Kt8,setEventLogger:()=>Cz8,setDirectConnectServerUrl:()=>W25,setCwdState:()=>Ia8,setCostStateForRestore:()=>ku6,setClientType:()=>Xs8,setChromeFlagOverride:()=>xs8,setCachedClaudeMdContent:()=>hs8,setCacheEditingHeaderLatched:()=>d25,setApiKeyFromFd:()=>Ns8,setAllowedSettingSources:()=>Cs8,setAllowedChannels:()=>zn,setAfkModeHeaderLatched:()=>es8,setAdditionalDirectoriesForClaudeMd:()=>pu6,setActiveRoutine:()=>Z25,resetTurnToolDuration:()=>Ua8,resetTurnHookDuration:()=>Fa8,resetTurnClassifierDuration:()=>da8,resetTotalDurationStateAndCost_FOR_TESTS_ONLY:()=>G25,resetStateForTests:()=>_P7,resetSdkInitState:()=>YP7,resetModelStringsForTestingOnly:()=>C25,resetCostState:()=>OD6,removeSessionCronTasks:()=>xu6,registerHookCallbacks:()=>z66,regenerateSessionId:()=>Sa8,preferThirdPartyAuthentication:()=>Ru6,onSessionSwitch:()=>xa8,onInteraction:()=>ra8,needsPlanModeExitAttachment:()=>Bs8,needsAutoModeExitAttachment:()=>ps8,markScrollActivity:()=>Ks8,markPostCompaction:()=>K66,markFirstTeleportMessageLogged:()=>Fz8,isSessionPersistenceDisabled:()=>ok,incrementBudgetContinuationCount:()=>S25,hasUnknownModelCost:()=>ta8,hasShownLspRecommendationThisSession:()=>Fs8,hasExitedPlanModeInSession:()=>uu6,handlePlanModeTransition:()=>Kn,handleAutoModeTransition:()=>gs8,getUserMsgOptIn:()=>AL,getUseCoworkPlugins:()=>Cu6,getUsageForModel:()=>_s8,getTurnToolDurationMs:()=>V25,getTurnToolCount:()=>k25,getTurnOutputTokens:()=>E25,getTurnHookDurationMs:()=>v25,getTurnHookCount:()=>T25,getTurnClassifierDurationMs:()=>N25,getTurnClassifierCount:()=>y25,getTracerProvider:()=>N_6,getTotalWebSearchRequests:()=>oa8,getTotalToolDuration:()=>ga8,getTotalOutputTokens:()=>el,getTotalLinesRemoved:()=>T_6,getTotalLinesAdded:()=>v_6,getTotalInputTokens:()=>V_6,getTotalDuration:()=>YD6,getTotalCostUSD:()=>XM,getTotalCacheReadInputTokens:()=>Zu6,getTotalCacheCreationInputTokens:()=>Gu6,getTotalAPIDurationWithoutRetries:()=>pa8,getTotalAPIDuration:()=>RG,getTokenCounter:()=>wD6,getThinkingClearLatched:()=>zt8,getTeleportedSessionInfo:()=>gz8,getSystemPromptSectionCache:()=>ns8,getStrictToolResultPairing:()=>Ds8,getStatsStore:()=>q66,getSlowOperations:()=>OP7,getSessionTrustAccepted:()=>MD6,getSessionSource:()=>u25,getSessionProjectDir:()=>Z_6,getSessionIngressToken:()=>vs8,getSessionId:()=>N8,getSessionCronTasks:()=>L_6,getSessionCreatedTeams:()=>mu6,getSessionCounter:()=>Os8,getSessionBypassPermissionsMode:()=>E_6,getSdkBetas:()=>OW,getSdkAgentProgressSummariesEnabled:()=>vg,getScheduledTasksEnabled:()=>JD6,getRegisteredHooks:()=>zS,getQuestionPreviewFormat:()=>Iz8,getPromptId:()=>gu6,getPromptCache1hAllowlist:()=>as8,getProjectRoot:()=>wz,getPrCounter:()=>yu6,getPlanSlugCache:()=>h_6,getParentSessionId:()=>Ca8,getOriginalCwd:()=>A7,getOauthTokenFromFd:()=>Ts8,getModelUsage:()=>ST,getModelStrings:()=>$D6,getMeterProvider:()=>Js8,getMeter:()=>b25,getMemoryToggledOff:()=>Tg,getMainThreadAgentType:()=>Ng,getMainLoopModelOverride:()=>pI,getLoopChainStartedAt:()=>p25,getLoggerProvider:()=>Lu6,getLocCounter:()=>Rz8,getLastMainRequestId:()=>vu6,getLastInteractionTime:()=>_S,getLastEmittedDate:()=>os8,getLastClassifierRequests:()=>zP7,getLastApiCompletionTimestamp:()=>qn,getLastAPIRequestMessages:()=>m25,getLastAPIRequest:()=>Es8,getKairosActive:()=>SG,getIsScrollDraining:()=>k_6,getIsRemoteMode:()=>cK,getIsNonInteractiveSession:()=>d7,getIsInteractive:()=>CT,getInvokedSkillsForAgent:()=>ds8,getInvokedSkills:()=>Q25,getInlinePlugins:()=>kg,getInitialMainLoopModel:()=>AD6,getInitJsonSchema:()=>Bz8,getHasDevChannels:()=>Uz8,getFlagSettingsPath:()=>_66,getFlagSettingsInline:()=>HD6,getFastModeHeaderLatched:()=>qt8,getEventLogger:()=>Hs8,getDirectConnectServerUrl:()=>ua8,getCwdState:()=>BI,getCurrentTurnTokenBudget:()=>L25,getCostCounter:()=>ws8,getCommitCounter:()=>$s8,getCodeEditToolDecisionCounter:()=>Eu6,getClientType:()=>jD6,getChromeFlagOverride:()=>Su6,getCachedClaudeMdContent:()=>Rs8,getCacheEditingHeaderLatched:()=>_t8,getBudgetContinuationCount:()=>R25,getApiKeyFromFd:()=>ks8,getAllowedSettingSources:()=>Ss8,getAllowedChannels:()=>TJ,getAgentColorMap:()=>mz8,getAfkModeHeaderLatched:()=>ts8,getAdditionalDirectoriesForClaudeMd:()=>bG,getActiveTimeCounter:()=>js8,getActiveRoutine:()=>f25,flushInteractionTime:()=>na8,deleteLoopChainStartedAt:()=>F25,consumePostCompaction:()=>qs8,clearSystemPromptSectionState:()=>rs8,clearRegisteredPluginHooks:()=>pz8,clearRegisteredHooks:()=>U25,clearInvokedSkillsForAgent:()=>Y66,clearInvokedSkills:()=>cs8,clearBetaHeaderLatches:()=>At8,addToTurnHookDuration:()=>yz8,addToTurnClassifierDuration:()=>Qa8,addToTotalLinesChanged:()=>Ez8,addToTotalDurationState:()=>ma8,addToTotalCostState:()=>Ba8,addToToolDuration:()=>Nz8,addToInMemoryErrorLog:()=>B25,addSlowOperation:()=>AP7,addSessionCronTask:()=>us8,addInvokedSkill:()=>XD6});import{realpathSync as aX7}from\"fs\";import{cwd as D25}from\"process\";function eX7(){let q=\"\";if(typeof process<\"u\"&&typeof process.cwd===\"function\"&&typeof aX7===\"function\"){let _=D25();try{q=aX7(_).normalize(\"NFC\")}catch{q=_.normalize(\"NFC\")}}return{originalCwd:q,projectRoot:q,totalCostUSD:0,totalAPIDuration:0,totalAPIDurationWithoutRetries:0,totalToolDuration:0,turnHookDurationMs:0,turnToolDurationMs:0,turnClassifierDurationMs:0,turnToolCount:0,turnHookCount:0,turnClassifierCount:0,startTime:Date.now(),lastInteractionTime:Date.now(),totalLinesAdded:0,totalLinesRemoved:0,hasUnknownModelCost:!1,cwd:q,modelUsage:{},mainLoopModelOverride:void 0,initialMainLoopModel:null,modelStrings:null,isInteractive:!1,kairosActive:!1,strictToolResultPairing:!1,memoryToggledOff:!1,sdkAgentProgressSummariesEnabled:!1,userMsgOptIn:!1,clientType:\"cli\",sessionSource:void 0,questionPreviewFormat:void 0,sessionIngressToken:void 0,oauthTokenFromFd:void 0,apiKeyFromFd:void 0,flagSettingsPath:void 0,flagSettingsInline:null,allowedSettingSources:[\"userSettings\",\"projectSettings\",\"localSettings\",\"flagSettings\",\"policySettings\"],meter:null,sessionCounter:null,locCounter:null,prCounter:null,commitCounter:null,costCounter:null,tokenCounter:null,codeEditToolDecisionCounter:null,activeTimeCounter:null,statsStore:null,sessionId:Du6(),parentSessionId:void 0,loggerProvider:null,eventLogger:null,meterProvider:null,tracerProvider:null,agentColorMap:new Map,agentColorIndex:0,lastAPIRequest:null,lastAPIRequestMessages:null,lastClassifierRequests:null,cachedClaudeMdContent:null,inMemoryErrorLog:[],inlinePlugins:[],chromeFlagOverride:void 0,useCoworkPlugins:!1,sessionBypassPermissionsMode:!1,scheduledTasksEnabled:!1,sessionCronTasks:[],loopChainStartedAt:Object.create(null),sessionCreatedTeams:new Set,sessionTrustAccepted:!1,sessionPersistenceDisabled:!1,hasExitedPlanMode:!1,needsPlanModeExitAttachment:!1,needsAutoModeExitAttachment:!1,lspRecommendationShownThisSession:!1,initJsonSchema:null,registeredHooks:null,planSlugCache:new Map,teleportedSessionInfo:null,invokedSkills:new Map,slowOperations:[],sdkBetas:void 0,mainThreadAgentType:void 0,isRemoteMode:!1,...!1,directConnectServerUrl:void 0,activeRoutine:void 0,systemPromptSectionCache:new Map,lastEmittedDate:null,additionalDirectoriesForClaudeMd:[],allowedChannels:[],hasDevChannels:!1,sessionProjectDir:null,promptCache1hAllowlist:null,afkModeHeaderLatched:null,fastModeHeaderLatched:null,cacheEditingHeaderLatched:null,thinkingClearLatched:null,promptId:null,lastMainRequestId:void 0,lastApiCompletionTimestamp:null,pendingPostCompaction:!1}}function N8(){return G8.sessionId}function Sa8(q={}){if(q.setCurrentAsParent)G8.parentSessionId=G8.sessionId;return G8.planSlugCache.delete(G8.sessionId),G8.sessionId=Du6(),G8.sessionProjectDir=null,G8.sessionId}function Ca8(){return G8.parentSessionId}function Yf(q,K=null){if(G8.sessionId!==q)G8.planSlugCache.delete(G8.sessionId);G8.sessionId=q,G8.sessionProjectDir=K,ba8.emit(q)}function Z_6(){return G8.sessionProjectDir}function A7(){return G8.originalCwd}function wz(){return G8.projectRoot}function KS(q){G8.originalCwd=q.normalize(\"NFC\")}function fu6(q){G8.projectRoot=q.normalize(\"NFC\")}function BI(){return G8.cwd}function Ia8(q){G8.cwd=q.normalize(\"NFC\")}function ua8(){return G8.directConnectServerUrl}function W25(q){G8.directConnectServerUrl=q}function f25(){return G8.activeRoutine}function Z25(q){G8.activeRoutine=q}function ma8(q,K){G8.totalAPIDuration+=q,G8.totalAPIDurationWithoutRetries+=K}function G25(){G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalCostUSD=0}function Ba8(q,K,_){G8.modelUsage[_]=K,G8.totalCostUSD+=q}function XM(){return G8.totalCostUSD}function RG(){return G8.totalAPIDuration}function YD6(){return Date.now()-G8.startTime}function pa8(){return G8.totalAPIDurationWithoutRetries}function ga8(){return G8.totalToolDuration}function Nz8(q){G8.totalToolDuration+=q,G8.turnToolDurationMs+=q,G8.turnToolCount++}function v25(){return G8.turnHookDurationMs}function yz8(q){G8.turnHookDurationMs+=q,G8.turnHookCount++}function Fa8(){G8.turnHookDurationMs=0,G8.turnHookCount=0}function T25(){return G8.turnHookCount}function V25(){return G8.turnToolDurationMs}function Ua8(){G8.turnToolDurationMs=0,G8.turnToolCount=0}function k25(){return G8.turnToolCount}function N25(){return G8.turnClassifierDurationMs}function Qa8(q){G8.turnClassifierDurationMs+=q,G8.turnClassifierCount++}function da8(){G8.turnClassifierDurationMs=0,G8.turnClassifierCount=0}function y25(){return G8.turnClassifierCount}function q66(){return G8.statsStore}function ca8(q){G8.statsStore=q}function G_6(q){if(q)qP7();else la8=!0}function na8(){if(la8)qP7()}function qP7(){G8.lastInteractionTime=Date.now(),la8=!1,ia8.emit()}function Ez8(q,K){G8.totalLinesAdded+=q,G8.totalLinesRemoved+=K}function v_6(){return G8.totalLinesAdded}function T_6(){return G8.totalLinesRemoved}function V_6(){return zD6(Object.values(G8.modelUsage),\"inputTokens\")}function el(){return zD6(Object.values(G8.modelUsage),\"outputTokens\")}function Zu6(){return zD6(Object.values(G8.modelUsage),\"cacheReadInputTokens\")}function Gu6(){return zD6(Object.values(G8.modelUsage),\"cacheCreationInputTokens\")}function oa8(){return zD6(Object.values(G8.modelUsage),\"webSearchRequests\")}function E25(){return el()-aa8}function L25(){return sa8}function h25(q){aa8=el(),sa8=q,Lz8=0}function R25(){return Lz8}function S25(){Lz8++}function hz8(){G8.hasUnknownModelCost=!0}function ta8(){return G8.hasUnknownModelCost}function vu6(){return G8.lastMainRequestId}function ea8(q){G8.lastMainRequestId=q}function qn(){return G8.lastApiCompletionTimestamp}function Tu6(q){G8.lastApiCompletionTimestamp=q}function K66(){G8.pendingPostCompaction=!0}function qs8(){let q=G8.pendingPostCompaction;return G8.pendingPostCompaction=!1,q}function _S(){return G8.lastInteractionTime}function Ks8(){if(kz8=!0,Wu6)clearTimeout(Wu6);Wu6=setTimeout(()=>{kz8=!1,Wu6=void 0},KP7),Wu6.unref?.()}function k_6(){return kz8}async function Vu6(){while(kz8)await new Promise((q)=>setTimeout(q,KP7).unref?.())}function ST(){return G8.modelUsage}function _s8(q){return G8.modelUsage[q]}function pI(){return G8.mainLoopModelOverride}function AD6(){return G8.initialMainLoopModel}function dP(q){G8.mainLoopModelOverride=q}function zs8(q){G8.initialMainLoopModel=q}function OW(){return G8.sdkBetas}function Ys8(q){G8.sdkBetas=q}function OD6(){G8.totalCostUSD=0,G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalToolDuration=0,G8.startTime=Date.now(),G8.totalLinesAdded=0,G8.totalLinesRemoved=0,G8.hasUnknownModelCost=!1,G8.modelUsage={},G8.promptId=null}function ku6({totalCostUSD:q,totalAPIDuration:K,totalAPIDurationWithoutRetries:_,totalToolDuration:z,totalLinesAdded:Y,totalLinesRemoved:A,lastDuration:O,modelUsage:$}){if(G8.totalCostUSD=q,G8.totalAPIDuration=K,G8.totalAPIDurationWithoutRetries=_,G8.totalToolDuration=z,G8.totalLinesAdded=Y,G8.totalLinesRemoved=A,$)G8.modelUsage=$;if(O)G8.startTime=Date.now()-O}function _P7(){throw Error(\"resetStateForTests can only be called in tests\")}function $D6(){return G8.modelStrings}function Nu6(q){G8.modelStrings=q}function C25(){G8.modelStrings=null}function As8(q,K){G8.meter=q,G8.sessionCounter=K(\"claude_code.session.count\",{description:\"Count of CLI sessions started\"}),G8.locCounter=K(\"claude_code.lines_of_code.count\",{description:\"Count of lines of code modified, with the 'type' attribute indicating whether lines were added or removed\"}),G8.prCounter=K(\"claude_code.pull_request.count\",{description:\"Number of pull requests created\"}),G8.commitCounter=K(\"claude_code.commit.count\",{description:\"Number of git commits created\"}),G8.costCounter=K(\"claude_code.cost.usage\",{description:\"Cost of the Claude Code session\",unit:\"USD\"}),G8.tokenCounter=K(\"claude_code.token.usage\",{description:\"Number of tokens used\",unit:\"tokens\"}),G8.codeEditToolDecisionCounter=K(\"claude_code.code_edit_tool.decision\",{description:\"Count of code editing tool permission decisions (accept/reject) for Edit, Write, and NotebookEdit tools\"}),G8.activeTimeCounter=K(\"claude_code.active_time.total\",{description:\"Total active time in seconds\",unit:\"s\"})}function b25(){return G8.meter}function Os8(){return G8.sessionCounter}function Rz8(){return G8.locCounter}function yu6(){return G8.prCounter}function $s8(){return G8.commitCounter}function ws8(){return G8.costCounter}function wD6(){return G8.tokenCounter}function Eu6(){return G8.codeEditToolDecisionCounter}function js8(){return G8.activeTimeCounter}function Lu6(){return G8.loggerProvider}function Sz8(q){G8.loggerProvider=q}function Hs8(){return G8.eventLogger}function Cz8(q){G8.eventLogger=q}function Js8(){return G8.meterProvider}function bz8(q){G8.meterProvider=q}function N_6(){return G8.tracerProvider}function xz8(q){G8.tracerProvider=q}function d7(){return!G8.isInteractive}function CT(){return G8.isInteractive}function Ms8(q){G8.isInteractive=q}function jD6(){return G8.clientType}function Xs8(q){G8.clientType=q}function vg(){return G8.sdkAgentProgressSummariesEnabled}function Ps8(q){G8.sdkAgentProgressSummariesEnabled=q}function SG(){return G8.kairosActive}function x25(q){G8.kairosActive=q}function Ds8(){return G8.strictToolResultPairing}function I25(q){G8.strictToolResultPairing=q}function Tg(){return G8.memoryToggledOff}function Ws8(q){G8.memoryToggledOff=q}function AL(){return G8.userMsgOptIn}function Vg(q){G8.userMsgOptIn=q}function u25(){return G8.sessionSource}function fs8(q){G8.sessionSource=q}function Iz8(){return G8.questionPreviewFormat}function uz8(q){G8.questionPreviewFormat=q}function mz8(){return G8.agentColorMap}function _66(){return G8.flagSettingsPath}function Zs8(q){G8.flagSettingsPath=q}function HD6(){return G8.flagSettingsInline}function Gs8(q){G8.flagSettingsInline=q}function vs8(){return G8.sessionIngressToken}function y_6(q){G8.sessionIngressToken=q}function Ts8(){return G8.oauthTokenFromFd}function Vs8(q){G8.oauthTokenFromFd=q}function ks8(){return G8.apiKeyFromFd}function Ns8(q){G8.apiKeyFromFd=q}function ys8(q){G8.lastAPIRequest=q}function Es8(){return G8.lastAPIRequest}function Ls8(q){G8.lastAPIRequestMessages=q}function m25(){return G8.lastAPIRequestMessages}function hu6(q){G8.lastClassifierRequests=q}function zP7(){return G8.lastClassifierRequests}function hs8(q){G8.cachedClaudeMdContent=q}function Rs8(){return G8.cachedClaudeMdContent}function B25(q){if(G8.inMemoryErrorLog.length>=100)G8.inMemoryErrorLog.shift();G8.inMemoryErrorLog.push(q)}function Ss8(){return G8.allowedSettingSources}function Cs8(q){G8.allowedSettingSources=q}function Ru6(){return d7()&&G8.clientType!==\"claude-vscode\"}function bs8(q){G8.inlinePlugins=q}function kg(){return G8.inlinePlugins}function xs8(q){G8.chromeFlagOverride=q}function Su6(){return G8.chromeFlagOverride}function OL(q){G8.useCoworkPlugins=q,AW()}function Cu6(){return G8.useCoworkPlugins}function Is8(q){G8.sessionBypassPermissionsMode=q}function E_6(){return G8.sessionBypassPermissionsMode}function bu6(q){G8.scheduledTasksEnabled=q}function JD6(){return G8.scheduledTasksEnabled}function L_6(){return G8.sessionCronTasks}function us8(q){G8.sessionCronTasks.push(q)}function p25(q){return G8.loopChainStartedAt[q]}function g25(q,K){G8.loopChainStartedAt[q]=K}function F25(q){delete G8.loopChainStartedAt[q]}function xu6(q){if(q.length===0)return 0;let K=new Set(q),_=G8.sessionCronTasks.filter((Y)=>!K.has(Y.id)),z=G8.sessionCronTasks.length-_.length;if(z===0)return 0;return G8.sessionCronTasks=_,z}function Iu6(q){G8.sessionTrustAccepted=q}function MD6(){return G8.sessionTrustAccepted}function ms8(q){G8.sessionPersistenceDisabled=q}function ok(){return G8.sessionPersistenceDisabled}function uu6(){return G8.hasExitedPlanMode}function $L(q){G8.hasExitedPlanMode=q}function Bs8(){return G8.needsPlanModeExitAttachment}function gI(q){G8.needsPlanModeExitAttachment=q}function Kn(q,K){if(K===\"plan\"&&q!==\"plan\")G8.needsPlanModeExitAttachment=!1;if(q===\"plan\"&&K!==\"plan\")G8.needsPlanModeExitAttachment=!0}function ps8(){return G8.needsAutoModeExitAttachment}function CG(q){G8.needsAutoModeExitAttachment=q}function gs8(q,K){if(q===\"auto\"&&K===\"plan\"||q===\"plan\"&&K===\"auto\")return;let _=q===\"auto\",z=K===\"auto\";if(z&&!_)G8.needsAutoModeExitAttachment=!1;if(_&&!z)G8.needsAutoModeExitAttachment=!0}function Fs8(){return G8.lspRecommendationShownThisSession}function Us8(q){G8.lspRecommendationShownThisSession=q}function Qs8(q){G8.initJsonSchema=q}function Bz8(){return G8.initJsonSchema}function z66(q){if(!G8.registeredHooks)G8.registeredHooks={};for(let[K,_]of Object.entries(q)){let z=K;if(!G8.registeredHooks[z])G8.registeredHooks[z]=[];G8.registeredHooks[z].push(..._)}}function zS(){return G8.registeredHooks}function U25(){G8.registeredHooks=null}function pz8(){if(!G8.registeredHooks)return;let q={};for(let[K,_]of Object.entries(G8.registeredHooks)){let z=_.filter((Y)=>!(\"pluginRoot\"in Y));if(z.length>0)q[K]=z}G8.registeredHooks=Object.keys(q).length>0?q:null}function YP7(){G8.initJsonSchema=null,G8.registeredHooks=null}function h_6(){return G8.planSlugCache}function mu6(){return G8.sessionCreatedTeams}function Bu6(q){G8.teleportedSessionInfo={isTeleported:!0,hasLoggedFirstMessage:!1,sessionId:q.sessionId}}function gz8(){return G8.teleportedSessionInfo}function Fz8(){if(G8.teleportedSessionInfo)G8.teleportedSessionInfo.hasLoggedFirstMessage=!0}function XD6(q,K,_,z=null){let Y=`${z??\"\"}:${q}`;G8.invokedSkills.set(Y,{skillName:q,skillPath:K,content:_,invokedAt:Date.now(),agentId:z})}function Q25(){return G8.invokedSkills}function ds8(q){let K=q??null,_=new Map;for(let[z,Y]of G8.invokedSkills)if(Y.agentId===K)_.set(z,Y);return _}function cs8(q){if(!q||q.size===0){G8.invokedSkills.clear();return}for(let[K,_]of G8.invokedSkills)if(_.agentId===null||!q.has(_.agentId))G8.invokedSkills.delete(K)}function Y66(q){for(let[K,_]of G8.invokedSkills)if(_.agentId===q)G8.invokedSkills.delete(K)}function AP7(q,K){return}function OP7(){if(G8.slowOperations.length===0)return tX7;let q=Date.now();if(G8.slowOperations.some((K)=>q-K.timestamp>=Ra8)){if(G8.slowOperations=G8.slowOperations.filter((K)=>q-K.timestamp<Ra8),G8.slowOperations.length===0)return tX7}return G8.slowOperations}function Ng(){return G8.mainThreadAgentType}function _n(q){G8.mainThreadAgentType=q}function cK(){return G8.isRemoteMode}function ls8(q){G8.isRemoteMode=q}function ns8(){return G8.systemPromptSectionCache}function is8(q,K){G8.systemPromptSectionCache.set(q,K)}function rs8(){G8.systemPromptSectionCache.clear()}function os8(){return G8.lastEmittedDate}function PD6(q){G8.lastEmittedDate=q}function bG(){return G8.additionalDirectoriesForClaudeMd}function pu6(q){G8.additionalDirectoriesForClaudeMd=q}function TJ(){return G8.allowedChannels}function zn(q){G8.allowedChannels=q}function Uz8(){return G8.hasDevChannels}function Qz8(q){G8.hasDevChannels=q}function as8(){return G8.promptCache1hAllowlist}function ss8(q){G8.promptCache1hAllowlist=q}function ts8(){return G8.afkModeHeaderLatched}function es8(q){G8.afkModeHeaderLatched=q}function qt8(){return G8.fastModeHeaderLatched}function Kt8(q){G8.fastModeHeaderLatched=q}function _t8(){return G8.cacheEditingHeaderLatched}function d25(q){G8.cacheEditingHeaderLatched=q}function zt8(){return G8.thinkingClearLatched}function Yt8(q){G8.thinkingClearLatched=q}function At8(){G8.afkModeHeaderLatched=null,G8.fastModeHeaderLatched=null,G8.cacheEditingHeaderLatched=null,G8.thinkingClearLatched=null}function gu6(){return G8.promptId}function Fu6(q){G8.promptId=q}var G8,ba8,xa8,la8=!1,ia8,ra8,aa8=0,sa8=null,Lz8=0,kz8=!1,Wu6,KP7=150,sX7=10,Ra8=1e4,tX7;var v8=L(()=>{UX7();ya8();tl();G8=eX7();ba8=E9(),xa8=ba8.subscribe;ia8=E9(),ra8=ia8.subscribe;tX7=[]});function dz8(q){let K;for(let _ in q)if(_.startsWith(\"_PROTO_\")){if(K===void 0)K={...q};delete K[_]}return K??q}function $P7(q){if(A66!==null)return;if(A66=q,Uu6.length>0){let K=[...Uu6];Uu6.length=0,queueMicrotask(()=>{for(let _ of K)if(_.async)A66.logEventAsync(_.eventName,_.metadata);else A66.logEvent(_.eventName,_.metadata)})}}function d(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!1});return}A66.logEvent(q,K)}async function wP7(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!0});return}await A66.logEventAsync(q,K)}var Uu6,A66=null;var T8=L(()=>{Uu6=[]});function WD6({writeFn:q,flushIntervalMs:K=1000,maxBufferSize:_=100,maxBufferBytes:z=1/0,immediateMode:Y=!1}){let A=[],O=0,$=null,w=null;function j(){if($)clearTimeout($),$=null}function H(){if(w)q(w.join(\"\")),w=null;if(A.length===0)return;q(A.join(\"\")),A=[],O=0,j()}function J(){if(!$)$=setTimeout(H,K)}function M(){if(w){w.push(...A),A=[],O=0,j();return}let X=A;A=[],O=0,j(),w=X,setImmediate(()=>{let P=w;if(w=null,P)q(P.join(\"\"))})}return{write(X){if(Y){q(X);return}if(A.push(X),O+=X.length,J(),A.length>=_||O>=z)M()},flush:H,dispose(){H()}}}function gq(q){return Ot8.add(q),()=>Ot8.delete(q)}async function jP7(){await Promise.all(Array.from(Ot8).map((q)=>q()))}var Ot8;var o9=L(()=>{Ot8=new Set});function c25(q){let K=[],_=q.match(/^MCP server [\"']([^\"']+)[\"']/);if(_&&_[1])K.push(\"mcp\"),K.push(_[1].toLowerCase());else{let A=q.match(/^([^:[]+):/);if(A&&A[1])K.push(A[1].trim().toLowerCase())}let z=q.match(/^\\[([^\\]]+)]/);if(z&&z[1])K.push(z[1].trim().toLowerCase());if(q.toLowerCase().includes(\"1p event:\"))K.push(\"1p\");let Y=q.match(/:\\s*([^:]+?)(?:\\s+(?:type|mode|status|event))?:/);if(Y&&Y[1]){let A=Y[1].trim().toLowerCase();if(A.length<30&&!A.includes(\" \"))K.push(A)}return Array.from(new Set(K))}function l25(q,K){if(!K)return!0;if(q.length===0)return!1;if(K.isExclusive)return!q.some((_)=>K.exclude.includes(_));else return q.some((_)=>K.include.includes(_))}function JP7(q,K){if(!K)return!0;let _=c25(q);return l25(_,K)}var HP7;var MP7=L(()=>{h4();HP7=A1((q)=>{if(!q||q.trim()===\"\")return null;let K=q.split(\",\").map((A)=>A.trim()).filter(Boolean);if(K.length===0)return null;let _=K.some((A)=>A.startsWith(\"!\")),z=K.some((A)=>!A.startsWith(\"!\"));if(_&&z)return null;let Y=K.map((A)=>A.replace(/^!/,\"\").toLowerCase());return{include:_?[]:Y,exclude:_?Y:[],isExclusive:_}})});import{homedir as n25}from\"os\";import{join as XP7}from\"path\";function fD6(){return XP7(O7(),\"teams\")}function ZD6(q){let K=process.env.NODE_OPTIONS;if(!K)return!1;return K.split(/\\s+/).includes(q)}function Yn(q,K){if(q===void 0)return K;let _=parseInt(q,10);return Number.isNaN(_)?K:_}function B6(q){if(!q)return!1;if(typeof q===\"boolean\")return q;let K=q.toLowerCase().trim();return[\"1\",\"true\",\"yes\",\"on\"].includes(K)}function a9(q){if(q===void 0)return!1;if(typeof q===\"boolean\")return!q;if(!q)return!1;let K=q.toLowerCase().trim();return[\"0\",\"false\",\"no\",\"off\"].includes(K)}function D9(){return B6(process.env.CLAUDE_CODE_SIMPLE)||process.argv.includes(\"--bare\")}function PP7(q){let K={};if(q)for(let _ of q){let[z,...Y]=_.split(\"=\");if(!z||Y.length===0)throw Error(`Invalid environment variable format: ${_}, environment variables should be added as: -e KEY1=value1 -e KEY2=value2`);K[z]=Y.join(\"=\")}return K}function YS(){return process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION||\"us-east-1\"}function cz8(){return process.env.CLOUD_ML_REGION||\"us-east5\"}function DP7(){return B6(process.env.CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR)}function Af(){return!1}function AS(){return!1}function WP7(){return{namespace:void 0,cluster:void 0}}function lz8(q){if(q){let K=i25.find(([_])=>q.startsWith(_));if(K)return process.env[K[1]]||cz8()}return cz8()}var O7,i25;var B8=L(()=>{h4();O7=A1(()=>{return(process.env.CLAUDE_CONFIG_DIR??XP7(n25(),\".claude\")).normalize(\"NFC\")},()=>process.env.CLAUDE_CONFIG_DIR);i25=[[\"claude-haiku-4-5\",\"VERTEX_REGION_CLAUDE_HAIKU_4_5\"],[\"claude-3-5-haiku\",\"VERTEX_REGION_CLAUDE_3_5_HAIKU\"],[\"claude-3-5-sonnet\",\"VERTEX_REGION_CLAUDE_3_5_SONNET\"],[\"claude-3-7-sonnet\",\"VERTEX_REGION_CLAUDE_3_7_SONNET\"],[\"claude-opus-4-6\",\"VERTEX_REGION_CLAUDE_4_6_OPUS\"],[\"claude-opus-4-1\",\"VERTEX_REGION_CLAUDE_4_1_OPUS\"],[\"claude-opus-4\",\"VERTEX_REGION_CLAUDE_4_0_OPUS\"],[\"claude-sonnet-4-6\",\"VERTEX_REGION_CLAUDE_4_6_SONNET\"],[\"claude-sonnet-4-5\",\"VERTEX_REGION_CLAUDE_4_5_SONNET\"],[\"claude-sonnet-4\",\"VERTEX_REGION_CLAUDE_4_0_SONNET\"]]});function $4(q,K,_,z,Y){if(z===\"m\")throw TypeError(\"Private method is not writable\");if(z===\"a\"&&!Y)throw TypeError(\"Private accessor was defined without a setter\");if(typeof K===\"function\"?q!==K||!Y:!K.has(q))throw TypeError(\"Cannot write private member to an object whose class did not declare it\");return z===\"a\"?Y.call(q,_):Y?Y.value=_:K.set(q,_),_}function u1(q,K,_,z){if(_===\"a\"&&!z)throw TypeError(\"Private accessor was defined without a getter\");if(typeof K===\"function\"?q!==K||!z:!K.has(q))throw TypeError(\"Cannot read private member from an object whose class did not declare it\");return _===\"m\"?z:_===\"a\"?z.call(q):z?z.value:K.get(q)}var An=()=>{};var $t8=function(){let{crypto:q}=globalThis;if(q?.randomUUID)return $t8=q.randomUUID.bind(q),q.randomUUID();let K=new Uint8Array(1),_=q?()=>q.getRandomValues(K)[0]:()=>Math.random()*255&255;return\"10000000-1000-4000-8000-100000000000\".replace(/[018]/g,(z)=>(+z^_()&15>>+z/4).toString(16))};function On(q){return typeof q===\"object\"&&q!==null&&((\"name\"in q)&&q.name===\"AbortError\"||(\"message\"in q)&&String(q.message).includes(\"FetchRequestCanceledException\"))}var Qu6=(q)=>{if(q instanceof Error)return q;if(typeof q===\"object\"&&q!==null){try{if(Object.prototype.toString.call(q)===\"[object Error]\"){let K=Error(q.message,q.cause?{cause:q.cause}:{});if(q.stack)K.stack=q.stack;if(q.cause&&!K.cause)K.cause=q.cause;if(q.name)K.name=q.name;return K}}catch{}try{return Error(JSON.stringify(q))}catch{}}return Error(q)};var vq,dq,c_,Of,yg,du6,R_6,cu6,S_6,lu6,nu6,iu6,ru6;var $W=L(()=>{vq=class vq extends Error{};dq=class dq extends vq{constructor(q,K,_,z,Y){super(`${dq.makeMessage(q,K,_)}`);this.status=q,this.headers=z,this.requestID=z?.get(\"request-id\"),this.error=K,this.type=Y??null}static makeMessage(q,K,_){let z=K?.message?typeof K.message===\"string\"?K.message:JSON.stringify(K.message):K?JSON.stringify(K):_;if(q&&z)return`${q} ${z}`;if(q)return`${q} status code (no body)`;if(z)return z;return\"(no status code or body)\"}static generate(q,K,_,z){if(!q||!z)return new Of({message:_,cause:Qu6(K)});let Y=K,A=Y?.error?.type;if(q===400)return new du6(q,Y,_,z,A);if(q===401)return new R_6(q,Y,_,z,A);if(q===403)return new cu6(q,Y,_,z,A);if(q===404)return new S_6(q,Y,_,z,A);if(q===409)return new lu6(q,Y,_,z,A);if(q===422)return new nu6(q,Y,_,z,A);if(q===429)return new iu6(q,Y,_,z,A);if(q>=500)return new ru6(q,Y,_,z,A);return new dq(q,Y,_,z,A)}};c_=class c_ extends dq{constructor({message:q}={}){super(void 0,void 0,q||\"Request was aborted.\",void 0)}};Of=class Of extends dq{constructor({message:q,cause:K}){super(void 0,void 0,q||\"Connection error.\",void 0);if(K)this.cause=K}};yg=class yg extends Of{constructor({message:q}={}){super({message:q??\"Request timed out.\"})}};du6=class du6 extends dq{};R_6=class R_6 extends dq{};cu6=class cu6 extends dq{};S_6=class S_6 extends dq{};lu6=class lu6 extends dq{};nu6=class nu6 extends dq{};iu6=class iu6 extends dq{};ru6=class ru6 extends dq{}});function nz8(q){if(typeof q!==\"object\")return{};return q??{}}function Ht8(q){if(!q)return!0;for(let K in q)return!1;return!0}function ZP7(q,K){return Object.prototype.hasOwnProperty.call(q,K)}var o25,fP7=(q)=>{return o25.test(q)},wt8=(q)=>(wt8=Array.isArray,wt8(q)),jt8,GP7=(q,K)=>{if(typeof K!==\"number\"||!Number.isInteger(K))throw new vq(`${q} must be an integer`);if(K<0)throw new vq(`${q} must be a positive integer`);return K},iz8=(q)=>{try{return JSON.parse(q)}catch(K){return}};var C_6=L(()=>{$W();o25=/^[a-z][a-z0-9+.-]*:/i,jt8=wt8});var vP7=(q)=>new Promise((K)=>setTimeout(K,q));var O66=\"0.81.0\";function a25(){if(typeof Deno<\"u\"&&Deno.build!=null)return\"deno\";if(typeof EdgeRuntime<\"u\")return\"edge\";if(Object.prototype.toString.call(typeof globalThis.process<\"u\"?globalThis.process:0)===\"[object process]\")return\"node\";return\"unknown\"}function t25(){if(typeof navigator>\"u\"||!navigator)return null;let q=[{key:\"edge\",pattern:/Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"ie\",pattern:/MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"ie\",pattern:/Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"chrome\",pattern:/Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"firefox\",pattern:/Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/},{key:\"safari\",pattern:/(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/}];for(let{key:K,pattern:_}of q){let z=_.exec(navigator.userAgent);if(z){let Y=z[1]||0,A=z[2]||0,O=z[3]||0;return{browser:K,version:`${Y}.${A}.${O}`}}}return null}var NP7=()=>{return typeof window<\"u\"&&typeof window.document<\"u\"&&typeof navigator<\"u\"},s25=()=>{let q=a25();if(q===\"deno\")return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":VP7(Deno.build.os),\"X-Stainless-Arch\":TP7(Deno.build.arch),\"X-Stainless-Runtime\":\"deno\",\"X-Stainless-Runtime-Version\":typeof Deno.version===\"string\"?Deno.version:Deno.version?.deno??\"unknown\"};if(typeof EdgeRuntime<\"u\")return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":\"Unknown\",\"X-Stainless-Arch\":`other:${EdgeRuntime}`,\"X-Stainless-Runtime\":\"edge\",\"X-Stainless-Runtime-Version\":globalThis.process.version};if(q===\"node\")return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":VP7(globalThis.process.platform??\"unknown\"),\"X-Stainless-Arch\":TP7(globalThis.process.arch??\"unknown\"),\"X-Stainless-Runtime\":\"node\",\"X-Stainless-Runtime-Version\":globalThis.process.version??\"unknown\"};let K=t25();if(K)return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":\"Unknown\",\"X-Stainless-Arch\":\"unknown\",\"X-Stainless-Runtime\":`browser:${K.browser}`,\"X-Stainless-Runtime-Version\":K.version};return{\"X-Stainless-Lang\":\"js\",\"X-Stainless-Package-Version\":O66,\"X-Stainless-OS\":\"Unknown\",\"X-Stainless-Arch\":\"unknown\",\"X-Stainless-Runtime\":\"unknown\",\"X-Stainless-Runtime-Version\":\"unknown\"}},TP7=(q)=>{if(q===\"x32\")return\"x32\";if(q===\"x86_64\"||q===\"x64\")return\"x64\";if(q===\"arm\")return\"arm\";if(q===\"aarch64\"||q===\"arm64\")return\"arm64\";if(q)return`other:${q}`;return\"unknown\"},VP7=(q)=>{if(q=q.toLowerCase(),q.includes(\"ios\"))return\"iOS\";if(q===\"android\")return\"Android\";if(q===\"darwin\")return\"MacOS\";if(q===\"win32\")return\"Windows\";if(q===\"freebsd\")return\"FreeBSD\";if(q===\"openbsd\")return\"OpenBSD\";if(q===\"linux\")return\"Linux\";if(q)return`Other:${q}`;return\"Unknown\"},kP7,yP7=()=>{return kP7??(kP7=s25())};var Jt8=()=>{};function EP7(){if(typeof fetch<\"u\")return fetch;throw Error(\"`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`\")}function Mt8(...q){let K=globalThis.ReadableStream;if(typeof K>\"u\")throw Error(\"`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`\");return new K(...q)}function rz8(q){let K=Symbol.asyncIterator in q?q[Symbol.asyncIterator]():q[Symbol.iterator]();return Mt8({start(){},async pull(_){let{done:z,value:Y}=await K.next();if(z)_.close();else _.enqueue(Y)},async cancel(){await K.return?.()}})}function ou6(q){if(q[Symbol.asyncIterator])return q;let K=q.getReader();return{async next(){try{let _=await K.read();if(_?.done)K.releaseLock();return _}catch(_){throw K.releaseLock(),_}},async return(){let _=K.cancel();return K.releaseLock(),await _,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function LP7(q){if(q===null||typeof q!==\"object\")return;if(q[Symbol.asyncIterator]){await q[Symbol.asyncIterator]().return?.();return}let K=q.getReader(),_=K.cancel();K.releaseLock(),await _}var hP7=({headers:q,body:K})=>{return{bodyHeaders:{\"content-type\":\"application/json\"},body:JSON.stringify(K)}};function RP7(q){return Object.entries(q).filter(([K,_])=>typeof _<\"u\").map(([K,_])=>{if(typeof _===\"string\"||typeof _===\"number\"||typeof _===\"boolean\")return`${encodeURIComponent(K)}=${encodeURIComponent(_)}`;if(_===null)return`${encodeURIComponent(K)}=`;throw new vq(`Cannot stringify type ${typeof _}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`)}).join(\"&\")}var SP7=L(()=>{$W()});function xP7(q){let K=0;for(let Y of q)K+=Y.length;let _=new Uint8Array(K),z=0;for(let Y of q)_.set(Y,z),z+=Y.length;return _}function au6(q){let K;return(CP7??(K=new globalThis.TextEncoder,CP7=K.encode.bind(K)))(q)}function Xt8(q){let K;return(bP7??(K=new globalThis.TextDecoder,bP7=K.decode.bind(K)))(q)}var CP7,bP7;class $66{constructor(){wL.set(this,void 0),jL.set(this,void 0),$4(this,wL,new Uint8Array,\"f\"),$4(this,jL,null,\"f\")}decode(q){if(q==null)return[];let K=q instanceof ArrayBuffer?new Uint8Array(q):typeof q===\"string\"?au6(q):q;$4(this,wL,xP7([u1(this,wL,\"f\"),K]),\"f\");let _=[],z;while((z=Kj5(u1(this,wL,\"f\"),u1(this,jL,\"f\")))!=null){if(z.carriage&&u1(this,jL,\"f\")==null){$4(this,jL,z.index,\"f\");continue}if(u1(this,jL,\"f\")!=null&&(z.index!==u1(this,jL,\"f\")+1||z.carriage)){_.push(Xt8(u1(this,wL,\"f\").subarray(0,u1(this,jL,\"f\")-1))),$4(this,wL,u1(this,wL,\"f\").subarray(u1(this,jL,\"f\")),\"f\"),$4(this,jL,null,\"f\");continue}let Y=u1(this,jL,\"f\")!==null?z.preceding-1:z.preceding,A=Xt8(u1(this,wL,\"f\").subarray(0,Y));_.push(A),$4(this,wL,u1(this,wL,\"f\").subarray(z.index),\"f\"),$4(this,jL,null,\"f\")}return _}flush(){if(!u1(this,wL,\"f\").length)return[];return this.decode(`\n ^^^\n\nSyntaxError: Unexpected token '??='\n at Loader.moduleStrategy (internal/modules/esm/translators.js:145:18)\n at async link (internal/modules/esm/module_job.js:47:21)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ nvm use 24\nNow using node v24.11.1 (npm v11.6.2)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude\n╭─── Claude Code v2.1.114 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ \n│ │ Tips for getting started │ \n│ Welcome back Lukas! │ Run /init to create a CLAUDE.md file with instructions for Claude │ \n│ │ Note: You have launched claude in your home directory. For the best experience, launch it in a project directory instead. │ \n│ ▐▛███▜▌ │ ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ \n│ ▝▜█████▛▘ │ Recent activity │ \n│ ▘▘ ▝▝ │ 10h ago nice │ \n│ Sonnet 4.6 · Claude Pro · kovaliklukas@gmail.com's │ 4d ago give me overview of what I did yesterday │ \n│ Organization │ 1w ago how to open screenshots related, how many are there aroudn that time │ \n│ /Users/lukas │ /resume for more │ \n╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ \n \n❯ You have access to Screenpipe data via the local SQLite database at ~/.screenpipe/db.sqlite \n \n Query the database using: sqlite3 -json ~/.screenpipe/db.sqlite \"YOUR SQL HERE\" \n \n Key tables: \n - ocr_text: columns id, frame_id, text, text_json, app_name, window_name, created_at \n - audio_transcriptions: columns id, audio_chunk_id, transcription, device, is_input, created_at \n - frames: columns id, file_path, timestamp, device_id \n - ui_events: columns id, event_type, element_text, app_name, created_at \n \n Build a full day activity summary for TODAY (use date() in SQL for today's date, timestamps are UTC). \n \n Steps: \n 1. Query ocr_text for today grouped by app_name + window_name with time ranges (MIN/MAX created_at), filtering out empty/junk text \n 2. Query audio_transcriptions for today to find meeting/call content (is_input=1 is microphone) \n 3. Correlate everything into a chronological timeline \n \n Output format — a narrative timeline like: \n 08:34–09:12 PhpStorm · JY-20458 — editing UserReportController.php, writing migration \n 09:12–09:45 Slack · #engineering — huddle with team, discussed deployment blocker \n 09:45–10:30 Chrome · Jira — reviewed ticket comments, updated description \n ... \n \n Rules: \n - Convert all UTC timestamps to local time (Europe/Sofia = UTC+3) \n - Merge consecutive entries of the same app/window within 5-minute gaps \n - Flag meetings/calls based on: Zoom/Meet/Teams in app_name OR microphone audio present \n - For code work: extract file names and ticket numbers from window titles \n - For Slack/browser: extract thread/page context from window_name \n - Minimum segment duration: 2 minutes (ignore flash switches) \n - End with a summary block: total focused work, meetings, context switches, top 3 apps by time \n ⎿ Please run /login · API Error: 401 {\"type\":\"error\",\"error\":{\"type\":\"authentication_error\",\"message\":\"Invalid authentication \n \u0000 credentials\"},\"request_id\":\"req_011CaFTE1idEzHpMgKT4Xunq\"}\n\n❯ is it ok now \n ⎿ Please run /login · API Error: 401 {\"type\":\"error\",\"error\":{\"type\":\"authentication_error\",\"message\":\"Invalid authentication \n credentials\"},\"request_id\":\"req_011CaFTEnQhm5weRqNt6SMq2\"} \n \n❯ /login \n ⎿ Login successful \n \n❯ You have access to Screenpipe data via the local SQLite database at ~/.screenpipe/db.sqlite \n \n Query the database using: sqlite3 -json ~/.screenpipe/db.sqlite \"YOUR SQL HERE\" \n \n Key tables: \n - ocr_text: columns id, frame_id, text, text_json, app_name, window_name, created_at \n - audio_transcriptions: columns id, audio_chunk_id, transcription, device, is_input, created_at \n - frames: columns id, file_path, timestamp, device_id \n - ui_events: columns id, event_type, element_text, app_name, created_at \n \n Build a full day activity summary for TODAY (use date() in SQL for today's date, timestamps are UTC). \n \n Steps: \n 1. Query ocr_text for today grouped by app_name + window_name with time ranges (MIN/MAX created_at), filtering out empty/junk text \n 2. Query audio_transcriptions for today to find meeting/call content (is_input=1 is microphone) \n 3. Correlate everything into a chronological timeline \n \n Output format — a narrative timeline like: \n 08:34–09:12 PhpStorm · JY-20458 — editing UserReportController.php, writing migration \n 09:12–09:45 Slack · #engineering — huddle with team, discussed deployment blocker \n 09:45–10:30 Chrome · Jira — reviewed ticket comments, updated description \n ... \n \n Rules: \n - Convert all UTC timestamps to local time (Europe/Sofia = UTC+3) \n - Merge consecutive entries of the same app/window within 5-minute gaps \n - Flag meetings/calls based on: Zoom/Meet/Teams in app_name OR microphone audio present \n - For code work: extract file names and ticket numbers from window titles \n - For Slack/browser: extract thread/page context from window_name \n - Minimum segment duration: 2 minutes (ignore flash switches) \n - End with a summary block: total focused work, meetings, context switches, top 3 apps by time \n\n⏺\u0000Querying the Screenpipe\u0000database\u0000for\u0000today's\u0000activity.\n \n⏺\u0000Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"SELECT\u0000app_name,\u0000window_name,\u0000MIN(created_at)\u0000as\u0000first_seen,\u0000MAX(created_at)\u0000as\u0000last_seen,\u0000COUNT(*)\u0000as\u0000entries\u0000FROM\u0000ocr_t…)\n ⎿ Error: Exit code 1 \n \u0000\u0000Error: in prepare, no such column: created_at\n SELECT app_name, window_name, MIN(created_at) as first_seen, MAX(created_at) a \n error here ---^ \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \"SELECT transcription, device, is_input, created_at FROM audio_transcriptions WHERE date(created_at) = date('now') AND len…) \n ⎿ Cancelled: parallel tool call Bash(sqlite3 -json ~/.screenpipe/db.sqlite \"S…) errored\n \n⏺ Let me check the actual schema first. \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \".schema ocr_text\" 2>&1 && echo \"---\" && sqlite3 ~/.screenpipe/db.sqlite \".schema audio_transcriptions\" 2>&1) \n ⎿ CREATE TABLE IF NOT EXISTS \"ocr_text\" ( \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000frame_id\u0000INTEGER\u0000NOT\u0000NULL,\n text TEXT NOT NULL, \n … +33 lines (ctrl+o to expand) \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \".schema frames\" 2>&1) \n ⎿ CREATE TABLE IF NOT EXISTS \"frames\" ( \n id INTEGER PRIMARY KEY AUTOINCREMENT, \n video_chunk_id INTEGER DEFAULT NULL, \n … +47 lines (ctrl+o to expand) \n \n⏺ Now I have the schema. The timestamps are in frames, not ocr_text. Querying with joins. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"app_name\":\"PhpStorm\",\"window_name\":\"\",\"first_seen_local\":\"2026-04-20\u000009:09:09\",\"last_seen_local\":\"2026-04-20\u000013:08:57\",\"entries\":47},\n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js – console [EU]\",\"first_seen_local\":\"2026-04-20 09:09:20\",\"last_seen_local\":\"2026-04-20 11:49:37\",\"entries\":31}, \n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js\u0000–\u0000console\u0000[PROD]\",\"first_seen_local\":\"2026-04-20\u000009:09:39\",\"last_seen_local\":\"2026-04-20\u000009:09:39\",\"entries\":1},\n … +94 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \u0000 \n ⎿ (No output) \n \n⏺ Let me get a bit more detail on the audio and the afternoon activity. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ (No output) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"\n SELECT…) \n ⎿ [{\"app_name\":\"PhpStorm\",\"window_name\":\"\",\"first_seen_local\":\"2026-04-20\u000009:09:09\",\"last_seen_local\":\"2026-04-20\u000013:08:57\",\"entries\":47},\n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js – console [EU]\",\"first_seen_local\":\"2026-04-20 09:09:20\",\"last_seen_local\":\"2026-04-20 11:49:37\",\"entries\":31}, \n {\"app_name\":\"PhpStorm\",\"window_name\":\"faVsco.js\u0000–\u0000console\u0000[PROD]\",\"first_seen_local\":\"2026-04-20\u000009:09:39\",\"last_seen_local\":\"2026-04-20\u000009:09:39\",\"entries\":1},\n … +79 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ I have everything I need. Here's your day: \n \n --- \n Activity Summary — Monday, 20 April 2026 \n \n Chronological Timeline \n \n 09:09–09:21 PhpStorm · faVsco.js — started day, checked EU/PROD consoles, \n briefly opened connect.vue, ImportActivityTypes.php \n \n 09:17–09:30 Slack · Galya Dimitrova (DM) — morning check-in \n \n 09:21–10:36 PhpStorm · faVsco.js — main coding block: ReportController.php, \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000TrackAutomatedReportGeneratedEvent.php,\n TrackAutomatedReportGeneratedEventTest.php \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000(shelved\u0000changes,\u0000ran\u0000tests\u0000via\u0000Run\u0000panel)\n \n 09:30–09:44 Slack · multiple DMs — Aneliya/Nikolay/Steliyan group DM, \n Stoyan Tomov DM, #engineering glance \n \n 09:40–10:04 iTerm2 · EU (ssh) + PROD — terminal work on EU/PROD servers \n \n 09:45–10:05 Firefox · Meet - Daily - — 📹\u0000 MEETING: Platform daily standup (~20 min) \n Platform\n \n 10:04–10:18 Firefox · Work / Jira — post-standup Jira check, \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Platform\u0000Sprint\u00002\u0000Q2\u0000Scrum\u0000Board\n \n 10:21–10:44 Slack\u0000·\u0000platform-inner-team\u0000\u0000\u0000—\u0000#platform-inner-team\u0000channel,\n + Stefka Stoyanova DM DM with Stefka Stoyanova \n \n 10:26–11:13 Slack · Galya Dimitrova (DM) — extended DM thread with Galya \n \n 10:32–12:22 PhpStorm · Run — tests running in background \n \n 10:44–10:49 Slack · Huddle: @Galya — 📹\u0000 MEETING: Slack huddle with Galya (~5 min) \n Dimitrova\n \n 11:02–11:25 PhpStorm · faVsco.js — CreateSharedEvent.php, laravel.log (log review), \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000composer.json;\u0000iTerm2\u0000DEV\u0000(docker)\u0000briefly\n \n 11:08–11:32 Slack · #releases — watching release channel \n \n 11:32–11:40 PhpStorm · faVsco.js — User.php, AppServiceProvider.php \n\u0000\u0000 \n 11:33–11:48 Slack · Huddle: @Aneliya — 📹\u0000 MEETING: Slack huddle with Aneliya (~15 min) \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Angelova\n \n 11:35–11:55 Slack · Aneliya Angelova (DM) — follow-up DM after huddle \n \n 11:48–12:44 PhpStorm · faVsco.js — deep work: AskJiminnyReportActivityService.php, \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000RequestGenerateAskJiminnyReportJob.php,\n AskJiminnyReportsController.php \n\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000(local\u0000SF\u0000server\u0000running\u0000in\u0000background)\n \n 12:19–12:36\u0000\u0000PhpStorm\u0000·\u0000faVsco.js\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000—\u0000AutomatedReportsSendCommand.php,\n AutomatedReportsService.php, \n AutomatedReportsServiceTest.php \n \n 12:24–12:38 Slack · #confusion-clinic — checking confusion-clinic channel \n\u0000\u0000 \n 12:49–13:07 PhpStorm · faVsco.js — pivoted to HubSpot integration: \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000OpportunitySyncTrait.php,\u0000BaseService.php,\n AskJiminnyReportActivityServiceTest.php, \n HS_local env \n \n 13:06–13:07 PhpStorm · Commit Changes — committed the morning's work \n \n ≈ 13:07–13:38 BREAK — ~30 min gap in activity \n \n 13:38–18:55 PhpStorm + Firefox + iTerm2 — afternoon continued (generic capture mode; \n \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000window-level\u0000detail\u0000unavailable\u0000—\u0000likely\n continued Ask Jiminny / automated reports work; \n Activity Monitor checked 13:54–15:21, \n CleanShot X screenshots 15:01–16:55, \n Finder 16:58–17:07) \n \n --- \n Summary Block \n\u0000\u0000 \n\u0000\u0000┌────────────────────┬────────────────────────────────────────────────────────────────────┐\n\u0000\u0000│\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000 \u0000\u0000│\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├────────────────────┼────────────────────────────────────────────────────────────────────┤\n\u0000\u0000│ Day start / end\u0000 \u0000 │ 09:09 – ~18:55\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├────────────────────┼────────────────────────────────────────────────────────────────────┤\n │ Total tracked time │ ~9h 45min │ \n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Meetings / calls │ ~40 min (Platform daily standup + 2 Slack huddles) │ \n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Focused coding\u0000\u0000\u0000\u0000\u0000│\u0000~6–7\u0000h\u0000(PhpStorm\u0000dominant\u0000—\u0000Ask\u0000Jiminny\u0000automated\u0000reports\u0000feature)\u0000│\n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Communication \u0000\u0000\u0000\u0000\u0000│\u0000~1.5\u0000h\u0000(Slack:\u0000~10\u0000distinct\u0000DMs/channels)\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├────────────────────┼────────────────────────────────────────────────────────────────────┤ \n │ Context switches\u0000\u0000\u0000│\u0000High\u0000—\u0000~15\u0000Slack\u0000threads,\u0000frequent\u0000PhpStorm\u0000↔\u0000Slack\u0000↔\u0000Firefox\u0000\u0000\u0000\u0000\u0000\u0000│\n └────────────────────┴────────────────────────────────────────────────────────────────────┘ \n \n Top 3 apps by time: \n 1. PhpStorm — dominant\u0000all\u0000day;\u0000project:\u0000faVsco.js\u0000(Jiminny\u0000backend)\n 2. Firefox — browser work + Google Meet \n 3. iTerm2 — EU/PROD SSH +\u0000local Docker \n \n Main coding theme:\u0000Ask\u0000Jiminny\u0000automated\u0000reports\u0000pipeline\u0000—\u0000AskJiminnyReportActivityService,\u0000RequestGenerateAskJiminnyReportJob,\u0000AutomatedReportsService,\n AutomatedReportsSendCommand, AskJiminnyReportsController, plus related tests. Committed at 13:06. \n \n ▎ No audio transcriptions were captured today (microphone data empty), so meeting content was inferred from window titles only. \n \n✻ Sautéed for 1m 28s \n \n❯ what about between 15:00 and 17:00 approximatelly. I had a meeting. What was it about \n \n⏺ Let me dig into that window more carefully. \n \n⏺\u0000Bash(sqlite3 -json\u0000~/.screenpipe/db.sqlite\u0000\"\n SELECT…) \n ⎿ (No output)\n \n⏺ Bash(sqlite3 -json\u0000~/.screenpipe/db.sqlite\u0000\"\n SELECT transcription, device, is_input_device, datetime(timestamp, '+3 hours') as local_time…) \n ⎿ (No output) \n \n⏺ Wrong UTC offset in my query.\u0000Let\u0000me\u0000fix\u0000—\u000015:00–17:00\u0000local\u0000=\u000012:00–14:00\u0000UTC.\n \n⏺\u0000Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"\n SELECT…) \n ⎿ [{\"app_name\":\"iTerm2\",\"window_name\":\"iTerm2\",\"local_time\":\"2026-04-20 15:00:00\",\"text_preview\":\"FV faVsco.js\u0000v°9\u0000masterProjectphp\u0000artisan0\u0000composer.json0\u0000composer.lockde\n pendency-checker.json0 dev.jsonE ids.txtE infection.json.distM-INSTALL.mdM+ INTERNAL_WEBHOOK_SETUP.mdEjiminny storageM+licenses.mom Makerileраскаqе-lock. sonE phpstan.ne \n on.dist= phostan-baseline.neon<phpunit.xmlTe raw sal querv\"}, \n … +173 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT transcription, device, is_input_device, datetime(timestamp, '+3 hours') as local_time…) \n ⎿ (No output) \n \n⏺ Bash(cat /Users/lukas/.claude/projects/-Users-lukas/81aa3054-f078-4fb2-aeb0-937316d28f59/tool-results/b5ez8ga4k.txt\u0000|\u0000python3\u0000-c\u0000\"\n import json, sys…) \n ⎿ Traceback (most\u0000recent\u0000call\u0000last):\n File \"<string>\", line 15, in <module> \n File \"<string>\", line 15, in <genexpr> \n … +13 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ [{\"app_name\":\"iTerm2\",\"window_name\":\"iTerm2\",\"first_local\":\"2026-04-20 15:00:00\",\"last_local\":\"2026-04-20 17:07:40\"}, \n {\"app_name\":\"Raycast\",\"window_name\":\"Raycast\",\"first_local\":\"2026-04-20 15:00:26\",\"last_local\":\"2026-04-20 15:03:21\"}, \n {\"app_name\":\"Slack\",\"window_name\":\"Slack\",\"first_local\":\"2026-04-20 15:00:39\",\"last_local\":\"2026-04-20 17:26:13\"}, \n … +9 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"app_name\":\"Firefox\",\"window_name\":null,\"local_time\":\"2026-04-20 15:01:01\",\"text_preview\":\"slackActivityLaterJiminny ...Dratts & centi8 DirectoriesEb External connecti \n ons# Starred8 jiminny-x-integrati...& platform-inner-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinic# curiosity_lab# engineering# frontend# general# infra \n -changes# jiminny-bg# platform-tickets# product launches# random# releases# support# thank-yous# the_people_of_jimi...6 Direct messagesP. Aneliya Angelova \"}, \n … +155 lines (ctrl+o to expand) \n \n⏺ Found it. Let me get the meeting duration and the Jira tickets that were discussed. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:00:00\",\"text_preview\":\"FV faVsco.js v°9 masterProjectphp artisan0 composer.json0 composer.lockdependency-checker.json0 dev.jsonE ids.txtE i \n nfection.json.distM-INSTALL.mdM+ INTERNAL_WEBHOOK_SETUP.mdEjiminny storageM+licenses.mom Makerileраскаqе-lock. sonE phpstan.neon.dist= phostan-baseline.neon<phpunit.xmlT \n e raw sal querv.saM+ README.mdLo sonar-proiect propertiesE test.py<> Untited Diadram.xmliI vetur.config.jsMI WEBHOOK FILTERING IMPLEMENTATION.mo› ib External Librariesv \n … +14 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \u0000 \n ⎿ [{\"local_time\":\"2026-04-20 17:15:27\",\"text_preview\":\"Slack•0 ЕlActivityLateMoreVIewmistonWindowHeld@ Search: shared-activiJiminny ...Nikolay Nikolov→Drattc& contTMore un \n reads8 DieuurelMessagesr Filesщсе но като цяло на края както говорихме просто навсякьде където се псEb External connections& Starred@ liminny-x-integrati...platform-inne \n r-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinica curiosiiy ao# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product laun \n … +14 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n \u0000 SELECT…) \u0000 \n ⎿ [{\"local_time\":\"2026-04-20 15:00:39\",\"text_preview\":\"SlackO•• ЕlActivityLaterVIewHistoryWindowHelp@ Search: shared-actiJiminny ..Dratts & centi8 Directories# releases• M \n \u0000\u0000essagesEb\u0000External\u0000connections#\u0000Starred8\u0000jiminny-x-integrati...&\u0000platform-inner-teamE\u0000Channels#\u0000ai-chapter#\u0000alertsS\u0000hackendl#\u0000confusion-clinic#\u0000curiosity_lab#\u0000engineerin\n g# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# support# thank-yous# the_people_of_jimi...6 Direct messagesP. Anel \n … +106 lines (ctrl+o to expand) \n \n⏺ Let me find when the meeting ended by checking the last Meet frames. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 17:07:11\",\"text_preview\":\"SlackActivityMoreVIewMistonWindowHeld@ Search: shared-activiJiminny ...* • Nikolay Nikolov→Drattck cantTMore unreads \n 8 Dieeurel• MessagesEb External connections& Starred@ liminny-x-integrati...platform-inner-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinica curiosiiy ao# \n engineering# fr\"}, \n … +12 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 16:56:34\",\"text_preview\":\"FirefoxFileEditViewHistoryBookmarksProfiles→CToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0‹ >0 lhl100% <78• \n Mon 20 Apr 16:56:33=+Aneliya AngelovaGalya DimitrovaNikolay Yankov*Nikolay IvanovNikolay\u0000NikolovLukas\u0000Kovalik4:56\u0000PM\u0000|\u0000[Platform]\u0000Refinement\u0000•1:54:45\"},\n {\"local_time\":\"2026-04-20 16:56:32\",\"text_preview\":\"FirefoxFileEditViewHistoryBookmarksProfiles→CToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0‹ >0 lbl100% [8• M \n … +20 lines (ctrl+o to expand) \n \n⏺ Got everything. Here's the full picture: \n \n --- \n 📹\u0000 Meeting: [Platform] Refinement \n \n Time: 15:02 – ~16:57 · Duration: ~1h 55min \n Platform: Google Meet (meet.google.com/cxs-eips-npt) \n \n Participants: \n - Lukas Kovalik (you) \n\u0000\u0000- Nikolay Ivanov \n\u0000\u0000-\u0000Steliyan Georgiev\n\u0000\u0000-\u0000Nikolay Nikolov \n\u0000\u0000-\u0000Nikolay\u0000Yankov \n - Aneliya Angelova \n -\u0000Galya Dimitrova (presenting/annotating at the end)\n - Stefka Stoyanova \n \n What was covered:\n This was a sprint backlog refinement session. The browser tabs visible during the call show exactly which Jira tickets were open and likely discussed: \n \n ┌───────────┬──────────────────────────────────────────────────┐ \n │ Ticket │ Title │ \n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-19798\u0000 │ Evaluation for AI activity \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-20553\u0000 │ Improve CRM-sync delay\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├───────────┼──────────────────────────────────────────────────┤ \n │\u0000JY-20698\u0000 │ Handle failed field sync\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├───────────┼──────────────────────────────────────────────────┤ \n\u0000\u0000│ JY-20692 │ Change confirmation page\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-20543\u0000 │ AJ Reports > Tracking\u0000\u0000\u0000\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n\u0000\u0000├───────────┼──────────────────────────────────────────────────┤\n\u0000\u0000│\u0000JY-18909\u0000\u0000│\u0000(Part\u00002)\u0000Automated\u0000Reports\u0000/\u0000Ask\u0000Jiminny\u0000Reports\u0000│\n ├───────────┼──────────────────────────────────────────────────┤ \n │\u0000SRD-67871\u0000│\u0000Issue\u0000with\u0000reconnecting\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n └───────────┴──────────────────────────────────────────────────┘ \n\u0000\u0000 \n You also had Postman open alongside the meeting with HubSpot (deal/object APIs) and Salesforce (tooling queries, field metadata) — likely looking up API details to clarify \n ticket\u0000scope.\n \n At ~16:56, Galya Dimitrova was screen-sharing (OCR shows \"Presenting, annotating\"), with Jira (jiminny.atlassian.net) visible — typical of a refinement session wrapping up by \n walking\u0000through\u0000the\u0000board.\n \n No audio was captured, so the actual discussion content isn't available — but the ticket list and ~2h duration match a thorough refinement session. \n \n✻ Crunched for 1m 50s \n \n❯ lets maybe focus on one monitor at the time. I probably worked on some stuf when the meeting was on on other monitor. Lets focus on the monitor where was the meeting \n \n⏺ Let me check what monitor/device info is available in the frames. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n \u0000\u0000\u0000SELECT\u0000DISTINCT\u0000device_name,\u0000COUNT(*)\u0000as\u0000cnt…)\n ⎿ [{\"device_name\":\"monitor_1\",\"cnt\":4390}, \n {\"device_name\":\"monitor_2\",\"cnt\":4703}]\n \n⏺\u0000Bash(sqlite3 -json ~/.screenpipe/db.sqlite\u0000\"\n SELECT DISTINCT device_name…) \n ⎿ [{\"device_name\":\"monitor_1\"}, \n {\"device_name\":\"monitor_2\"}] \n \n⏺\u0000Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT f.device_name, COUNT(*) as meet_frames…) \n ⎿ monitor_1|1336 \n monitor_2|36 \n \n⏺\u0000monitor_1 was the meeting monitor. Now let me pull the\u0000full\u0000timeline\u0000for\u0000that\u0000monitor\u0000during\u0000the\u0000meeting.\n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"app_name\":\"iTerm2\",\"window_name\":\"iTerm2\",\"first_local\":\"2026-04-20 15:00:00\",\"last_local\":\"2026-04-20 17:07:40\",\"entries\":51}, \n {\"app_name\":\"Raycast\",\"window_name\":\"Raycast\",\"first_local\":\"2026-04-20 15:00:26\",\"last_local\":\"2026-04-20 15:00:26\",\"entries\":1}, \n {\"app_name\":\"Slack\",\"window_name\":\"Slack\",\"first_local\":\"2026-04-20 15:00:39\",\"last_local\":\"2026-04-20 17:26:09\",\"entries\":71}, \n … +8 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:01:21\",\"app_name\":\"Firefox\",\"window_name\":\"Firefox\",\"text\":\"iTerm2ShellEditViewSessionScriptsProfilesWindowHelpC$0 l 0100% C47 • Mon 20 Apr \n 15:01:20meet.google.com/cxs-eips-npt?authuser=0Meet - [Platform] Refinement• [EMAIL] account+ New TabLukas Kovalik[Platform] RefinementE Scheduled for4:00 PM. Use Gemin \n i to take notesShare\u0000notes and transcriptStartJoin\u0000anywayOther\u0000ways\u0000to\u0000join\u0000v{\u0000MacBook\u0000Pr...4\u0000System\u0000Def..•\u0000FaceTime\u0000H...[\u0000Backgroun...Gemini\u0000is\u0000available\u0000in\u0000Meet\u0000as\u0000you\n … +9 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:01:06\",\"app_name\":\"PhpStorm\",\"text\":\"iTerm2ShellEditViewSessionScriptsProfilesWindowHelp100% C8• Mon 20 Apr 15:01:06ec2-user@ip-10-30-159-1 \n 86:~DOCKERDEV (docker)H82APP (-zsh)-zsh*4screenpipe\\\"• *5ec2-user@ip-10-30-159-186:- (...[ec2-user@ip-10-30-159-186 ~]$ dockerexeс-it $(dockerps--format\\\"{{.ID}}\\\" --fil \n ter\\\"name=ecs-worker\\\" | head -1) /bin/bash -c \\\"cd\u0000/home/jiminny&&bash\\\"root@7dffb84e8e4e:/home/jiminny#\u0000php\u0000artisan\u0000aboutEnvironmentApplicationNameLaravel\u0000VersionPHP\u0000V\n … +15 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 16:36:20\",\"app_name\":\"PhpStorm\",\"text\":\"FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0Galya \n Dimitrova (Presenting, annotating)Galya DimitrovaStefka StoyanovaNikolay NikolovGalya Dimitrova (Presentation)4:36 PM | [Platform] Refinement •Lộ3100% K478• Mon 20 Apr \n 16:36:198Nikolay Ivanovukas Kovalik1:34:31\"}, \n … +35 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n SELECT…) \n ⎿ [{\"local_time\":\"2026-04-20 15:01:15\",\"app_name\":\"iTerm2\",\"text\":\"iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zshDOCKER• ₴1DEV (docker)Last login: Mon Apr 20 13:2 \n 6:00 on ttys008182APP (-zsh)·3Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentsPoetry could not find a pyproject.toml file in /Users \n /lukas/jiminny/app or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny\u0000~/jiminny/app\u0000(JY-18909-automated-reports-ask-jiminny)\u0000$||A-zsh<\u0000>0\u0000ldolscreenpipe*100%\u0000C8•\u0000Mon\n … +89 lines (ctrl+o to expand) \n\u0000\u0000 \n⏺ Now I have a rich picture. Here's the focused monitor_1 view: \n \n --- \n 📹\u0000 [Platform] Refinement — monitor_1 timeline \n \n 15:00–15:02 · Pre-meeting \n - iTerm2 active: SSH'd into EU production (ec2-user@ip-10-30-159-186) running php artisan about to check the live environment \n - Joined the Meet lobby at 15:01 — Steliyan Georgiev was already in, Nikolay Ivanov joined next \n \n 15:02 · In the call \n - You had Postman open alongside Meet (HubSpot deal API + Salesforce tooling queries for field metadata) — likely pre-loaded for reference during ticket discussions \n \n ~15:05–15:06 · Nikolay Yankov presenting \n - Walked through Jira: opened JY-20676 — \"Notify the user if a Panorama prompt is deleted but is used in AJ Report\" (with parent JY-19240) \n - Then showed the staging app (app.staging.jiminny.com/ondemand) — the Ask Jiminny on-demand view, seemingly demoing the current behavior \n -\u0000Then\u0000jumped\u0000into Figma — Project Phoenix design file, specifically the Automated\u0000Reports screens: \u0000 \u0000 \u0000 \u0000 \n - Email for generated / not generated report \n - Delete Saved Search \n - Automated Reports settings \n \n ~16:36–16:57 · Galya Dimitrova presenting \n\u0000\u0000- Opened Jira (jiminny.atlassian.net)\u0000—\u0000Platform\u0000Team\u0000board,\u0000Backlog\u0000+\u0000Active\u0000Sprints\u0000view\n - Then switched to Figma — Project Phoenix again, showing: \n \u0000- Deal Insights,\u0000Team Insights, AI Reports tabs\u0000 \n - AI Reports prompt screen (\"This prompt is used in reports — you want to keep, not delete the report to break…\") \n - Org Settings, Profile, Kiosk, Emails screens \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \n \n --- \n Summary: \n Nearly 2-hour refinement focused on the AJ Reports / Automated Reports / Project Phoenix feature set. Nikolay Yankov walked through ticket specs and staging demos; Galya \n\u0000\u0000Dimitrova closed\u0000with\u0000Figma\u0000designs\u0000for\u0000the\u0000same\u0000area.\u0000The\u0000Jira\u0000tickets\u0000open\u0000in\u0000your\u0000browser\u0000(JY-20676,\u0000JY-19240,\u0000JY-20543,\u0000JY-18909,\u0000JY-20553,\u0000JY-20698,\u0000JY-20692)\u0000were\u0000the\n likely agenda items worked through one by one. \n \n✻ Worked for 1m 39s \n \n❯ specifically for that meetings what were the tickets discussed and what data were populated \n \n⏺ Let me dig through all the Jira content captured on monitor_1 during the meeting. \n \n⏺ Bash(sqlite3 -json ~/.screenpipe/db.sqlite \" \n \u0000\u0000\u0000SELECT…)\n ⎿ 2026-04-20 15:01:15 | iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zshDOCKER• ₴1DEV (docker)Last login: Mon Apr 20 13:26:00 on ttys008182APP (-zsh)·3Poetry could \n not find a pyproject.toml\u0000file\u0000in\u0000/Users/lukas/jiminny/app\u0000or\u0000its\u0000parentsPoetry\u0000could\u0000not\u0000find\u0000a\u0000pyproject.toml\u0000file\u0000in\u0000/Users/lukas/jiminny/app\u0000or\u0000its\u0000parentslukas@Luka\n s-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $||A-zsh< >0 ldolscreenpipe*100% C8• Mon 20 Apr 15:01:14₴1• *5ec2-user@ip-10-30-15 \n\u0000\u0000 … +198 lines (ctrl+o to expand)\n \n⏺ Bash(cat /Users/lukas/.claude/projects/-Users-lukas/81aa3054-f078-4fb2-aeb0-937316d28f59/tool-results/b5bsv0n08.txt\u0000|\u0000python3\u0000-c\u0000\"\n import json, sys, re…) \n⏺ ⎿ Running… \n \n✢ DisTracebackt(most recent call last): \n\u0000 File \"<string>\",\u0000line\u00004,\u0000in\u0000<module>\n ─ File \"/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/__init__.py\",─line─293,─in─load────────────────────────────────────────────────────────────────\n❯ … +8 lines (ctrl+o to expand) \u0000 \u0000 \u0000 \u0000 \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \"\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000◐ medium · /effort\n SELECT…) \n ⎿ 2026-04-20 15:05:18|PostmanFilelEdit|ViewWindowHelp= C)meet.google.com/cxs-eips-npt?authuser=0Nikolay Yankov (Presenting, annotating)M nooe0 JмNкт@ For you© Recent$ Star \n red8? Apps0 Spaces(9 Service-DeskJiminny (01d)Jiminny (New)1 CD Piatform TeamCID Capture Team|CD Enterprise Stability I.ID Processing TeamCD SE Kanban= More spaces= Flte \n rsCB Dashboardse OperationsE3 ConfiuenceI: Teams5, Customise sidebarСл-аwr-axP Pioie XCUa x F POK X OSnin x ONM X OOVN X 4 De x8x Eu TanksD Dee, Search+ Createoneejimnay \n … +176 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ 2026-04-20 15:05:36|PostmanFileEdit|ViewWindowHelp= C)meet.google.com/cxs-eips-npt?authuser=0Nikolay Yankov (Presenting)EditM InboxHisteryBookmarks2 Pato xProfVesTabHNOл \n -9 xQAкa xE Font A: X•Corti xa UY-2 xF Projec X2 12-2 xP Projc X © Jmil@ devu x© dev.u x$ 04 Denehttps://iminny.atlassian.net/browse/JY-206768 JnrelD Projects0O8[EDatad \n # Caude O Crcledi E Sentry%X &u Lasks@ For youRecent |# Starred8. Apps0 SpacesStarred9) Service-DeskJiminny (O1d)Recent|Jiminny (New)I CID Platform TeamIID Capture TeamI \n … +178 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT substr(o.text, instr(o.text, 'browse/'), 200) as browse_context,…) \n ⎿ browse/JY-205007at/Origin=eyJpfjoiN/VmYzgxZjYzYTFhNDNjYTg4ZJYOYTZIZGZ/MmViZDUILCJwljoiamlyYS1zbGFjay1pbnQifoLUM Leaderooard.• TODODebug crm-sync... C Refine C Sentry C E \n S CJ Learn C AJ ChagterHomekevi|2026-04-20 15:27:28 \n browse/JY-205007at/Origin=eyJpfjolN/VmYzgxZjYzYTFhNDNjYTg4Z/YOYTZIZGZ/MmViZDUILC.JwljolamlyYS1zbGFjay1pbnQifQLuM Leaderiooard.D TODOC Debug crm-sync..- KelineCO Sentry C \n … +76 lines (ctrl+o to expand) \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ Error: Exit code 1 \n Error: in prepare, no such function: regexp_substr \n SELECT DISTINCT regexp_substr(o.text, 'browse/JY-[0-9]+') as ticket_url, \n ^--- error here \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT DISTINCT…) \n ⎿ JY-206768 |2026-04-20 15:05:36|2026-04-20 15:05:36 \n JY-20676D |2026-04-20 15:05:43|2026-04-20 15:05:46 \n JY-20676C |2026-04-20 15:14:26|2026-04-20 15:14:26 \n … +30 lines (ctrl+o to expand) \n \n⏺ Good - I can see the real ticket IDs despite OCR noise: JY-20676, JY-20615, JY-20613, JY-20500, JY-20501. Let me pull the full content for each. \n \n⏺ Bash(for ticket in \"JY-20676\" \"JY-20615\" \"JY-20613\" \"JY-20500\" \"JY-20501\"; do \n echo \"=== $ticket ===\"…) \n ⎿ === JY-20676 === \n 2026-04-20 16:49:34|FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0100% 128• Mon 20 Apr 16:49:348+Galya Dimitrova (Pres \n enting, annotating)SafariFileEditViewHistoryBookmarksDevelopWindowHelpK/2-Q8•Mon 20 Apr 16:49jiminny.atlassian.net|AWS AIA Sentry3 HubSpot@ OрeпAlfi Seif ServiceDust Doc \n … +43 lines (ctrl+o to expand) \n \n⏺ Bash(for ticket in \"JY-20676\" \"JY-20615\" \"JY-20613\" \"JY-20500\" \"JY-20501\"; do \n echo \"=== $ticket BEST FRAME ===\"…) \n ⎿ === JY-20676 BEST FRAME === \n 2026-04-20 16:49:34|FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0100% 128• Mon 20 Apr 16:49:348+Galya Dimitrova (Pres \n enting, annotating)SafariFileEditViewHistoryBookmarksDevelopWindowHelpK/2-Q8•Mon 20 Apr 16:49jiminny.atlassian.net|AWS AIA Sentry3 HubSpot@ OрeпAlfi Seif ServiceDust Doc \n … +82 lines (ctrl+o to expand) \n \n⏺ Now let me check one more thing — what specific data was populated during the meeting (sprint assignments, estimates, description updates). \n \n⏺ Bash(sqlite3 ~/.screenpipe/db.sqlite \" \n SELECT datetime(f.timestamp, '+3 hours') as t, o.text…) \n ⎿ 2026-04-20 16:49:34|FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0100% 128• Mon 20 Apr 16:49:348+Galya Dimitrova (Pres \n enting, annotating)SafariFileEditViewHistoryBookmarksDevelopWindowHelpK/2-Q8•Mon 20 Apr 16:49jiminny.atlassian.net|AWS AIA Sentry3 HubSpot@ OрeпAlfi Seif ServiceDust Doc \n s|AWS USS. GTM Tren.J AWS EU7 A Journey-PlanhatThe Reven...•J Emоlй|E3 Features4 LogRocket|P Postmark* Bamboo*. Campus xFirebaseAsk Jimin# Platform Te.88G. Demo ExnSearc \n … +27 lines (ctrl+o to expand) \n \n⏺ I have everything needed. Here's the complete ticket breakdown: \n \n --- \n Tickets Discussed — [Platform] Refinement \n \n --- \n JY-20676 · Notify the user if a Panorama prompt is deleted but is used in AJ Report \n \n Time on screen: 15:05–15:18 · Presenter: Nikolay Yankov \n Epic: AJ Reports · Status: BACKLOG \n \n Description: \n \n ▎ Users might attempt to delete a Panorama Prompt which is used in AJ Report. When they do that we need to let them know that the report will stop generating. \n ▎ - Show a confirmation modal when a user is deleting a Panorama Prompt that is used in an active/enabled report \n \n Figma linked: Project Phoenix (Automated Reports screens shown during discussion) \n Subtask: JY-20615 (below) \n Data populated: Description was already present; Figma designs walked through live \n \n --- \n JY-20615 · Notify the user if a Saved Search is deleted but is used in AJ Report \n \n Time on screen:\u000015:18–15:20\u0000·\u0000Presenter:\u0000Nikolay\u0000Yankov\n Epic: AJ Reports · Status: BACKLOG \n Linked to: JY-20676 (sibling ticket, same pattern for Saved Searches) \n \n --- \n JY-20613 · Allow owner's role to be selected when setting up a trial \n\u0000\u0000 \n\u0000\u0000Time on screen:\u000015:20–15:26\u0000·\u0000Presenter:\u0000Nikolay\u0000Yankov\n Status: BACKLOG · Estimate visible: 2.5 story points \n \n Description: \n \n ▎ Stoyan is seeing more cases where the Owner doesn't want to connect their calendar and email to Jiminny because they don't want to be a recorder. Currently when a trial is \n ▎ created the Owner is given a Recorder role by default.\n ▎ - Allow Implementations to select the role of the owner when setting up a trial \n\u0000\u0000▎ - Put the field below the Owner field\n\u0000\u0000▎\u0000- Choices: Recorder / Recorder & Voice / Analyst\n ▎ - This option shouldn't appear when editing an organisation \n ▎\u0000- When the owner signs in, they should have the selected role + Admin permissions\n \n\u0000\u0000--- \n\u0000\u0000JY-20500 · Batch initial sync for Salesforce\n \n Time on screen:\u000015:26–16:35\u0000(~70\u0000min,\u0000most\u0000of\u0000the\u0000meeting)\u0000·\u0000Multiple presenters\n Parent: JY-15971 CRM Synching Improvements · Epic: CRM Sync \n Sprint assigned during meeting: → Platform Sprint 3 Q2 \n Rank updated: None → Ranked higher (Galya updated) \n Need QA: No \n Description (Stefka Stoyanova updated): \n \n ▎ Currently synching CRM objects is not working sufficiently when a huge amount of objects are imported from the CRM into Jiminny. \n ▎ \n ▎ Problem: Importing deals, leads, accounts and contacts can take hours \n ▎ \n ▎ Solution: \n\u0000\u0000▎ - Separate obtaining which objects to import from updating them in Jiminny\n ▎ - The current sync object job should only read batches from Salesforce and store the payload in Redis \n ▎ - A separate {import_object} job processes batches of 100 deals/leads/accounts/contacts from Redis into Jiminny \n ▎ - Retry mechanism for spot instances being turned off \n ▎ - Clean Redis after 24 hours for unconsumed objects \n \n --- \n JY-20501 · Batch initial sync for HubSpot \n\u0000\u0000 \n\u0000\u0000Time on screen:\u000015:28–16:29\u0000(alongside\u0000JY-20500)\n Parent: JY-15971 · Sprint assigned: → Platform Sprint 3 Q2 \n Rank updated: None → Ranked higher (Galya updated) \n Key design note captured: \n \n ▎ \"We're just changing the source of IDs (HubSpot API instead of webhooks), but using the same Redis Batch Job pipeline — same retry/failure handling as regular webhook sync\" \n \n Description mirrors JY-20500 but targets HubSpot objects (deals, accounts, contacts) instead of Salesforce \n \n --- \n\u0000\u0000Also visible in backlog (not opened individually but listed):\n \n ┌──────────┬─────────────────────────────────────┬───────────────────┬──────────┐\n │ Ticket │ Title │ Epic │ Estimate │ \n\u0000\u0000├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤\n\u0000\u0000│ JY-20503 │ Batch insert/update CRM\u0000objects\u0000in…\u0000│\u0000CRM\u0000Sync\u0000 \u0000 \u0000\u0000\u0000\u0000 \u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000 \u0000│\n\u0000\u0000├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤\n │ JY-20503 │ Batch insert/update CRM objects │ CRM Sync │ — │ \n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │ JY-20699 │ Wrong formatting for summary in… │ — │ 2.5 │ \n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n\u0000\u0000│ JY-20412 │ Change\u0000Auto-log\u0000delay\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000Platform\u0000Sprint\u0000 \u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000 \u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │\u0000JY-20361\u0000│\u0000AJ\u0000Panorama\u0000for\u0000Call\u0000Scoring\u0000in\u0000OD\u0000\u0000│\u0000Automated\u0000Reports\u0000│\u00004\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │ JY-19628 │ Evaluation\u0000of\u0000AJ\u0000Panorama\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000Ask\u0000Anything\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n\u0000\u0000│ JY-20625 │ Jiminny\u0000MCP\u0000Connector\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n ├──────────┼─────────────────────────────────────┼───────────────────┼──────────┤ \n │\u0000JY-20410\u0000│\u0000Update\u0000the\u0000template…\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\u0000—\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000│\n └──────────┴─────────────────────────────────────┴───────────────────┴──────────┘ \n\u0000\u0000 \n\u0000\u0000---\n\u0000\u0000Key outcomes from the session:\n - JY-20500 and JY-20501 were pulled into Platform Sprint 3 Q2 and ranked during the meeting \n -\u0000JY-20501\u0000description and JY-20500 description were updated by Stefka Stoyanova during the\u0000call\n - JY-20613 had its estimate confirmed at 2.5 points \n - Figma (Project Phoenix) was used to walk through JY-20676/JY-20615 UI flows \n \n✻ Brewed for 1m 57s \n \n※ recap: Platform refinement meeting reviewed 5 Jira tickets, mainly JY-20500/20501 batch CRM sync for Salesforce and HubSpot, both moved to Sprint 3 Q2. Next: check if sprint \n assignments saved correctly in Jira. (disable recaps in /config) \n \n───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n❯ \n───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\u0000\u0000 \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000~112k uncached · /clear to start fresh\n\u0000\u0000? for shortcuts\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000new task? /clear to save 113.2k tokens","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.0674867,"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.33776596,"top":1.0,"width":0.0674867,"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.33976063,"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.40525267,"top":1.0,"width":0.0674867,"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.40724733,"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 (node)","depth":2,"bounds":{"left":0.47273937,"top":1.0,"width":0.0674867,"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.47473404,"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.54022604,"top":1.0,"width":0.0674867,"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.5422208,"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.60771275,"top":1.0,"width":0.06732048,"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.6097075,"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.6750333,"top":1.0,"width":0.06732048,"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.67702794,"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.7287234,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"✳ Build full day activity summary from Screenpipe","depth":1,"bounds":{"left":0.4557846,"top":1.0,"width":0.1087101,"height":-0.02394259},"role_description":"text"}]...
|
3096752199376333151
|
1505577388600915004
|
app_switch
|
accessibility
|
NULL
|
!=null){if(typeof K!=="object"&&ty !=null){if(typeof K!=="object"&&typeof K!=="function")throw TypeError('Object expected to be assigned to "using" declaration');var z;if(_)z=K[PA5];if(z===void 0)z=K[XA5];if(typeof z!=="function")throw TypeError("Object not disposable");q.push([_,z,K])}else if(_)q.push([_]);return K},nz=(q,K,_)=>{var z=typeof SuppressedError==="function"?SuppressedError:function(O,$,w,j){return j=Error(w),j.name="SuppressedError",j.error=O,j.suppressed=$,j},Y=(O)=>K=_?new z(O,K,"An error was suppressed during disposal"):(_=!0,O),A=(O)=>{while(O=q.pop())try{var $=O[1]&&O[1].call(O[2]);if(O[0])return Promise.resolve($).then(A,(w)=>(Y(w),A()))}catch(w){Y(w)}if(_)throw K};return A()};function DA5(){this.__data__=[],this.size=0}var PJ7;var DJ7=L(()=>{PJ7=DA5});function WA5(q,K){return q===K||q!==q&&K!==K}var Pg;var pP6=L(()=>{Pg=WA5});function fA5(q,K){var _=q.length;while(_--)if(Pg(q[_][0],K))return _;return-1}var de;var qu6=L(()=>{pP6();de=fA5});function vA5(q){var K=this.__data__,_=de(K,q);if(_<0)return!1;var z=K.length-1;if(_==z)K.pop();else GA5.call(K,_,1);return--this.size,!0}var ZA5,GA5,WJ7;var fJ7=L(()=>{qu6();ZA5=Array.prototype,GA5=ZA5.splice;WJ7=vA5});function TA5(q){var K=this.__data__,_=de(K,q);return _<0?void 0:K[_][1]}var ZJ7;var GJ7=L(()=>{qu6();ZJ7=TA5});function VA5(q){return de(this.__data__,q)>-1}var vJ7;var TJ7=L(()=>{qu6();vJ7=VA5});function kA5(q,K){var _=this.__data__,z=de(_,q);if(z<0)++this.size,_.push([q,K]);else _[z][1]=K;return this}var VJ7;var kJ7=L(()=>{qu6();VJ7=kA5});function gP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var ce;var Ku6=L(()=>{DJ7();fJ7();GJ7();TJ7();kJ7();gP6.prototype.clear=PJ7;gP6.prototype.delete=WJ7;gP6.prototype.get=ZJ7;gP6.prototype.has=vJ7;gP6.prototype.set=VJ7;ce=gP6});function NA5(){this.__data__=new ce,this.size=0}var NJ7;var yJ7=L(()=>{Ku6();NJ7=NA5});function yA5(q){var K=this.__data__,_=K.delete(q);return this.size=K.size,_}var EJ7;var LJ7=L(()=>{EJ7=yA5});function EA5(q){return this.__data__.get(q)}var hJ7;var RJ7=L(()=>{hJ7=EA5});function LA5(q){return this.__data__.has(q)}var SJ7;var CJ7=L(()=>{SJ7=LA5});var hA5,g_8;var Aa8=L(()=>{hA5=typeof global=="object"&&global&&global.Object===Object&&global,g_8=hA5});var RA5,SA5,vJ;var sR=L(()=>{Aa8();RA5=typeof self=="object"&&self&&self.Object===Object&&self,SA5=g_8||RA5||Function("return this")(),vJ=SA5});var CA5,YW;var J_6=L(()=>{sR();CA5=vJ.Symbol,YW=CA5});function IA5(q){var K=bA5.call(q,_u6),_=q[_u6];try{q[_u6]=void 0;var z=!0}catch(A){}var Y=xA5.call(q);if(z)if(K)q[_u6]=_;else delete q[_u6];return Y}var bJ7,bA5,xA5,_u6,xJ7;var IJ7=L(()=>{J_6();bJ7=Object.prototype,bA5=bJ7.hasOwnProperty,xA5=bJ7.toString,_u6=YW?YW.toStringTag:void 0;xJ7=IA5});function BA5(q){return mA5.call(q)}var uA5,mA5,uJ7;var mJ7=L(()=>{uA5=Object.prototype,mA5=uA5.toString;uJ7=BA5});function FA5(q){if(q==null)return q===void 0?gA5:pA5;return BJ7&&BJ7 in Object(q)?xJ7(q):uJ7(q)}var pA5="[object Null]",gA5="[object Undefined]",BJ7,YL;var M_6=L(()=>{J_6();IJ7();mJ7();BJ7=YW?YW.toStringTag:void 0;YL=FA5});function UA5(q){var K=typeof q;return q!=null&&(K=="object"||K=="function")}var PO;var hT=L(()=>{PO=UA5});function nA5(q){if(!PO(q))return!1;var K=YL(q);return K==dA5||K==cA5||K==QA5||K==lA5}var QA5="[object AsyncFunction]",dA5="[object Function]",cA5="[object GeneratorFunction]",lA5="[object Proxy]",FP6;var F_8=L(()=>{M_6();hT();FP6=nA5});var iA5,U_8;var pJ7=L(()=>{sR();iA5=vJ["__core-js_shared__"],U_8=iA5});function rA5(q){return!!gJ7&&gJ7 in q}var gJ7,FJ7;var UJ7=L(()=>{pJ7();gJ7=function(){var q=/[^.]+$/.exec(U_8&&U_8.keys&&U_8.keys.IE_PROTO||"");return q?"Symbol(src)_1."+q:""}();FJ7=rA5});function sA5(q){if(q!=null){try{return aA5.call(q)}catch(K){}try{return q+""}catch(K){}}return""}var oA5,aA5,rl;var Oa8=L(()=>{oA5=Function.prototype,aA5=oA5.toString;rl=sA5});function AO5(q){if(!PO(q)||FJ7(q))return!1;var K=FP6(q)?YO5:eA5;return K.test(rl(q))}var tA5,eA5,qO5,KO5,_O5,zO5,YO5,QJ7;var dJ7=L(()=>{F_8();UJ7();hT();Oa8();tA5=/[\\^$.*+?()[\]{}|]/g,eA5=/^\[object .+?Constructor\]$/,qO5=Function.prototype,KO5=Object.prototype,_O5=qO5.toString,zO5=KO5.hasOwnProperty,YO5=RegExp("^"+_O5.call(zO5).replace(tA5,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");QJ7=AO5});function OO5(q,K){return q==null?void 0:q[K]}var cJ7;var lJ7=L(()=>{cJ7=OO5});function $O5(q,K){var _=cJ7(q,K);return QJ7(_)?_:void 0}var ik;var le=L(()=>{dJ7();lJ7();ik=$O5});var wO5,ne;var Q_8=L(()=>{le();sR();wO5=ik(vJ,"Map"),ne=wO5});var jO5,ol;var zu6=L(()=>{le();jO5=ik(Object,"create"),ol=jO5});function HO5(){this.__data__=ol?ol(null):{},this.size=0}var nJ7;var iJ7=L(()=>{zu6();nJ7=HO5});function JO5(q){var K=this.has(q)&&delete this.__data__[q];return this.size-=K?1:0,K}var rJ7;var oJ7=L(()=>{rJ7=JO5});function DO5(q){var K=this.__data__;if(ol){var _=K[q];return _===MO5?void 0:_}return PO5.call(K,q)?K[q]:void 0}var MO5="__lodash_hash_undefined__",XO5,PO5,aJ7;var sJ7=L(()=>{zu6();XO5=Object.prototype,PO5=XO5.hasOwnProperty;aJ7=DO5});function ZO5(q){var K=this.__data__;return ol?K[q]!==void 0:fO5.call(K,q)}var WO5,fO5,tJ7;var eJ7=L(()=>{zu6();WO5=Object.prototype,fO5=WO5.hasOwnProperty;tJ7=ZO5});function vO5(q,K){var _=this.__data__;return this.size+=this.has(q)?0:1,_[q]=ol&&K===void 0?GO5:K,this}var GO5="__lodash_hash_undefined__",qM7;var KM7=L(()=>{zu6();qM7=vO5});function UP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var $a8;var _M7=L(()=>{iJ7();oJ7();sJ7();eJ7();KM7();UP6.prototype.clear=nJ7;UP6.prototype.delete=rJ7;UP6.prototype.get=aJ7;UP6.prototype.has=tJ7;UP6.prototype.set=qM7;$a8=UP6});function TO5(){this.size=0,this.__data__={hash:new $a8,map:new(ne||ce),string:new $a8}}var zM7;var YM7=L(()=>{_M7();Ku6();Q_8();zM7=TO5});function VO5(q){var K=typeof q;return K=="string"||K=="number"||K=="symbol"||K=="boolean"?q!=="__proto__":q===null}var AM7;var OM7=L(()=>{AM7=VO5});function kO5(q,K){var _=q.__data__;return AM7(K)?_[typeof K=="string"?"string":"hash"]:_.map}var ie;var Yu6=L(()=>{OM7();ie=kO5});function NO5(q){var K=ie(this,q).delete(q);return this.size-=K?1:0,K}var $M7;var wM7=L(()=>{Yu6();$M7=NO5});function yO5(q){return ie(this,q).get(q)}var jM7;var HM7=L(()=>{Yu6();jM7=yO5});function EO5(q){return ie(this,q).has(q)}var JM7;var MM7=L(()=>{Yu6();JM7=EO5});function LO5(q,K){var _=ie(this,q),z=_.size;return _.set(q,K),this.size+=_.size==z?0:1,this}var XM7;var PM7=L(()=>{Yu6();XM7=LO5});function QP6(q){var K=-1,_=q==null?0:q.length;this.clear();while(++K<_){var z=q[K];this.set(z[0],z[1])}}var X_6;var d_8=L(()=>{YM7();wM7();HM7();MM7();PM7();QP6.prototype.clear=zM7;QP6.prototype.delete=$M7;QP6.prototype.get=jM7;QP6.prototype.has=JM7;QP6.prototype.set=XM7;X_6=QP6});function RO5(q,K){var _=this.__data__;if(_ instanceof ce){var z=_.__data__;if(!ne||z.length<hO5-1)return z.push([q,K]),this.size=++_.size,this;_=this.__data__=new X_6(z)}return _.set(q,K),this.size=_.size,this}var hO5=200,DM7;var WM7=L(()=>{Ku6();Q_8();d_8();DM7=RO5});function dP6(q){var K=this.__data__=new ce(q);this.size=K.size}var Dg;var Au6=L(()=>{Ku6();yJ7();LJ7();RJ7();CJ7();WM7();dP6.prototype.clear=NJ7;dP6.prototype.delete=EJ7;dP6.prototype.get=hJ7;dP6.prototype.has=SJ7;dP6.prototype.set=DM7;Dg=dP6});function CO5(q){return this.__data__.set(q,SO5),this}var SO5="__lodash_hash_undefined__",fM7;var ZM7=L(()=>{fM7=CO5});function bO5(q){return this.__data__.has(q)}var GM7;var vM7=L(()=>{GM7=bO5});function c_8(q){var K=-1,_=q==null?0:q.length;this.__data__=new X_6;while(++K<_)this.add(q[K])}var l_8;var wa8=L(()=>{d_8();ZM7();vM7();c_8.prototype.add=c_8.prototype.push=fM7;c_8.prototype.has=GM7;l_8=c_8});function xO5(q,K){var _=-1,z=q==null?0:q.length;while(++_<z)if(K(q[_],_,q))return!0;return!1}var TM7;var VM7=L(()=>{TM7=xO5});function IO5(q,K){return q.has(K)}var n_8;var ja8=L(()=>{n_8=IO5});function BO5(q,K,_,z,Y,A){var O=_&uO5,$=q.length,w=K.length;if($!=w&&!(O&&w>$))return!1;var j=A.get(q),H=A.get(K);if(j&&H)return j==K&&H==q;var J=-1,M=!0,X=_&mO5?new l_8:void 0;A.set(q,K),A.set(K,q);while(++J<$){var P=q[J],D=K[J];if(z)var W=O?z(D,P,J,K,q,A):z(P,D,J,q,K,A);if(W!==void 0){if(W)continue;M=!1;break}if(X){if(!TM7(K,function(f,G){if(!n_8(X,G)&&(P===f||Y(P,f,_,z,A)))return X.push(G)})){M=!1;break}}else if(!(P===D||Y(P,D,_,z,A))){M=!1;break}}return A.delete(q),A.delete(K),M}var uO5=1,mO5=2,i_8;var Ha8=L(()=>{wa8();VM7();ja8();i_8=BO5});var pO5,cP6;var Ja8=L(()=>{sR();pO5=vJ.Uint8Array,cP6=pO5});function gO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z,Y){_[++K]=[Y,z]}),_}var kM7;var NM7=L(()=>{kM7=gO5});function FO5(q){var K=-1,_=Array(q.size);return q.forEach(function(z){_[++K]=z}),_}var lP6;var r_8=L(()=>{lP6=FO5});function q$5(q,K,_,z,Y,A,O){switch(_){case eO5:if(q.byteLength!=K.byteLength||q.byteOffset!=K.byteOffset)return!1;q=q.buffer,K=K.buffer;case tO5:if(q.byteLength!=K.byteLength||!A(new cP6(q),new cP6(K)))return!1;return!0;case dO5:case cO5:case iO5:return Pg(+q,+K);case lO5:return q.name==K.name&&q.message==K.message;case rO5:case aO5:return q==K+"";case nO5:var $=kM7;case oO5:var w=z&UO5;if($||($=lP6),q.size!=K.size&&!w)return!1;var j=O.get(q);if(j)return j==K;z|=QO5,O.set(q,K);var H=i_8($(q),$(K),z,Y,A,O);return O.delete(q),H;case sO5:if(Ma8)return Ma8.call(q)==Ma8.call(K)}return!1}var UO5=1,QO5=2,dO5="[object Boolean]",cO5="[object Date]",lO5="[object Error]",nO5="[object Map]",iO5="[object Number]",rO5="[object RegExp]",oO5="[object Set]",aO5="[object String]",sO5="[object Symbol]",tO5="[object ArrayBuffer]",eO5="[object DataView]",yM7,Ma8,EM7;var LM7=L(()=>{J_6();Ja8();pP6();Ha8();NM7();r_8();yM7=YW?YW.prototype:void 0,Ma8=yM7?yM7.valueOf:void 0;EM7=q$5});function K$5(q,K){var _=-1,z=K.length,Y=q.length;while(++_<z)q[Y+_]=K[_];return q}var nP6;var o_8=L(()=>{nP6=K$5});var _$5,DO;var RT=L(()=>{_$5=Array.isArray,DO=_$5});function z$5(q,K,_){var z=K(q);return DO(q)?z:nP6(z,_(q))}var a_8;var Xa8=L(()=>{o_8();RT();a_8=z$5});function Y$5(q,K){var _=-1,z=q==null?0:q.length,Y=0,A=[];while(++_<z){var O=q[_];if(K(O,_,q))A[Y++]=O}return A}var s_8;var Pa8=L(()=>{s_8=Y$5});function A$5(){return[]}var t_8;var Da8=L(()=>{t_8=A$5});var O$5,$$5,hM7,w$5,iP6;var e_8=L(()=>{Pa8();Da8();O$5=Object.prototype,$$5=O$5.propertyIsEnumerable,hM7=Object.getOwnPropertySymbols,w$5=!hM7?t_8:function(q){if(q==null)return[];return q=Object(q),s_8(hM7(q),function(K){return $$5.call(q,K)})},iP6=w$5});function j$5(q,K){var _=-1,z=Array(q);while(++_<q)z[_]=K(_);return z}var RM7;var SM7=L(()=>{RM7=j$5});function H$5(q){return q!=null&&typeof q=="object"}var QP;var Wg=L(()=>{QP=H$5});function M$5(q){return QP(q)&&YL(q)==J$5}var J$5="[object Arguments]",Wa8;var CM7=L(()=>{M_6();Wg();Wa8=M$5});var bM7,X$5,P$5,D$5,al;var Ou6=L(()=>{CM7();Wg();bM7=Object.prototype,X$5=bM7.hasOwnProperty,P$5=bM7.propertyIsEnumerable,D$5=Wa8(function(){return arguments}())?Wa8:function(q){return QP(q)&&X$5.call(q,"callee")&&!P$5.call(q,"callee")},al=D$5});function W$5(){return!1}var xM7;var IM7=L(()=>{xM7=W$5});var Kz8={};f8(Kz8,{default:()=>fg});var BM7,uM7,f$5,mM7,Z$5,G$5,fg;var $u6=L(()=>{sR();IM7();BM7=typeof Kz8=="object"&&Kz8&&!Kz8.nodeType&&Kz8,uM7=BM7&&typeof qz8=="object"&&qz8&&!qz8.nodeType&&qz8,f$5=uM7&&uM7.exports===BM7,mM7=f$5?vJ.Buffer:void 0,Z$5=mM7?mM7.isBuffer:void 0,G$5=Z$5||xM7,fg=G$5});function V$5(q,K){var _=typeof q;return K=K==null?v$5:K,!!K&&(_=="number"||_!="symbol"&&T$5.test(q))&&(q>-1&&q%1==0&&q<K)}var v$5=[CREDIT_CARD],T$5,re;var wu6=L(()=>{T$5=/^(?:0|[1-9]\d*)$/;re=V$5});function N$5(q){return typeof q=="number"&&q>-1&&q%1==0&&q<=k$5}var k$5=[CREDIT_CARD],rP6;var _z8=L(()=>{rP6=N$5});function o$5(q){return QP(q)&&rP6(q.length)&&!!G2[YL(q)]}var y$5="[object Arguments]",E$5="[object Array]",L$5="[object Boolean]",h$5="[object Date]",R$5="[object Error]",S$5="[object Function]",C$5="[object Map]",b$5="[object Number]",x$5="[object Object]",I$5="[object RegExp]",u$5="[object Set]",m$5="[object String]",B$5="[object WeakMap]",p$5="[object ArrayBuffer]",g$5="[object DataView]",F$5="[object Float32Array]",U$5="[object Float64Array]",Q$5="[object Int8Array]",d$5="[object Int16Array]",c$5="[object Int32Array]",l$5="[object Uint8Array]",n$5="[object Uint8ClampedArray]",i$5="[object Uint16Array]",r$5="[object Uint32Array]",G2,pM7;var gM7=L(()=>{M_6();_z8();Wg();G2={};G2[F$5]=G2[U$5]=G2[Q$5]=G2[d$5]=G2[c$5]=G2[l$5]=G2[n$5]=G2[i$5]=G2[r$5]=!0;G2[y$5]=G2[E$5]=G2[p$5]=G2[L$5]=G2[g$5]=G2[h$5]=G2[R$5]=G2[S$5]=G2[C$5]=G2[b$5]=G2[x$5]=G2[I$5]=G2[u$5]=G2[m$5]=G2[B$5]=!1;pM7=o$5});function a$5(q){return function(K){return q(K)}}var oP6;var zz8=L(()=>{oP6=a$5});var Az8={};f8(Az8,{default:()=>Zg});var FM7,ju6,s$5,fa8,t$5,Zg;var Oz8=L(()=>{Aa8();FM7=typeof Az8=="object"&&Az8&&!Az8.nodeType&&Az8,ju6=FM7&&typeof Yz8=="object"&&Yz8&&!Yz8.nodeType&&Yz8,s$5=ju6&&ju6.exports===FM7,fa8=s$5&&g_8.process,t$5=function(){try{var q=ju6&&ju6.require&&ju6.require("util").types;if(q)return q;return fa8&&fa8.binding&&fa8.binding("util")}catch(K){}}(),Zg=t$5});var UM7,e$5,aP6;var $z8=L(()=>{gM7();zz8();Oz8();UM7=Zg&&Zg.isTypedArray,e$5=UM7?oP6(UM7):pM7,aP6=e$5});function _w5(q,K){var _=DO(q),z=!_&&al(q),Y=!_&&!z&&fg(q),A=!_&&!z&&!Y&&aP6(q),O=_||z||Y||A,$=O?RM7(q.length,String):[],w=$.length;for(var j in q)if((K||Kw5.call(q,j))&&!(O&&(j=="length"||Y&&(j=="offset"||j=="parent")||A&&(j=="buffer"||j=="byteLength"||j=="byteOffset")||re(j,w))))$.push(j);return $}var qw5,Kw5,wz8;var Za8=L(()=>{SM7();Ou6();RT();$u6();wu6();$z8();qw5=Object.prototype,Kw5=qw5.hasOwnProperty;wz8=_w5});function Yw5(q){var K=q&&q.constructor,_=typeof K=="function"&&K.prototype||zw5;return q===_}var zw5,sP6;var jz8=L(()=>{zw5=Object.prototype;sP6=Yw5});function Aw5(q,K){return function(_){return q(K(_))}}var Hz8;var Ga8=L(()=>{Hz8=Aw5});var Ow5,QM7;var dM7=L(()=>{Ga8();Ow5=Hz8(Object.keys,Object),QM7=Ow5});function jw5(q){if(!sP6(q))return QM7(q);var K=[];for(var _ in Object(q))if(ww5.call(q,_)&&_!="constructor")K.push(_);return K}var $w5,ww5,cM7;var lM7=L(()=>{jz8();dM7();$w5=Object.prototype,ww5=$w5.hasOwnProperty;cM7=jw5});function Hw5(q){return q!=null&&rP6(q.length)&&!FP6(q)}var Gg;var tP6=L(()=>{F_8();_z8();Gg=Hw5});function Jw5(q){return Gg(q)?wz8(q):cM7(q)}var tR;var P_6=L(()=>{Za8();lM7();tP6();tR=Jw5});function Mw5(q){return a_8(q,tR,iP6)}var Hu6;var va8=L(()=>{Xa8();e_8();P_6();Hu6=Mw5});function Ww5(q,K,_,z,Y,A){var O=_&Xw5,$=Hu6(q),w=$.length,j=Hu6(K),H=j.length;if(w!=H&&!O)return!1;var J=w;while(J--){var M=$[J];if(!(O?M in K:Dw5.call(K,M)))return!1}var X=A.get(q),P=A.get(K);if(X&&P)return X==K&&P==q;var D=!0;A.set(q,K),A.set(K,q);var W=O;while(++J<w){M=$[J];var f=q[M],G=K[M];if(z)var Z=O?z(G,f,M,K,q,A):z(f,G,M,q,K,A);if(!(Z===void 0?f===G||Y(f,G,_,z,A):Z)){D=!1;break}W||(W=M=="constructor")}if(D&&!W){var v=q.constructor,V=K.constructor;if(v!=V&&(("constructor"in q)&&("constructor"in K))&&!(typeof v=="function"&&v instanceof v&&typeof V=="function"&&V instanceof V))D=!1}return A.delete(q),A.delete(K),D}var Xw5=1,Pw5,Dw5,nM7;var iM7=L(()=>{va8();Pw5=Object.prototype,Dw5=Pw5.hasOwnProperty;nM7=Ww5});var fw5,Jz8;var rM7=L(()=>{le();sR();fw5=ik(vJ,"DataView"),Jz8=fw5});var Zw5,Mz8;var oM7=L(()=>{le();sR();Zw5=ik(vJ,"Promise"),Mz8=Zw5});var Gw5,oe;var Ta8=L(()=>{le();sR();Gw5=ik(vJ,"Set"),oe=Gw5});var vw5,Xz8;var aM7=L(()=>{le();sR();vw5=ik(vJ,"WeakMap"),Xz8=vw5});var sM7="[object Map]",Tw5="[object Object]",tM7="[object Promise]",eM7="[object Set]",qX7="[object WeakMap]",KX7="[object DataView]",Vw5,kw5,Nw5,yw5,Ew5,D_6,sl;var Ju6=L(()=>{rM7();Q_8();oM7();Ta8();aM7();M_6();Oa8();Vw5=rl(Jz8),kw5=rl(ne),Nw5=rl(Mz8),yw5=rl(oe),Ew5=rl(Xz8),D_6=YL;if(Jz8&&D_6(new Jz8(new ArrayBuffer(1)))!=KX7||ne&&D_6(new ne)!=sM7||Mz8&&D_6(Mz8.resolve())!=tM7||oe&&D_6(new oe)!=eM7||Xz8&&D_6(new Xz8)!=qX7)D_6=function(q){var K=YL(q),_=K==Tw5?q.constructor:void 0,z=_?rl(_):"";if(z)switch(z){case Vw5:return KX7;case kw5:return sM7;case Nw5:return tM7;case yw5:return eM7;case Ew5:return qX7}return K};sl=D_6});function Rw5(q,K,_,z,Y,A){var O=DO(q),$=DO(K),w=O?zX7:sl(q),j=$?zX7:sl(K);w=w==_X7?Pz8:w,j=j==_X7?Pz8:j;var H=w==Pz8,J=j==Pz8,M=w==j;if(M&&fg(q)){if(!fg(K))return!1;O=!0,H=!1}if(M&&!H)return A||(A=new Dg),O||aP6(q)?i_8(q,K,_,z,Y,A):EM7(q,K,w,_,z,Y,A);if(!(_&Lw5)){var X=H&&YX7.call(q,"__wrapped__"),P=J&&YX7.call(K,"__wrapped__");if(X||P){var D=X?q.value():q,W=P?K.value():K;return A||(A=new Dg),Y(D,W,_,z,A)}}if(!M)return!1;return A||(A=new Dg),nM7(q,K,_,z,Y,A)}var Lw5=1,_X7="[object Arguments]",zX7="[object Array]",Pz8="[object Object]",hw5,YX7,AX7;var OX7=L(()=>{Au6();Ha8();LM7();iM7();Ju6();RT();$u6();$z8();hw5=Object.prototype,YX7=hw5.hasOwnProperty;AX7=Rw5});function $X7(q,K,_,z,Y){if(q===K)return!0;if(q==null||K==null||!QP(q)&&!QP(K))return q!==q&&K!==K;return AX7(q,K,_,z,$X7,Y)}var eP6;var Dz8=L(()=>{OX7();Wg();eP6=$X7});function bw5(q,K,_,z){var Y=_.length,A=Y,O=!z;if(q==null)return!A;q=Object(q);while(Y--){var $=_[Y];if(O&&$[2]?$[1]!==q[$[0]]:!($[0]in q))return!1}while(++Y<A){$=_[Y];var w=$[0],j=q[w],H=$[1];if(O&&$[2]){if(j===void 0&&!(w in q))return!1}else{var J=new Dg;if(z)var M=z(j,H,w,q,K,J);if(!(M===void 0?eP6(H,j,Sw5|Cw5,z,J):M))return!1}}return!0}var Sw5=1,Cw5=2,wX7;var jX7=L(()=>{Au6();Dz8();wX7=bw5});function xw5(q){return q===q&&!PO(q)}var Wz8;var Va8=L(()=>{hT();Wz8=xw5});function Iw5(q){var K=tR(q),_=K.length;while(_--){var z=K[_],Y=q[z];K[_]=[z,Y,Wz8(Y)]}return K}var HX7;var JX7=L(()=>{Va8();P_6();HX7=Iw5});function uw5(q,K){return function(_){if(_==null)return!1;return _[q]===K&&(K!==void 0||(q in Object(_)))}}var fz8;var ka8=L(()=>{fz8=uw5});function mw5(q){var K=HX7(q);if(K.length==1&&K[0][2])return fz8(K[0][0],K[0][1]);return function(_){return _===q||wX7(_,q,K)}}var MX7;var XX7=L(()=>{jX7();JX7();ka8();MX7=mw5});function pw5(q){return typeof q=="symbol"||QP(q)&&YL(q)==Bw5}var Bw5="[object Symbol]",ae;var Mu6=L(()=>{M_6();Wg();ae=pw5});function Uw5(q,K){if(DO(q))return!1;var _=typeof q;if(_=="number"||_=="symbol"||_=="boolean"||q==null||ae(q))return!0;return Fw5.test(q)||!gw5.test(q)||K!=null&&q in Object(K)}var gw5,Fw5,qD6;var Zz8=L(()=>{RT();Mu6();gw5=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Fw5=/^\w*$/;qD6=Uw5});function Na8(q,K){if(typeof q!="function"||K!=null&&typeof K!="function")throw TypeError(Qw5);var _=function(){var z=arguments,Y=K?K.apply(this,z):z[0],A=_.cache;if(A.has(Y))return A.get(Y);var O=q.apply(this,z);return _.cache=A.set(Y,O)||A,O};return _.cache=new(Na8.Cache||X_6),_}var Qw5="Expected a function",A1;var h4=L(()=>{d_8();Na8.Cache=X_6;A1=Na8});function cw5(q){var K=A1(q,function(z){if(_.size===dw5)_.clear();return z}),_=K.cache;return K}var dw5=500,PX7;var DX7=L(()=>{h4();PX7=cw5});var lw5,nw5,iw5,WX7;var fX7=L(()=>{DX7();lw5=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,nw5=/\\(\\)?/g,iw5=PX7(function(q){var K=[];if(q.charCodeAt(0)===46)K.push("");return q.replace(lw5,function(_,z,Y,A){K.push(Y?A.replace(nw5,"$1"):z||_)}),K}),WX7=iw5});function rw5(q,K){var _=-1,z=q==null?0:q.length,Y=Array(z);while(++_<z)Y[_]=K(q[_],_,q);return Y}var se;var Xu6=L(()=>{se=rw5});function vX7(q){if(typeof q=="string")return q;if(DO(q))return se(q,vX7)+"";if(ae(q))return GX7?GX7.call(q):"";var K=q+"";return K=="0"&&1/q==-ow5?"-0":K}var ow5=1/0,ZX7,GX7,TX7;var VX7=L(()=>{J_6();Xu6();RT();Mu6();ZX7=YW?YW.prototype:void 0,GX7=ZX7?ZX7.toString:void 0;TX7=vX7});function aw5(q){return q==null?"":TX7(q)}var KD6;var Gz8=L(()=>{VX7();KD6=aw5});function sw5(q,K){if(DO(q))return q;return qD6(q,K)?[q]:WX7(KD6(q))}var eR;var W_6=L(()=>{RT();Zz8();fX7();Gz8();eR=sw5});function ew5(q){if(typeof q=="string"||ae(q))return q;var K=q+"";return K=="0"&&1/q==-tw5?"-0":K}var tw5=1/0,qS;var f_6=L(()=>{Mu6();qS=ew5});function q25(q,K){K=eR(K,q);var _=0,z=K.length;while(q!=null&&_<z)q=q[qS(K[_++])];return _&&_==z?q:void 0}var te;var Pu6=L(()=>{W_6();f_6();te=q25});function K25(q,K,_){var z=q==null?void 0:te(q,K);return z===void 0?_:z}var kX7;var NX7=L(()=>{Pu6();kX7=K25});function _25(q,K){return q!=null&&K in Object(q)}var yX7;var EX7=L(()=>{yX7=_25});function z25(q,K,_){K=eR(K,q);var z=-1,Y=K.length,A=!1;while(++z<Y){var O=qS(K[z]);if(!(A=q!=null&&_(q,O)))break;q=q[O]}if(A||++z!=Y)return A;return Y=q==null?0:q.length,!!Y&&rP6(Y)&&re(O,Y)&&(DO(q)||al(q))}var LX7;var hX7=L(()=>{W_6();Ou6();RT();wu6();_z8();f_6();LX7=z25});function Y25(q,K){return q!=null&&LX7(q,K,yX7)}var RX7;var SX7=L(()=>{EX7();hX7();RX7=Y25});function $25(q,K){if(qD6(q)&&Wz8(K))return fz8(qS(q),K);return function(_){var z=kX7(_,q);return z===void 0&&z===K?RX7(_,q):eP6(K,z,A25|O25)}}var A25=1,O25=2,CX7;var bX7=L(()=>{Dz8();NX7();SX7();Zz8();Va8();ka8();f_6();CX7=$25});function w25(q){return q}var _D6;var vz8=L(()=>{_D6=w25});function j25(q){return function(K){return K==null?void 0:K[q]}}var xX7;var IX7=L(()=>{xX7=j25});function H25(q){return function(K){return te(K,q)}}var uX7;var mX7=L(()=>{Pu6();uX7=H25});function J25(q){return qD6(q)?xX7(qS(q)):uX7(q)}var BX7;var pX7=L(()=>{IX7();mX7();Zz8();f_6();BX7=J25});function M25(q){if(typeof q=="function")return q;if(q==null)return _D6;if(typeof q=="object")return DO(q)?CX7(q[0],q[1]):MX7(q);return BX7(q)}var rk;var ee=L(()=>{XX7();bX7();vz8();RT();pX7();rk=M25});function X25(q,K){var _,z=-1,Y=q.length;while(++z<Y){var A=K(q[z]);if(A!==void 0)_=_===void 0?A:_+A}return _}var gX7;var FX7=L(()=>{gX7=X25});function P25(q,K){return q&&q.length?gX7(q,rk(K,2)):0}var zD6;var UX7=L(()=>{ee();FX7();zD6=P25});import{randomUUID as Du6}from"crypto";var ya8=()=>{};function QX7(){return Ea8}function dX7(q){Ea8=q}function cX7(q){return Tz8.has(q)?Tz8.get(q):void 0}function lX7(q,K){Tz8.set(q,K)}function nX7(q){return La8.get(q)}function iX7(q,K){La8.set(q,K)}function AW(){Ea8=null,Tz8.clear(),La8.clear()}function Vz8(){return ha8}function rX7(q){ha8=q}function oX7(){ha8=void 0}var Ea8=null,Tz8,La8,ha8;var tl=L(()=>{Tz8=new Map;La8=new Map});function E9(){let q=new Set;return{subscribe(K){return q.add(K),()=>{q.delete(K)}},emit(...K){for(let _ of q)_(...K)},clear(){q.clear()}}}var DD6={};f8(DD6,{waitForScrollIdle:()=>Vu6,updateLastInteractionTime:()=>G_6,switchSession:()=>Yf,snapshotOutputTokensForTurn:()=>h25,setUserMsgOptIn:()=>Vg,setUseCoworkPlugins:()=>OL,setTracerProvider:()=>xz8,setThinkingClearLatched:()=>Yt8,setTeleportedSessionInfo:()=>Bu6,setSystemPromptSectionCacheEntry:()=>is8,setStrictToolResultPairing:()=>I25,setStatsStore:()=>ca8,setSessionTrustAccepted:()=>Iu6,setSessionSource:()=>fs8,setSessionPersistenceDisabled:()=>ms8,setSessionIngressToken:()=>y_6,setSessionBypassPermissionsMode:()=>Is8,setSdkBetas:()=>Ys8,setSdkAgentProgressSummariesEnabled:()=>Ps8,setScheduledTasksEnabled:()=>bu6,setQuestionPreviewFormat:()=>uz8,setPromptId:()=>Fu6,setPromptCache1hAllowlist:()=>ss8,setProjectRoot:()=>fu6,setOriginalCwd:()=>KS,setOauthTokenFromFd:()=>Vs8,setNeedsPlanModeExitAttachment:()=>gI,setNeedsAutoModeExitAttachment:()=>CG,setModelStrings:()=>Nu6,setMeterProvider:()=>bz8,setMeter:()=>As8,setMemoryToggledOff:()=>Ws8,setMainThreadAgentType:()=>_n,setMainLoopModelOverride:()=>dP,setLspRecommendationShownThisSession:()=>Us8,setLoopChainStartedAt:()=>g25,setLoggerProvider:()=>Sz8,setLastMainRequestId:()=>ea8,setLastEmittedDate:()=>PD6,setLastClassifierRequests:()=>hu6,setLastApiCompletionTimestamp:()=>Tu6,setLastAPIRequestMessages:()=>Ls8,setLastAPIRequest:()=>ys8,setKairosActive:()=>x25,setIsRemoteMode:()=>ls8,setIsInteractive:()=>Ms8,setInlinePlugins:()=>bs8,setInitialMainLoopModel:()=>zs8,setInitJsonSchema:()=>Qs8,setHasUnknownModelCost:()=>hz8,setHasExitedPlanMode:()=>$L,setHasDevChannels:()=>Qz8,setFlagSettingsPath:()=>Zs8,setFlagSettingsInline:()=>Gs8,setFastModeHeaderLatched:()=>Kt8,setEventLogger:()=>Cz8,setDirectConnectServerUrl:()=>W25,setCwdState:()=>Ia8,setCostStateForRestore:()=>ku6,setClientType:()=>Xs8,setChromeFlagOverride:()=>xs8,setCachedClaudeMdContent:()=>hs8,setCacheEditingHeaderLatched:()=>d25,setApiKeyFromFd:()=>Ns8,setAllowedSettingSources:()=>Cs8,setAllowedChannels:()=>zn,setAfkModeHeaderLatched:()=>es8,setAdditionalDirectoriesForClaudeMd:()=>pu6,setActiveRoutine:()=>Z25,resetTurnToolDuration:()=>Ua8,resetTurnHookDuration:()=>Fa8,resetTurnClassifierDuration:()=>da8,resetTotalDurationStateAndCost_FOR_TESTS_ONLY:()=>G25,resetStateForTests:()=>_P7,resetSdkInitState:()=>YP7,resetModelStringsForTestingOnly:()=>C25,resetCostState:()=>OD6,removeSessionCronTasks:()=>xu6,registerHookCallbacks:()=>z66,regenerateSessionId:()=>Sa8,preferThirdPartyAuthentication:()=>Ru6,onSessionSwitch:()=>xa8,onInteraction:()=>ra8,needsPlanModeExitAttachment:()=>Bs8,needsAutoModeExitAttachment:()=>ps8,markScrollActivity:()=>Ks8,markPostCompaction:()=>K66,markFirstTeleportMessageLogged:()=>Fz8,isSessionPersistenceDisabled:()=>ok,incrementBudgetContinuationCount:()=>S25,hasUnknownModelCost:()=>ta8,hasShownLspRecommendationThisSession:()=>Fs8,hasExitedPlanModeInSession:()=>uu6,handlePlanModeTransition:()=>Kn,handleAutoModeTransition:()=>gs8,getUserMsgOptIn:()=>AL,getUseCoworkPlugins:()=>Cu6,getUsageForModel:()=>_s8,getTurnToolDurationMs:()=>V25,getTurnToolCount:()=>k25,getTurnOutputTokens:()=>E25,getTurnHookDurationMs:()=>v25,getTurnHookCount:()=>T25,getTurnClassifierDurationMs:()=>N25,getTurnClassifierCount:()=>y25,getTracerProvider:()=>N_6,getTotalWebSearchRequests:()=>oa8,getTotalToolDuration:()=>ga8,getTotalOutputTokens:()=>el,getTotalLinesRemoved:()=>T_6,getTotalLinesAdded:()=>v_6,getTotalInputTokens:()=>V_6,getTotalDuration:()=>YD6,getTotalCostUSD:()=>XM,getTotalCacheReadInputTokens:()=>Zu6,getTotalCacheCreationInputTokens:()=>Gu6,getTotalAPIDurationWithoutRetries:()=>pa8,getTotalAPIDuration:()=>RG,getTokenCounter:()=>wD6,getThinkingClearLatched:()=>zt8,getTeleportedSessionInfo:()=>gz8,getSystemPromptSectionCache:()=>ns8,getStrictToolResultPairing:()=>Ds8,getStatsStore:()=>q66,getSlowOperations:()=>OP7,getSessionTrustAccepted:()=>MD6,getSessionSource:()=>u25,getSessionProjectDir:()=>Z_6,getSessionIngressToken:()=>vs8,getSessionId:()=>N8,getSessionCronTasks:()=>L_6,getSessionCreatedTeams:()=>mu6,getSessionCounter:()=>Os8,getSessionBypassPermissionsMode:()=>E_6,getSdkBetas:()=>OW,getSdkAgentProgressSummariesEnabled:()=>vg,getScheduledTasksEnabled:()=>JD6,getRegisteredHooks:()=>zS,getQuestionPreviewFormat:()=>Iz8,getPromptId:()=>gu6,getPromptCache1hAllowlist:()=>as8,getProjectRoot:()=>wz,getPrCounter:()=>yu6,getPlanSlugCache:()=>h_6,getParentSessionId:()=>Ca8,getOriginalCwd:()=>A7,getOauthTokenFromFd:()=>Ts8,getModelUsage:()=>ST,getModelStrings:()=>$D6,getMeterProvider:()=>Js8,getMeter:()=>b25,getMemoryToggledOff:()=>Tg,getMainThreadAgentType:()=>Ng,getMainLoopModelOverride:()=>pI,getLoopChainStartedAt:()=>p25,getLoggerProvider:()=>Lu6,getLocCounter:()=>Rz8,getLastMainRequestId:()=>vu6,getLastInteractionTime:()=>_S,getLastEmittedDate:()=>os8,getLastClassifierRequests:()=>zP7,getLastApiCompletionTimestamp:()=>qn,getLastAPIRequestMessages:()=>m25,getLastAPIRequest:()=>Es8,getKairosActive:()=>SG,getIsScrollDraining:()=>k_6,getIsRemoteMode:()=>cK,getIsNonInteractiveSession:()=>d7,getIsInteractive:()=>CT,getInvokedSkillsForAgent:()=>ds8,getInvokedSkills:()=>Q25,getInlinePlugins:()=>kg,getInitialMainLoopModel:()=>AD6,getInitJsonSchema:()=>Bz8,getHasDevChannels:()=>Uz8,getFlagSettingsPath:()=>_66,getFlagSettingsInline:()=>HD6,getFastModeHeaderLatched:()=>qt8,getEventLogger:()=>Hs8,getDirectConnectServerUrl:()=>ua8,getCwdState:()=>BI,getCurrentTurnTokenBudget:()=>L25,getCostCounter:()=>ws8,getCommitCounter:()=>$s8,getCodeEditToolDecisionCounter:()=>Eu6,getClientType:()=>jD6,getChromeFlagOverride:()=>Su6,getCachedClaudeMdContent:()=>Rs8,getCacheEditingHeaderLatched:()=>_t8,getBudgetContinuationCount:()=>R25,getApiKeyFromFd:()=>ks8,getAllowedSettingSources:()=>Ss8,getAllowedChannels:()=>TJ,getAgentColorMap:()=>mz8,getAfkModeHeaderLatched:()=>ts8,getAdditionalDirectoriesForClaudeMd:()=>bG,getActiveTimeCounter:()=>js8,getActiveRoutine:()=>f25,flushInteractionTime:()=>na8,deleteLoopChainStartedAt:()=>F25,consumePostCompaction:()=>qs8,clearSystemPromptSectionState:()=>rs8,clearRegisteredPluginHooks:()=>pz8,clearRegisteredHooks:()=>U25,clearInvokedSkillsForAgent:()=>Y66,clearInvokedSkills:()=>cs8,clearBetaHeaderLatches:()=>At8,addToTurnHookDuration:()=>yz8,addToTurnClassifierDuration:()=>Qa8,addToTotalLinesChanged:()=>Ez8,addToTotalDurationState:()=>ma8,addToTotalCostState:()=>Ba8,addToToolDuration:()=>Nz8,addToInMemoryErrorLog:()=>B25,addSlowOperation:()=>AP7,addSessionCronTask:()=>us8,addInvokedSkill:()=>XD6});import{realpathSync as aX7}from"fs";import{cwd as D25}from"process";function eX7(){let q="";if(typeof process<"u"&&typeof process.cwd==="function"&&typeof aX7==="function"){let _=D25();try{q=aX7(_).normalize("NFC")}catch{q=_.normalize("NFC")}}return{originalCwd:q,projectRoot:q,totalCostUSD:0,totalAPIDuration:0,totalAPIDurationWithoutRetries:0,totalToolDuration:0,turnHookDurationMs:0,turnToolDurationMs:0,turnClassifierDurationMs:0,turnToolCount:0,turnHookCount:0,turnClassifierCount:0,startTime:Date.now(),lastInteractionTime:Date.now(),totalLinesAdded:0,totalLinesRemoved:0,hasUnknownModelCost:!1,cwd:q,modelUsage:{},mainLoopModelOverride:void 0,initialMainLoopModel:null,modelStrings:null,isInteractive:!1,kairosActive:!1,strictToolResultPairing:!1,memoryToggledOff:!1,sdkAgentProgressSummariesEnabled:!1,userMsgOptIn:!1,clientType:"cli",sessionSource:void 0,questionPreviewFormat:void 0,sessionIngressToken:void 0,oauthTokenFromFd:void 0,apiKeyFromFd:void 0,flagSettingsPath:void 0,flagSettingsInline:null,allowedSettingSources:["userSettings","projectSettings","localSettings","flagSettings","policySettings"],meter:null,sessionCounter:null,locCounter:null,prCounter:null,commitCounter:null,costCounter:null,tokenCounter:null,codeEditToolDecisionCounter:null,activeTimeCounter:null,statsStore:null,sessionId:Du6(),parentSessionId:void 0,loggerProvider:null,eventLogger:null,meterProvider:null,tracerProvider:null,agentColorMap:new Map,agentColorIndex:0,lastAPIRequest:null,lastAPIRequestMessages:null,lastClassifierRequests:null,cachedClaudeMdContent:null,inMemoryErrorLog:[],inlinePlugins:[],chromeFlagOverride:void 0,useCoworkPlugins:!1,sessionBypassPermissionsMode:!1,scheduledTasksEnabled:!1,sessionCronTasks:[],loopChainStartedAt:Object.create(null),sessionCreatedTeams:new Set,sessionTrustAccepted:!1,sessionPersistenceDisabled:!1,hasExitedPlanMode:!1,needsPlanModeExitAttachment:!1,needsAutoModeExitAttachment:!1,lspRecommendationShownThisSession:!1,initJsonSchema:null,registeredHooks:null,planSlugCache:new Map,teleportedSessionInfo:null,invokedSkills:new Map,slowOperations:[],sdkBetas:void 0,mainThreadAgentType:void 0,isRemoteMode:!1,...!1,directConnectServerUrl:void 0,activeRoutine:void 0,systemPromptSectionCache:new Map,lastEmittedDate:null,additionalDirectoriesForClaudeMd:[],allowedChannels:[],hasDevChannels:!1,sessionProjectDir:null,promptCache1hAllowlist:null,afkModeHeaderLatched:null,fastModeHeaderLatched:null,cacheEditingHeaderLatched:null,thinkingClearLatched:null,promptId:null,lastMainRequestId:void 0,lastApiCompletionTimestamp:null,pendingPostCompaction:!1}}function N8(){return G8.sessionId}function Sa8(q={}){if(q.setCurrentAsParent)G8.parentSessionId=G8.sessionId;return G8.planSlugCache.delete(G8.sessionId),G8.sessionId=Du6(),G8.sessionProjectDir=null,G8.sessionId}function Ca8(){return G8.parentSessionId}function Yf(q,K=null){if(G8.sessionId!==q)G8.planSlugCache.delete(G8.sessionId);G8.sessionId=q,G8.sessionProjectDir=K,ba8.emit(q)}function Z_6(){return G8.sessionProjectDir}function A7(){return G8.originalCwd}function wz(){return G8.projectRoot}function KS(q){G8.originalCwd=q.normalize("NFC")}function fu6(q){G8.projectRoot=q.normalize("NFC")}function BI(){return G8.cwd}function Ia8(q){G8.cwd=q.normalize("NFC")}function ua8(){return G8.directConnectServerUrl}function W25(q){G8.directConnectServerUrl=q}function f25(){return G8.activeRoutine}function Z25(q){G8.activeRoutine=q}function ma8(q,K){G8.totalAPIDuration+=q,G8.totalAPIDurationWithoutRetries+=K}function G25(){G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalCostUSD=0}function Ba8(q,K,_){G8.modelUsage[_]=K,G8.totalCostUSD+=q}function XM(){return G8.totalCostUSD}function RG(){return G8.totalAPIDuration}function YD6(){return Date.now()-G8.startTime}function pa8(){return G8.totalAPIDurationWithoutRetries}function ga8(){return G8.totalToolDuration}function Nz8(q){G8.totalToolDuration+=q,G8.turnToolDurationMs+=q,G8.turnToolCount++}function v25(){return G8.turnHookDurationMs}function yz8(q){G8.turnHookDurationMs+=q,G8.turnHookCount++}function Fa8(){G8.turnHookDurationMs=0,G8.turnHookCount=0}function T25(){return G8.turnHookCount}function V25(){return G8.turnToolDurationMs}function Ua8(){G8.turnToolDurationMs=0,G8.turnToolCount=0}function k25(){return G8.turnToolCount}function N25(){return G8.turnClassifierDurationMs}function Qa8(q){G8.turnClassifierDurationMs+=q,G8.turnClassifierCount++}function da8(){G8.turnClassifierDurationMs=0,G8.turnClassifierCount=0}function y25(){return G8.turnClassifierCount}function q66(){return G8.statsStore}function ca8(q){G8.statsStore=q}function G_6(q){if(q)qP7();else la8=!0}function na8(){if(la8)qP7()}function qP7(){G8.lastInteractionTime=Date.now(),la8=!1,ia8.emit()}function Ez8(q,K){G8.totalLinesAdded+=q,G8.totalLinesRemoved+=K}function v_6(){return G8.totalLinesAdded}function T_6(){return G8.totalLinesRemoved}function V_6(){return zD6(Object.values(G8.modelUsage),"inputTokens")}function el(){return zD6(Object.values(G8.modelUsage),"outputTokens")}function Zu6(){return zD6(Object.values(G8.modelUsage),"cacheReadInputTokens")}function Gu6(){return zD6(Object.values(G8.modelUsage),"cacheCreationInputTokens")}function oa8(){return zD6(Object.values(G8.modelUsage),"webSearchRequests")}function E25(){return el()-aa8}function L25(){return sa8}function h25(q){aa8=el(),sa8=q,Lz8=0}function R25(){return Lz8}function S25(){Lz8++}function hz8(){G8.hasUnknownModelCost=!0}function ta8(){return G8.hasUnknownModelCost}function vu6(){return G8.lastMainRequestId}function ea8(q){G8.lastMainRequestId=q}function qn(){return G8.lastApiCompletionTimestamp}function Tu6(q){G8.lastApiCompletionTimestamp=q}function K66(){G8.pendingPostCompaction=!0}function qs8(){let q=G8.pendingPostCompaction;return G8.pendingPostCompaction=!1,q}function _S(){return G8.lastInteractionTime}function Ks8(){if(kz8=!0,Wu6)clearTimeout(Wu6);Wu6=setTimeout(()=>{kz8=!1,Wu6=void 0},KP7),Wu6.unref?.()}function k_6(){return kz8}async function Vu6(){while(kz8)await new Promise((q)=>setTimeout(q,KP7).unref?.())}function ST(){return G8.modelUsage}function _s8(q){return G8.modelUsage[q]}function pI(){return G8.mainLoopModelOverride}function AD6(){return G8.initialMainLoopModel}function dP(q){G8.mainLoopModelOverride=q}function zs8(q){G8.initialMainLoopModel=q}function OW(){return G8.sdkBetas}function Ys8(q){G8.sdkBetas=q}function OD6(){G8.totalCostUSD=0,G8.totalAPIDuration=0,G8.totalAPIDurationWithoutRetries=0,G8.totalToolDuration=0,G8.startTime=Date.now(),G8.totalLinesAdded=0,G8.totalLinesRemoved=0,G8.hasUnknownModelCost=!1,G8.modelUsage={},G8.promptId=null}function ku6({totalCostUSD:q,totalAPIDuration:K,totalAPIDurationWithoutRetries:_,totalToolDuration:z,totalLinesAdded:Y,totalLinesRemoved:A,lastDuration:O,modelUsage:$}){if(G8.totalCostUSD=q,G8.totalAPIDuration=K,G8.totalAPIDurationWithoutRetries=_,G8.totalToolDuration=z,G8.totalLinesAdded=Y,G8.totalLinesRemoved=A,$)G8.modelUsage=$;if(O)G8.startTime=Date.now()-O}function _P7(){throw Error("resetStateForTests can only be called in tests")}function $D6(){return G8.modelStrings}function Nu6(q){G8.modelStrings=q}function C25(){G8.modelStrings=null}function As8(q,K){G8.meter=q,G8.sessionCounter=K("claude_code.session.count",{description:"Count of CLI sessions started"}),G8.locCounter=K("claude_code.lines_of_code.count",{description:"Count of lines of code modified, with the 'type' attribute indicating whether lines were added or removed"}),G8.prCounter=K("claude_code.pull_request.count",{description:"Number of pull requests created"}),G8.commitCounter=K("claude_code.commit.count",{description:"Number of git commits created"}),G8.costCounter=K("claude_code.cost.usage",{description:"Cost of the Claude Code session",unit:"USD"}),G8.tokenCounter=K("claude_code.token.usage",{description:"Number of tokens used",unit:"tokens"}),G8.codeEditToolDecisionCounter=K("claude_code.code_edit_tool.decision",{description:"Count of code editing tool permission decisions (accept/reject) for Edit, Write, and NotebookEdit tools"}),G8.activeTimeCounter=K("claude_code.active_time.total",{description:"Total active time in seconds",unit:"s"})}function b25(){return G8.meter}function Os8(){return G8.sessionCounter}function Rz8(){return G8.locCounter}function yu6(){return G8.prCounter}function $s8(){return G8.commitCounter}function ws8(){return G8.costCounter}function wD6(){return G8.tokenCounter}function Eu6(){return G8.codeEditToolDecisionCounter}function js8(){return G8.activeTimeCounter}function Lu6(){return G8.loggerProvider}function Sz8(q){G8.loggerProvider=q}function Hs8(){return G8.eventLogger}function Cz8(q){G8.eventLogger=q}function Js8(){return G8.meterProvider}function bz8(q){G8.meterProvider=q}function N_6(){return G8.tracerProvider}function xz8(q){G8.tracerProvider=q}function d7(){return!G8.isInteractive}function CT(){return G8.isInteractive}function Ms8(q){G8.isInteractive=q}function jD6(){return G8.clientType}function Xs8(q){G8.clientType=q}function vg(){return G8.sdkAgentProgressSummariesEnabled}function Ps8(q){G8.sdkAgentProgressSummariesEnabled=q}function SG(){return G8.kairosActive}function x25(q){G8.kairosActive=q}function Ds8(){return G8.strictToolResultPairing}function I25(q){G8.strictToolResultPairing=q}function Tg(){return G8.memoryToggledOff}function Ws8(q){G8.memoryToggledOff=q}function AL(){return G8.userMsgOptIn}function Vg(q){G8.userMsgOptIn=q}function u25(){return G8.sessionSource}function fs8(q){G8.sessionSource=q}function Iz8(){return G8.questionPreviewFormat}function uz8(q){G8.questionPreviewFormat=q}function mz8(){return G8.agentColorMap}function _66(){return G8.flagSettingsPath}function Zs8(q){G8.flagSettingsPath=q}function HD6(){return G8.flagSettingsInline}function Gs8(q){G8.flagSettingsInline=q}function vs8(){return G8.sessionIngressToken}function y_6(q){G8.sessionIngressToken=q}function Ts8(){return G8.oauthTokenFromFd}function Vs8(q){G8.oauthTokenFromFd=q}function ks8(){return G8.apiKeyFromFd}function Ns8(q){G8.apiKeyFromFd=q}function ys8(q){G8.lastAPIRequest=q}function Es8(){return G8.lastAPIRequest}function Ls8(q){G8.lastAPIRequestMessages=q}function m25(){return G8.lastAPIRequestMessages}function hu6(q){G8.lastClassifierRequests=q}function zP7(){return G8.lastClassifierRequests}function hs8(q){G8.cachedClaudeMdContent=q}function Rs8(){return G8.cachedClaudeMdContent}function B25(q){if(G8.inMemoryErrorLog.length>=100)G8.inMemoryErrorLog.shift();G8.inMemoryErrorLog.push(q)}function Ss8(){return G8.allowedSettingSources}function Cs8(q){G8.allowedSettingSources=q}function Ru6(){return d7()&&G8.clientType!=="claude-vscode"}function bs8(q){G8.inlinePlugins=q}function kg(){return G8.inlinePlugins}function xs8(q){G8.chromeFlagOverride=q}function Su6(){return G8.chromeFlagOverride}function OL(q){G8.useCoworkPlugins=q,AW()}function Cu6(){return G8.useCoworkPlugins}function Is8(q){G8.sessionBypassPermissionsMode=q}function E_6(){return G8.sessionBypassPermissionsMode}function bu6(q){G8.scheduledTasksEnabled=q}function JD6(){return G8.scheduledTasksEnabled}function L_6(){return G8.sessionCronTasks}function us8(q){G8.sessionCronTasks.push(q)}function p25(q){return G8.loopChainStartedAt[q]}function g25(q,K){G8.loopChainStartedAt[q]=K}function F25(q){delete G8.loopChainStartedAt[q]}function xu6(q){if(q.length===0)return 0;let K=new Set(q),_=G8.sessionCronTasks.filter((Y)=>!K.has(Y.id)),z=G8.sessionCronTasks.length-_.length;if(z===0)return 0;return G8.sessionCronTasks=_,z}function Iu6(q){G8.sessionTrustAccepted=q}function MD6(){return G8.sessionTrustAccepted}function ms8(q){G8.sessionPersistenceDisabled=q}function ok(){return G8.sessionPersistenceDisabled}function uu6(){return G8.hasExitedPlanMode}function $L(q){G8.hasExitedPlanMode=q}function Bs8(){return G8.needsPlanModeExitAttachment}function gI(q){G8.needsPlanModeExitAttachment=q}function Kn(q,K){if(K==="plan"&&q!=="plan")G8.needsPlanModeExitAttachment=!1;if(q==="plan"&&K!=="plan")G8.needsPlanModeExitAttachment=!0}function ps8(){return G8.needsAutoModeExitAttachment}function CG(q){G8.needsAutoModeExitAttachment=q}function gs8(q,K){if(q==="auto"&&K==="plan"||q==="plan"&&K==="auto")return;let _=q==="auto",z=K==="auto";if(z&&!_)G8.needsAutoModeExitAttachment=!1;if(_&&!z)G8.needsAutoModeExitAttachment=!0}function Fs8(){return G8.lspRecommendationShownThisSession}function Us8(q){G8.lspRecommendationShownThisSession=q}function Qs8(q){G8.initJsonSchema=q}function Bz8(){return G8.initJsonSchema}function z66(q){if(!G8.registeredHooks)G8.registeredHooks={};for(let[K,_]of Object.entries(q)){let z=K;if(!G8.registeredHooks[z])G8.registeredHooks[z]=[];G8.registeredHooks[z].push(..._)}}function zS(){return G8.registeredHooks}function U25(){G8.registeredHooks=null}function pz8(){if(!G8.registeredHooks)return;let q={};for(let[K,_]of Object.entries(G8.registeredHooks)){let z=_.filter((Y)=>!("pluginRoot"in Y));if(z.length>0)q[K]=z}G8.registeredHooks=Object.keys(q).length>0?q:null}function YP7(){G8.initJsonSchema=null,G8.registeredHooks=null}function h_6(){return G8.planSlugCache}function mu6(){return G8.sessionCreatedTeams}function Bu6(q){G8.teleportedSessionInfo={isTeleported:!0,hasLoggedFirstMessage:!1,sessionId:q.sessionId}}function gz8(){return G8.teleportedSessionInfo}function Fz8(){if(G8.teleportedSessionInfo)G8.teleportedSessionInfo.hasLoggedFirstMessage=!0}function XD6(q,K,_,z=null){let Y=`${z??""}:${q}`;G8.invokedSkills.set(Y,{skillName:q,skillPath:K,content:_,invokedAt:Date.now(),agentId:z})}function Q25(){return G8.invokedSkills}function ds8(q){let K=q??null,_=new Map;for(let[z,Y]of G8.invokedSkills)if(Y.agentId===K)_.set(z,Y);return _}function cs8(q){if(!q||q.size===0){G8.invokedSkills.clear();return}for(let[K,_]of G8.invokedSkills)if(_.agentId===null||!q.has(_.agentId))G8.invokedSkills.delete(K)}function Y66(q){for(let[K,_]of G8.invokedSkills)if(_.agentId===q)G8.invokedSkills.delete(K)}function AP7(q,K){return}function OP7(){if(G8.slowOperations.length===0)return tX7;let q=Date.now();if(G8.slowOperations.some((K)=>q-K.timestamp>=Ra8)){if(G8.slowOperations=G8.slowOperations.filter((K)=>q-K.timestamp<Ra8),G8.slowOperations.length===0)return tX7}return G8.slowOperations}function Ng(){return G8.mainThreadAgentType}function _n(q){G8.mainThreadAgentType=q}function cK(){return G8.isRemoteMode}function ls8(q){G8.isRemoteMode=q}function ns8(){return G8.systemPromptSectionCache}function is8(q,K){G8.systemPromptSectionCache.set(q,K)}function rs8(){G8.systemPromptSectionCache.clear()}function os8(){return G8.lastEmittedDate}function PD6(q){G8.lastEmittedDate=q}function bG(){return G8.additionalDirectoriesForClaudeMd}function pu6(q){G8.additionalDirectoriesForClaudeMd=q}function TJ(){return G8.allowedChannels}function zn(q){G8.allowedChannels=q}function Uz8(){return G8.hasDevChannels}function Qz8(q){G8.hasDevChannels=q}function as8(){return G8.promptCache1hAllowlist}function ss8(q){G8.promptCache1hAllowlist=q}function ts8(){return G8.afkModeHeaderLatched}function es8(q){G8.afkModeHeaderLatched=q}function qt8(){return G8.fastModeHeaderLatched}function Kt8(q){G8.fastModeHeaderLatched=q}function _t8(){return G8.cacheEditingHeaderLatched}function d25(q){G8.cacheEditingHeaderLatched=q}function zt8(){return G8.thinkingClearLatched}function Yt8(q){G8.thinkingClearLatched=q}function At8(){G8.afkModeHeaderLatched=null,G8.fastModeHeaderLatched=null,G8.cacheEditingHeaderLatched=null,G8.thinkingClearLatched=null}function gu6(){return G8.promptId}function Fu6(q){G8.promptId=q}var G8,ba8,xa8,la8=!1,ia8,ra8,aa8=0,sa8=null,Lz8=0,kz8=!1,Wu6,KP7=150,sX7=10,Ra8=1e4,tX7;var v8=L(()=>{UX7();ya8();tl();G8=eX7();ba8=E9(),xa8=ba8.subscribe;ia8=E9(),ra8=ia8.subscribe;tX7=[]});function dz8(q){let K;for(let _ in q)if(_.startsWith("_PROTO_")){if(K===void 0)K={...q};delete K[_]}return K??q}function $P7(q){if(A66!==null)return;if(A66=q,Uu6.length>0){let K=[...Uu6];Uu6.length=0,queueMicrotask(()=>{for(let _ of K)if(_.async)A66.logEventAsync(_.eventName,_.metadata);else A66.logEvent(_.eventName,_.metadata)})}}function d(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!1});return}A66.logEvent(q,K)}async function wP7(q,K){if(A66===null){Uu6.push({eventName:q,metadata:K,async:!0});return}await A66.logEventAsync(q,K)}var Uu6,A66=null;var T8=L(()=>{Uu6=[]});function WD6({writeFn:q,flushIntervalMs:K=1000,maxBufferSize:_=100,maxBufferBytes:z=1/0,immediateMode:Y=!1}){let A=[],O=0,$=null,w=null;function j(){if($)clearTimeout($),$=null}function H(){if(w)q(w.join("")),w=null;if(A.length===0)return;q(A.join("")),A=[],O=0,j()}function J(){if(!$)$=setTimeout(H,K)}function M(){if(w){w.push(...A),A=[],O=0,j();return}let X=A;A=[],O=0,j(),w=X,setImmediate(()=>{let P=w;if(w=null,P)q(P.join(""))})}return{write(X){if(Y){q(X);return}if(A.push(X),O+=X.length,J(),A.length>=_||O>=z)M()},flush:H,dispose(){H()}}}function gq(q){return Ot8.add(q),()=>Ot8.delete(q)}async function jP7(){await Promise.all(Array.from(Ot8).map((q)=>q()))}var Ot8;var o9=L(()=>{Ot8=new Set});function c25(q){let K=[],_=q.match(/^MCP server ["']([^"']+)["']/);if(_&&_[1])K.push("mcp"),K.push(_[1].toLowerCase());else{let A=q.match(/^([^:[]+):/);if(A&&A[1])K.push(A[1].trim().toLowerCase())}let z=q.match(/^\[([^\]]+)]/);if(z&&z[1])K.push(z[1].trim().toLowerCase());if(q.toLowerCase().includes("1p event:"))K.push("1p");let Y=q.match(/:\s*([^:]+?)(?:\s+(?:type|mode|status|event))?:/);if(Y&&Y[1]){let A=Y[1].trim().toLowerCase();if(A.length<30&&!A.includes(" "))K.push(A)}return Array.from(new Set(K))}function l25(q,K){if(!K)return!0;if(q.length===0)return!1;if(K.isExclusive)return!q.some((_)=>K.exclude.includes(_));else return q.some((_)=>K.include.includes(_))}function JP7(q,K){if(!K)return!0;let _=c25(q);return l25(_,K)}var HP7;var MP7=L(()=>{h4();HP7=A1((q)=>{if(!q||q.trim()==="")return null;let K=q.split(",").map((A)=>A.trim()).filter(Boolean);if(K.length===0)return null;let _=K.some((A)=>A.startsWith("!")),z=K.some((A)=>!A.startsWith("!"));if(_&&z)return null;let Y=K.map((A)=>A.replace(/^!/,"").toLowerCase());return{include:_?[]:Y,exclude:_?Y:[],isExclusive:_}})});import{homedir as n25}from"os";import{join as XP7}from"path";function fD6(){return XP7(O7(),"teams")}function ZD6(q){let K=process.env.NODE_OPTIONS;if(!K)return!1;return K.split(/\s+/).includes(q)}function Yn(q,K){if(q===void 0)return K;let _=parseInt(q,10);return Number.isNaN(_)?K:_}function B6(q){if(!q)return!1;if(typeof q==="boolean")return q;let K=q.toLowerCase().trim();return["1","true","yes","on"].includes(K)}function a9(q){if(q===void 0)return!1;if(typeof q==="boolean")return!q;if(!q)return!1;let K=q.toLowerCase().trim();return["0","false","no","off"].includes(K)}function D9(){return B6(process.env.CLAUDE_CODE_SIMPLE)||process.argv.includes("--bare")}function PP7(q){let K={};if(q)for(let _ of q){let[z,...Y]=_.split("=");if(!z||Y.length===0)throw Error(`Invalid environment variable format: ${_}, environment variables should be added as: -e KEY1=value1 -e KEY2=value2`);K[z]=Y.join("=")}return K}function YS(){return process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION||"us-east-1"}function cz8(){return process.env.CLOUD_ML_REGION||"us-east5"}function DP7(){return B6(process.env.CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR)}function Af(){return!1}function AS(){return!1}function WP7(){return{namespace:void 0,cluster:void 0}}function lz8(q){if(q){let K=i25.find(([_])=>q.startsWith(_));if(K)return process.env[K[1]]||cz8()}return cz8()}var O7,i25;var B8=L(()=>{h4();O7=A1(()=>{return(process.env.CLAUDE_CONFIG_DIR??XP7(n25(),".claude")).normalize("NFC")},()=>process.env.CLAUDE_CONFIG_DIR);i25=[["claude-haiku-4-5","VERTEX_REGION_CLAUDE_HAIKU_4_5"],["claude-3-5-haiku","VERTEX_REGION_CLAUDE_3_5_HAIKU"],["claude-3-5-sonnet","VERTEX_REGION_CLAUDE_3_5_SONNET"],["claude-3-7-sonnet","VERTEX_REGION_CLAUDE_3_7_SONNET"],["claude-opus-4-6","VERTEX_REGION_CLAUDE_4_6_OPUS"],["claude-opus-4-1","VERTEX_REGION_CLAUDE_4_1_OPUS"],["claude-opus-4","VERTEX_REGION_CLAUDE_4_0_OPUS"],["claude-sonnet-4-6","VERTEX_REGION_CLAUDE_4_6_SONNET"],["claude-sonnet-4-5","VERTEX_REGION_CLAUDE_4_5_SONNET"],["claude-sonnet-4","VERTEX_REGION_CLAUDE_4_0_SONNET"]]});function $4(q,K,_,z,Y){if(z==="m")throw TypeError("Private method is not writable");if(z==="a"&&!Y)throw TypeError("Private accessor was defined without a setter");if(typeof K==="function"?q!==K||!Y:!K.has(q))throw TypeError("Cannot write private member to an object whose class did not declare it");return z==="a"?Y.call(q,_):Y?Y.value=_:K.set(q,_),_}function u1(q,K,_,z){if(_==="a"&&!z)throw TypeError("Private accessor was defined without a getter");if(typeof K==="function"?q!==K||!z:!K.has(q))throw TypeError("Cannot read private member from an object whose class did not declare it");return _==="m"?z:_==="a"?z.call(q):z?z.value:K.get(q)}var An=()=>{};var $t8=function(){let{crypto:q}=globalThis;if(q?.randomUUID)return $t8=q.randomUUID.bind(q),q.randomUUID();let K=new Uint8Array(1),_=q?()=>q.getRandomValues(K)[0]:()=>Math.random()*255&255;return"[CREDIT_CARD]-[CREDIT_CARD]".replace(/[018]/g,(z)=>(+z^_()&15>>+z/4).toString(16))};function On(q){return typeof q==="object"&&q!==null&&(("name"in q)&&q.name==="AbortError"||("message"in q)&&String(q.message).includes("FetchRequestCanceledException"))}var Qu6=(q)=>{if(q instanceof Error)return q;if(typeof q==="object"&&q!==null){try{if(Object.prototype.toString.call(q)==="[object Error]"){let K=Error(q.message,q.cause?{cause:q.cause}:{});if(q.stack)K.stack=q.stack;if(q.cause&&!K.cause)K.cause=q.cause;if(q.name)K.name=q.name;return K}}catch{}try{return Error(JSON.stringify(q))}...
|
NULL
|
|
60896
|
1313
|
29
|
2026-04-21T06:24:35.563852+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752675563_m2.jpg...
|
PhpStorm
|
faVsco.js – console [EU]
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
2
47
3
11
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\AjReportsRepository;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
private readonly AjReportsRepository $ajReportsRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
$ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());
if ($ajReportCount > 0) {
return $this->response->errorWrongArgs(
"This saved search is used by {$ajReportCount} active AJ report(s). "
. 'Please remove or update those reports before deleting this saved search.'
);
}
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$crmService = $this->providerRegistry->get($team->crm->provider);
if (! $user->isCrmRequired()) {
$crmService->setUser($team->getOwner());
} else {
$crmService->setUser($user);
}
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
}
/**
* Remove activity from this user's favorite...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"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":"2","depth":4,"bounds":{"left":0.4587766,"top":0.12529927,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"47","depth":4,"bounds":{"left":0.46875,"top":0.12529927,"width":0.009973404,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.48071808,"top":0.12529927,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"11","depth":4,"bounds":{"left":0.49069148,"top":0.12529927,"width":0.008976064,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.50166225,"top":0.12529927,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.5106383,"top":0.123703115,"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.51795214,"top":0.123703115,"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\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AjReportsRepository;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n private readonly AjReportsRepository $ajReportsRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n $ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());\n if ($ajReportCount > 0) {\n return $this->response->errorWrongArgs(\n \"This saved search is used by {$ajReportCount} active AJ report(s). \"\n . 'Please remove or update those reports before deleting this saved search.'\n );\n }\n\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n if (! $user->isCrmRequired()) {\n $crmService->setUser($team->getOwner());\n } else {\n $crmService->setUser($user);\n }\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n if ($coachingFeedback->delete()) {\n $activity->documentUpdate();\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete opration failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresIn' => 'required|in:' . implode(',', Nudge::MAP_EXPIRES),\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\n }\n}","depth":4,"value":"<?php\n\nnamespace Jiminny\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AjReportsRepository;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n private readonly AjReportsRepository $ajReportsRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n $ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());\n if ($ajReportCount > 0) {\n return $this->response->errorWrongArgs(\n \"This saved search is used by {$ajReportCount} active AJ report(s). \"\n . 'Please remove or update those reports before deleting this saved search.'\n );\n }\n\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n if (! $user->isCrmRequired()) {\n $crmService->setUser($team->getOwner());\n } else {\n $crmService->setUser($user);\n }\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n if ($coachingFeedback->delete()) {\n $activity->documentUpdate();\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete opration failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresIn' => 'required|in:' . implode(',', Nudge::MAP_EXPIRES),\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\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.5265958,"top":0.074221864,"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.53523934,"top":0.074221864,"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.5462101,"top":0.074221864,"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.55485374,"top":0.074221864,"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.56349736,"top":0.074221864,"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.5744681,"top":0.074221864,"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.58543885,"top":0.074221864,"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.61203456,"top":0.074221864,"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.62300533,"top":0.074221864,"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.074221864,"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":"27","depth":4,"bounds":{"left":0.9162234,"top":0.09896249,"width":0.009973404,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.9281915,"top":0.09896249,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"23","depth":4,"bounds":{"left":0.9381649,"top":0.09896249,"width":0.010305851,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.95046544,"top":0.09896249,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"105","depth":4,"bounds":{"left":0.96043885,"top":0.09896249,"width":0.011968086,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9740692,"top":0.09736632,"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.09736632,"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 * FROM team_features where team_id = 1;\n\nSELECT * FROM teams WHERE name LIKE '%Vixio%'; # 340,270,11922\nSELECT * FROM users WHERE team_id = 340; # 12015\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 340\nand sa.provider = 'salesforce';\n# and sa.provider = 'salesloft';\n\nselect * from crm_fields where crm_configuration_id = 270 and object_type = 'event';\n# 125558 - Event Type - Event_Type__c\n# 125552 - Event Status - Event_Status__c\n\nSELECT * FROM sidekick_settings WHERE team_id = 340;\n\nSELECT * FROM crm_field_values WHERE crm_field_id in (125552);\n\nselect * from activities where crm_configuration_id = 270\nand type = 'conference' and crm_provider_id IS NOT NULL\nand actual_start_time > '2024-09-16 09:00:00' order by scheduled_start_time;\n\nSELECT * FROM activities WHERE id = 20871677;\nSELECT * FROM crm_field_data WHERE activity_id = 20871677;\n\nselect * from crm_layouts where crm_configuration_id = 270;\nselect * from crm_layout_entities where crm_layout_id in (886,887);\n\nSELECT * FROM crm_configurations WHERE id = 270;\n\nselect * from playbooks where team_id = 340; # 1514\nselect * from groups where team_id = 340;\nSELECT * FROM crm_fields WHERE id IN (125393, 125401);\n\nselect g.name as 'team name', p.name as 'playbook name', f.label as 'activity type field' from groups g\njoin playbooks p on g.playbook_id = p.id\njoin crm_fields f on p.activity_field_id = f.id\nwhere g.team_id = 340;\n\nSELECT * FROM activities WHERE uuid_to_bin('0c180357-67d2-419e-a8c3-b832a3490770') = uuid; # 20448716\nselect * from crm_field_data where object_id = 20448716;\n\nselect * from activities where crm_configuration_id = 270 and provider = 'salesloft' order by id desc;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%CybSafe%'; # 343,273,12008\nselect * from opportunities where team_id = 343;\nselect * from opportunities where team_id = 343 and crm_provider_id = '18099102526';\nselect * from opportunities where team_id = 343 and account_id = 945217482;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from accounts where team_id = 343 order by name asc;\n\nselect * from stages where crm_configuration_id = 273 and type = 'opportunity';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Voyado%'; # 353,283,12143\nSELECT * FROM activities WHERE crm_configuration_id = 283 and account_id = 3777844 order by id desc;\nSELECT * FROM accounts WHERE team_id = 353 AND name LIKE '%Salesloft%';\nSELECT * FROM activities WHERE id = 20717903;\n\nselect * from participants where activity_id IN (20929172,20928605,20928468,20926272,20926271,20926270,20926269,20916499,20916454,20916436,20916435,20900015,20900014,20900013,20897312,20897243,20897241,20897237,20897232,20897229,20893648,20893231,20893230,20893229,20893228,20889784,20885039,20885038,20885037,20885036,20885035,20882728,20882708,20882703,20882702,20869828,20869811,20869806,20869801,20869799,20869798,20869796,20869795,20869794,20869761,20869760,20869759,20868688,20868687,20850340,20847195,20841710,20833967,20827021,20825307,20825305,20825297,20824615,20824400,20823927,20821760,20795588,20794233,20794057,20793710,20785811,20781789,20781394,20781307,20762651,20758453,20758282,20757323,20756643,20756636,20756629,20756627,20756606,20756605,20756604,20756603,20756602,20756600,20756599,20756598,20756595,20756594,20756589,20756587,20756577,20756573,20748918,20748386,20748385,20748384,20748383,20748382,20748381,20748380,20748379,20748377,20748375,20748373,20743301,20717905,20717904,20717903,20717901,20717899);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 353\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%modern world business solutions%'; # 345,275,12016, l.atkinson@mwbsolutions.co.uk\nSELECT * FROM activities WHERE uuid_to_bin('3921d399-3fef-4609-a291-b0097a166d43') = uuid;\n# id: 20940638, user: 12022, contact: 5305871\nSELECT * FROM activity_summary_logs WHERE activity_id = 20940638;\nselect * from contacts where team_id = 345 and crm_provider_id = '30891432415' order by name asc; # 5305871\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 345\nand sa.provider = 'hubspot';\n\nselect * from users where team_id = 345 and id = 12022;\nSELECT * FROM crm_profiles WHERE user_id = 12022;\nSELECT * FROM participants WHERE activity_id = 20940638;\nSELECT * FROM users u\nJOIN crm_profiles cp ON u.id = cp.user_id\nWHERE u.team_id = 345;\n\nselect * from contacts where team_id = 345 and crm_provider_id = '30880813535' order by name desc; # 5305871\n\nselect * from team_features where team_id = 345;\nSELECT * FROM activities WHERE uuid_to_bin('11701e2d-2f82-4dab-a616-1db4fad238df') = uuid; # 21115197\nSELECT * FROM participants WHERE activity_id = 20897406;\n\n\n\nSELECT * FROM activities WHERE uuid_to_bin('63ba55cd-1abc-447d-83da-0137000005b7') = uuid; # 20953912\nSELECT * FROM activities WHERE crm_configuration_id = 275 and provider = 'ringcentral' and title like '%1252629100%';\n\n\nSELECT * FROM activities WHERE id = 20946641;\nSELECT * FROM crm_profiles WHERE user_id = 10211;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120,97,10984, triger@lunio.ai\nSELECT * FROM opportunities WHERE crm_configuration_id = 97 and crm_provider_id = '006N1000006c5PpIAI';\nselect * from stages where crm_configuration_id = 97 and type = 'opportunity';\nselect * from opportunities where team_id = 120;\n\n\nselect * from crm_configurations crm join teams t on crm.id = t.crm_id\nwhere 1=1\nAND t.current_billing_plan IS NOT NULL\nAND crm.auto_sync_activity = 0\nand crm.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Exclaimer%'; # 270,205,10053,james.lewendon@exclaimer.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 270\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b54df794-2a9a-4957-8d80-09a600ead5f8') = uuid; # 21637956\nSELECT * FROM crm_profiles WHERE user_id = 11446;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cygnetise%'; # 372,300,12554, alex.chikly@cygnetise.com\nselect * from playbooks where team_id = 372;\nselect * from crm_fields where crm_configuration_id = 300 and object_type = 'event'; # 141340\nSELECT * FROM crm_field_values WHERE crm_field_id = 141340;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 372\nand sa.provider = 'salesforce';\n\nselect * from crm_profiles where crm_configuration_id = 300;\nSELECT * FROM crm_configurations WHERE team_id = 372;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Planday%'; # 291,242,11501,mfa@planday.com\nSELECT * FROM opportunities WHERE team_id = 291 and crm_provider_id = '006bG000005DO86QAG'; # 3207756\nselect * from crm_field_data where object_id = 3207756;\nSELECT * FROM crm_fields WHERE id = 111834;\n\nselect f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value\nFROM crm_fields f\nJOIN crm_field_data fd ON f.id = fd.crm_field_id\nWHERE f.crm_configuration_id = 242\nAND f.object_type = 'opportunity'\nAND fd.object_id IN (3207756)\nORDER BY fd.object_id, fd.updated_at;\n\nSELECT * FROM crm_configurations WHERE auto_connect = 1;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150,salesforce-admin@tourlane.com\nselect * from group_deal_risk_types drgt join groups g on drgt.group_id = g.id\nwhere g.team_id = 187;\n\nselect * from `groups` where team_id = 187;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 187\nand sa.provider = 'salesforce';\n\n# Destination - 98870 - Destination__c\n# Stage - 79014 - StageName\n# Land Arrangement - 98856 - Land_Arrangement__c\n# Flight - 98848 - Flight__c\n# Last activity date - 98812 - LastActivityDate\n# Last modified date - 98809 - LastModifiedDate\n# Last inbound mail timestamp - 99151 - Last_Inbound_Mail_Timestamp__c\n# next call - 98864 - Next_Call__c\n\nselect * from crm_fields where crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\nselect * from opportunities where team_id = 187 and name LIKE'%Muriel Sal%';\nselect * from opportunities where team_id = 187 and user_id = 9951 and is_closed = 0;\nselect * from activities where opportunity_id = 3538248;\n\nSELECT * FROM crm_profiles WHERE user_id = 8150;\n\nselect * from deal_risks where opportunity_id = 3538248;\n\nselect * from teams where crm_id IS NULL;\n\nSELECT opp.id AS opportunity_id,\n u.group_id AS group_id,\n MAX(\n CASE\n WHEN a.type IN (\"sms-inbound\", \"sms-outbound\") THEN a.created_at\n ELSE a.actual_end_time\n END) as last_date\nFROM opportunities opp\nleft join activities a on a.opportunity_id = opp.id\ninner join users u on opp.user_id = u.id\nwhere opp.user_id IN (9951)\n\nAND opp.is_closed = 0\nand a.status IN ('completed', 'received', 'delivered') OR a.status IS NULL\ngroup by opp.id;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cybsafe%'; # 343,301,12008,polly.morphew@cybsafe.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 301;\nSELECT * FROM contacts WHERE id = 6612363;\nSELECT * FROM accounts WHERE id = 4235676;\nSELECT * FROM opportunities WHERE crm_configuration_id = 301 and crm_provider_id = 32983784868;\nselect * from opportunity_stages where opportunity_id = 4503759;\n# SELECT * FROM opportunities WHERE id = 4569937;\n\nselect * from activities where crm_configuration_id = 301;\nSELECT * FROM activities WHERE uuid_to_bin('d3b2b28b-c3d0-4c2d-8ed0-eef42855278a') = uuid; # 26330370\nSELECT * FROM participants WHERE activity_id = 26330370;\n\nSELECT * FROM teams WHERE id = 375;\nselect * from playbooks where team_id = 375;\n\nselect * from stages where crm_configuration_id = 301 and type = 'opportunity';\n\nselect * from teams;\nselect * from contact_roles;\n\nSELECT * FROM opportunities WHERE team_id = 343 and user_id = 12871 and close_date >= '2024-11-01';\n\nselect * from users u join crm_profiles cp on cp.user_id = u.id where u.team_id = 343;\n\nSELECT * FROM crm_field_data WHERE object_id = 3771706;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 301 and object_type = 'opportunity'\nand crm_provider_id LIKE \"%traffic_light%\";\nSELECT * FROM crm_field_values WHERE crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531);\n\nSELECT fd.* FROM opportunities o\nJOIN crm_field_data fd ON o.id = fd.object_id\nWHERE o.team_id = 343\n# and o.user_id IS NOT NULL\nand fd.crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531)\nand fd.value != ''\norder by value desc\n# group by o.id\n;\n\nSELECT * FROM opportunities WHERE id = 3769843;\n\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150, salesforce-admin@tourlane.com\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding Circle%'; # 220,177,8603,aswini.mishra@fundingcircle.com\nSELECT * FROM activities WHERE uuid_to_bin('7a40e99b-3b37-4bb1-b983-325b81801c01') = uuid; # 23139839\n\n\nSELECT * FROM opportunities WHERE id = 3855992;\n\nSELECT * FROM users WHERE name LIKE '%Angus Pollard%'; # 8988\n\nSELECT * FROM teams WHERE name LIKE '%Story Terrace%'; # 379, 307, 12894\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307 and object_type != 'opportunity';\n\nselect * from contacts where team_id = 379 and name like '%bebro%'; # 5874411, crm: 77229348507\nSELECT * FROM crm_field_data WHERE object_id = 5874411;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379\nand sa.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%mentio%'; # 117, 94, 6371, nikhil.kumar@mention-me.com\nSELECT * FROM activities WHERE uuid_to_bin('82939311-1af0-4506-8546-21e8d1fdf2c1') = uuid;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tourlane%'; # 187, 209, 8150, salesforce-admin@tourlane.com\nSELECT * FROM opportunities WHERE team_id = 187 and crm_provider_id = '006Se000008xfvNIAQ'; # 3537793\nselect * from generic_ai_prompts where subject_id = 3537793;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120, 97, 10984, triger@lunio.ai\nSELECT * FROM crm_configurations WHERE id = 97;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 97;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 355;\nSELECT * FROM crm_fields WHERE id = 32682;\n\nselect cfd.value, o.* from opportunities o\njoin crm_field_data cfd on o.id = cfd.object_id and cfd.crm_field_id = 32682\nwhere team_id = 120\nand cfd.value != ''\n;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 120\nand sa.provider = 'salesforce';\n\nselect * from opportunities where team_id = 120 and crm_provider_id = '006N1000007X8MAIA0';\nSELECT * FROM crm_field_data WHERE object_id = 2313439;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 410;\nSELECT * FROM teams WHERE name LIKE '%Local Business Oxford%';\nselect * from scorecards where team_id = 410;\nselect * from scorecard_rules;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding%'; # 220, 177, 8603, aswini.mishra@fundingcircle.com\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\njoin users u on o.user_id = u.id\nwhere a.crm_configuration_id = 177 and a.type LIKE '%email-out%'\n# and a.actual_end_time > '2024-12-16 00:00:00'\n# and o.remotely_created_at > '2024-12-01 00:00:00'\n# and u.group_id = 1014\nand u.id = 9021\norder by a.id desc;\nSELECT * FROM opportunities WHERE id in (3981384,4017346);\nSELECT * FROM users WHERE team_id = 220 and id IN (8775, 11435);\n\nselect * from users where id = 9021;\nselect * from inboxes where user_id = 9021;\n\nselect * from inbox_emails where inbox_id = 1349 and email_date > '2024-12-18 00:00:00';\n\nselect * from email_messages where team_id = 220\nand orig_date > '2024-12-16 00:00:00' and orig_date < '2024-12-19 00:00:00'\nand subject LIKE '%Personal%'\n# and 'from' = 'credit@fundingcircle.com'\n;\n\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\nwhere a.user_id = 9021 and a.type LIKE '%email-out%'\nand a.actual_end_time > '2024-12-18 00:00:00'\nand o.user_id IS NOT NULL\nand o.remotely_created_at > '2024-12-01 00:00:00'\norder by a.id desc;\n\nSELECT * FROM opportunities WHERE team_id = 220 and name LIKE '%Right Car move Limited%' and id = 3966852;\nselect * from activities where crm_configuration_id = 177 and type LIKE '%email%' and opportunity_id = 3966852 order by id desc;\n\nselect * from team_settings where name IN ('useCloseDate');\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hurree%'; # 104, 81, 6175, jfarrell@hurree.co\nSELECT * FROM opportunities WHERE team_id = 104 and name = 'PropOp';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 104\nand sa.provider = 'hubspot';\n\nselect * from crm_configurations where last_synced_at > '2025-01-19 01:00:00'\nselect * from teams where crm_id IS NULL;\n\nselect t.name as 'team', u.name as 'owner', u.email, u.phone\nfrom teams t\njoin activity_providers ap on t.id = ap.team_id\njoin users u on t.owner_id = u.id\nwhere 1=1\n and t.status = 'active'\n and ap.is_enabled = 1\n# and u.status = 1\n and ap.provider = 'ms-teams';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nSELECT * FROM teams WHERE id = 442; # 14293\nselect * from users where team_id = 442;\nselect * from social_accounts sa where sa.sociable_id = 14293;\nselect * from invitations where team_id = 442;\n\n# ********************************************************************************************************\nSELECT * FROM users WHERE email LIKE '%nea.liikamaa@eletive.com%'; # 14022\nSELECT * FROM teams WHERE id = 429;\nselect * from opportunities where team_id = 429 and crm_provider_id IN (16157415775, 22246219645);\nselect * from activities where opportunity_id in (4340436,4353519);\n\nselect * from transcription where activity_id IN (25630961,25381771);\nselect * from generic_ai_prompts where subject_id IN (4353519);\n\nSELECT\n a.id as activity_id,\n a.opportunity_id,\n a.type as activity_type,\n a.language,\n CONCAT(a.title, a.description) AS mail_content,\n e.from AS mail_from,\n e.to AS mail_to,\n e.subject AS mail_subject,\n e.body AS mail_body,\n p.type as prompt_type,\n p.status as prompt_status,\n p.content AS prompt_content,\n a.actual_start_time as created_at\nFROM activities a\n LEFT JOIN ai_prompts p ON a.transcription_id = p.transcription_id AND p.deleted_at IS NULL\n LEFT JOIN email_messages e ON a.id = e.activity_id\nWHERE a.actual_start_time > '2024-01-01 00:00:00'\n AND a.opportunity_id IN (4353519)\n AND a.status IN ('completed', 'received', 'delivered')\n AND a.deleted_at IS NULL\n AND a.type NOT IN ('sms-inbound', 'sms-outbound')\nORDER BY a.opportunity_id ASC, a.id ASC;\n\nSELECT * FROM users WHERE name LIKE '%George Fierstone%'; # 14293\nSELECT * FROM teams WHERE id = 442;\nSELECT * FROM crm_configurations WHERE id = 344;\nselect * from team_features where team_id = 442;\nselect * from groups where team_id = 442;\nselect * from playbooks where team_id = 442;\nselect * from playbook_categories where playbook_id = 1729;\nselect * from crm_fields where crm_configuration_id = 344 and id = 172024;\nSELECT * FROM crm_field_values WHERE crm_field_id = 172024;\nselect * from crm_layouts where crm_configuration_id = 344;\nselect * from playbook_layouts where playbook_id = 1729;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 221, 9444\n\nselect s.*\n# , s.sent_at, u.name, a.*\nfrom activity_summary_logs s\ninner join activities a on a.id = s.activity_id\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 356\nand s.sent_at > date_sub(now(), interval 60 day)\norder by a.actual_end_time desc;\n\nselect * from activities a\n# inner join activity_summary_logs s on s.activity_id = a.id\nwhere a.crm_configuration_id = 356 and a.actual_end_time > date_sub(now(), interval 60 day)\n# and a.crm_provider_id is not null\n# and provider <> 'ringcentral'\nand status = 'completed'\norder by a.actual_end_time desc;\n\nselect * from teams order by id desc; # 17328, 32, 17830, integration-account@jiminny.com\nSELECT * FROM users;\nSELECT * FROM users where team_id = 260 and status = 1; # 201 - 150 active\nSELECT * FROM teams WHERE id = 260;\nselect * from team_settings where team_id = 260;\nselect * from crm_configurations where team_id = 260;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 356;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1184;\n\nselect * from accounts where crm_configuration_id = 221 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 221 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 221 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 221 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 221 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 221;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 221 order by id desc;\nselect * from stages where crm_configuration_id = 221 order by id desc;\n\nselect * from accounts where crm_configuration_id = 356 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 356 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 356 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 356 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 356 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 356;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 356 order by id desc;\nselect * from stages where crm_configuration_id = 356 order by id desc;\n\nselect * from playbooks where team_id = 260 order by id desc; # 4 (2 deleted)\nselect * from groups where team_id = 260 order by id desc; # 27 groups, (2 deleted)\nselect * from playbook_layouts where playbook_id IN (1410,1409,1276,1254); # 4\nselect ce.* from calendars c\njoin users u on c.user_id = u.id\njoin calendar_events ce on c.id = ce.calendar_id\nwhere u.team_id = 260\nand (ce.start_time > '2025-02-21 00:00:00')\n;\n# calendar events 1207\n#\n\nselect * from opportunities where team_id = 260;\nSELECT * FROM crm_field_data WHERE object_id = 4696496;\n\nselect * from activities where crm_configuration_id = 356 and crm_provider_id IS NOT NULL;\nselect * from activities where crm_configuration_id IN (221) and provider NOT IN ('ms-teams', 'uploader', 'zoom-bot')\n# and type = 'conference' and status = 'scheduled' and activities.is_internal = 0\nand created_at > '2024-03-01 00:00:00'\norder by id desc; # 880 000, ringcentral, avaya\nSELECT * FROM participants WHERE activity_id = 26371744;\n\n# all activities 942 000 +\n# conference 7385 - scheduled 984 - external 343\n\nselect * from activities where id = 26321812;\nselect * from participants where activity_id = 26321812;\nselect * from participants where activity_id in (26414510,26414514,26414516,26414604,26414653,26414655);\nselect * from leads where id in (720428,689175,731546,645866,621037);\n\nselect * from users where id = 13841;\nselect * from opportunities where user_id = 9541;\nselect * from stages where id = 15900;\n\nselect * from accounts where\n# id IN (4160055,5053725,4965303,4896434)\nid in (4584518,3249934,3218025,3891133,3399450,4172999,4485161,3101785,4587203,3070816,2870343,2870341,3563940,4550846,3424464,3249963,2870342)\n;\n\nselect * from activities where id = 26654935;\nSELECT * FROM opportunities WHERE id = 4803458;\n\nSELECT * FROM opportunities where team_id = 260 and user_id = 13841 AND stage_id = 15900;\nSELECT id, uuid, provider, type, lead_id, account_id, contact_id, opportunity_id, stage_id, status, recording_state, title, actual_start_time, actual_end_time\nFROM activities WHERE user_id = 13841 AND opportunity_id IN (4729783, 4731717, 4731726, 4732064, 4732849, 4803458, 4813213);\n\nSELECT DISTINCT\n o.id, o.stage_id, s.name, a.title,\n a.*\nFROM activities a\n# INNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nINNER JOIN groups g ON u.group_id = g.id\nINNER JOIN opportunities o ON a.opportunity_id = o.id\nINNER JOIN stages s ON o.stage_id = s.id\nWHERE\n a.crm_configuration_id = 356\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 13841\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n AND team.uuid = uuid_to_bin('a607fba7-452e-4683-b2af-00d6cb52c93c')\n AND g.uuid = uuid_to_bin('b5d69e40-24a0-4c16-810b-5fa462299f94')\n\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n )\n )\n AND (\n# s.id = 15900\n s.uuid = uuid_to_bin('04ca1c26-c666-4268-a129-419c0acffd73')\n OR s.uuid IS NULL -- Include records without opportunity stage\n )\n\nORDER BY a.actual_end_time DESC;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%'; # 190, 162, 8474, willsc@leadforensics.com\nSELECT * FROM users WHERE team_id = 190;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 190\nand sa.provider = 'hubspot';\n\nselect * from role_user where user_id = 8474;\n\nselect * from crm_configurations where provider = 'bullhorn';\n\nSELECT * FROM opportunities WHERE uuid_to_bin('94578249-65ec-4205-90f2-7d1a7d5ab64a') = uuid;\nSELECT * FROM users WHERE uuid_to_bin('26dbadeb-926f-4150-b11b-771b9d4c2f9a') = uuid;\n\nSELECT * FROM opportunities WHERE id = 4732493;\nselect * from activities where opportunity_id = 4732493;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 443; # 358, 14315, andrea.romano@correrenaturale.com\nSELECT * FROM opportunities WHERE team_id = 443;\n\nSELECT a.id, a.type, a.user_id, a.status, a.deleted_at, u.name, u.email, u.team_id as activity_team_id, u.status, u.deleted_at, t.name, t.status, s.team_id as stage_team_id\nFROM activities AS a\nJOIN stages AS s ON a.stage_id = s.id\nJOIN users AS u ON u.id = a.user_id\nJOIN teams AS t ON t.id = s.team_id\nWHERE u.team_id <> s.team_id and t.id > 135;\n\n\nSELECT\n crm_configuration_id,\n crm_provider_id,\n COUNT(*) as duplicate_count,\n GROUP_CONCAT(id) as stage_ids,\n GROUP_CONCAT(name) as stage_names\nFROM stages\nGROUP BY crm_configuration_id, crm_provider_id\nHAVING COUNT(*) > 1\nORDER BY duplicate_count DESC;\n\nselect * from stages where id IN (14898,14907);\n\nselect * from business_processes;\n\nSELECT *\nFROM crm_configurations\nWHERE team_id IN (\n SELECT team_id\n FROM crm_configurations\n GROUP BY team_id\n HAVING COUNT(*) > 1\n)\nORDER BY team_id;\n\nSELECT *\nFROM teams\nWHERE crm_id IN (\n SELECT crm_id\n FROM teams\n GROUP BY crm_id\n HAVING COUNT(*) > 1\n)\nORDER BY crm_id;\n\n# ***************************************************************************\nselect * from crm_configurations where provider = 'integration-app';\nSELECT * FROM teams WHERE id = 443; # Correre Naturale 358 14315 andrea.romano@correrenaturale.com\nselect * from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect id, uuid, actual_end_time, crm_provider_id, is_internal, playbook_category_id, type, user_id, lead_id, contact_id, account_id, opportunity_id, status, title from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect * from team_features where team_id = 358;\nselect * from activity_summary_logs;\n\nselect * from teams where id = 406;\n\n# ************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sportfive%'; # 267, 202, 14637, srv.salesforce@sportfive.com\nselect * from activities where crm_configuration_id = 202 order by actual_end_time desc;\n\nSELECT * FROM users where id = 14637;\nSELECT * FROM teams where id = 267;\nSELECT * FROM groups where id = 1118;\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 202\n AND status IN ('completed', 'failed')\n AND recording_state != 'stopped'\n AND type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n AND (is_private = 0 OR user_id = 14637)\n AND (\n (\n actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n ) OR (\n actual_start_time IS NULL\n AND type IN ('sms-outbound', 'sms-inbound')\n AND created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND NOT EXISTS (\n SELECT 1\n FROM tracks\n WHERE\n tracks.activity_id = activities.id\n AND tracks.type IN ('audio', 'video')\n )\nORDER BY actual_end_time DESC;\n\nSELECT DISTINCT\n a.*\nFROM activities a\nINNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nWHERE\n a.crm_configuration_id = 202\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 14637\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND a.user_id = 14637\n )\n )\n\nORDER BY a.actual_end_time DESC\n;\n\nSELECT DISTINCT a.*\nFROM activities a\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams t ON u.team_id = t.id\n# INNER JOIN tracks tr ON a.id = tr.activity_id\n# INNER JOIN groups g ON u.group_id = g.id\nWHERE 1=1\n AND t.id = 267\n# AND t.uuid = uuid_to_bin('aed4927b-f1ea-499e-94c3-83762fd233e8')\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND tr.type NOT IN ('audio', 'video')\n AND (\n a.is_private = 0\n OR a.user_id = 14637\n )\n AND (\n (a.actual_start_time BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59')\n OR (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59'\n )\n )\n# and NOT EXISTS (\n# SELECT 1\n# FROM tracks t\n# WHERE t.activity_id = a.id\n# AND t.type IN ('audio', 'video')\n# )\n\nORDER BY a.actual_end_time DESC;\n\nSELECT * FROM tracks WHERE activity_id = 26485995;\n\nselect a.is_private, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 202\n# and a.is_internal = 0\nand (a.actual_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type IN (\"softphone\",\"softphone-inbound\",\"conference\",\"sms-inbound\")\nand a.status IN ('completed', 'failed')\n# and a.external_id is not null\norder by a.actual_end_time desc;\n\nselect * from activities a where a.crm_configuration_id = 202\nand a.actual_start_time between '2025-03-20 00:00:00' and '2025-03-21 00:00:00'\n# AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM teams WHERE name LIKE '%Tourlane%';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_field_data WHERE crm_field_id = 98809;\n\nselect * from users where status = 1 AND timezone = 'MDT';\n\nselect * from opportunities where id = 3769814;\nselect * from deal_risks where opportunity_id = 3769814;\n\nselect cp.* from crm_profiles cp\njoin users u on cp.user_id = u.id\njoin crm_configurations crm on cp.crm_configuration_id = crm.id\nwhere crm.provider = 'hubspot' AND u.status = 1 AND log_notes != 'none';\n\nselect * from crm_fields where id = 154575;\n\nselect * from team_features where feature = 'SUPPORTS_SYNC_MISSING_CALL_DISPOSITIONS';\nSELECT * FROM teams WHERE id = 176; # crm 148\nselect * from activities where crm_configuration_id = 148 and provider = 'hubspot' order by id desc;\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nselect * from crm_fields cf\njoin crm_configurations crm on crm.id = cf.crm_configuration_id\nwhere crm.provider = 'hubspot' and cf.object_type IN ('account', 'contact');\n\n# *********************************************************************************************\nSELECT * FROM users WHERE id IN (15415, 15418);\nSELECT * FROM groups WHERE id IN (1805,1806);\nSELECT * FROM playbooks WHERE id = 1860;\nSELECT * FROM playbook_categories WHERE id = 38634;\nSELECT * FROM crm_fields WHERE id = 189962;\n\nSELECT * FROM teams WHERE name = 'Pulsar Group'; # 472, 380, 15138 raza.gilani@vuelio.com\n\nSELECT * FROM crm_profiles WHERE user_id = 15415;\nSELECT * FROM social_accounts WHERE sociable_id = 15415 and provider = 'salesforce';\n\nselect * from sidekick_settings where team_id = 472;\n\nSELECT * FROM activities WHERE uuid_to_bin('452c58c7-b87c-4fdd-953e-d7af185e9588') = uuid; # 28617536, user: 15418\nSELECT * FROM activities WHERE uuid_to_bin('399114ee-d3a8-458c-bff5-5f654658db0a') = uuid; # 28344407, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('f0aa567f-0ab1-4bbb-96aa-37dcf184676b') = uuid; # 28580288, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('50c086b1-2770-4bca-b5ae-6bac22ec426b') = uuid; # 28566069, user: 15415\n\n# *********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%TeamTailor%'; # 109, 218, 13969, salesforce-integrations@teamtailor.com\nselect * from crm_configurations where id = 218;\nSELECT * FROM activities WHERE uuid_to_bin('e39b5857-7fdb-4f5a-951a-8d3ca69bb1b0') = uuid; # 28338765\nSELECT * FROM users WHERE id IN (13232, 13230);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n0057R00000EPL5HQAX Inez Ekblad\n\n1091cb81-5ea1-4951-a0ed-f00b568f0140 Triman Kaur\n\nSELECT * FROM crm_profiles WHERE user_id IN (13232, 13230);\n\n############################################################################################\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939 00UVg00000FLvnSMAT\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id IN (94491,94493,94498);\nSELECT * FROM users WHERE id = 13658;\nSELECT * FROM teams WHERE id = 109;\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Strengthscope%'; # 481, 390, 15420, katy.holden@strengthscope.comk\nSELECT * FROM stages WHERE crm_configuration_id = 390;\nselect * from business_processes where team_id = 481 and crm_configuration_id = 390;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 481\nand sa.provider = 'salesforce';\n\n\nSELECT * FROM users WHERE id = 15780; # team 462\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 462\nand sa.provider = 'hubspot';\n\n\nselect * from teams where id = 495;\nSELECT * FROM users WHERE id = 15794;\nselect * from social_accounts where sociable_id = 15794;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Flight%'; # 427, 333, 13752\nSELECT * FROM accounts WHERE team_id = 427 and crm_provider_id = '668731000183444517';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Group GTI%'; # 495, 407, 15794\nSELECT * FROM activities WHERE crm_configuration_id = 407\nand status = 'completed' and type = 'conference'\norder by id desc;\n\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from permission_role;\n\nselect * from activities where crm_configuration_id = 407 and status = 'completed' order by id desc;\nSELECT * FROM activities WHERE id = 29512773;\nSELECT * FROM activities WHERE id IN (29042721,28991325,29002874);\n\nSELECT al.* from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 407\n# and a.id IN (29042721,28991325,29002874);\n\nSELECT * FROM users WHERE id = 15794;\nSELECT * FROM users WHERE team_id = 495;\nSELECT * FROM social_accounts WHERE sociable_id = 15794;\nSELECT * FROM opportunities WHERE team_id = 495 and name like '%OC:%';\nSELECT * FROM contacts WHERE team_id = 495;\nSELECT * FROM leads WHERE team_id = 495;\nSELECT * FROM accounts WHERE team_id = 495;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 407;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 407;\nSELECT * FROM crm_configurations WHERE id = 407;\nSELECT * FROM opportunities WHERE team_id = 495 and close_date BETWEEN '2025-06-01' AND '2025-07-01'\nand user_id IS NOT NULL and is_closed = 1 and is_won = 1;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hamilton Court FX LLP%'; # 249, 187, 10103\nSELECT * FROM activities WHERE uuid_to_bin('4659c2bb-9a49-484e-9327-a3d66f1e028c') = uuid; # 28951064\nSELECT * FROM crm_fields WHERE crm_configuration_id = 187 and object_type IN ('tasks', 'event');\n\n# *********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Checkstep%'; # 325, 256, 11753\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 325\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid; # 28611085\nSELECT * FROM activities WHERE uuid_to_bin('980f0336-840b-4185-a5a9-30cf8b0749a8') = uuid; # 28719733\nSELECT * FROM activity_summary_logs where activity_id = 28719733;\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 356, 9444\nSELECT * FROM activity_summary_logs where sent_at BETWEEN '2025-06-09 11:38:00' AND '2025-06-09 11:40:00';\nSELECT * FROM leads WHERE crm_configuration_id = 356 and crm_provider_id = '230045001502770504'; # 823630\nselect * from activities where crm_configuration_id = 356 and lead_id = 841732;\n\nSELECT * from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 356;\n\nselect * from activities where crm_configuration_id = 356\nand actual_end_time between '2025-06-09 11:00:00' and '2025-06-09 12:00:00'\norder by id desc;\n\nselect * from accounts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from leads where crm_configuration_id = 356 and crm_provider_id = '230045001514275654' order by id desc;\nselect * from contacts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from opportunities where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\n\nselect * from team_features where team_id = 260;\nselect * from features where id IN (1,2,4,6,18,19,20,9,10,3,23,24,25,26,27);\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid;\n\nselect * from crm_fields;\nselect * from crm_layout_entities;\n\nSELECT * FROM teams WHERE name LIKE '%Optable%';\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Teamtailor%'; # 109, 218, 13969\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id in (94491,94493,94498);\n\nselect * from teams where crm_id IS NULL;\n\nSELECT * FROM activities WHERE uuid_to_bin('71aa8a0c-9652-4ff6-bee7-d98ae60abef6') = uuid;\n\n# *************************************************************************************************\nselect * from team_domains where team_id = 399;\nSELECT * FROM teams WHERE name LIKE '%Rydoo%'; # 399, 318, 13207\n\nselect * from calendar_events where id = 5163781;\nSELECT * FROM activities WHERE uuid_to_bin('be2cbc52-7fda-46a0-9ae0-25d9553eafc0') = uuid; # 29443896\nSELECT * FROM participants WHERE activity_id = 29443896;\nselect * from contacts where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\nselect * from leads where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\n\nselect * from activities where user_id = 14937 order by created_at ;\n\nselect * from users where id = 14937;\n\nselect * from contacts where crm_configuration_id = 318 and email LIKE '%@strawberry.se';\nselect * from opportunities where crm_configuration_id = 318 and crm_provider_id = '006Sf00000D1WOAIA3';\n\nselect * from activities a join participants p on a.id = p.activity_id\nwhere crm_configuration_id = 318 and a.updated_at > '2025-06-23T08:18:43Z';\n\n# *************************************************************************************************\nSELECT * FROM opportunities WHERE team_id = 379 and crm_provider_id = '39334518886';\nSELECT * FROM opportunities WHERE team_id = 379 order by id desc;\nSELECT * FROM teams WHERE id = 379;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379 and sociable_id = 13852\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations WHERE id = 307;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 307;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1027;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307\n and id IN (144750,144855,145158,155227);\n\nSELECT * FROM activities;\n\n\nselect * from activities\nwhere created_at > '2025-07-01 00:00:00'\n# and created_at < '2025-08-01 00:00:00'\nand type not in ('email-outbound', 'email-inbound')\nand account_id is null\nand contact_id is null\nand lead_id is null\nand opportunity_id is not null\n;\nSELECT * FROM activities WHERE id IN (25344155, 25344296, 25501909, 28692187);\nSELECT * FROM crm_configurations WHERE id in (335,301,200);\n\nselect * from crm_fields where crm_configuration_id = 230 and crm_provider_id = 'Age2__c';\n\nSELECT * FROM teams WHERE name LIKE '%Resights%';\nselect * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nselect * from teams where id IN (442);\n\nselect * from activities\nwhere crm_configuration_id = 177\nand provider = 'amazon-connect'\n order by id desc;\n# and source <> 'gong';\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nSELECT * FROM activities WHERE uuid_to_bin('cec1993b-a7e5-4164-b74d-d680ea51d2f2') = uuid;\n\n\nselect * from crm_configurations where store_transcript = 1;\nSELECT * FROM teams WHERE id IN (80);\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sedna%'; # 277, 213, 12594\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 277\nand sa.provider = 'salesforce';\n\nselect * from activities where crm_configuration_id = 213 and account_id = 2511502;\n\nselect * from crm_configurations where id = 213;\n\nSELECT * FROM activities WHERE uuid_to_bin('35aa790a-8569-4544-8268-66f9a4a26804') = uuid; # 33981604\nSELECT * FROM participants WHERE activity_id = 33981604;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 337 and object_type = 'task';\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 431\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b5476c7d-19a8-491b-869d-676ea1e857b6') = uuid; # 33997223\nselect * from activity_summary_logs where activity_id = 33997223;\nselect * from activity_notes where activity_id = 33997223;\n\n# ***********************************\nSELECT * FROM teams WHERE name LIKE '%Abode%';\n\n\nselect * from features;\nselect * from teams t\nwhere t.status = 'active'\nand id NOT IN (select team_id from team_features where feature_id = 9)\n;\n\n\nselect * from playbook_layouts where playbook_id = 1725;\nSELECT * FROM activities WHERE uuid_to_bin('65cc283c-4849-49e6-927f-4c281c8fea19') = uuid; # 34297473\nselect * from teams where id = 318;\nselect * from crm_configurations where team_id = 318;\nselect * from playbooks where team_id = 318;\nSELECT * FROM crm_layouts where crm_configuration_id = 381;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1259;\nSELECT * FROM crm_fields WHERE id IN (192938,192936,192939);\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1266;\nSELECT * FROM crm_fields WHERE id IN (192980,192991,192997,192998,193064,193067);\n\nSELECT * FROM activities WHERE uuid_to_bin('a902289b-285c-48eb-9cc2-6ad6c5d938f5') = uuid; # 34297533\n\n\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nSELECT * FROM crm_fields WHERE id IN (131668,131669,131670,131671,131676,131797);\n\nSELECT * FROM teams WHERE name LIKE '%Peripass%'; # 351, 281, 12124\nselect * from crm_layouts where crm_configuration_id = 281;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nselect * from crm_fields where crm_configuration_id = 281 and id in (131668,131669,131670,131671,131676,131797);\nselect * from opportunities where crm_configuration_id = 281;\n\nSELECT * FROM activities WHERE id IN (34211315, 34130075);\nSELECT * FROM crm_field_data WHERE object_id IN (34211315, 34130075);\n\nselect cf.crm_configuration_id, cle.crm_layout_id, cle.id, cf.id from crm_field_data cfd\njoin crm_layout_entities cle on cle.id = cfd.crm_layout_entity_id\njoin crm_fields cf on cle.crm_field_id = cf.id\nwhere cf.deleted_at IS NOT NULL\nGROUP BY cle.id, cf.id;\n\nselect * from crm_layouts where id IN (355);\nselect u.email, t.crm_id, t.* from teams t\njoin users u on u.id = t.owner_id\nwhere crm_id IN (97);\n\nSELECT * FROM crm_fields WHERE id = 96492;\n\nselect * from permissions;\nselect * from permission_role where permission_id = 247;\nselect * from roles;\n\nselect * from migrations;\n# *****************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('291e3c21-11cc-4728-aee7-6e4bedf86d72') = uuid; # 34262174\nSELECT * FROM crm_configurations WHERE id = 301;\nSELECT * FROM teams WHERE id = 343;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from participants where activity_id = 34262174;\n\nselect * from contacts where crm_configuration_id = 301 and id = 6976326;\nselect * from accounts where crm_configuration_id = 301 and id IN (4647626, 4815829); # 30761335403\n\nselect * from activity_summary_logs where activity_id = 34262174;\n\nselect * from users where status = 1 AND timezone = 'EST';\n\n# ****************************************************************************\nSELECT * FROM users WHERE id = 13869;\nSELECT * FROM crm_configurations WHERE id = 320;\nSELECT * FROM teams WHERE id = 401;\n\nSELECT * FROM activities WHERE uuid_to_bin('2228c16f-10be-48d5-90d4-67385219dc01') = uuid; # 29670601\n\nSELECT * FROM accounts WHERE id = 7761483;\nSELECT * FROM opportunities WHERE id = 6051814;\n\nSELECT * FROM teams WHERE name LIKE '%Seedlegals%';\n\n;select * from opportunities where updated_at > '2025-10-11' AND crm_provider_id = '34713761166';\n\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 177;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 577;\nSELECT * FROM crm_fields WHERE id IN (68458,68459,68480,68497,68524,68530,68554,68618,68662,68781,68810,68898,68981,69049,97467);\n\nSELECT t.id, crm.id, t.name, crm.sync_objects, crm.provider, crm.last_synced_at FROM crm_configurations crm join teams t on t.crm_id = crm.id\nwhere t.status = 'active' AND crm.provider = 'hubspot' AND crm.last_synced_at < '2025-10-22 00:00:00';\n\nSELECT * FROM activities WHERE uuid_to_bin('fa09449f-cba9-496a-b8f3-865cd3c72351') = uuid;\nSELECT * FROM crm_configurations where id = 184;\nSELECT * FROM teams WHERE id = 246;\nSELECT * FROM social_accounts WHERE sociable_id = 9259 and provider = 'hubspot';\n\nSELECT * FROM users WHERE email LIKE '%rhian.old@bud.co.uk%'; # 17700\nSELECT * FROM teams WHERE id = 551;\n\nSELECT * FROM crm_configurations WHERE id = 471;\nSELECT * FROM activities WHERE crm_configuration_id = 471 and crm_provider_id IS NOT NULL;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 471;\nSELECT * FROM crm_fields WHERE id = 307260;\nSELECT * FROM crm_field_values WHERE crm_field_id = 307260;\n\nselect * from crm_layouts where crm_configuration_id = 471;\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1547;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1548;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 551 and sa.provider = 'hubspot';\n\nSELECT * FROM teams WHERE name LIKE '%$PCS%';\n\n# ********************************************************************************************************\nselect * from crm_configurations crm\njoin teams t on t.crm_id = crm.id\nwhere t.status = 'active'\nand crm.provider = 'hubspot';\n\n# $slug = 'HUBSPOT_WEBHOOK_SYNC';\n# $team = Jiminny\\Models\\Team::find(2);\n# $feature = Feature::query()->where('slug', $slug)->first();\n# TeamFeature::query()->create(['feature_id' => $feature->getId(),'team_id' => $team->getId()]);\n\n# hubspot_webhook_metrics\n\nselect * from crm_configurations where id = 331; # 416\nSELECT * FROM teams WHERE id = 416;\nSELECT * FROM opportunities WHERE team_id = 190;\n\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%';\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 190 and sa.provider = 'hubspot';\n\n\n\nSELECT * FROM teams WHERE name LIKE '%Rapaport%'; # 431, 337\nSELECT * FROM teams where id = 431;\nSELECT * FROM crm_configurations where team_id = 431;\nSELECT * FROM activity_providers where team_id = 431;\nSELECT * FROM activities where crm_configuration_id = 337 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 431 and sa.provider = 'salesforce';\n\nSELECT * FROM teams WHERE name LIKE '%BiP%'; # 401, 320\nSELECT * FROM teams where id = 401;\nSELECT * FROM crm_configurations where team_id = 401;\nSELECT * FROM activity_providers where team_id = 401;\nSELECT * FROM activities where crm_configuration_id = 320 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 401 and sa.provider = 'salesforce';\n\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 307; # 379 - Story Terrace Inc , portalId: 3921157\nSELECT * FROM contacts WHERE team_id = 379 and updated_at > '2026-01-31 11:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-01 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 379 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 485; # 563 - LATUS Group (ad94d501-5d09-44fd-878f-ca3a9f8865c3) , portalId: 3904501\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 338; # 432 - Formalize , portalId: 9214205\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 432 and sa.provider = 'hubspot';\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 436; # 519 - Moxso , portalId: 25531989\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 96; # 119 - Nourish Care , portalId: 26617984\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 331; # 416 - The National College , portalId: 7213852\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 308; # 380 - Foodles , portalId: 7723616\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 379; # 471 - imat-uve , portalId: 9177354\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 465; # 545 - Spotler , portalId: 144759271\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 455; # 537 - indevis , portalId: 25666868\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 200; # 265 - Jobadder , portalId: 6426676\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 335; # 429 - Eletive , portalId: 6110563\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 363; # 456 - Global Group , portalId: 8901981\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 297; # 369 - Unbiased , portalId: 9229005\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 353; # 449 - Fuuse , portalId: 25781745\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 487; # 566 - Nimbus , portalId: 39982590\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 487;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1630;\nselect * from crm_fields where crm_configuration_id = 487 and\n(uuid_to_bin('4c6b2971-64d4-45b8-b377-427be758b5a5') = uuid or uuid_to_bin('59e368d8-65a0-4b77-b611-db37c99fbe68') = uuid);\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 420; # 506 - voiio , portalId: 145629154\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 479; # 558 - Momice , portalId: 535962\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 59; # 80 - Storyclash GmbH , portalId: 4268479\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 175; # 203 - Team iAM , portalId: 5534732\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 368; # 460 - OneTouch Health , portalId: 5534732183355\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\n\n\nselect * from users where id = 29643;\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM teams WHERE name LIKE '%Buynomics%'; # 462, 482, 14910\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\n# and description like '%The call focused on understanding Welch%'\norder by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 462 and sa.provider = 'salesforce';\n\nselect * from contacts where crm_configuration_id = 482 and name = 'Cyndall Hill'; # 15504749\nselect * from contacts where id = 10891096; # 482\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\nand contact_id = 15504749\norder by id desc;\n\nselect * from activities where id = 36793003; # 96cc7bc1-8622-4d27-92f4-baf664fc1a56, 00UOf00000PDdOXMA1\nselect * from transcription where id = 7646782;\nselect * from ai_prompts where transcription_id = 7646782;\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7a8471a3-847e-4822-802b-ddf426bbc252') = uuid; # 37370018\nSELECT * FROM activity_summary_logs WHERE activity_id = 37370018;\nSELECT * FROM teams WHERE id = 555;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 555 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7c17b8aa-09df-4f85-a0f7-51f47afd712d') = uuid; # 37395250\nSELECT * FROM activities WHERE uuid_to_bin('14d60388-260d-494b-aa0d-63fdb1c78026') = uuid; # 37395250\n\nSELECT a.* FROM activities a JOIN crm_configurations c on c.id = a.crm_configuration_id\nwhere a.type IN ('softphone', 'softphone-outbound') and c.provider = 'hubspot'\nand a.provider NOT IN ('hubspot')\n# and a.provider IN ('salesloft')\n# and c.id NOT IN (70)\n# and a.duration > 30\n# and actual_start_time > '2026-02-05 00:00:00'\norder by a.id desc;\n\nSELECT * FROM activities WHERE id = 37549787;\nSELECT * FROM crm_profiles WHERE user_id = 17613;\n\nSELECT * FROM crm_configurations WHERE id = 70;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 93 and sa.provider = 'hubspot';\n\nSELECT asf.activity_search_id, asf.id, asf.value\nFROM activity_search_filters asf\nWHERE asf.filter = 'group_id'\nAND asf.value IN (\n SELECT CONCAT(\n HEX(SUBSTR(uuid, 5, 4)), '-',\n HEX(SUBSTR(uuid, 3, 2)), '-',\n HEX(SUBSTR(uuid, 1, 2)), '-',\n HEX(SUBSTR(uuid, 9, 2)), '-',\n HEX(SUBSTR(uuid, 11))\n )\n FROM groups\n WHERE deleted_at IS NOT NULL\n);\n\nSELECT * FROM crm_configurations WHERE id = 373; # KPSBremen.de 465 # - no social account\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 465 and sa.provider = 'hubspot';\n\nselect * from crm_configurations where id = 494;\n\nSELECT * FROM teams WHERE name LIKE '%splose%'; # 572, 495, 18708\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 572 and sa.provider = 'pipedrive';\n\nselect * from opportunities where team_id = 572\n# and name like '%Onebright%'\n# and is_closed = 1 and is_won = 0\n order by id desc;\n\n\nselect * from users where deleted_at is null and status = 2;\n\nselect * from contacts where id = 17900517;\nselect * from accounts where id = 10109838;\nselect * from opportunities where id = 6955880;\n\nselect * from opportunity_contacts where opportunity_id = 6955880;\nselect * from opportunity_contacts where contact_id = 17900517;\n\nselect * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id\nwhere crm.provider != 'salesforce';\n\nSELECT * FROM activities WHERE uuid_to_bin('adcb8331-5988-4353-834e-383a355abba2') = uuid; # 38056424, crm 104659682404\nselect * from teams where id = 456;\nSELECT * FROM crm_configurations WHERE id = 363;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 456 and sa.provider = 'hubspot';\n\nselect * from crm_layouts where crm_configuration_id = 363;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id IN (1203, 1204, 1635);\nSELECT * FROM crm_fields WHERE id IN (181536, 181538, 213455);\n\nSELECT * FROM teams WHERE name LIKE '%Electric%'; # 342, 272, 12767\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and name like 'NORTHUMBRIA POL%'; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 order by remotely_created_at asc; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and updated_at > '2026-01-01 00:00:00';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 272 and object_type = 'opportunity';\nSELECT * FROM crm_field_values WHERE crm_field_id = 127164;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\n\nSELECT * FROM teams WHERE id = 472;\nSELECT * FROM crm_configurations WHERE id = 380;\nselect * from activities where id = 38285673; # 38285673\nSELECT * FROM users WHERE id = 16942;\nSELECT * FROM groups WHERE id = 1964;\nSELECT * FROM playbooks WHERE id = 2033;\n\nselect * from teams where created_at > '2026-03-09';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 499; # 1065\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1678;\n\nSELECT * FROM teams WHERE id = 575;\nselect * from opportunities where team_id = 575;\n\nSELECT * FROM activities WHERE uuid_to_bin('96b1261f-2357-49f9-ab38-23ce12008ea0') = uuid;\n\nselect * from contacts c\nwhere c.crm_configuration_id = 370 order by c.updated_at desc;\n\nSELECT * FROM participants where activity_id = 38833541;\nSELECT * FROM participants where activity_id = 39216301;\nSELECT * FROM activity_summary_logs where activity_id = 39216301;\nSELECT * FROM activities WHERE uuid_to_bin('c7d99fbe-1fb1-41f2-8f4d-52e2bf70e1e9') = uuid; # 38833541, crm 478116564181\nSELECT * FROM activities WHERE uuid_to_bin('2e6ff4d3-9faa-447a-a8c1-9acde4d885ae') = uuid; # 39216301, crm 480171536586\nselect * from crm_profiles where crm_configuration_id = 319 and crm_provider_id = 525785080;\nselect * from opportunities where crm_configuration_id = 319 and crm_provider_id = 410150124747;\nselect * from accounts where crm_configuration_id = 319 and crm_provider_id = 47150650569;\nselect * from contacts where crm_configuration_id = 319 and crm_provider_id IN ('665587441856', '742723347700');\n# owner 13236 525785080\n# contact 1 16779180 665587441856 - activity - Alex Howes alex@supportroom.com created 2026-01-26\n# contact 2 19247563 742723347700 - ash@supportroom.com 2026-03-24\n# company 4176133 47150650569\n# deal 7100953 410150124747\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 400 and sa.provider = 'hubspot';\n\nselect * from features;\nselect * from team_features where feature_id = 40;\n\nselect * from teams where id = 556; # owner: 18101, crm: 477\nselect * from crm_configurations where id = 477;\nSELECT * FROM users WHERE id = 18101;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 556 and sa.provider = 'integration-app';\n\nselect * from opportunities where id = 7594349;\nselect * from opportunity_stages where opportunity_id = 7594349 order by created_at desc;\nselect * from business_processes where id = 6024;\nselect * from business_process_stages where stage_id = 16352;\nselect * from business_process_stages where business_process_id = 6024;\nselect * from stages where team_id = 459;\nselect * from teams where id = 459;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 459 and sa.provider = 'hubspot';\n\nSELECT os.stage_id, s.crm_provider_id, s.name, COUNT(*) as cnt\nFROM opportunity_stages os\nJOIN stages s ON s.id = os.stage_id\nWHERE os.opportunity_id = 7594349\nGROUP BY os.stage_id, s.crm_provider_id, s.name\nORDER BY cnt DESC;\n\nSELECT s.id, s.crm_provider_id, s.name, s.team_id, s.crm_configuration_id\nFROM stages s\nJOIN business_process_stages bps ON bps.stage_id = s.id\nWHERE bps.business_process_id = 6024\nAND s.crm_provider_id = 'contractsent';\n\nselect * from stages where id IN (16352,20612,18281,7344,16378,16309,5036,15223,14535,6293,12098,11607)\n\nSELECT * FROM teams WHERE name LIKE '%Pulsar Group%'; # 472, 380, 15138, raza.gilani@vuelio.com\nselect * from playbooks where team_id = 472; # event 226147\nSELECT * FROM playbook_categories WHERE playbook_id = 2288;\nSELECT * FROM crm_fields WHERE id = 226147;\nSELECT * FROM crm_field_values WHERE crm_field_id = 226147;\n\nSELECT * FROM crm_configurations WHERE id = 380;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 472 and sa.provider = 'salesforce';","depth":4,"value":"SELECT * FROM team_features where team_id = 1;\n\nSELECT * FROM teams WHERE name LIKE '%Vixio%'; # 340,270,11922\nSELECT * FROM users WHERE team_id = 340; # 12015\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 340\nand sa.provider = 'salesforce';\n# and sa.provider = 'salesloft';\n\nselect * from crm_fields where crm_configuration_id = 270 and object_type = 'event';\n# 125558 - Event Type - Event_Type__c\n# 125552 - Event Status - Event_Status__c\n\nSELECT * FROM sidekick_settings WHERE team_id = 340;\n\nSELECT * FROM crm_field_values WHERE crm_field_id in (125552);\n\nselect * from activities where crm_configuration_id = 270\nand type = 'conference' and crm_provider_id IS NOT NULL\nand actual_start_time > '2024-09-16 09:00:00' order by scheduled_start_time;\n\nSELECT * FROM activities WHERE id = 20871677;\nSELECT * FROM crm_field_data WHERE activity_id = 20871677;\n\nselect * from crm_layouts where crm_configuration_id = 270;\nselect * from crm_layout_entities where crm_layout_id in (886,887);\n\nSELECT * FROM crm_configurations WHERE id = 270;\n\nselect * from playbooks where team_id = 340; # 1514\nselect * from groups where team_id = 340;\nSELECT * FROM crm_fields WHERE id IN (125393, 125401);\n\nselect g.name as 'team name', p.name as 'playbook name', f.label as 'activity type field' from groups g\njoin playbooks p on g.playbook_id = p.id\njoin crm_fields f on p.activity_field_id = f.id\nwhere g.team_id = 340;\n\nSELECT * FROM activities WHERE uuid_to_bin('0c180357-67d2-419e-a8c3-b832a3490770') = uuid; # 20448716\nselect * from crm_field_data where object_id = 20448716;\n\nselect * from activities where crm_configuration_id = 270 and provider = 'salesloft' order by id desc;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%CybSafe%'; # 343,273,12008\nselect * from opportunities where team_id = 343;\nselect * from opportunities where team_id = 343 and crm_provider_id = '18099102526';\nselect * from opportunities where team_id = 343 and account_id = 945217482;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from accounts where team_id = 343 order by name asc;\n\nselect * from stages where crm_configuration_id = 273 and type = 'opportunity';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Voyado%'; # 353,283,12143\nSELECT * FROM activities WHERE crm_configuration_id = 283 and account_id = 3777844 order by id desc;\nSELECT * FROM accounts WHERE team_id = 353 AND name LIKE '%Salesloft%';\nSELECT * FROM activities WHERE id = 20717903;\n\nselect * from participants where activity_id IN (20929172,20928605,20928468,20926272,20926271,20926270,20926269,20916499,20916454,20916436,20916435,20900015,20900014,20900013,20897312,20897243,20897241,20897237,20897232,20897229,20893648,20893231,20893230,20893229,20893228,20889784,20885039,20885038,20885037,20885036,20885035,20882728,20882708,20882703,20882702,20869828,20869811,20869806,20869801,20869799,20869798,20869796,20869795,20869794,20869761,20869760,20869759,20868688,20868687,20850340,20847195,20841710,20833967,20827021,20825307,20825305,20825297,20824615,20824400,20823927,20821760,20795588,20794233,20794057,20793710,20785811,20781789,20781394,20781307,20762651,20758453,20758282,20757323,20756643,20756636,20756629,20756627,20756606,20756605,20756604,20756603,20756602,20756600,20756599,20756598,20756595,20756594,20756589,20756587,20756577,20756573,20748918,20748386,20748385,20748384,20748383,20748382,20748381,20748380,20748379,20748377,20748375,20748373,20743301,20717905,20717904,20717903,20717901,20717899);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 353\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%modern world business solutions%'; # 345,275,12016, l.atkinson@mwbsolutions.co.uk\nSELECT * FROM activities WHERE uuid_to_bin('3921d399-3fef-4609-a291-b0097a166d43') = uuid;\n# id: 20940638, user: 12022, contact: 5305871\nSELECT * FROM activity_summary_logs WHERE activity_id = 20940638;\nselect * from contacts where team_id = 345 and crm_provider_id = '30891432415' order by name asc; # 5305871\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 345\nand sa.provider = 'hubspot';\n\nselect * from users where team_id = 345 and id = 12022;\nSELECT * FROM crm_profiles WHERE user_id = 12022;\nSELECT * FROM participants WHERE activity_id = 20940638;\nSELECT * FROM users u\nJOIN crm_profiles cp ON u.id = cp.user_id\nWHERE u.team_id = 345;\n\nselect * from contacts where team_id = 345 and crm_provider_id = '30880813535' order by name desc; # 5305871\n\nselect * from team_features where team_id = 345;\nSELECT * FROM activities WHERE uuid_to_bin('11701e2d-2f82-4dab-a616-1db4fad238df') = uuid; # 21115197\nSELECT * FROM participants WHERE activity_id = 20897406;\n\n\n\nSELECT * FROM activities WHERE uuid_to_bin('63ba55cd-1abc-447d-83da-0137000005b7') = uuid; # 20953912\nSELECT * FROM activities WHERE crm_configuration_id = 275 and provider = 'ringcentral' and title like '%1252629100%';\n\n\nSELECT * FROM activities WHERE id = 20946641;\nSELECT * FROM crm_profiles WHERE user_id = 10211;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120,97,10984, triger@lunio.ai\nSELECT * FROM opportunities WHERE crm_configuration_id = 97 and crm_provider_id = '006N1000006c5PpIAI';\nselect * from stages where crm_configuration_id = 97 and type = 'opportunity';\nselect * from opportunities where team_id = 120;\n\n\nselect * from crm_configurations crm join teams t on crm.id = t.crm_id\nwhere 1=1\nAND t.current_billing_plan IS NOT NULL\nAND crm.auto_sync_activity = 0\nand crm.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Exclaimer%'; # 270,205,10053,james.lewendon@exclaimer.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 270\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b54df794-2a9a-4957-8d80-09a600ead5f8') = uuid; # 21637956\nSELECT * FROM crm_profiles WHERE user_id = 11446;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cygnetise%'; # 372,300,12554, alex.chikly@cygnetise.com\nselect * from playbooks where team_id = 372;\nselect * from crm_fields where crm_configuration_id = 300 and object_type = 'event'; # 141340\nSELECT * FROM crm_field_values WHERE crm_field_id = 141340;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 372\nand sa.provider = 'salesforce';\n\nselect * from crm_profiles where crm_configuration_id = 300;\nSELECT * FROM crm_configurations WHERE team_id = 372;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Planday%'; # 291,242,11501,mfa@planday.com\nSELECT * FROM opportunities WHERE team_id = 291 and crm_provider_id = '006bG000005DO86QAG'; # 3207756\nselect * from crm_field_data where object_id = 3207756;\nSELECT * FROM crm_fields WHERE id = 111834;\n\nselect f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value\nFROM crm_fields f\nJOIN crm_field_data fd ON f.id = fd.crm_field_id\nWHERE f.crm_configuration_id = 242\nAND f.object_type = 'opportunity'\nAND fd.object_id IN (3207756)\nORDER BY fd.object_id, fd.updated_at;\n\nSELECT * FROM crm_configurations WHERE auto_connect = 1;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150,salesforce-admin@tourlane.com\nselect * from group_deal_risk_types drgt join groups g on drgt.group_id = g.id\nwhere g.team_id = 187;\n\nselect * from `groups` where team_id = 187;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 187\nand sa.provider = 'salesforce';\n\n# Destination - 98870 - Destination__c\n# Stage - 79014 - StageName\n# Land Arrangement - 98856 - Land_Arrangement__c\n# Flight - 98848 - Flight__c\n# Last activity date - 98812 - LastActivityDate\n# Last modified date - 98809 - LastModifiedDate\n# Last inbound mail timestamp - 99151 - Last_Inbound_Mail_Timestamp__c\n# next call - 98864 - Next_Call__c\n\nselect * from crm_fields where crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\nselect * from opportunities where team_id = 187 and name LIKE'%Muriel Sal%';\nselect * from opportunities where team_id = 187 and user_id = 9951 and is_closed = 0;\nselect * from activities where opportunity_id = 3538248;\n\nSELECT * FROM crm_profiles WHERE user_id = 8150;\n\nselect * from deal_risks where opportunity_id = 3538248;\n\nselect * from teams where crm_id IS NULL;\n\nSELECT opp.id AS opportunity_id,\n u.group_id AS group_id,\n MAX(\n CASE\n WHEN a.type IN (\"sms-inbound\", \"sms-outbound\") THEN a.created_at\n ELSE a.actual_end_time\n END) as last_date\nFROM opportunities opp\nleft join activities a on a.opportunity_id = opp.id\ninner join users u on opp.user_id = u.id\nwhere opp.user_id IN (9951)\n\nAND opp.is_closed = 0\nand a.status IN ('completed', 'received', 'delivered') OR a.status IS NULL\ngroup by opp.id;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cybsafe%'; # 343,301,12008,polly.morphew@cybsafe.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 301;\nSELECT * FROM contacts WHERE id = 6612363;\nSELECT * FROM accounts WHERE id = 4235676;\nSELECT * FROM opportunities WHERE crm_configuration_id = 301 and crm_provider_id = 32983784868;\nselect * from opportunity_stages where opportunity_id = 4503759;\n# SELECT * FROM opportunities WHERE id = 4569937;\n\nselect * from activities where crm_configuration_id = 301;\nSELECT * FROM activities WHERE uuid_to_bin('d3b2b28b-c3d0-4c2d-8ed0-eef42855278a') = uuid; # 26330370\nSELECT * FROM participants WHERE activity_id = 26330370;\n\nSELECT * FROM teams WHERE id = 375;\nselect * from playbooks where team_id = 375;\n\nselect * from stages where crm_configuration_id = 301 and type = 'opportunity';\n\nselect * from teams;\nselect * from contact_roles;\n\nSELECT * FROM opportunities WHERE team_id = 343 and user_id = 12871 and close_date >= '2024-11-01';\n\nselect * from users u join crm_profiles cp on cp.user_id = u.id where u.team_id = 343;\n\nSELECT * FROM crm_field_data WHERE object_id = 3771706;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 301 and object_type = 'opportunity'\nand crm_provider_id LIKE \"%traffic_light%\";\nSELECT * FROM crm_field_values WHERE crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531);\n\nSELECT fd.* FROM opportunities o\nJOIN crm_field_data fd ON o.id = fd.object_id\nWHERE o.team_id = 343\n# and o.user_id IS NOT NULL\nand fd.crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531)\nand fd.value != ''\norder by value desc\n# group by o.id\n;\n\nSELECT * FROM opportunities WHERE id = 3769843;\n\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150, salesforce-admin@tourlane.com\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding Circle%'; # 220,177,8603,aswini.mishra@fundingcircle.com\nSELECT * FROM activities WHERE uuid_to_bin('7a40e99b-3b37-4bb1-b983-325b81801c01') = uuid; # 23139839\n\n\nSELECT * FROM opportunities WHERE id = 3855992;\n\nSELECT * FROM users WHERE name LIKE '%Angus Pollard%'; # 8988\n\nSELECT * FROM teams WHERE name LIKE '%Story Terrace%'; # 379, 307, 12894\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307 and object_type != 'opportunity';\n\nselect * from contacts where team_id = 379 and name like '%bebro%'; # 5874411, crm: 77229348507\nSELECT * FROM crm_field_data WHERE object_id = 5874411;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379\nand sa.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%mentio%'; # 117, 94, 6371, nikhil.kumar@mention-me.com\nSELECT * FROM activities WHERE uuid_to_bin('82939311-1af0-4506-8546-21e8d1fdf2c1') = uuid;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tourlane%'; # 187, 209, 8150, salesforce-admin@tourlane.com\nSELECT * FROM opportunities WHERE team_id = 187 and crm_provider_id = '006Se000008xfvNIAQ'; # 3537793\nselect * from generic_ai_prompts where subject_id = 3537793;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120, 97, 10984, triger@lunio.ai\nSELECT * FROM crm_configurations WHERE id = 97;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 97;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 355;\nSELECT * FROM crm_fields WHERE id = 32682;\n\nselect cfd.value, o.* from opportunities o\njoin crm_field_data cfd on o.id = cfd.object_id and cfd.crm_field_id = 32682\nwhere team_id = 120\nand cfd.value != ''\n;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 120\nand sa.provider = 'salesforce';\n\nselect * from opportunities where team_id = 120 and crm_provider_id = '006N1000007X8MAIA0';\nSELECT * FROM crm_field_data WHERE object_id = 2313439;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 410;\nSELECT * FROM teams WHERE name LIKE '%Local Business Oxford%';\nselect * from scorecards where team_id = 410;\nselect * from scorecard_rules;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding%'; # 220, 177, 8603, aswini.mishra@fundingcircle.com\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\njoin users u on o.user_id = u.id\nwhere a.crm_configuration_id = 177 and a.type LIKE '%email-out%'\n# and a.actual_end_time > '2024-12-16 00:00:00'\n# and o.remotely_created_at > '2024-12-01 00:00:00'\n# and u.group_id = 1014\nand u.id = 9021\norder by a.id desc;\nSELECT * FROM opportunities WHERE id in (3981384,4017346);\nSELECT * FROM users WHERE team_id = 220 and id IN (8775, 11435);\n\nselect * from users where id = 9021;\nselect * from inboxes where user_id = 9021;\n\nselect * from inbox_emails where inbox_id = 1349 and email_date > '2024-12-18 00:00:00';\n\nselect * from email_messages where team_id = 220\nand orig_date > '2024-12-16 00:00:00' and orig_date < '2024-12-19 00:00:00'\nand subject LIKE '%Personal%'\n# and 'from' = 'credit@fundingcircle.com'\n;\n\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\nwhere a.user_id = 9021 and a.type LIKE '%email-out%'\nand a.actual_end_time > '2024-12-18 00:00:00'\nand o.user_id IS NOT NULL\nand o.remotely_created_at > '2024-12-01 00:00:00'\norder by a.id desc;\n\nSELECT * FROM opportunities WHERE team_id = 220 and name LIKE '%Right Car move Limited%' and id = 3966852;\nselect * from activities where crm_configuration_id = 177 and type LIKE '%email%' and opportunity_id = 3966852 order by id desc;\n\nselect * from team_settings where name IN ('useCloseDate');\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hurree%'; # 104, 81, 6175, jfarrell@hurree.co\nSELECT * FROM opportunities WHERE team_id = 104 and name = 'PropOp';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 104\nand sa.provider = 'hubspot';\n\nselect * from crm_configurations where last_synced_at > '2025-01-19 01:00:00'\nselect * from teams where crm_id IS NULL;\n\nselect t.name as 'team', u.name as 'owner', u.email, u.phone\nfrom teams t\njoin activity_providers ap on t.id = ap.team_id\njoin users u on t.owner_id = u.id\nwhere 1=1\n and t.status = 'active'\n and ap.is_enabled = 1\n# and u.status = 1\n and ap.provider = 'ms-teams';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nSELECT * FROM teams WHERE id = 442; # 14293\nselect * from users where team_id = 442;\nselect * from social_accounts sa where sa.sociable_id = 14293;\nselect * from invitations where team_id = 442;\n\n# ********************************************************************************************************\nSELECT * FROM users WHERE email LIKE '%nea.liikamaa@eletive.com%'; # 14022\nSELECT * FROM teams WHERE id = 429;\nselect * from opportunities where team_id = 429 and crm_provider_id IN (16157415775, 22246219645);\nselect * from activities where opportunity_id in (4340436,4353519);\n\nselect * from transcription where activity_id IN (25630961,25381771);\nselect * from generic_ai_prompts where subject_id IN (4353519);\n\nSELECT\n a.id as activity_id,\n a.opportunity_id,\n a.type as activity_type,\n a.language,\n CONCAT(a.title, a.description) AS mail_content,\n e.from AS mail_from,\n e.to AS mail_to,\n e.subject AS mail_subject,\n e.body AS mail_body,\n p.type as prompt_type,\n p.status as prompt_status,\n p.content AS prompt_content,\n a.actual_start_time as created_at\nFROM activities a\n LEFT JOIN ai_prompts p ON a.transcription_id = p.transcription_id AND p.deleted_at IS NULL\n LEFT JOIN email_messages e ON a.id = e.activity_id\nWHERE a.actual_start_time > '2024-01-01 00:00:00'\n AND a.opportunity_id IN (4353519)\n AND a.status IN ('completed', 'received', 'delivered')\n AND a.deleted_at IS NULL\n AND a.type NOT IN ('sms-inbound', 'sms-outbound')\nORDER BY a.opportunity_id ASC, a.id ASC;\n\nSELECT * FROM users WHERE name LIKE '%George Fierstone%'; # 14293\nSELECT * FROM teams WHERE id = 442;\nSELECT * FROM crm_configurations WHERE id = 344;\nselect * from team_features where team_id = 442;\nselect * from groups where team_id = 442;\nselect * from playbooks where team_id = 442;\nselect * from playbook_categories where playbook_id = 1729;\nselect * from crm_fields where crm_configuration_id = 344 and id = 172024;\nSELECT * FROM crm_field_values WHERE crm_field_id = 172024;\nselect * from crm_layouts where crm_configuration_id = 344;\nselect * from playbook_layouts where playbook_id = 1729;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 221, 9444\n\nselect s.*\n# , s.sent_at, u.name, a.*\nfrom activity_summary_logs s\ninner join activities a on a.id = s.activity_id\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 356\nand s.sent_at > date_sub(now(), interval 60 day)\norder by a.actual_end_time desc;\n\nselect * from activities a\n# inner join activity_summary_logs s on s.activity_id = a.id\nwhere a.crm_configuration_id = 356 and a.actual_end_time > date_sub(now(), interval 60 day)\n# and a.crm_provider_id is not null\n# and provider <> 'ringcentral'\nand status = 'completed'\norder by a.actual_end_time desc;\n\nselect * from teams order by id desc; # 17328, 32, 17830, integration-account@jiminny.com\nSELECT * FROM users;\nSELECT * FROM users where team_id = 260 and status = 1; # 201 - 150 active\nSELECT * FROM teams WHERE id = 260;\nselect * from team_settings where team_id = 260;\nselect * from crm_configurations where team_id = 260;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 356;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1184;\n\nselect * from accounts where crm_configuration_id = 221 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 221 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 221 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 221 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 221 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 221;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 221 order by id desc;\nselect * from stages where crm_configuration_id = 221 order by id desc;\n\nselect * from accounts where crm_configuration_id = 356 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 356 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 356 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 356 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 356 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 356;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 356 order by id desc;\nselect * from stages where crm_configuration_id = 356 order by id desc;\n\nselect * from playbooks where team_id = 260 order by id desc; # 4 (2 deleted)\nselect * from groups where team_id = 260 order by id desc; # 27 groups, (2 deleted)\nselect * from playbook_layouts where playbook_id IN (1410,1409,1276,1254); # 4\nselect ce.* from calendars c\njoin users u on c.user_id = u.id\njoin calendar_events ce on c.id = ce.calendar_id\nwhere u.team_id = 260\nand (ce.start_time > '2025-02-21 00:00:00')\n;\n# calendar events 1207\n#\n\nselect * from opportunities where team_id = 260;\nSELECT * FROM crm_field_data WHERE object_id = 4696496;\n\nselect * from activities where crm_configuration_id = 356 and crm_provider_id IS NOT NULL;\nselect * from activities where crm_configuration_id IN (221) and provider NOT IN ('ms-teams', 'uploader', 'zoom-bot')\n# and type = 'conference' and status = 'scheduled' and activities.is_internal = 0\nand created_at > '2024-03-01 00:00:00'\norder by id desc; # 880 000, ringcentral, avaya\nSELECT * FROM participants WHERE activity_id = 26371744;\n\n# all activities 942 000 +\n# conference 7385 - scheduled 984 - external 343\n\nselect * from activities where id = 26321812;\nselect * from participants where activity_id = 26321812;\nselect * from participants where activity_id in (26414510,26414514,26414516,26414604,26414653,26414655);\nselect * from leads where id in (720428,689175,731546,645866,621037);\n\nselect * from users where id = 13841;\nselect * from opportunities where user_id = 9541;\nselect * from stages where id = 15900;\n\nselect * from accounts where\n# id IN (4160055,5053725,4965303,4896434)\nid in (4584518,3249934,3218025,3891133,3399450,4172999,4485161,3101785,4587203,3070816,2870343,2870341,3563940,4550846,3424464,3249963,2870342)\n;\n\nselect * from activities where id = 26654935;\nSELECT * FROM opportunities WHERE id = 4803458;\n\nSELECT * FROM opportunities where team_id = 260 and user_id = 13841 AND stage_id = 15900;\nSELECT id, uuid, provider, type, lead_id, account_id, contact_id, opportunity_id, stage_id, status, recording_state, title, actual_start_time, actual_end_time\nFROM activities WHERE user_id = 13841 AND opportunity_id IN (4729783, 4731717, 4731726, 4732064, 4732849, 4803458, 4813213);\n\nSELECT DISTINCT\n o.id, o.stage_id, s.name, a.title,\n a.*\nFROM activities a\n# INNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nINNER JOIN groups g ON u.group_id = g.id\nINNER JOIN opportunities o ON a.opportunity_id = o.id\nINNER JOIN stages s ON o.stage_id = s.id\nWHERE\n a.crm_configuration_id = 356\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 13841\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n AND team.uuid = uuid_to_bin('a607fba7-452e-4683-b2af-00d6cb52c93c')\n AND g.uuid = uuid_to_bin('b5d69e40-24a0-4c16-810b-5fa462299f94')\n\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n )\n )\n AND (\n# s.id = 15900\n s.uuid = uuid_to_bin('04ca1c26-c666-4268-a129-419c0acffd73')\n OR s.uuid IS NULL -- Include records without opportunity stage\n )\n\nORDER BY a.actual_end_time DESC;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%'; # 190, 162, 8474, willsc@leadforensics.com\nSELECT * FROM users WHERE team_id = 190;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 190\nand sa.provider = 'hubspot';\n\nselect * from role_user where user_id = 8474;\n\nselect * from crm_configurations where provider = 'bullhorn';\n\nSELECT * FROM opportunities WHERE uuid_to_bin('94578249-65ec-4205-90f2-7d1a7d5ab64a') = uuid;\nSELECT * FROM users WHERE uuid_to_bin('26dbadeb-926f-4150-b11b-771b9d4c2f9a') = uuid;\n\nSELECT * FROM opportunities WHERE id = 4732493;\nselect * from activities where opportunity_id = 4732493;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 443; # 358, 14315, andrea.romano@correrenaturale.com\nSELECT * FROM opportunities WHERE team_id = 443;\n\nSELECT a.id, a.type, a.user_id, a.status, a.deleted_at, u.name, u.email, u.team_id as activity_team_id, u.status, u.deleted_at, t.name, t.status, s.team_id as stage_team_id\nFROM activities AS a\nJOIN stages AS s ON a.stage_id = s.id\nJOIN users AS u ON u.id = a.user_id\nJOIN teams AS t ON t.id = s.team_id\nWHERE u.team_id <> s.team_id and t.id > 135;\n\n\nSELECT\n crm_configuration_id,\n crm_provider_id,\n COUNT(*) as duplicate_count,\n GROUP_CONCAT(id) as stage_ids,\n GROUP_CONCAT(name) as stage_names\nFROM stages\nGROUP BY crm_configuration_id, crm_provider_id\nHAVING COUNT(*) > 1\nORDER BY duplicate_count DESC;\n\nselect * from stages where id IN (14898,14907);\n\nselect * from business_processes;\n\nSELECT *\nFROM crm_configurations\nWHERE team_id IN (\n SELECT team_id\n FROM crm_configurations\n GROUP BY team_id\n HAVING COUNT(*) > 1\n)\nORDER BY team_id;\n\nSELECT *\nFROM teams\nWHERE crm_id IN (\n SELECT crm_id\n FROM teams\n GROUP BY crm_id\n HAVING COUNT(*) > 1\n)\nORDER BY crm_id;\n\n# ***************************************************************************\nselect * from crm_configurations where provider = 'integration-app';\nSELECT * FROM teams WHERE id = 443; # Correre Naturale 358 14315 andrea.romano@correrenaturale.com\nselect * from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect id, uuid, actual_end_time, crm_provider_id, is_internal, playbook_category_id, type, user_id, lead_id, contact_id, account_id, opportunity_id, status, title from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect * from team_features where team_id = 358;\nselect * from activity_summary_logs;\n\nselect * from teams where id = 406;\n\n# ************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sportfive%'; # 267, 202, 14637, srv.salesforce@sportfive.com\nselect * from activities where crm_configuration_id = 202 order by actual_end_time desc;\n\nSELECT * FROM users where id = 14637;\nSELECT * FROM teams where id = 267;\nSELECT * FROM groups where id = 1118;\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 202\n AND status IN ('completed', 'failed')\n AND recording_state != 'stopped'\n AND type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n AND (is_private = 0 OR user_id = 14637)\n AND (\n (\n actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n ) OR (\n actual_start_time IS NULL\n AND type IN ('sms-outbound', 'sms-inbound')\n AND created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND NOT EXISTS (\n SELECT 1\n FROM tracks\n WHERE\n tracks.activity_id = activities.id\n AND tracks.type IN ('audio', 'video')\n )\nORDER BY actual_end_time DESC;\n\nSELECT DISTINCT\n a.*\nFROM activities a\nINNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nWHERE\n a.crm_configuration_id = 202\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 14637\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND a.user_id = 14637\n )\n )\n\nORDER BY a.actual_end_time DESC\n;\n\nSELECT DISTINCT a.*\nFROM activities a\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams t ON u.team_id = t.id\n# INNER JOIN tracks tr ON a.id = tr.activity_id\n# INNER JOIN groups g ON u.group_id = g.id\nWHERE 1=1\n AND t.id = 267\n# AND t.uuid = uuid_to_bin('aed4927b-f1ea-499e-94c3-83762fd233e8')\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND tr.type NOT IN ('audio', 'video')\n AND (\n a.is_private = 0\n OR a.user_id = 14637\n )\n AND (\n (a.actual_start_time BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59')\n OR (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59'\n )\n )\n# and NOT EXISTS (\n# SELECT 1\n# FROM tracks t\n# WHERE t.activity_id = a.id\n# AND t.type IN ('audio', 'video')\n# )\n\nORDER BY a.actual_end_time DESC;\n\nSELECT * FROM tracks WHERE activity_id = 26485995;\n\nselect a.is_private, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 202\n# and a.is_internal = 0\nand (a.actual_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type IN (\"softphone\",\"softphone-inbound\",\"conference\",\"sms-inbound\")\nand a.status IN ('completed', 'failed')\n# and a.external_id is not null\norder by a.actual_end_time desc;\n\nselect * from activities a where a.crm_configuration_id = 202\nand a.actual_start_time between '2025-03-20 00:00:00' and '2025-03-21 00:00:00'\n# AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM teams WHERE name LIKE '%Tourlane%';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_field_data WHERE crm_field_id = 98809;\n\nselect * from users where status = 1 AND timezone = 'MDT';\n\nselect * from opportunities where id = 3769814;\nselect * from deal_risks where opportunity_id = 3769814;\n\nselect cp.* from crm_profiles cp\njoin users u on cp.user_id = u.id\njoin crm_configurations crm on cp.crm_configuration_id = crm.id\nwhere crm.provider = 'hubspot' AND u.status = 1 AND log_notes != 'none';\n\nselect * from crm_fields where id = 154575;\n\nselect * from team_features where feature = 'SUPPORTS_SYNC_MISSING_CALL_DISPOSITIONS';\nSELECT * FROM teams WHERE id = 176; # crm 148\nselect * from activities where crm_configuration_id = 148 and provider = 'hubspot' order by id desc;\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nselect * from crm_fields cf\njoin crm_configurations crm on crm.id = cf.crm_configuration_id\nwhere crm.provider = 'hubspot' and cf.object_type IN ('account', 'contact');\n\n# *********************************************************************************************\nSELECT * FROM users WHERE id IN (15415, 15418);\nSELECT * FROM groups WHERE id IN (1805,1806);\nSELECT * FROM playbooks WHERE id = 1860;\nSELECT * FROM playbook_categories WHERE id = 38634;\nSELECT * FROM crm_fields WHERE id = 189962;\n\nSELECT * FROM teams WHERE name = 'Pulsar Group'; # 472, 380, 15138 raza.gilani@vuelio.com\n\nSELECT * FROM crm_profiles WHERE user_id = 15415;\nSELECT * FROM social_accounts WHERE sociable_id = 15415 and provider = 'salesforce';\n\nselect * from sidekick_settings where team_id = 472;\n\nSELECT * FROM activities WHERE uuid_to_bin('452c58c7-b87c-4fdd-953e-d7af185e9588') = uuid; # 28617536, user: 15418\nSELECT * FROM activities WHERE uuid_to_bin('399114ee-d3a8-458c-bff5-5f654658db0a') = uuid; # 28344407, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('f0aa567f-0ab1-4bbb-96aa-37dcf184676b') = uuid; # 28580288, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('50c086b1-2770-4bca-b5ae-6bac22ec426b') = uuid; # 28566069, user: 15415\n\n# *********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%TeamTailor%'; # 109, 218, 13969, salesforce-integrations@teamtailor.com\nselect * from crm_configurations where id = 218;\nSELECT * FROM activities WHERE uuid_to_bin('e39b5857-7fdb-4f5a-951a-8d3ca69bb1b0') = uuid; # 28338765\nSELECT * FROM users WHERE id IN (13232, 13230);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n0057R00000EPL5HQAX Inez Ekblad\n\n1091cb81-5ea1-4951-a0ed-f00b568f0140 Triman Kaur\n\nSELECT * FROM crm_profiles WHERE user_id IN (13232, 13230);\n\n############################################################################################\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939 00UVg00000FLvnSMAT\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id IN (94491,94493,94498);\nSELECT * FROM users WHERE id = 13658;\nSELECT * FROM teams WHERE id = 109;\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Strengthscope%'; # 481, 390, 15420, katy.holden@strengthscope.comk\nSELECT * FROM stages WHERE crm_configuration_id = 390;\nselect * from business_processes where team_id = 481 and crm_configuration_id = 390;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 481\nand sa.provider = 'salesforce';\n\n\nSELECT * FROM users WHERE id = 15780; # team 462\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 462\nand sa.provider = 'hubspot';\n\n\nselect * from teams where id = 495;\nSELECT * FROM users WHERE id = 15794;\nselect * from social_accounts where sociable_id = 15794;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Flight%'; # 427, 333, 13752\nSELECT * FROM accounts WHERE team_id = 427 and crm_provider_id = '668731000183444517';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Group GTI%'; # 495, 407, 15794\nSELECT * FROM activities WHERE crm_configuration_id = 407\nand status = 'completed' and type = 'conference'\norder by id desc;\n\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from permission_role;\n\nselect * from activities where crm_configuration_id = 407 and status = 'completed' order by id desc;\nSELECT * FROM activities WHERE id = 29512773;\nSELECT * FROM activities WHERE id IN (29042721,28991325,29002874);\n\nSELECT al.* from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 407\n# and a.id IN (29042721,28991325,29002874);\n\nSELECT * FROM users WHERE id = 15794;\nSELECT * FROM users WHERE team_id = 495;\nSELECT * FROM social_accounts WHERE sociable_id = 15794;\nSELECT * FROM opportunities WHERE team_id = 495 and name like '%OC:%';\nSELECT * FROM contacts WHERE team_id = 495;\nSELECT * FROM leads WHERE team_id = 495;\nSELECT * FROM accounts WHERE team_id = 495;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 407;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 407;\nSELECT * FROM crm_configurations WHERE id = 407;\nSELECT * FROM opportunities WHERE team_id = 495 and close_date BETWEEN '2025-06-01' AND '2025-07-01'\nand user_id IS NOT NULL and is_closed = 1 and is_won = 1;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hamilton Court FX LLP%'; # 249, 187, 10103\nSELECT * FROM activities WHERE uuid_to_bin('4659c2bb-9a49-484e-9327-a3d66f1e028c') = uuid; # 28951064\nSELECT * FROM crm_fields WHERE crm_configuration_id = 187 and object_type IN ('tasks', 'event');\n\n# *********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Checkstep%'; # 325, 256, 11753\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 325\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid; # 28611085\nSELECT * FROM activities WHERE uuid_to_bin('980f0336-840b-4185-a5a9-30cf8b0749a8') = uuid; # 28719733\nSELECT * FROM activity_summary_logs where activity_id = 28719733;\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 356, 9444\nSELECT * FROM activity_summary_logs where sent_at BETWEEN '2025-06-09 11:38:00' AND '2025-06-09 11:40:00';\nSELECT * FROM leads WHERE crm_configuration_id = 356 and crm_provider_id = '230045001502770504'; # 823630\nselect * from activities where crm_configuration_id = 356 and lead_id = 841732;\n\nSELECT * from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 356;\n\nselect * from activities where crm_configuration_id = 356\nand actual_end_time between '2025-06-09 11:00:00' and '2025-06-09 12:00:00'\norder by id desc;\n\nselect * from accounts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from leads where crm_configuration_id = 356 and crm_provider_id = '230045001514275654' order by id desc;\nselect * from contacts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from opportunities where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\n\nselect * from team_features where team_id = 260;\nselect * from features where id IN (1,2,4,6,18,19,20,9,10,3,23,24,25,26,27);\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid;\n\nselect * from crm_fields;\nselect * from crm_layout_entities;\n\nSELECT * FROM teams WHERE name LIKE '%Optable%';\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Teamtailor%'; # 109, 218, 13969\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id in (94491,94493,94498);\n\nselect * from teams where crm_id IS NULL;\n\nSELECT * FROM activities WHERE uuid_to_bin('71aa8a0c-9652-4ff6-bee7-d98ae60abef6') = uuid;\n\n# *************************************************************************************************\nselect * from team_domains where team_id = 399;\nSELECT * FROM teams WHERE name LIKE '%Rydoo%'; # 399, 318, 13207\n\nselect * from calendar_events where id = 5163781;\nSELECT * FROM activities WHERE uuid_to_bin('be2cbc52-7fda-46a0-9ae0-25d9553eafc0') = uuid; # 29443896\nSELECT * FROM participants WHERE activity_id = 29443896;\nselect * from contacts where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\nselect * from leads where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\n\nselect * from activities where user_id = 14937 order by created_at ;\n\nselect * from users where id = 14937;\n\nselect * from contacts where crm_configuration_id = 318 and email LIKE '%@strawberry.se';\nselect * from opportunities where crm_configuration_id = 318 and crm_provider_id = '006Sf00000D1WOAIA3';\n\nselect * from activities a join participants p on a.id = p.activity_id\nwhere crm_configuration_id = 318 and a.updated_at > '2025-06-23T08:18:43Z';\n\n# *************************************************************************************************\nSELECT * FROM opportunities WHERE team_id = 379 and crm_provider_id = '39334518886';\nSELECT * FROM opportunities WHERE team_id = 379 order by id desc;\nSELECT * FROM teams WHERE id = 379;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379 and sociable_id = 13852\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations WHERE id = 307;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 307;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1027;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307\n and id IN (144750,144855,145158,155227);\n\nSELECT * FROM activities;\n\n\nselect * from activities\nwhere created_at > '2025-07-01 00:00:00'\n# and created_at < '2025-08-01 00:00:00'\nand type not in ('email-outbound', 'email-inbound')\nand account_id is null\nand contact_id is null\nand lead_id is null\nand opportunity_id is not null\n;\nSELECT * FROM activities WHERE id IN (25344155, 25344296, 25501909, 28692187);\nSELECT * FROM crm_configurations WHERE id in (335,301,200);\n\nselect * from crm_fields where crm_configuration_id = 230 and crm_provider_id = 'Age2__c';\n\nSELECT * FROM teams WHERE name LIKE '%Resights%';\nselect * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nselect * from teams where id IN (442);\n\nselect * from activities\nwhere crm_configuration_id = 177\nand provider = 'amazon-connect'\n order by id desc;\n# and source <> 'gong';\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nSELECT * FROM activities WHERE uuid_to_bin('cec1993b-a7e5-4164-b74d-d680ea51d2f2') = uuid;\n\n\nselect * from crm_configurations where store_transcript = 1;\nSELECT * FROM teams WHERE id IN (80);\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sedna%'; # 277, 213, 12594\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 277\nand sa.provider = 'salesforce';\n\nselect * from activities where crm_configuration_id = 213 and account_id = 2511502;\n\nselect * from crm_configurations where id = 213;\n\nSELECT * FROM activities WHERE uuid_to_bin('35aa790a-8569-4544-8268-66f9a4a26804') = uuid; # 33981604\nSELECT * FROM participants WHERE activity_id = 33981604;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 337 and object_type = 'task';\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 431\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b5476c7d-19a8-491b-869d-676ea1e857b6') = uuid; # 33997223\nselect * from activity_summary_logs where activity_id = 33997223;\nselect * from activity_notes where activity_id = 33997223;\n\n# ***********************************\nSELECT * FROM teams WHERE name LIKE '%Abode%';\n\n\nselect * from features;\nselect * from teams t\nwhere t.status = 'active'\nand id NOT IN (select team_id from team_features where feature_id = 9)\n;\n\n\nselect * from playbook_layouts where playbook_id = 1725;\nSELECT * FROM activities WHERE uuid_to_bin('65cc283c-4849-49e6-927f-4c281c8fea19') = uuid; # 34297473\nselect * from teams where id = 318;\nselect * from crm_configurations where team_id = 318;\nselect * from playbooks where team_id = 318;\nSELECT * FROM crm_layouts where crm_configuration_id = 381;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1259;\nSELECT * FROM crm_fields WHERE id IN (192938,192936,192939);\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1266;\nSELECT * FROM crm_fields WHERE id IN (192980,192991,192997,192998,193064,193067);\n\nSELECT * FROM activities WHERE uuid_to_bin('a902289b-285c-48eb-9cc2-6ad6c5d938f5') = uuid; # 34297533\n\n\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nSELECT * FROM crm_fields WHERE id IN (131668,131669,131670,131671,131676,131797);\n\nSELECT * FROM teams WHERE name LIKE '%Peripass%'; # 351, 281, 12124\nselect * from crm_layouts where crm_configuration_id = 281;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nselect * from crm_fields where crm_configuration_id = 281 and id in (131668,131669,131670,131671,131676,131797);\nselect * from opportunities where crm_configuration_id = 281;\n\nSELECT * FROM activities WHERE id IN (34211315, 34130075);\nSELECT * FROM crm_field_data WHERE object_id IN (34211315, 34130075);\n\nselect cf.crm_configuration_id, cle.crm_layout_id, cle.id, cf.id from crm_field_data cfd\njoin crm_layout_entities cle on cle.id = cfd.crm_layout_entity_id\njoin crm_fields cf on cle.crm_field_id = cf.id\nwhere cf.deleted_at IS NOT NULL\nGROUP BY cle.id, cf.id;\n\nselect * from crm_layouts where id IN (355);\nselect u.email, t.crm_id, t.* from teams t\njoin users u on u.id = t.owner_id\nwhere crm_id IN (97);\n\nSELECT * FROM crm_fields WHERE id = 96492;\n\nselect * from permissions;\nselect * from permission_role where permission_id = 247;\nselect * from roles;\n\nselect * from migrations;\n# *****************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('291e3c21-11cc-4728-aee7-6e4bedf86d72') = uuid; # 34262174\nSELECT * FROM crm_configurations WHERE id = 301;\nSELECT * FROM teams WHERE id = 343;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from participants where activity_id = 34262174;\n\nselect * from contacts where crm_configuration_id = 301 and id = 6976326;\nselect * from accounts where crm_configuration_id = 301 and id IN (4647626, 4815829); # 30761335403\n\nselect * from activity_summary_logs where activity_id = 34262174;\n\nselect * from users where status = 1 AND timezone = 'EST';\n\n# ****************************************************************************\nSELECT * FROM users WHERE id = 13869;\nSELECT * FROM crm_configurations WHERE id = 320;\nSELECT * FROM teams WHERE id = 401;\n\nSELECT * FROM activities WHERE uuid_to_bin('2228c16f-10be-48d5-90d4-67385219dc01') = uuid; # 29670601\n\nSELECT * FROM accounts WHERE id = 7761483;\nSELECT * FROM opportunities WHERE id = 6051814;\n\nSELECT * FROM teams WHERE name LIKE '%Seedlegals%';\n\n;select * from opportunities where updated_at > '2025-10-11' AND crm_provider_id = '34713761166';\n\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 177;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 577;\nSELECT * FROM crm_fields WHERE id IN (68458,68459,68480,68497,68524,68530,68554,68618,68662,68781,68810,68898,68981,69049,97467);\n\nSELECT t.id, crm.id, t.name, crm.sync_objects, crm.provider, crm.last_synced_at FROM crm_configurations crm join teams t on t.crm_id = crm.id\nwhere t.status = 'active' AND crm.provider = 'hubspot' AND crm.last_synced_at < '2025-10-22 00:00:00';\n\nSELECT * FROM activities WHERE uuid_to_bin('fa09449f-cba9-496a-b8f3-865cd3c72351') = uuid;\nSELECT * FROM crm_configurations where id = 184;\nSELECT * FROM teams WHERE id = 246;\nSELECT * FROM social_accounts WHERE sociable_id = 9259 and provider = 'hubspot';\n\nSELECT * FROM users WHERE email LIKE '%rhian.old@bud.co.uk%'; # 17700\nSELECT * FROM teams WHERE id = 551;\n\nSELECT * FROM crm_configurations WHERE id = 471;\nSELECT * FROM activities WHERE crm_configuration_id = 471 and crm_provider_id IS NOT NULL;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 471;\nSELECT * FROM crm_fields WHERE id = 307260;\nSELECT * FROM crm_field_values WHERE crm_field_id = 307260;\n\nselect * from crm_layouts where crm_configuration_id = 471;\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1547;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1548;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 551 and sa.provider = 'hubspot';\n\nSELECT * FROM teams WHERE name LIKE '%$PCS%';\n\n# ********************************************************************************************************\nselect * from crm_configurations crm\njoin teams t on t.crm_id = crm.id\nwhere t.status = 'active'\nand crm.provider = 'hubspot';\n\n# $slug = 'HUBSPOT_WEBHOOK_SYNC';\n# $team = Jiminny\\Models\\Team::find(2);\n# $feature = Feature::query()->where('slug', $slug)->first();\n# TeamFeature::query()->create(['feature_id' => $feature->getId(),'team_id' => $team->getId()]);\n\n# hubspot_webhook_metrics\n\nselect * from crm_configurations where id = 331; # 416\nSELECT * FROM teams WHERE id = 416;\nSELECT * FROM opportunities WHERE team_id = 190;\n\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%';\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 190 and sa.provider = 'hubspot';\n\n\n\nSELECT * FROM teams WHERE name LIKE '%Rapaport%'; # 431, 337\nSELECT * FROM teams where id = 431;\nSELECT * FROM crm_configurations where team_id = 431;\nSELECT * FROM activity_providers where team_id = 431;\nSELECT * FROM activities where crm_configuration_id = 337 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 431 and sa.provider = 'salesforce';\n\nSELECT * FROM teams WHERE name LIKE '%BiP%'; # 401, 320\nSELECT * FROM teams where id = 401;\nSELECT * FROM crm_configurations where team_id = 401;\nSELECT * FROM activity_providers where team_id = 401;\nSELECT * FROM activities where crm_configuration_id = 320 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 401 and sa.provider = 'salesforce';\n\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 307; # 379 - Story Terrace Inc , portalId: 3921157\nSELECT * FROM contacts WHERE team_id = 379 and updated_at > '2026-01-31 11:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-01 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 379 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 485; # 563 - LATUS Group (ad94d501-5d09-44fd-878f-ca3a9f8865c3) , portalId: 3904501\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 338; # 432 - Formalize , portalId: 9214205\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 432 and sa.provider = 'hubspot';\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 436; # 519 - Moxso , portalId: 25531989\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 96; # 119 - Nourish Care , portalId: 26617984\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 331; # 416 - The National College , portalId: 7213852\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 308; # 380 - Foodles , portalId: 7723616\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 379; # 471 - imat-uve , portalId: 9177354\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 465; # 545 - Spotler , portalId: 144759271\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 455; # 537 - indevis , portalId: 25666868\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 200; # 265 - Jobadder , portalId: 6426676\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 335; # 429 - Eletive , portalId: 6110563\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 363; # 456 - Global Group , portalId: 8901981\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 297; # 369 - Unbiased , portalId: 9229005\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 353; # 449 - Fuuse , portalId: 25781745\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 487; # 566 - Nimbus , portalId: 39982590\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 487;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1630;\nselect * from crm_fields where crm_configuration_id = 487 and\n(uuid_to_bin('4c6b2971-64d4-45b8-b377-427be758b5a5') = uuid or uuid_to_bin('59e368d8-65a0-4b77-b611-db37c99fbe68') = uuid);\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 420; # 506 - voiio , portalId: 145629154\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 479; # 558 - Momice , portalId: 535962\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 59; # 80 - Storyclash GmbH , portalId: 4268479\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 175; # 203 - Team iAM , portalId: 5534732\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 368; # 460 - OneTouch Health , portalId: 5534732183355\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\n\n\nselect * from users where id = 29643;\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM teams WHERE name LIKE '%Buynomics%'; # 462, 482, 14910\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\n# and description like '%The call focused on understanding Welch%'\norder by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 462 and sa.provider = 'salesforce';\n\nselect * from contacts where crm_configuration_id = 482 and name = 'Cyndall Hill'; # 15504749\nselect * from contacts where id = 10891096; # 482\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\nand contact_id = 15504749\norder by id desc;\n\nselect * from activities where id = 36793003; # 96cc7bc1-8622-4d27-92f4-baf664fc1a56, 00UOf00000PDdOXMA1\nselect * from transcription where id = 7646782;\nselect * from ai_prompts where transcription_id = 7646782;\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7a8471a3-847e-4822-802b-ddf426bbc252') = uuid; # 37370018\nSELECT * FROM activity_summary_logs WHERE activity_id = 37370018;\nSELECT * FROM teams WHERE id = 555;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 555 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7c17b8aa-09df-4f85-a0f7-51f47afd712d') = uuid; # 37395250\nSELECT * FROM activities WHERE uuid_to_bin('14d60388-260d-494b-aa0d-63fdb1c78026') = uuid; # 37395250\n\nSELECT a.* FROM activities a JOIN crm_configurations c on c.id = a.crm_configuration_id\nwhere a.type IN ('softphone', 'softphone-outbound') and c.provider = 'hubspot'\nand a.provider NOT IN ('hubspot')\n# and a.provider IN ('salesloft')\n# and c.id NOT IN (70)\n# and a.duration > 30\n# and actual_start_time > '2026-02-05 00:00:00'\norder by a.id desc;\n\nSELECT * FROM activities WHERE id = 37549787;\nSELECT * FROM crm_profiles WHERE user_id = 17613;\n\nSELECT * FROM crm_configurations WHERE id = 70;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 93 and sa.provider = 'hubspot';\n\nSELECT asf.activity_search_id, asf.id, asf.value\nFROM activity_search_filters asf\nWHERE asf.filter = 'group_id'\nAND asf.value IN (\n SELECT CONCAT(\n HEX(SUBSTR(uuid, 5, 4)), '-',\n HEX(SUBSTR(uuid, 3, 2)), '-',\n HEX(SUBSTR(uuid, 1, 2)), '-',\n HEX(SUBSTR(uuid, 9, 2)), '-',\n HEX(SUBSTR(uuid, 11))\n )\n FROM groups\n WHERE deleted_at IS NOT NULL\n);\n\nSELECT * FROM crm_configurations WHERE id = 373; # KPSBremen.de 465 # - no social account\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 465 and sa.provider = 'hubspot';\n\nselect * from crm_configurations where id = 494;\n\nSELECT * FROM teams WHERE name LIKE '%splose%'; # 572, 495, 18708\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 572 and sa.provider = 'pipedrive';\n\nselect * from opportunities where team_id = 572\n# and name like '%Onebright%'\n# and is_closed = 1 and is_won = 0\n order by id desc;\n\n\nselect * from users where deleted_at is null and status = 2;\n\nselect * from contacts where id = 17900517;\nselect * from accounts where id = 10109838;\nselect * from opportunities where id = 6955880;\n\nselect * from opportunity_contacts where opportunity_id = 6955880;\nselect * from opportunity_contacts where contact_id = 17900517;\n\nselect * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id\nwhere crm.provider != 'salesforce';\n\nSELECT * FROM activities WHERE uuid_to_bin('adcb8331-5988-4353-834e-383a355abba2') = uuid; # 38056424, crm 104659682404\nselect * from teams where id = 456;\nSELECT * FROM crm_configurations WHERE id = 363;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 456 and sa.provider = 'hubspot';\n\nselect * from crm_layouts where crm_configuration_id = 363;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id IN (1203, 1204, 1635);\nSELECT * FROM crm_fields WHERE id IN (181536, 181538, 213455);\n\nSELECT * FROM teams WHERE name LIKE '%Electric%'; # 342, 272, 12767\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and name like 'NORTHUMBRIA POL%'; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 order by remotely_created_at asc; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and updated_at > '2026-01-01 00:00:00';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 272 and object_type = 'opportunity';\nSELECT * FROM crm_field_values WHERE crm_field_id = 127164;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\n\nSELECT * FROM teams WHERE id = 472;\nSELECT * FROM crm_configurations WHERE id = 380;\nselect * from activities where id = 38285673; # 38285673\nSELECT * FROM users WHERE id = 16942;\nSELECT * FROM groups WHERE id = 1964;\nSELECT * FROM playbooks WHERE id = 2033;\n\nselect * from teams where created_at > '2026-03-09';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 499; # 1065\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1678;\n\nSELECT * FROM teams WHERE id = 575;\nselect * from opportunities where team_id = 575;\n\nSELECT * FROM activities WHERE uuid_to_bin('96b1261f-2357-49f9-ab38-23ce12008ea0') = uuid;\n\nselect * from contacts c\nwhere c.crm_configuration_id = 370 order by c.updated_at desc;\n\nSELECT * FROM participants where activity_id = 38833541;\nSELECT * FROM participants where activity_id = 39216301;\nSELECT * FROM activity_summary_logs where activity_id = 39216301;\nSELECT * FROM activities WHERE uuid_to_bin('c7d99fbe-1fb1-41f2-8f4d-52e2bf70e1e9') = uuid; # 38833541, crm 478116564181\nSELECT * FROM activities WHERE uuid_to_bin('2e6ff4d3-9faa-447a-a8c1-9acde4d885ae') = uuid; # 39216301, crm 480171536586\nselect * from crm_profiles where crm_configuration_id = 319 and crm_provider_id = 525785080;\nselect * from opportunities where crm_configuration_id = 319 and crm_provider_id = 410150124747;\nselect * from accounts where crm_configuration_id = 319 and crm_provider_id = 47150650569;\nselect * from contacts where crm_configuration_id = 319 and crm_provider_id IN ('665587441856', '742723347700');\n# owner 13236 525785080\n# contact 1 16779180 665587441856 - activity - Alex Howes alex@supportroom.com created 2026-01-26\n# contact 2 19247563 742723347700 - ash@supportroom.com 2026-03-24\n# company 4176133 47150650569\n# deal 7100953 410150124747\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 400 and sa.provider = 'hubspot';\n\nselect * from features;\nselect * from team_features where feature_id = 40;\n\nselect * from teams where id = 556; # owner: 18101, crm: 477\nselect * from crm_configurations where id = 477;\nSELECT * FROM users WHERE id = 18101;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 556 and sa.provider = 'integration-app';\n\nselect * from opportunities where id = 7594349;\nselect * from opportunity_stages where opportunity_id = 7594349 order by created_at desc;\nselect * from business_processes where id = 6024;\nselect * from business_process_stages where stage_id = 16352;\nselect * from business_process_stages where business_process_id = 6024;\nselect * from stages where team_id = 459;\nselect * from teams where id = 459;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 459 and sa.provider = 'hubspot';\n\nSELECT os.stage_id, s.crm_provider_id, s.name, COUNT(*) as cnt\nFROM opportunity_stages os\nJOIN stages s ON s.id = os.stage_id\nWHERE os.opportunity_id = 7594349\nGROUP BY os.stage_id, s.crm_provider_id, s.name\nORDER BY cnt DESC;\n\nSELECT s.id, s.crm_provider_id, s.name, s.team_id, s.crm_configuration_id\nFROM stages s\nJOIN business_process_stages bps ON bps.stage_id = s.id\nWHERE bps.business_process_id = 6024\nAND s.crm_provider_id = 'contractsent';\n\nselect * from stages where id IN (16352,20612,18281,7344,16378,16309,5036,15223,14535,6293,12098,11607)\n\nSELECT * FROM teams WHERE name LIKE '%Pulsar Group%'; # 472, 380, 15138, raza.gilani@vuelio.com\nselect * from playbooks where team_id = 472; # event 226147\nSELECT * FROM playbook_categories WHERE playbook_id = 2288;\nSELECT * FROM crm_fields WHERE id = 226147;\nSELECT * FROM crm_field_values WHERE crm_field_id = 226147;\n\nSELECT * FROM crm_configurations WHERE id = 380;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 472 and sa.provider = 'salesforce';","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-3293064906782757730
|
-8385861013498915692
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
2
47
3
11
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\AjReportsRepository;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
private readonly AjReportsRepository $ajReportsRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
$ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());
if ($ajReportCount > 0) {
return $this->response->errorWrongArgs(
"This saved search is used by {$ajReportCount} active AJ report(s). "
. 'Please remove or update those reports before deleting this saved search.'
);
}
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$crmService = $this->providerRegistry->get($team->crm->provider);
if (! $user->isCrmRequired()) {
$crmService->setUser($team->getOwner());
} else {
$crmService->setUser($user);
}
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
}
/**
* Remove activity from this user's favorite...
|
NULL
|
|
60897
|
1312
|
21
|
2026-04-21T06:24:35.629386+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752675629_m1.jpg...
|
PhpStorm
|
faVsco.js – console [EU]
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
2
47
3
11
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\AjReportsRepository;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
private readonly AjReportsRepository $ajReportsRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
$ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());
if ($ajReportCount > 0) {
return $this->response->errorWrongArgs(
"This saved search is used by {$ajReportCount} active AJ report(s). "
. 'Please remove or update those reports before deleting this saved search.'
);
}
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$crmService = $this->providerRegistry->get($team->crm->provider);
if (! $user->isCrmRequired()) {
$crmService->setUser($team->getOwner());
} else {
$crmService->setUser($user);
}
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
}
/**
* Remove activity from this user's favorite...
|
[{"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":"master, menu","depth":5,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"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":"2","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"47","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"11","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\nnamespace Jiminny\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AjReportsRepository;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n private readonly AjReportsRepository $ajReportsRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n $ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());\n if ($ajReportCount > 0) {\n return $this->response->errorWrongArgs(\n \"This saved search is used by {$ajReportCount} active AJ report(s). \"\n . 'Please remove or update those reports before deleting this saved search.'\n );\n }\n\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n if (! $user->isCrmRequired()) {\n $crmService->setUser($team->getOwner());\n } else {\n $crmService->setUser($user);\n }\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n if ($coachingFeedback->delete()) {\n $activity->documentUpdate();\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete opration failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresIn' => 'required|in:' . implode(',', Nudge::MAP_EXPIRES),\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\n }\n}","depth":4,"value":"<?php\n\nnamespace Jiminny\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AjReportsRepository;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n private readonly AjReportsRepository $ajReportsRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n $ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());\n if ($ajReportCount > 0) {\n return $this->response->errorWrongArgs(\n \"This saved search is used by {$ajReportCount} active AJ report(s). \"\n . 'Please remove or update those reports before deleting this saved search.'\n );\n }\n\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n if (! $user->isCrmRequired()) {\n $crmService->setUser($team->getOwner());\n } else {\n $crmService->setUser($user);\n }\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n if ($coachingFeedback->delete()) {\n $activity->documentUpdate();\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete opration failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresIn' => 'required|in:' . implode(',', Nudge::MAP_EXPIRES),\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\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":"27","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"9","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"23","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"105","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT * FROM team_features where team_id = 1;\n\nSELECT * FROM teams WHERE name LIKE '%Vixio%'; # 340,270,11922\nSELECT * FROM users WHERE team_id = 340; # 12015\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 340\nand sa.provider = 'salesforce';\n# and sa.provider = 'salesloft';\n\nselect * from crm_fields where crm_configuration_id = 270 and object_type = 'event';\n# 125558 - Event Type - Event_Type__c\n# 125552 - Event Status - Event_Status__c\n\nSELECT * FROM sidekick_settings WHERE team_id = 340;\n\nSELECT * FROM crm_field_values WHERE crm_field_id in (125552);\n\nselect * from activities where crm_configuration_id = 270\nand type = 'conference' and crm_provider_id IS NOT NULL\nand actual_start_time > '2024-09-16 09:00:00' order by scheduled_start_time;\n\nSELECT * FROM activities WHERE id = 20871677;\nSELECT * FROM crm_field_data WHERE activity_id = 20871677;\n\nselect * from crm_layouts where crm_configuration_id = 270;\nselect * from crm_layout_entities where crm_layout_id in (886,887);\n\nSELECT * FROM crm_configurations WHERE id = 270;\n\nselect * from playbooks where team_id = 340; # 1514\nselect * from groups where team_id = 340;\nSELECT * FROM crm_fields WHERE id IN (125393, 125401);\n\nselect g.name as 'team name', p.name as 'playbook name', f.label as 'activity type field' from groups g\njoin playbooks p on g.playbook_id = p.id\njoin crm_fields f on p.activity_field_id = f.id\nwhere g.team_id = 340;\n\nSELECT * FROM activities WHERE uuid_to_bin('0c180357-67d2-419e-a8c3-b832a3490770') = uuid; # 20448716\nselect * from crm_field_data where object_id = 20448716;\n\nselect * from activities where crm_configuration_id = 270 and provider = 'salesloft' order by id desc;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%CybSafe%'; # 343,273,12008\nselect * from opportunities where team_id = 343;\nselect * from opportunities where team_id = 343 and crm_provider_id = '18099102526';\nselect * from opportunities where team_id = 343 and account_id = 945217482;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from accounts where team_id = 343 order by name asc;\n\nselect * from stages where crm_configuration_id = 273 and type = 'opportunity';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Voyado%'; # 353,283,12143\nSELECT * FROM activities WHERE crm_configuration_id = 283 and account_id = 3777844 order by id desc;\nSELECT * FROM accounts WHERE team_id = 353 AND name LIKE '%Salesloft%';\nSELECT * FROM activities WHERE id = 20717903;\n\nselect * from participants where activity_id IN (20929172,20928605,20928468,20926272,20926271,20926270,20926269,20916499,20916454,20916436,20916435,20900015,20900014,20900013,20897312,20897243,20897241,20897237,20897232,20897229,20893648,20893231,20893230,20893229,20893228,20889784,20885039,20885038,20885037,20885036,20885035,20882728,20882708,20882703,20882702,20869828,20869811,20869806,20869801,20869799,20869798,20869796,20869795,20869794,20869761,20869760,20869759,20868688,20868687,20850340,20847195,20841710,20833967,20827021,20825307,20825305,20825297,20824615,20824400,20823927,20821760,20795588,20794233,20794057,20793710,20785811,20781789,20781394,20781307,20762651,20758453,20758282,20757323,20756643,20756636,20756629,20756627,20756606,20756605,20756604,20756603,20756602,20756600,20756599,20756598,20756595,20756594,20756589,20756587,20756577,20756573,20748918,20748386,20748385,20748384,20748383,20748382,20748381,20748380,20748379,20748377,20748375,20748373,20743301,20717905,20717904,20717903,20717901,20717899);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 353\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%modern world business solutions%'; # 345,275,12016, l.atkinson@mwbsolutions.co.uk\nSELECT * FROM activities WHERE uuid_to_bin('3921d399-3fef-4609-a291-b0097a166d43') = uuid;\n# id: 20940638, user: 12022, contact: 5305871\nSELECT * FROM activity_summary_logs WHERE activity_id = 20940638;\nselect * from contacts where team_id = 345 and crm_provider_id = '30891432415' order by name asc; # 5305871\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 345\nand sa.provider = 'hubspot';\n\nselect * from users where team_id = 345 and id = 12022;\nSELECT * FROM crm_profiles WHERE user_id = 12022;\nSELECT * FROM participants WHERE activity_id = 20940638;\nSELECT * FROM users u\nJOIN crm_profiles cp ON u.id = cp.user_id\nWHERE u.team_id = 345;\n\nselect * from contacts where team_id = 345 and crm_provider_id = '30880813535' order by name desc; # 5305871\n\nselect * from team_features where team_id = 345;\nSELECT * FROM activities WHERE uuid_to_bin('11701e2d-2f82-4dab-a616-1db4fad238df') = uuid; # 21115197\nSELECT * FROM participants WHERE activity_id = 20897406;\n\n\n\nSELECT * FROM activities WHERE uuid_to_bin('63ba55cd-1abc-447d-83da-0137000005b7') = uuid; # 20953912\nSELECT * FROM activities WHERE crm_configuration_id = 275 and provider = 'ringcentral' and title like '%1252629100%';\n\n\nSELECT * FROM activities WHERE id = 20946641;\nSELECT * FROM crm_profiles WHERE user_id = 10211;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120,97,10984, triger@lunio.ai\nSELECT * FROM opportunities WHERE crm_configuration_id = 97 and crm_provider_id = '006N1000006c5PpIAI';\nselect * from stages where crm_configuration_id = 97 and type = 'opportunity';\nselect * from opportunities where team_id = 120;\n\n\nselect * from crm_configurations crm join teams t on crm.id = t.crm_id\nwhere 1=1\nAND t.current_billing_plan IS NOT NULL\nAND crm.auto_sync_activity = 0\nand crm.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Exclaimer%'; # 270,205,10053,james.lewendon@exclaimer.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 270\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b54df794-2a9a-4957-8d80-09a600ead5f8') = uuid; # 21637956\nSELECT * FROM crm_profiles WHERE user_id = 11446;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cygnetise%'; # 372,300,12554, alex.chikly@cygnetise.com\nselect * from playbooks where team_id = 372;\nselect * from crm_fields where crm_configuration_id = 300 and object_type = 'event'; # 141340\nSELECT * FROM crm_field_values WHERE crm_field_id = 141340;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 372\nand sa.provider = 'salesforce';\n\nselect * from crm_profiles where crm_configuration_id = 300;\nSELECT * FROM crm_configurations WHERE team_id = 372;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Planday%'; # 291,242,11501,mfa@planday.com\nSELECT * FROM opportunities WHERE team_id = 291 and crm_provider_id = '006bG000005DO86QAG'; # 3207756\nselect * from crm_field_data where object_id = 3207756;\nSELECT * FROM crm_fields WHERE id = 111834;\n\nselect f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value\nFROM crm_fields f\nJOIN crm_field_data fd ON f.id = fd.crm_field_id\nWHERE f.crm_configuration_id = 242\nAND f.object_type = 'opportunity'\nAND fd.object_id IN (3207756)\nORDER BY fd.object_id, fd.updated_at;\n\nSELECT * FROM crm_configurations WHERE auto_connect = 1;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150,salesforce-admin@tourlane.com\nselect * from group_deal_risk_types drgt join groups g on drgt.group_id = g.id\nwhere g.team_id = 187;\n\nselect * from `groups` where team_id = 187;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 187\nand sa.provider = 'salesforce';\n\n# Destination - 98870 - Destination__c\n# Stage - 79014 - StageName\n# Land Arrangement - 98856 - Land_Arrangement__c\n# Flight - 98848 - Flight__c\n# Last activity date - 98812 - LastActivityDate\n# Last modified date - 98809 - LastModifiedDate\n# Last inbound mail timestamp - 99151 - Last_Inbound_Mail_Timestamp__c\n# next call - 98864 - Next_Call__c\n\nselect * from crm_fields where crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\nselect * from opportunities where team_id = 187 and name LIKE'%Muriel Sal%';\nselect * from opportunities where team_id = 187 and user_id = 9951 and is_closed = 0;\nselect * from activities where opportunity_id = 3538248;\n\nSELECT * FROM crm_profiles WHERE user_id = 8150;\n\nselect * from deal_risks where opportunity_id = 3538248;\n\nselect * from teams where crm_id IS NULL;\n\nSELECT opp.id AS opportunity_id,\n u.group_id AS group_id,\n MAX(\n CASE\n WHEN a.type IN (\"sms-inbound\", \"sms-outbound\") THEN a.created_at\n ELSE a.actual_end_time\n END) as last_date\nFROM opportunities opp\nleft join activities a on a.opportunity_id = opp.id\ninner join users u on opp.user_id = u.id\nwhere opp.user_id IN (9951)\n\nAND opp.is_closed = 0\nand a.status IN ('completed', 'received', 'delivered') OR a.status IS NULL\ngroup by opp.id;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cybsafe%'; # 343,301,12008,polly.morphew@cybsafe.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 301;\nSELECT * FROM contacts WHERE id = 6612363;\nSELECT * FROM accounts WHERE id = 4235676;\nSELECT * FROM opportunities WHERE crm_configuration_id = 301 and crm_provider_id = 32983784868;\nselect * from opportunity_stages where opportunity_id = 4503759;\n# SELECT * FROM opportunities WHERE id = 4569937;\n\nselect * from activities where crm_configuration_id = 301;\nSELECT * FROM activities WHERE uuid_to_bin('d3b2b28b-c3d0-4c2d-8ed0-eef42855278a') = uuid; # 26330370\nSELECT * FROM participants WHERE activity_id = 26330370;\n\nSELECT * FROM teams WHERE id = 375;\nselect * from playbooks where team_id = 375;\n\nselect * from stages where crm_configuration_id = 301 and type = 'opportunity';\n\nselect * from teams;\nselect * from contact_roles;\n\nSELECT * FROM opportunities WHERE team_id = 343 and user_id = 12871 and close_date >= '2024-11-01';\n\nselect * from users u join crm_profiles cp on cp.user_id = u.id where u.team_id = 343;\n\nSELECT * FROM crm_field_data WHERE object_id = 3771706;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 301 and object_type = 'opportunity'\nand crm_provider_id LIKE \"%traffic_light%\";\nSELECT * FROM crm_field_values WHERE crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531);\n\nSELECT fd.* FROM opportunities o\nJOIN crm_field_data fd ON o.id = fd.object_id\nWHERE o.team_id = 343\n# and o.user_id IS NOT NULL\nand fd.crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531)\nand fd.value != ''\norder by value desc\n# group by o.id\n;\n\nSELECT * FROM opportunities WHERE id = 3769843;\n\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150, salesforce-admin@tourlane.com\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding Circle%'; # 220,177,8603,aswini.mishra@fundingcircle.com\nSELECT * FROM activities WHERE uuid_to_bin('7a40e99b-3b37-4bb1-b983-325b81801c01') = uuid; # 23139839\n\n\nSELECT * FROM opportunities WHERE id = 3855992;\n\nSELECT * FROM users WHERE name LIKE '%Angus Pollard%'; # 8988\n\nSELECT * FROM teams WHERE name LIKE '%Story Terrace%'; # 379, 307, 12894\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307 and object_type != 'opportunity';\n\nselect * from contacts where team_id = 379 and name like '%bebro%'; # 5874411, crm: 77229348507\nSELECT * FROM crm_field_data WHERE object_id = 5874411;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379\nand sa.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%mentio%'; # 117, 94, 6371, nikhil.kumar@mention-me.com\nSELECT * FROM activities WHERE uuid_to_bin('82939311-1af0-4506-8546-21e8d1fdf2c1') = uuid;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tourlane%'; # 187, 209, 8150, salesforce-admin@tourlane.com\nSELECT * FROM opportunities WHERE team_id = 187 and crm_provider_id = '006Se000008xfvNIAQ'; # 3537793\nselect * from generic_ai_prompts where subject_id = 3537793;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120, 97, 10984, triger@lunio.ai\nSELECT * FROM crm_configurations WHERE id = 97;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 97;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 355;\nSELECT * FROM crm_fields WHERE id = 32682;\n\nselect cfd.value, o.* from opportunities o\njoin crm_field_data cfd on o.id = cfd.object_id and cfd.crm_field_id = 32682\nwhere team_id = 120\nand cfd.value != ''\n;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 120\nand sa.provider = 'salesforce';\n\nselect * from opportunities where team_id = 120 and crm_provider_id = '006N1000007X8MAIA0';\nSELECT * FROM crm_field_data WHERE object_id = 2313439;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 410;\nSELECT * FROM teams WHERE name LIKE '%Local Business Oxford%';\nselect * from scorecards where team_id = 410;\nselect * from scorecard_rules;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding%'; # 220, 177, 8603, aswini.mishra@fundingcircle.com\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\njoin users u on o.user_id = u.id\nwhere a.crm_configuration_id = 177 and a.type LIKE '%email-out%'\n# and a.actual_end_time > '2024-12-16 00:00:00'\n# and o.remotely_created_at > '2024-12-01 00:00:00'\n# and u.group_id = 1014\nand u.id = 9021\norder by a.id desc;\nSELECT * FROM opportunities WHERE id in (3981384,4017346);\nSELECT * FROM users WHERE team_id = 220 and id IN (8775, 11435);\n\nselect * from users where id = 9021;\nselect * from inboxes where user_id = 9021;\n\nselect * from inbox_emails where inbox_id = 1349 and email_date > '2024-12-18 00:00:00';\n\nselect * from email_messages where team_id = 220\nand orig_date > '2024-12-16 00:00:00' and orig_date < '2024-12-19 00:00:00'\nand subject LIKE '%Personal%'\n# and 'from' = 'credit@fundingcircle.com'\n;\n\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\nwhere a.user_id = 9021 and a.type LIKE '%email-out%'\nand a.actual_end_time > '2024-12-18 00:00:00'\nand o.user_id IS NOT NULL\nand o.remotely_created_at > '2024-12-01 00:00:00'\norder by a.id desc;\n\nSELECT * FROM opportunities WHERE team_id = 220 and name LIKE '%Right Car move Limited%' and id = 3966852;\nselect * from activities where crm_configuration_id = 177 and type LIKE '%email%' and opportunity_id = 3966852 order by id desc;\n\nselect * from team_settings where name IN ('useCloseDate');\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hurree%'; # 104, 81, 6175, jfarrell@hurree.co\nSELECT * FROM opportunities WHERE team_id = 104 and name = 'PropOp';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 104\nand sa.provider = 'hubspot';\n\nselect * from crm_configurations where last_synced_at > '2025-01-19 01:00:00'\nselect * from teams where crm_id IS NULL;\n\nselect t.name as 'team', u.name as 'owner', u.email, u.phone\nfrom teams t\njoin activity_providers ap on t.id = ap.team_id\njoin users u on t.owner_id = u.id\nwhere 1=1\n and t.status = 'active'\n and ap.is_enabled = 1\n# and u.status = 1\n and ap.provider = 'ms-teams';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nSELECT * FROM teams WHERE id = 442; # 14293\nselect * from users where team_id = 442;\nselect * from social_accounts sa where sa.sociable_id = 14293;\nselect * from invitations where team_id = 442;\n\n# ********************************************************************************************************\nSELECT * FROM users WHERE email LIKE '%nea.liikamaa@eletive.com%'; # 14022\nSELECT * FROM teams WHERE id = 429;\nselect * from opportunities where team_id = 429 and crm_provider_id IN (16157415775, 22246219645);\nselect * from activities where opportunity_id in (4340436,4353519);\n\nselect * from transcription where activity_id IN (25630961,25381771);\nselect * from generic_ai_prompts where subject_id IN (4353519);\n\nSELECT\n a.id as activity_id,\n a.opportunity_id,\n a.type as activity_type,\n a.language,\n CONCAT(a.title, a.description) AS mail_content,\n e.from AS mail_from,\n e.to AS mail_to,\n e.subject AS mail_subject,\n e.body AS mail_body,\n p.type as prompt_type,\n p.status as prompt_status,\n p.content AS prompt_content,\n a.actual_start_time as created_at\nFROM activities a\n LEFT JOIN ai_prompts p ON a.transcription_id = p.transcription_id AND p.deleted_at IS NULL\n LEFT JOIN email_messages e ON a.id = e.activity_id\nWHERE a.actual_start_time > '2024-01-01 00:00:00'\n AND a.opportunity_id IN (4353519)\n AND a.status IN ('completed', 'received', 'delivered')\n AND a.deleted_at IS NULL\n AND a.type NOT IN ('sms-inbound', 'sms-outbound')\nORDER BY a.opportunity_id ASC, a.id ASC;\n\nSELECT * FROM users WHERE name LIKE '%George Fierstone%'; # 14293\nSELECT * FROM teams WHERE id = 442;\nSELECT * FROM crm_configurations WHERE id = 344;\nselect * from team_features where team_id = 442;\nselect * from groups where team_id = 442;\nselect * from playbooks where team_id = 442;\nselect * from playbook_categories where playbook_id = 1729;\nselect * from crm_fields where crm_configuration_id = 344 and id = 172024;\nSELECT * FROM crm_field_values WHERE crm_field_id = 172024;\nselect * from crm_layouts where crm_configuration_id = 344;\nselect * from playbook_layouts where playbook_id = 1729;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 221, 9444\n\nselect s.*\n# , s.sent_at, u.name, a.*\nfrom activity_summary_logs s\ninner join activities a on a.id = s.activity_id\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 356\nand s.sent_at > date_sub(now(), interval 60 day)\norder by a.actual_end_time desc;\n\nselect * from activities a\n# inner join activity_summary_logs s on s.activity_id = a.id\nwhere a.crm_configuration_id = 356 and a.actual_end_time > date_sub(now(), interval 60 day)\n# and a.crm_provider_id is not null\n# and provider <> 'ringcentral'\nand status = 'completed'\norder by a.actual_end_time desc;\n\nselect * from teams order by id desc; # 17328, 32, 17830, integration-account@jiminny.com\nSELECT * FROM users;\nSELECT * FROM users where team_id = 260 and status = 1; # 201 - 150 active\nSELECT * FROM teams WHERE id = 260;\nselect * from team_settings where team_id = 260;\nselect * from crm_configurations where team_id = 260;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 356;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1184;\n\nselect * from accounts where crm_configuration_id = 221 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 221 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 221 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 221 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 221 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 221;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 221 order by id desc;\nselect * from stages where crm_configuration_id = 221 order by id desc;\n\nselect * from accounts where crm_configuration_id = 356 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 356 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 356 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 356 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 356 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 356;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 356 order by id desc;\nselect * from stages where crm_configuration_id = 356 order by id desc;\n\nselect * from playbooks where team_id = 260 order by id desc; # 4 (2 deleted)\nselect * from groups where team_id = 260 order by id desc; # 27 groups, (2 deleted)\nselect * from playbook_layouts where playbook_id IN (1410,1409,1276,1254); # 4\nselect ce.* from calendars c\njoin users u on c.user_id = u.id\njoin calendar_events ce on c.id = ce.calendar_id\nwhere u.team_id = 260\nand (ce.start_time > '2025-02-21 00:00:00')\n;\n# calendar events 1207\n#\n\nselect * from opportunities where team_id = 260;\nSELECT * FROM crm_field_data WHERE object_id = 4696496;\n\nselect * from activities where crm_configuration_id = 356 and crm_provider_id IS NOT NULL;\nselect * from activities where crm_configuration_id IN (221) and provider NOT IN ('ms-teams', 'uploader', 'zoom-bot')\n# and type = 'conference' and status = 'scheduled' and activities.is_internal = 0\nand created_at > '2024-03-01 00:00:00'\norder by id desc; # 880 000, ringcentral, avaya\nSELECT * FROM participants WHERE activity_id = 26371744;\n\n# all activities 942 000 +\n# conference 7385 - scheduled 984 - external 343\n\nselect * from activities where id = 26321812;\nselect * from participants where activity_id = 26321812;\nselect * from participants where activity_id in (26414510,26414514,26414516,26414604,26414653,26414655);\nselect * from leads where id in (720428,689175,731546,645866,621037);\n\nselect * from users where id = 13841;\nselect * from opportunities where user_id = 9541;\nselect * from stages where id = 15900;\n\nselect * from accounts where\n# id IN (4160055,5053725,4965303,4896434)\nid in (4584518,3249934,3218025,3891133,3399450,4172999,4485161,3101785,4587203,3070816,2870343,2870341,3563940,4550846,3424464,3249963,2870342)\n;\n\nselect * from activities where id = 26654935;\nSELECT * FROM opportunities WHERE id = 4803458;\n\nSELECT * FROM opportunities where team_id = 260 and user_id = 13841 AND stage_id = 15900;\nSELECT id, uuid, provider, type, lead_id, account_id, contact_id, opportunity_id, stage_id, status, recording_state, title, actual_start_time, actual_end_time\nFROM activities WHERE user_id = 13841 AND opportunity_id IN (4729783, 4731717, 4731726, 4732064, 4732849, 4803458, 4813213);\n\nSELECT DISTINCT\n o.id, o.stage_id, s.name, a.title,\n a.*\nFROM activities a\n# INNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nINNER JOIN groups g ON u.group_id = g.id\nINNER JOIN opportunities o ON a.opportunity_id = o.id\nINNER JOIN stages s ON o.stage_id = s.id\nWHERE\n a.crm_configuration_id = 356\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 13841\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n AND team.uuid = uuid_to_bin('a607fba7-452e-4683-b2af-00d6cb52c93c')\n AND g.uuid = uuid_to_bin('b5d69e40-24a0-4c16-810b-5fa462299f94')\n\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n )\n )\n AND (\n# s.id = 15900\n s.uuid = uuid_to_bin('04ca1c26-c666-4268-a129-419c0acffd73')\n OR s.uuid IS NULL -- Include records without opportunity stage\n )\n\nORDER BY a.actual_end_time DESC;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%'; # 190, 162, 8474, willsc@leadforensics.com\nSELECT * FROM users WHERE team_id = 190;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 190\nand sa.provider = 'hubspot';\n\nselect * from role_user where user_id = 8474;\n\nselect * from crm_configurations where provider = 'bullhorn';\n\nSELECT * FROM opportunities WHERE uuid_to_bin('94578249-65ec-4205-90f2-7d1a7d5ab64a') = uuid;\nSELECT * FROM users WHERE uuid_to_bin('26dbadeb-926f-4150-b11b-771b9d4c2f9a') = uuid;\n\nSELECT * FROM opportunities WHERE id = 4732493;\nselect * from activities where opportunity_id = 4732493;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 443; # 358, 14315, andrea.romano@correrenaturale.com\nSELECT * FROM opportunities WHERE team_id = 443;\n\nSELECT a.id, a.type, a.user_id, a.status, a.deleted_at, u.name, u.email, u.team_id as activity_team_id, u.status, u.deleted_at, t.name, t.status, s.team_id as stage_team_id\nFROM activities AS a\nJOIN stages AS s ON a.stage_id = s.id\nJOIN users AS u ON u.id = a.user_id\nJOIN teams AS t ON t.id = s.team_id\nWHERE u.team_id <> s.team_id and t.id > 135;\n\n\nSELECT\n crm_configuration_id,\n crm_provider_id,\n COUNT(*) as duplicate_count,\n GROUP_CONCAT(id) as stage_ids,\n GROUP_CONCAT(name) as stage_names\nFROM stages\nGROUP BY crm_configuration_id, crm_provider_id\nHAVING COUNT(*) > 1\nORDER BY duplicate_count DESC;\n\nselect * from stages where id IN (14898,14907);\n\nselect * from business_processes;\n\nSELECT *\nFROM crm_configurations\nWHERE team_id IN (\n SELECT team_id\n FROM crm_configurations\n GROUP BY team_id\n HAVING COUNT(*) > 1\n)\nORDER BY team_id;\n\nSELECT *\nFROM teams\nWHERE crm_id IN (\n SELECT crm_id\n FROM teams\n GROUP BY crm_id\n HAVING COUNT(*) > 1\n)\nORDER BY crm_id;\n\n# ***************************************************************************\nselect * from crm_configurations where provider = 'integration-app';\nSELECT * FROM teams WHERE id = 443; # Correre Naturale 358 14315 andrea.romano@correrenaturale.com\nselect * from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect id, uuid, actual_end_time, crm_provider_id, is_internal, playbook_category_id, type, user_id, lead_id, contact_id, account_id, opportunity_id, status, title from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect * from team_features where team_id = 358;\nselect * from activity_summary_logs;\n\nselect * from teams where id = 406;\n\n# ************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sportfive%'; # 267, 202, 14637, srv.salesforce@sportfive.com\nselect * from activities where crm_configuration_id = 202 order by actual_end_time desc;\n\nSELECT * FROM users where id = 14637;\nSELECT * FROM teams where id = 267;\nSELECT * FROM groups where id = 1118;\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 202\n AND status IN ('completed', 'failed')\n AND recording_state != 'stopped'\n AND type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n AND (is_private = 0 OR user_id = 14637)\n AND (\n (\n actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n ) OR (\n actual_start_time IS NULL\n AND type IN ('sms-outbound', 'sms-inbound')\n AND created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND NOT EXISTS (\n SELECT 1\n FROM tracks\n WHERE\n tracks.activity_id = activities.id\n AND tracks.type IN ('audio', 'video')\n )\nORDER BY actual_end_time DESC;\n\nSELECT DISTINCT\n a.*\nFROM activities a\nINNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nWHERE\n a.crm_configuration_id = 202\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 14637\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND a.user_id = 14637\n )\n )\n\nORDER BY a.actual_end_time DESC\n;\n\nSELECT DISTINCT a.*\nFROM activities a\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams t ON u.team_id = t.id\n# INNER JOIN tracks tr ON a.id = tr.activity_id\n# INNER JOIN groups g ON u.group_id = g.id\nWHERE 1=1\n AND t.id = 267\n# AND t.uuid = uuid_to_bin('aed4927b-f1ea-499e-94c3-83762fd233e8')\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND tr.type NOT IN ('audio', 'video')\n AND (\n a.is_private = 0\n OR a.user_id = 14637\n )\n AND (\n (a.actual_start_time BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59')\n OR (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59'\n )\n )\n# and NOT EXISTS (\n# SELECT 1\n# FROM tracks t\n# WHERE t.activity_id = a.id\n# AND t.type IN ('audio', 'video')\n# )\n\nORDER BY a.actual_end_time DESC;\n\nSELECT * FROM tracks WHERE activity_id = 26485995;\n\nselect a.is_private, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 202\n# and a.is_internal = 0\nand (a.actual_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type IN (\"softphone\",\"softphone-inbound\",\"conference\",\"sms-inbound\")\nand a.status IN ('completed', 'failed')\n# and a.external_id is not null\norder by a.actual_end_time desc;\n\nselect * from activities a where a.crm_configuration_id = 202\nand a.actual_start_time between '2025-03-20 00:00:00' and '2025-03-21 00:00:00'\n# AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM teams WHERE name LIKE '%Tourlane%';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_field_data WHERE crm_field_id = 98809;\n\nselect * from users where status = 1 AND timezone = 'MDT';\n\nselect * from opportunities where id = 3769814;\nselect * from deal_risks where opportunity_id = 3769814;\n\nselect cp.* from crm_profiles cp\njoin users u on cp.user_id = u.id\njoin crm_configurations crm on cp.crm_configuration_id = crm.id\nwhere crm.provider = 'hubspot' AND u.status = 1 AND log_notes != 'none';\n\nselect * from crm_fields where id = 154575;\n\nselect * from team_features where feature = 'SUPPORTS_SYNC_MISSING_CALL_DISPOSITIONS';\nSELECT * FROM teams WHERE id = 176; # crm 148\nselect * from activities where crm_configuration_id = 148 and provider = 'hubspot' order by id desc;\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nselect * from crm_fields cf\njoin crm_configurations crm on crm.id = cf.crm_configuration_id\nwhere crm.provider = 'hubspot' and cf.object_type IN ('account', 'contact');\n\n# *********************************************************************************************\nSELECT * FROM users WHERE id IN (15415, 15418);\nSELECT * FROM groups WHERE id IN (1805,1806);\nSELECT * FROM playbooks WHERE id = 1860;\nSELECT * FROM playbook_categories WHERE id = 38634;\nSELECT * FROM crm_fields WHERE id = 189962;\n\nSELECT * FROM teams WHERE name = 'Pulsar Group'; # 472, 380, 15138 raza.gilani@vuelio.com\n\nSELECT * FROM crm_profiles WHERE user_id = 15415;\nSELECT * FROM social_accounts WHERE sociable_id = 15415 and provider = 'salesforce';\n\nselect * from sidekick_settings where team_id = 472;\n\nSELECT * FROM activities WHERE uuid_to_bin('452c58c7-b87c-4fdd-953e-d7af185e9588') = uuid; # 28617536, user: 15418\nSELECT * FROM activities WHERE uuid_to_bin('399114ee-d3a8-458c-bff5-5f654658db0a') = uuid; # 28344407, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('f0aa567f-0ab1-4bbb-96aa-37dcf184676b') = uuid; # 28580288, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('50c086b1-2770-4bca-b5ae-6bac22ec426b') = uuid; # 28566069, user: 15415\n\n# *********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%TeamTailor%'; # 109, 218, 13969, salesforce-integrations@teamtailor.com\nselect * from crm_configurations where id = 218;\nSELECT * FROM activities WHERE uuid_to_bin('e39b5857-7fdb-4f5a-951a-8d3ca69bb1b0') = uuid; # 28338765\nSELECT * FROM users WHERE id IN (13232, 13230);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n0057R00000EPL5HQAX Inez Ekblad\n\n1091cb81-5ea1-4951-a0ed-f00b568f0140 Triman Kaur\n\nSELECT * FROM crm_profiles WHERE user_id IN (13232, 13230);\n\n############################################################################################\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939 00UVg00000FLvnSMAT\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id IN (94491,94493,94498);\nSELECT * FROM users WHERE id = 13658;\nSELECT * FROM teams WHERE id = 109;\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Strengthscope%'; # 481, 390, 15420, katy.holden@strengthscope.comk\nSELECT * FROM stages WHERE crm_configuration_id = 390;\nselect * from business_processes where team_id = 481 and crm_configuration_id = 390;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 481\nand sa.provider = 'salesforce';\n\n\nSELECT * FROM users WHERE id = 15780; # team 462\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 462\nand sa.provider = 'hubspot';\n\n\nselect * from teams where id = 495;\nSELECT * FROM users WHERE id = 15794;\nselect * from social_accounts where sociable_id = 15794;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Flight%'; # 427, 333, 13752\nSELECT * FROM accounts WHERE team_id = 427 and crm_provider_id = '668731000183444517';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Group GTI%'; # 495, 407, 15794\nSELECT * FROM activities WHERE crm_configuration_id = 407\nand status = 'completed' and type = 'conference'\norder by id desc;\n\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from permission_role;\n\nselect * from activities where crm_configuration_id = 407 and status = 'completed' order by id desc;\nSELECT * FROM activities WHERE id = 29512773;\nSELECT * FROM activities WHERE id IN (29042721,28991325,29002874);\n\nSELECT al.* from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 407\n# and a.id IN (29042721,28991325,29002874);\n\nSELECT * FROM users WHERE id = 15794;\nSELECT * FROM users WHERE team_id = 495;\nSELECT * FROM social_accounts WHERE sociable_id = 15794;\nSELECT * FROM opportunities WHERE team_id = 495 and name like '%OC:%';\nSELECT * FROM contacts WHERE team_id = 495;\nSELECT * FROM leads WHERE team_id = 495;\nSELECT * FROM accounts WHERE team_id = 495;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 407;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 407;\nSELECT * FROM crm_configurations WHERE id = 407;\nSELECT * FROM opportunities WHERE team_id = 495 and close_date BETWEEN '2025-06-01' AND '2025-07-01'\nand user_id IS NOT NULL and is_closed = 1 and is_won = 1;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hamilton Court FX LLP%'; # 249, 187, 10103\nSELECT * FROM activities WHERE uuid_to_bin('4659c2bb-9a49-484e-9327-a3d66f1e028c') = uuid; # 28951064\nSELECT * FROM crm_fields WHERE crm_configuration_id = 187 and object_type IN ('tasks', 'event');\n\n# *********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Checkstep%'; # 325, 256, 11753\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 325\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid; # 28611085\nSELECT * FROM activities WHERE uuid_to_bin('980f0336-840b-4185-a5a9-30cf8b0749a8') = uuid; # 28719733\nSELECT * FROM activity_summary_logs where activity_id = 28719733;\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 356, 9444\nSELECT * FROM activity_summary_logs where sent_at BETWEEN '2025-06-09 11:38:00' AND '2025-06-09 11:40:00';\nSELECT * FROM leads WHERE crm_configuration_id = 356 and crm_provider_id = '230045001502770504'; # 823630\nselect * from activities where crm_configuration_id = 356 and lead_id = 841732;\n\nSELECT * from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 356;\n\nselect * from activities where crm_configuration_id = 356\nand actual_end_time between '2025-06-09 11:00:00' and '2025-06-09 12:00:00'\norder by id desc;\n\nselect * from accounts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from leads where crm_configuration_id = 356 and crm_provider_id = '230045001514275654' order by id desc;\nselect * from contacts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from opportunities where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\n\nselect * from team_features where team_id = 260;\nselect * from features where id IN (1,2,4,6,18,19,20,9,10,3,23,24,25,26,27);\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid;\n\nselect * from crm_fields;\nselect * from crm_layout_entities;\n\nSELECT * FROM teams WHERE name LIKE '%Optable%';\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Teamtailor%'; # 109, 218, 13969\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id in (94491,94493,94498);\n\nselect * from teams where crm_id IS NULL;\n\nSELECT * FROM activities WHERE uuid_to_bin('71aa8a0c-9652-4ff6-bee7-d98ae60abef6') = uuid;\n\n# *************************************************************************************************\nselect * from team_domains where team_id = 399;\nSELECT * FROM teams WHERE name LIKE '%Rydoo%'; # 399, 318, 13207\n\nselect * from calendar_events where id = 5163781;\nSELECT * FROM activities WHERE uuid_to_bin('be2cbc52-7fda-46a0-9ae0-25d9553eafc0') = uuid; # 29443896\nSELECT * FROM participants WHERE activity_id = 29443896;\nselect * from contacts where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\nselect * from leads where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\n\nselect * from activities where user_id = 14937 order by created_at ;\n\nselect * from users where id = 14937;\n\nselect * from contacts where crm_configuration_id = 318 and email LIKE '%@strawberry.se';\nselect * from opportunities where crm_configuration_id = 318 and crm_provider_id = '006Sf00000D1WOAIA3';\n\nselect * from activities a join participants p on a.id = p.activity_id\nwhere crm_configuration_id = 318 and a.updated_at > '2025-06-23T08:18:43Z';\n\n# *************************************************************************************************\nSELECT * FROM opportunities WHERE team_id = 379 and crm_provider_id = '39334518886';\nSELECT * FROM opportunities WHERE team_id = 379 order by id desc;\nSELECT * FROM teams WHERE id = 379;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379 and sociable_id = 13852\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations WHERE id = 307;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 307;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1027;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307\n and id IN (144750,144855,145158,155227);\n\nSELECT * FROM activities;\n\n\nselect * from activities\nwhere created_at > '2025-07-01 00:00:00'\n# and created_at < '2025-08-01 00:00:00'\nand type not in ('email-outbound', 'email-inbound')\nand account_id is null\nand contact_id is null\nand lead_id is null\nand opportunity_id is not null\n;\nSELECT * FROM activities WHERE id IN (25344155, 25344296, 25501909, 28692187);\nSELECT * FROM crm_configurations WHERE id in (335,301,200);\n\nselect * from crm_fields where crm_configuration_id = 230 and crm_provider_id = 'Age2__c';\n\nSELECT * FROM teams WHERE name LIKE '%Resights%';\nselect * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nselect * from teams where id IN (442);\n\nselect * from activities\nwhere crm_configuration_id = 177\nand provider = 'amazon-connect'\n order by id desc;\n# and source <> 'gong';\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nSELECT * FROM activities WHERE uuid_to_bin('cec1993b-a7e5-4164-b74d-d680ea51d2f2') = uuid;\n\n\nselect * from crm_configurations where store_transcript = 1;\nSELECT * FROM teams WHERE id IN (80);\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sedna%'; # 277, 213, 12594\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 277\nand sa.provider = 'salesforce';\n\nselect * from activities where crm_configuration_id = 213 and account_id = 2511502;\n\nselect * from crm_configurations where id = 213;\n\nSELECT * FROM activities WHERE uuid_to_bin('35aa790a-8569-4544-8268-66f9a4a26804') = uuid; # 33981604\nSELECT * FROM participants WHERE activity_id = 33981604;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 337 and object_type = 'task';\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 431\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b5476c7d-19a8-491b-869d-676ea1e857b6') = uuid; # 33997223\nselect * from activity_summary_logs where activity_id = 33997223;\nselect * from activity_notes where activity_id = 33997223;\n\n# ***********************************\nSELECT * FROM teams WHERE name LIKE '%Abode%';\n\n\nselect * from features;\nselect * from teams t\nwhere t.status = 'active'\nand id NOT IN (select team_id from team_features where feature_id = 9)\n;\n\n\nselect * from playbook_layouts where playbook_id = 1725;\nSELECT * FROM activities WHERE uuid_to_bin('65cc283c-4849-49e6-927f-4c281c8fea19') = uuid; # 34297473\nselect * from teams where id = 318;\nselect * from crm_configurations where team_id = 318;\nselect * from playbooks where team_id = 318;\nSELECT * FROM crm_layouts where crm_configuration_id = 381;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1259;\nSELECT * FROM crm_fields WHERE id IN (192938,192936,192939);\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1266;\nSELECT * FROM crm_fields WHERE id IN (192980,192991,192997,192998,193064,193067);\n\nSELECT * FROM activities WHERE uuid_to_bin('a902289b-285c-48eb-9cc2-6ad6c5d938f5') = uuid; # 34297533\n\n\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nSELECT * FROM crm_fields WHERE id IN (131668,131669,131670,131671,131676,131797);\n\nSELECT * FROM teams WHERE name LIKE '%Peripass%'; # 351, 281, 12124\nselect * from crm_layouts where crm_configuration_id = 281;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nselect * from crm_fields where crm_configuration_id = 281 and id in (131668,131669,131670,131671,131676,131797);\nselect * from opportunities where crm_configuration_id = 281;\n\nSELECT * FROM activities WHERE id IN (34211315, 34130075);\nSELECT * FROM crm_field_data WHERE object_id IN (34211315, 34130075);\n\nselect cf.crm_configuration_id, cle.crm_layout_id, cle.id, cf.id from crm_field_data cfd\njoin crm_layout_entities cle on cle.id = cfd.crm_layout_entity_id\njoin crm_fields cf on cle.crm_field_id = cf.id\nwhere cf.deleted_at IS NOT NULL\nGROUP BY cle.id, cf.id;\n\nselect * from crm_layouts where id IN (355);\nselect u.email, t.crm_id, t.* from teams t\njoin users u on u.id = t.owner_id\nwhere crm_id IN (97);\n\nSELECT * FROM crm_fields WHERE id = 96492;\n\nselect * from permissions;\nselect * from permission_role where permission_id = 247;\nselect * from roles;\n\nselect * from migrations;\n# *****************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('291e3c21-11cc-4728-aee7-6e4bedf86d72') = uuid; # 34262174\nSELECT * FROM crm_configurations WHERE id = 301;\nSELECT * FROM teams WHERE id = 343;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from participants where activity_id = 34262174;\n\nselect * from contacts where crm_configuration_id = 301 and id = 6976326;\nselect * from accounts where crm_configuration_id = 301 and id IN (4647626, 4815829); # 30761335403\n\nselect * from activity_summary_logs where activity_id = 34262174;\n\nselect * from users where status = 1 AND timezone = 'EST';\n\n# ****************************************************************************\nSELECT * FROM users WHERE id = 13869;\nSELECT * FROM crm_configurations WHERE id = 320;\nSELECT * FROM teams WHERE id = 401;\n\nSELECT * FROM activities WHERE uuid_to_bin('2228c16f-10be-48d5-90d4-67385219dc01') = uuid; # 29670601\n\nSELECT * FROM accounts WHERE id = 7761483;\nSELECT * FROM opportunities WHERE id = 6051814;\n\nSELECT * FROM teams WHERE name LIKE '%Seedlegals%';\n\n;select * from opportunities where updated_at > '2025-10-11' AND crm_provider_id = '34713761166';\n\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 177;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 577;\nSELECT * FROM crm_fields WHERE id IN (68458,68459,68480,68497,68524,68530,68554,68618,68662,68781,68810,68898,68981,69049,97467);\n\nSELECT t.id, crm.id, t.name, crm.sync_objects, crm.provider, crm.last_synced_at FROM crm_configurations crm join teams t on t.crm_id = crm.id\nwhere t.status = 'active' AND crm.provider = 'hubspot' AND crm.last_synced_at < '2025-10-22 00:00:00';\n\nSELECT * FROM activities WHERE uuid_to_bin('fa09449f-cba9-496a-b8f3-865cd3c72351') = uuid;\nSELECT * FROM crm_configurations where id = 184;\nSELECT * FROM teams WHERE id = 246;\nSELECT * FROM social_accounts WHERE sociable_id = 9259 and provider = 'hubspot';\n\nSELECT * FROM users WHERE email LIKE '%rhian.old@bud.co.uk%'; # 17700\nSELECT * FROM teams WHERE id = 551;\n\nSELECT * FROM crm_configurations WHERE id = 471;\nSELECT * FROM activities WHERE crm_configuration_id = 471 and crm_provider_id IS NOT NULL;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 471;\nSELECT * FROM crm_fields WHERE id = 307260;\nSELECT * FROM crm_field_values WHERE crm_field_id = 307260;\n\nselect * from crm_layouts where crm_configuration_id = 471;\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1547;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1548;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 551 and sa.provider = 'hubspot';\n\nSELECT * FROM teams WHERE name LIKE '%$PCS%';\n\n# ********************************************************************************************************\nselect * from crm_configurations crm\njoin teams t on t.crm_id = crm.id\nwhere t.status = 'active'\nand crm.provider = 'hubspot';\n\n# $slug = 'HUBSPOT_WEBHOOK_SYNC';\n# $team = Jiminny\\Models\\Team::find(2);\n# $feature = Feature::query()->where('slug', $slug)->first();\n# TeamFeature::query()->create(['feature_id' => $feature->getId(),'team_id' => $team->getId()]);\n\n# hubspot_webhook_metrics\n\nselect * from crm_configurations where id = 331; # 416\nSELECT * FROM teams WHERE id = 416;\nSELECT * FROM opportunities WHERE team_id = 190;\n\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%';\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 190 and sa.provider = 'hubspot';\n\n\n\nSELECT * FROM teams WHERE name LIKE '%Rapaport%'; # 431, 337\nSELECT * FROM teams where id = 431;\nSELECT * FROM crm_configurations where team_id = 431;\nSELECT * FROM activity_providers where team_id = 431;\nSELECT * FROM activities where crm_configuration_id = 337 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 431 and sa.provider = 'salesforce';\n\nSELECT * FROM teams WHERE name LIKE '%BiP%'; # 401, 320\nSELECT * FROM teams where id = 401;\nSELECT * FROM crm_configurations where team_id = 401;\nSELECT * FROM activity_providers where team_id = 401;\nSELECT * FROM activities where crm_configuration_id = 320 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 401 and sa.provider = 'salesforce';\n\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 307; # 379 - Story Terrace Inc , portalId: 3921157\nSELECT * FROM contacts WHERE team_id = 379 and updated_at > '2026-01-31 11:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-01 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 379 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 485; # 563 - LATUS Group (ad94d501-5d09-44fd-878f-ca3a9f8865c3) , portalId: 3904501\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 338; # 432 - Formalize , portalId: 9214205\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 432 and sa.provider = 'hubspot';\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 436; # 519 - Moxso , portalId: 25531989\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 96; # 119 - Nourish Care , portalId: 26617984\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 331; # 416 - The National College , portalId: 7213852\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 308; # 380 - Foodles , portalId: 7723616\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 379; # 471 - imat-uve , portalId: 9177354\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 465; # 545 - Spotler , portalId: 144759271\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 455; # 537 - indevis , portalId: 25666868\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 200; # 265 - Jobadder , portalId: 6426676\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 335; # 429 - Eletive , portalId: 6110563\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 363; # 456 - Global Group , portalId: 8901981\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 297; # 369 - Unbiased , portalId: 9229005\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 353; # 449 - Fuuse , portalId: 25781745\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 487; # 566 - Nimbus , portalId: 39982590\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 487;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1630;\nselect * from crm_fields where crm_configuration_id = 487 and\n(uuid_to_bin('4c6b2971-64d4-45b8-b377-427be758b5a5') = uuid or uuid_to_bin('59e368d8-65a0-4b77-b611-db37c99fbe68') = uuid);\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 420; # 506 - voiio , portalId: 145629154\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 479; # 558 - Momice , portalId: 535962\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 59; # 80 - Storyclash GmbH , portalId: 4268479\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 175; # 203 - Team iAM , portalId: 5534732\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 368; # 460 - OneTouch Health , portalId: 5534732183355\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\n\n\nselect * from users where id = 29643;\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM teams WHERE name LIKE '%Buynomics%'; # 462, 482, 14910\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\n# and description like '%The call focused on understanding Welch%'\norder by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 462 and sa.provider = 'salesforce';\n\nselect * from contacts where crm_configuration_id = 482 and name = 'Cyndall Hill'; # 15504749\nselect * from contacts where id = 10891096; # 482\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\nand contact_id = 15504749\norder by id desc;\n\nselect * from activities where id = 36793003; # 96cc7bc1-8622-4d27-92f4-baf664fc1a56, 00UOf00000PDdOXMA1\nselect * from transcription where id = 7646782;\nselect * from ai_prompts where transcription_id = 7646782;\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7a8471a3-847e-4822-802b-ddf426bbc252') = uuid; # 37370018\nSELECT * FROM activity_summary_logs WHERE activity_id = 37370018;\nSELECT * FROM teams WHERE id = 555;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 555 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7c17b8aa-09df-4f85-a0f7-51f47afd712d') = uuid; # 37395250\nSELECT * FROM activities WHERE uuid_to_bin('14d60388-260d-494b-aa0d-63fdb1c78026') = uuid; # 37395250\n\nSELECT a.* FROM activities a JOIN crm_configurations c on c.id = a.crm_configuration_id\nwhere a.type IN ('softphone', 'softphone-outbound') and c.provider = 'hubspot'\nand a.provider NOT IN ('hubspot')\n# and a.provider IN ('salesloft')\n# and c.id NOT IN (70)\n# and a.duration > 30\n# and actual_start_time > '2026-02-05 00:00:00'\norder by a.id desc;\n\nSELECT * FROM activities WHERE id = 37549787;\nSELECT * FROM crm_profiles WHERE user_id = 17613;\n\nSELECT * FROM crm_configurations WHERE id = 70;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 93 and sa.provider = 'hubspot';\n\nSELECT asf.activity_search_id, asf.id, asf.value\nFROM activity_search_filters asf\nWHERE asf.filter = 'group_id'\nAND asf.value IN (\n SELECT CONCAT(\n HEX(SUBSTR(uuid, 5, 4)), '-',\n HEX(SUBSTR(uuid, 3, 2)), '-',\n HEX(SUBSTR(uuid, 1, 2)), '-',\n HEX(SUBSTR(uuid, 9, 2)), '-',\n HEX(SUBSTR(uuid, 11))\n )\n FROM groups\n WHERE deleted_at IS NOT NULL\n);\n\nSELECT * FROM crm_configurations WHERE id = 373; # KPSBremen.de 465 # - no social account\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 465 and sa.provider = 'hubspot';\n\nselect * from crm_configurations where id = 494;\n\nSELECT * FROM teams WHERE name LIKE '%splose%'; # 572, 495, 18708\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 572 and sa.provider = 'pipedrive';\n\nselect * from opportunities where team_id = 572\n# and name like '%Onebright%'\n# and is_closed = 1 and is_won = 0\n order by id desc;\n\n\nselect * from users where deleted_at is null and status = 2;\n\nselect * from contacts where id = 17900517;\nselect * from accounts where id = 10109838;\nselect * from opportunities where id = 6955880;\n\nselect * from opportunity_contacts where opportunity_id = 6955880;\nselect * from opportunity_contacts where contact_id = 17900517;\n\nselect * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id\nwhere crm.provider != 'salesforce';\n\nSELECT * FROM activities WHERE uuid_to_bin('adcb8331-5988-4353-834e-383a355abba2') = uuid; # 38056424, crm 104659682404\nselect * from teams where id = 456;\nSELECT * FROM crm_configurations WHERE id = 363;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 456 and sa.provider = 'hubspot';\n\nselect * from crm_layouts where crm_configuration_id = 363;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id IN (1203, 1204, 1635);\nSELECT * FROM crm_fields WHERE id IN (181536, 181538, 213455);\n\nSELECT * FROM teams WHERE name LIKE '%Electric%'; # 342, 272, 12767\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and name like 'NORTHUMBRIA POL%'; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 order by remotely_created_at asc; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and updated_at > '2026-01-01 00:00:00';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 272 and object_type = 'opportunity';\nSELECT * FROM crm_field_values WHERE crm_field_id = 127164;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\n\nSELECT * FROM teams WHERE id = 472;\nSELECT * FROM crm_configurations WHERE id = 380;\nselect * from activities where id = 38285673; # 38285673\nSELECT * FROM users WHERE id = 16942;\nSELECT * FROM groups WHERE id = 1964;\nSELECT * FROM playbooks WHERE id = 2033;\n\nselect * from teams where created_at > '2026-03-09';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 499; # 1065\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1678;\n\nSELECT * FROM teams WHERE id = 575;\nselect * from opportunities where team_id = 575;\n\nSELECT * FROM activities WHERE uuid_to_bin('96b1261f-2357-49f9-ab38-23ce12008ea0') = uuid;\n\nselect * from contacts c\nwhere c.crm_configuration_id = 370 order by c.updated_at desc;\n\nSELECT * FROM participants where activity_id = 38833541;\nSELECT * FROM participants where activity_id = 39216301;\nSELECT * FROM activity_summary_logs where activity_id = 39216301;\nSELECT * FROM activities WHERE uuid_to_bin('c7d99fbe-1fb1-41f2-8f4d-52e2bf70e1e9') = uuid; # 38833541, crm 478116564181\nSELECT * FROM activities WHERE uuid_to_bin('2e6ff4d3-9faa-447a-a8c1-9acde4d885ae') = uuid; # 39216301, crm 480171536586\nselect * from crm_profiles where crm_configuration_id = 319 and crm_provider_id = 525785080;\nselect * from opportunities where crm_configuration_id = 319 and crm_provider_id = 410150124747;\nselect * from accounts where crm_configuration_id = 319 and crm_provider_id = 47150650569;\nselect * from contacts where crm_configuration_id = 319 and crm_provider_id IN ('665587441856', '742723347700');\n# owner 13236 525785080\n# contact 1 16779180 665587441856 - activity - Alex Howes alex@supportroom.com created 2026-01-26\n# contact 2 19247563 742723347700 - ash@supportroom.com 2026-03-24\n# company 4176133 47150650569\n# deal 7100953 410150124747\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 400 and sa.provider = 'hubspot';\n\nselect * from features;\nselect * from team_features where feature_id = 40;\n\nselect * from teams where id = 556; # owner: 18101, crm: 477\nselect * from crm_configurations where id = 477;\nSELECT * FROM users WHERE id = 18101;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 556 and sa.provider = 'integration-app';\n\nselect * from opportunities where id = 7594349;\nselect * from opportunity_stages where opportunity_id = 7594349 order by created_at desc;\nselect * from business_processes where id = 6024;\nselect * from business_process_stages where stage_id = 16352;\nselect * from business_process_stages where business_process_id = 6024;\nselect * from stages where team_id = 459;\nselect * from teams where id = 459;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 459 and sa.provider = 'hubspot';\n\nSELECT os.stage_id, s.crm_provider_id, s.name, COUNT(*) as cnt\nFROM opportunity_stages os\nJOIN stages s ON s.id = os.stage_id\nWHERE os.opportunity_id = 7594349\nGROUP BY os.stage_id, s.crm_provider_id, s.name\nORDER BY cnt DESC;\n\nSELECT s.id, s.crm_provider_id, s.name, s.team_id, s.crm_configuration_id\nFROM stages s\nJOIN business_process_stages bps ON bps.stage_id = s.id\nWHERE bps.business_process_id = 6024\nAND s.crm_provider_id = 'contractsent';\n\nselect * from stages where id IN (16352,20612,18281,7344,16378,16309,5036,15223,14535,6293,12098,11607)\n\nSELECT * FROM teams WHERE name LIKE '%Pulsar Group%'; # 472, 380, 15138, raza.gilani@vuelio.com\nselect * from playbooks where team_id = 472; # event 226147\nSELECT * FROM playbook_categories WHERE playbook_id = 2288;\nSELECT * FROM crm_fields WHERE id = 226147;\nSELECT * FROM crm_field_values WHERE crm_field_id = 226147;\n\nSELECT * FROM crm_configurations WHERE id = 380;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 472 and sa.provider = 'salesforce';","depth":4,"value":"SELECT * FROM team_features where team_id = 1;\n\nSELECT * FROM teams WHERE name LIKE '%Vixio%'; # 340,270,11922\nSELECT * FROM users WHERE team_id = 340; # 12015\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 340\nand sa.provider = 'salesforce';\n# and sa.provider = 'salesloft';\n\nselect * from crm_fields where crm_configuration_id = 270 and object_type = 'event';\n# 125558 - Event Type - Event_Type__c\n# 125552 - Event Status - Event_Status__c\n\nSELECT * FROM sidekick_settings WHERE team_id = 340;\n\nSELECT * FROM crm_field_values WHERE crm_field_id in (125552);\n\nselect * from activities where crm_configuration_id = 270\nand type = 'conference' and crm_provider_id IS NOT NULL\nand actual_start_time > '2024-09-16 09:00:00' order by scheduled_start_time;\n\nSELECT * FROM activities WHERE id = 20871677;\nSELECT * FROM crm_field_data WHERE activity_id = 20871677;\n\nselect * from crm_layouts where crm_configuration_id = 270;\nselect * from crm_layout_entities where crm_layout_id in (886,887);\n\nSELECT * FROM crm_configurations WHERE id = 270;\n\nselect * from playbooks where team_id = 340; # 1514\nselect * from groups where team_id = 340;\nSELECT * FROM crm_fields WHERE id IN (125393, 125401);\n\nselect g.name as 'team name', p.name as 'playbook name', f.label as 'activity type field' from groups g\njoin playbooks p on g.playbook_id = p.id\njoin crm_fields f on p.activity_field_id = f.id\nwhere g.team_id = 340;\n\nSELECT * FROM activities WHERE uuid_to_bin('0c180357-67d2-419e-a8c3-b832a3490770') = uuid; # 20448716\nselect * from crm_field_data where object_id = 20448716;\n\nselect * from activities where crm_configuration_id = 270 and provider = 'salesloft' order by id desc;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%CybSafe%'; # 343,273,12008\nselect * from opportunities where team_id = 343;\nselect * from opportunities where team_id = 343 and crm_provider_id = '18099102526';\nselect * from opportunities where team_id = 343 and account_id = 945217482;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from accounts where team_id = 343 order by name asc;\n\nselect * from stages where crm_configuration_id = 273 and type = 'opportunity';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Voyado%'; # 353,283,12143\nSELECT * FROM activities WHERE crm_configuration_id = 283 and account_id = 3777844 order by id desc;\nSELECT * FROM accounts WHERE team_id = 353 AND name LIKE '%Salesloft%';\nSELECT * FROM activities WHERE id = 20717903;\n\nselect * from participants where activity_id IN (20929172,20928605,20928468,20926272,20926271,20926270,20926269,20916499,20916454,20916436,20916435,20900015,20900014,20900013,20897312,20897243,20897241,20897237,20897232,20897229,20893648,20893231,20893230,20893229,20893228,20889784,20885039,20885038,20885037,20885036,20885035,20882728,20882708,20882703,20882702,20869828,20869811,20869806,20869801,20869799,20869798,20869796,20869795,20869794,20869761,20869760,20869759,20868688,20868687,20850340,20847195,20841710,20833967,20827021,20825307,20825305,20825297,20824615,20824400,20823927,20821760,20795588,20794233,20794057,20793710,20785811,20781789,20781394,20781307,20762651,20758453,20758282,20757323,20756643,20756636,20756629,20756627,20756606,20756605,20756604,20756603,20756602,20756600,20756599,20756598,20756595,20756594,20756589,20756587,20756577,20756573,20748918,20748386,20748385,20748384,20748383,20748382,20748381,20748380,20748379,20748377,20748375,20748373,20743301,20717905,20717904,20717903,20717901,20717899);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 353\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%modern world business solutions%'; # 345,275,12016, l.atkinson@mwbsolutions.co.uk\nSELECT * FROM activities WHERE uuid_to_bin('3921d399-3fef-4609-a291-b0097a166d43') = uuid;\n# id: 20940638, user: 12022, contact: 5305871\nSELECT * FROM activity_summary_logs WHERE activity_id = 20940638;\nselect * from contacts where team_id = 345 and crm_provider_id = '30891432415' order by name asc; # 5305871\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 345\nand sa.provider = 'hubspot';\n\nselect * from users where team_id = 345 and id = 12022;\nSELECT * FROM crm_profiles WHERE user_id = 12022;\nSELECT * FROM participants WHERE activity_id = 20940638;\nSELECT * FROM users u\nJOIN crm_profiles cp ON u.id = cp.user_id\nWHERE u.team_id = 345;\n\nselect * from contacts where team_id = 345 and crm_provider_id = '30880813535' order by name desc; # 5305871\n\nselect * from team_features where team_id = 345;\nSELECT * FROM activities WHERE uuid_to_bin('11701e2d-2f82-4dab-a616-1db4fad238df') = uuid; # 21115197\nSELECT * FROM participants WHERE activity_id = 20897406;\n\n\n\nSELECT * FROM activities WHERE uuid_to_bin('63ba55cd-1abc-447d-83da-0137000005b7') = uuid; # 20953912\nSELECT * FROM activities WHERE crm_configuration_id = 275 and provider = 'ringcentral' and title like '%1252629100%';\n\n\nSELECT * FROM activities WHERE id = 20946641;\nSELECT * FROM crm_profiles WHERE user_id = 10211;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120,97,10984, triger@lunio.ai\nSELECT * FROM opportunities WHERE crm_configuration_id = 97 and crm_provider_id = '006N1000006c5PpIAI';\nselect * from stages where crm_configuration_id = 97 and type = 'opportunity';\nselect * from opportunities where team_id = 120;\n\n\nselect * from crm_configurations crm join teams t on crm.id = t.crm_id\nwhere 1=1\nAND t.current_billing_plan IS NOT NULL\nAND crm.auto_sync_activity = 0\nand crm.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Exclaimer%'; # 270,205,10053,james.lewendon@exclaimer.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 270\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b54df794-2a9a-4957-8d80-09a600ead5f8') = uuid; # 21637956\nSELECT * FROM crm_profiles WHERE user_id = 11446;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cygnetise%'; # 372,300,12554, alex.chikly@cygnetise.com\nselect * from playbooks where team_id = 372;\nselect * from crm_fields where crm_configuration_id = 300 and object_type = 'event'; # 141340\nSELECT * FROM crm_field_values WHERE crm_field_id = 141340;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 372\nand sa.provider = 'salesforce';\n\nselect * from crm_profiles where crm_configuration_id = 300;\nSELECT * FROM crm_configurations WHERE team_id = 372;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Planday%'; # 291,242,11501,mfa@planday.com\nSELECT * FROM opportunities WHERE team_id = 291 and crm_provider_id = '006bG000005DO86QAG'; # 3207756\nselect * from crm_field_data where object_id = 3207756;\nSELECT * FROM crm_fields WHERE id = 111834;\n\nselect f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value\nFROM crm_fields f\nJOIN crm_field_data fd ON f.id = fd.crm_field_id\nWHERE f.crm_configuration_id = 242\nAND f.object_type = 'opportunity'\nAND fd.object_id IN (3207756)\nORDER BY fd.object_id, fd.updated_at;\n\nSELECT * FROM crm_configurations WHERE auto_connect = 1;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150,salesforce-admin@tourlane.com\nselect * from group_deal_risk_types drgt join groups g on drgt.group_id = g.id\nwhere g.team_id = 187;\n\nselect * from `groups` where team_id = 187;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 187\nand sa.provider = 'salesforce';\n\n# Destination - 98870 - Destination__c\n# Stage - 79014 - StageName\n# Land Arrangement - 98856 - Land_Arrangement__c\n# Flight - 98848 - Flight__c\n# Last activity date - 98812 - LastActivityDate\n# Last modified date - 98809 - LastModifiedDate\n# Last inbound mail timestamp - 99151 - Last_Inbound_Mail_Timestamp__c\n# next call - 98864 - Next_Call__c\n\nselect * from crm_fields where crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\nselect * from opportunities where team_id = 187 and name LIKE'%Muriel Sal%';\nselect * from opportunities where team_id = 187 and user_id = 9951 and is_closed = 0;\nselect * from activities where opportunity_id = 3538248;\n\nSELECT * FROM crm_profiles WHERE user_id = 8150;\n\nselect * from deal_risks where opportunity_id = 3538248;\n\nselect * from teams where crm_id IS NULL;\n\nSELECT opp.id AS opportunity_id,\n u.group_id AS group_id,\n MAX(\n CASE\n WHEN a.type IN (\"sms-inbound\", \"sms-outbound\") THEN a.created_at\n ELSE a.actual_end_time\n END) as last_date\nFROM opportunities opp\nleft join activities a on a.opportunity_id = opp.id\ninner join users u on opp.user_id = u.id\nwhere opp.user_id IN (9951)\n\nAND opp.is_closed = 0\nand a.status IN ('completed', 'received', 'delivered') OR a.status IS NULL\ngroup by opp.id;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cybsafe%'; # 343,301,12008,polly.morphew@cybsafe.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 301;\nSELECT * FROM contacts WHERE id = 6612363;\nSELECT * FROM accounts WHERE id = 4235676;\nSELECT * FROM opportunities WHERE crm_configuration_id = 301 and crm_provider_id = 32983784868;\nselect * from opportunity_stages where opportunity_id = 4503759;\n# SELECT * FROM opportunities WHERE id = 4569937;\n\nselect * from activities where crm_configuration_id = 301;\nSELECT * FROM activities WHERE uuid_to_bin('d3b2b28b-c3d0-4c2d-8ed0-eef42855278a') = uuid; # 26330370\nSELECT * FROM participants WHERE activity_id = 26330370;\n\nSELECT * FROM teams WHERE id = 375;\nselect * from playbooks where team_id = 375;\n\nselect * from stages where crm_configuration_id = 301 and type = 'opportunity';\n\nselect * from teams;\nselect * from contact_roles;\n\nSELECT * FROM opportunities WHERE team_id = 343 and user_id = 12871 and close_date >= '2024-11-01';\n\nselect * from users u join crm_profiles cp on cp.user_id = u.id where u.team_id = 343;\n\nSELECT * FROM crm_field_data WHERE object_id = 3771706;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 301 and object_type = 'opportunity'\nand crm_provider_id LIKE \"%traffic_light%\";\nSELECT * FROM crm_field_values WHERE crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531);\n\nSELECT fd.* FROM opportunities o\nJOIN crm_field_data fd ON o.id = fd.object_id\nWHERE o.team_id = 343\n# and o.user_id IS NOT NULL\nand fd.crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531)\nand fd.value != ''\norder by value desc\n# group by o.id\n;\n\nSELECT * FROM opportunities WHERE id = 3769843;\n\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150, salesforce-admin@tourlane.com\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding Circle%'; # 220,177,8603,aswini.mishra@fundingcircle.com\nSELECT * FROM activities WHERE uuid_to_bin('7a40e99b-3b37-4bb1-b983-325b81801c01') = uuid; # 23139839\n\n\nSELECT * FROM opportunities WHERE id = 3855992;\n\nSELECT * FROM users WHERE name LIKE '%Angus Pollard%'; # 8988\n\nSELECT * FROM teams WHERE name LIKE '%Story Terrace%'; # 379, 307, 12894\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307 and object_type != 'opportunity';\n\nselect * from contacts where team_id = 379 and name like '%bebro%'; # 5874411, crm: 77229348507\nSELECT * FROM crm_field_data WHERE object_id = 5874411;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379\nand sa.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%mentio%'; # 117, 94, 6371, nikhil.kumar@mention-me.com\nSELECT * FROM activities WHERE uuid_to_bin('82939311-1af0-4506-8546-21e8d1fdf2c1') = uuid;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tourlane%'; # 187, 209, 8150, salesforce-admin@tourlane.com\nSELECT * FROM opportunities WHERE team_id = 187 and crm_provider_id = '006Se000008xfvNIAQ'; # 3537793\nselect * from generic_ai_prompts where subject_id = 3537793;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120, 97, 10984, triger@lunio.ai\nSELECT * FROM crm_configurations WHERE id = 97;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 97;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 355;\nSELECT * FROM crm_fields WHERE id = 32682;\n\nselect cfd.value, o.* from opportunities o\njoin crm_field_data cfd on o.id = cfd.object_id and cfd.crm_field_id = 32682\nwhere team_id = 120\nand cfd.value != ''\n;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 120\nand sa.provider = 'salesforce';\n\nselect * from opportunities where team_id = 120 and crm_provider_id = '006N1000007X8MAIA0';\nSELECT * FROM crm_field_data WHERE object_id = 2313439;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 410;\nSELECT * FROM teams WHERE name LIKE '%Local Business Oxford%';\nselect * from scorecards where team_id = 410;\nselect * from scorecard_rules;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding%'; # 220, 177, 8603, aswini.mishra@fundingcircle.com\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\njoin users u on o.user_id = u.id\nwhere a.crm_configuration_id = 177 and a.type LIKE '%email-out%'\n# and a.actual_end_time > '2024-12-16 00:00:00'\n# and o.remotely_created_at > '2024-12-01 00:00:00'\n# and u.group_id = 1014\nand u.id = 9021\norder by a.id desc;\nSELECT * FROM opportunities WHERE id in (3981384,4017346);\nSELECT * FROM users WHERE team_id = 220 and id IN (8775, 11435);\n\nselect * from users where id = 9021;\nselect * from inboxes where user_id = 9021;\n\nselect * from inbox_emails where inbox_id = 1349 and email_date > '2024-12-18 00:00:00';\n\nselect * from email_messages where team_id = 220\nand orig_date > '2024-12-16 00:00:00' and orig_date < '2024-12-19 00:00:00'\nand subject LIKE '%Personal%'\n# and 'from' = 'credit@fundingcircle.com'\n;\n\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\nwhere a.user_id = 9021 and a.type LIKE '%email-out%'\nand a.actual_end_time > '2024-12-18 00:00:00'\nand o.user_id IS NOT NULL\nand o.remotely_created_at > '2024-12-01 00:00:00'\norder by a.id desc;\n\nSELECT * FROM opportunities WHERE team_id = 220 and name LIKE '%Right Car move Limited%' and id = 3966852;\nselect * from activities where crm_configuration_id = 177 and type LIKE '%email%' and opportunity_id = 3966852 order by id desc;\n\nselect * from team_settings where name IN ('useCloseDate');\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hurree%'; # 104, 81, 6175, jfarrell@hurree.co\nSELECT * FROM opportunities WHERE team_id = 104 and name = 'PropOp';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 104\nand sa.provider = 'hubspot';\n\nselect * from crm_configurations where last_synced_at > '2025-01-19 01:00:00'\nselect * from teams where crm_id IS NULL;\n\nselect t.name as 'team', u.name as 'owner', u.email, u.phone\nfrom teams t\njoin activity_providers ap on t.id = ap.team_id\njoin users u on t.owner_id = u.id\nwhere 1=1\n and t.status = 'active'\n and ap.is_enabled = 1\n# and u.status = 1\n and ap.provider = 'ms-teams';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nSELECT * FROM teams WHERE id = 442; # 14293\nselect * from users where team_id = 442;\nselect * from social_accounts sa where sa.sociable_id = 14293;\nselect * from invitations where team_id = 442;\n\n# ********************************************************************************************************\nSELECT * FROM users WHERE email LIKE '%nea.liikamaa@eletive.com%'; # 14022\nSELECT * FROM teams WHERE id = 429;\nselect * from opportunities where team_id = 429 and crm_provider_id IN (16157415775, 22246219645);\nselect * from activities where opportunity_id in (4340436,4353519);\n\nselect * from transcription where activity_id IN (25630961,25381771);\nselect * from generic_ai_prompts where subject_id IN (4353519);\n\nSELECT\n a.id as activity_id,\n a.opportunity_id,\n a.type as activity_type,\n a.language,\n CONCAT(a.title, a.description) AS mail_content,\n e.from AS mail_from,\n e.to AS mail_to,\n e.subject AS mail_subject,\n e.body AS mail_body,\n p.type as prompt_type,\n p.status as prompt_status,\n p.content AS prompt_content,\n a.actual_start_time as created_at\nFROM activities a\n LEFT JOIN ai_prompts p ON a.transcription_id = p.transcription_id AND p.deleted_at IS NULL\n LEFT JOIN email_messages e ON a.id = e.activity_id\nWHERE a.actual_start_time > '2024-01-01 00:00:00'\n AND a.opportunity_id IN (4353519)\n AND a.status IN ('completed', 'received', 'delivered')\n AND a.deleted_at IS NULL\n AND a.type NOT IN ('sms-inbound', 'sms-outbound')\nORDER BY a.opportunity_id ASC, a.id ASC;\n\nSELECT * FROM users WHERE name LIKE '%George Fierstone%'; # 14293\nSELECT * FROM teams WHERE id = 442;\nSELECT * FROM crm_configurations WHERE id = 344;\nselect * from team_features where team_id = 442;\nselect * from groups where team_id = 442;\nselect * from playbooks where team_id = 442;\nselect * from playbook_categories where playbook_id = 1729;\nselect * from crm_fields where crm_configuration_id = 344 and id = 172024;\nSELECT * FROM crm_field_values WHERE crm_field_id = 172024;\nselect * from crm_layouts where crm_configuration_id = 344;\nselect * from playbook_layouts where playbook_id = 1729;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 221, 9444\n\nselect s.*\n# , s.sent_at, u.name, a.*\nfrom activity_summary_logs s\ninner join activities a on a.id = s.activity_id\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 356\nand s.sent_at > date_sub(now(), interval 60 day)\norder by a.actual_end_time desc;\n\nselect * from activities a\n# inner join activity_summary_logs s on s.activity_id = a.id\nwhere a.crm_configuration_id = 356 and a.actual_end_time > date_sub(now(), interval 60 day)\n# and a.crm_provider_id is not null\n# and provider <> 'ringcentral'\nand status = 'completed'\norder by a.actual_end_time desc;\n\nselect * from teams order by id desc; # 17328, 32, 17830, integration-account@jiminny.com\nSELECT * FROM users;\nSELECT * FROM users where team_id = 260 and status = 1; # 201 - 150 active\nSELECT * FROM teams WHERE id = 260;\nselect * from team_settings where team_id = 260;\nselect * from crm_configurations where team_id = 260;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 356;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1184;\n\nselect * from accounts where crm_configuration_id = 221 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 221 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 221 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 221 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 221 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 221;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 221 order by id desc;\nselect * from stages where crm_configuration_id = 221 order by id desc;\n\nselect * from accounts where crm_configuration_id = 356 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 356 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 356 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 356 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 356 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 356;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 356 order by id desc;\nselect * from stages where crm_configuration_id = 356 order by id desc;\n\nselect * from playbooks where team_id = 260 order by id desc; # 4 (2 deleted)\nselect * from groups where team_id = 260 order by id desc; # 27 groups, (2 deleted)\nselect * from playbook_layouts where playbook_id IN (1410,1409,1276,1254); # 4\nselect ce.* from calendars c\njoin users u on c.user_id = u.id\njoin calendar_events ce on c.id = ce.calendar_id\nwhere u.team_id = 260\nand (ce.start_time > '2025-02-21 00:00:00')\n;\n# calendar events 1207\n#\n\nselect * from opportunities where team_id = 260;\nSELECT * FROM crm_field_data WHERE object_id = 4696496;\n\nselect * from activities where crm_configuration_id = 356 and crm_provider_id IS NOT NULL;\nselect * from activities where crm_configuration_id IN (221) and provider NOT IN ('ms-teams', 'uploader', 'zoom-bot')\n# and type = 'conference' and status = 'scheduled' and activities.is_internal = 0\nand created_at > '2024-03-01 00:00:00'\norder by id desc; # 880 000, ringcentral, avaya\nSELECT * FROM participants WHERE activity_id = 26371744;\n\n# all activities 942 000 +\n# conference 7385 - scheduled 984 - external 343\n\nselect * from activities where id = 26321812;\nselect * from participants where activity_id = 26321812;\nselect * from participants where activity_id in (26414510,26414514,26414516,26414604,26414653,26414655);\nselect * from leads where id in (720428,689175,731546,645866,621037);\n\nselect * from users where id = 13841;\nselect * from opportunities where user_id = 9541;\nselect * from stages where id = 15900;\n\nselect * from accounts where\n# id IN (4160055,5053725,4965303,4896434)\nid in (4584518,3249934,3218025,3891133,3399450,4172999,4485161,3101785,4587203,3070816,2870343,2870341,3563940,4550846,3424464,3249963,2870342)\n;\n\nselect * from activities where id = 26654935;\nSELECT * FROM opportunities WHERE id = 4803458;\n\nSELECT * FROM opportunities where team_id = 260 and user_id = 13841 AND stage_id = 15900;\nSELECT id, uuid, provider, type, lead_id, account_id, contact_id, opportunity_id, stage_id, status, recording_state, title, actual_start_time, actual_end_time\nFROM activities WHERE user_id = 13841 AND opportunity_id IN (4729783, 4731717, 4731726, 4732064, 4732849, 4803458, 4813213);\n\nSELECT DISTINCT\n o.id, o.stage_id, s.name, a.title,\n a.*\nFROM activities a\n# INNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nINNER JOIN groups g ON u.group_id = g.id\nINNER JOIN opportunities o ON a.opportunity_id = o.id\nINNER JOIN stages s ON o.stage_id = s.id\nWHERE\n a.crm_configuration_id = 356\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 13841\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n AND team.uuid = uuid_to_bin('a607fba7-452e-4683-b2af-00d6cb52c93c')\n AND g.uuid = uuid_to_bin('b5d69e40-24a0-4c16-810b-5fa462299f94')\n\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n )\n )\n AND (\n# s.id = 15900\n s.uuid = uuid_to_bin('04ca1c26-c666-4268-a129-419c0acffd73')\n OR s.uuid IS NULL -- Include records without opportunity stage\n )\n\nORDER BY a.actual_end_time DESC;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%'; # 190, 162, 8474, willsc@leadforensics.com\nSELECT * FROM users WHERE team_id = 190;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 190\nand sa.provider = 'hubspot';\n\nselect * from role_user where user_id = 8474;\n\nselect * from crm_configurations where provider = 'bullhorn';\n\nSELECT * FROM opportunities WHERE uuid_to_bin('94578249-65ec-4205-90f2-7d1a7d5ab64a') = uuid;\nSELECT * FROM users WHERE uuid_to_bin('26dbadeb-926f-4150-b11b-771b9d4c2f9a') = uuid;\n\nSELECT * FROM opportunities WHERE id = 4732493;\nselect * from activities where opportunity_id = 4732493;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 443; # 358, 14315, andrea.romano@correrenaturale.com\nSELECT * FROM opportunities WHERE team_id = 443;\n\nSELECT a.id, a.type, a.user_id, a.status, a.deleted_at, u.name, u.email, u.team_id as activity_team_id, u.status, u.deleted_at, t.name, t.status, s.team_id as stage_team_id\nFROM activities AS a\nJOIN stages AS s ON a.stage_id = s.id\nJOIN users AS u ON u.id = a.user_id\nJOIN teams AS t ON t.id = s.team_id\nWHERE u.team_id <> s.team_id and t.id > 135;\n\n\nSELECT\n crm_configuration_id,\n crm_provider_id,\n COUNT(*) as duplicate_count,\n GROUP_CONCAT(id) as stage_ids,\n GROUP_CONCAT(name) as stage_names\nFROM stages\nGROUP BY crm_configuration_id, crm_provider_id\nHAVING COUNT(*) > 1\nORDER BY duplicate_count DESC;\n\nselect * from stages where id IN (14898,14907);\n\nselect * from business_processes;\n\nSELECT *\nFROM crm_configurations\nWHERE team_id IN (\n SELECT team_id\n FROM crm_configurations\n GROUP BY team_id\n HAVING COUNT(*) > 1\n)\nORDER BY team_id;\n\nSELECT *\nFROM teams\nWHERE crm_id IN (\n SELECT crm_id\n FROM teams\n GROUP BY crm_id\n HAVING COUNT(*) > 1\n)\nORDER BY crm_id;\n\n# ***************************************************************************\nselect * from crm_configurations where provider = 'integration-app';\nSELECT * FROM teams WHERE id = 443; # Correre Naturale 358 14315 andrea.romano@correrenaturale.com\nselect * from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect id, uuid, actual_end_time, crm_provider_id, is_internal, playbook_category_id, type, user_id, lead_id, contact_id, account_id, opportunity_id, status, title from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect * from team_features where team_id = 358;\nselect * from activity_summary_logs;\n\nselect * from teams where id = 406;\n\n# ************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sportfive%'; # 267, 202, 14637, srv.salesforce@sportfive.com\nselect * from activities where crm_configuration_id = 202 order by actual_end_time desc;\n\nSELECT * FROM users where id = 14637;\nSELECT * FROM teams where id = 267;\nSELECT * FROM groups where id = 1118;\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 202\n AND status IN ('completed', 'failed')\n AND recording_state != 'stopped'\n AND type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n AND (is_private = 0 OR user_id = 14637)\n AND (\n (\n actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n ) OR (\n actual_start_time IS NULL\n AND type IN ('sms-outbound', 'sms-inbound')\n AND created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND NOT EXISTS (\n SELECT 1\n FROM tracks\n WHERE\n tracks.activity_id = activities.id\n AND tracks.type IN ('audio', 'video')\n )\nORDER BY actual_end_time DESC;\n\nSELECT DISTINCT\n a.*\nFROM activities a\nINNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nWHERE\n a.crm_configuration_id = 202\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 14637\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND a.user_id = 14637\n )\n )\n\nORDER BY a.actual_end_time DESC\n;\n\nSELECT DISTINCT a.*\nFROM activities a\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams t ON u.team_id = t.id\n# INNER JOIN tracks tr ON a.id = tr.activity_id\n# INNER JOIN groups g ON u.group_id = g.id\nWHERE 1=1\n AND t.id = 267\n# AND t.uuid = uuid_to_bin('aed4927b-f1ea-499e-94c3-83762fd233e8')\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND tr.type NOT IN ('audio', 'video')\n AND (\n a.is_private = 0\n OR a.user_id = 14637\n )\n AND (\n (a.actual_start_time BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59')\n OR (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59'\n )\n )\n# and NOT EXISTS (\n# SELECT 1\n# FROM tracks t\n# WHERE t.activity_id = a.id\n# AND t.type IN ('audio', 'video')\n# )\n\nORDER BY a.actual_end_time DESC;\n\nSELECT * FROM tracks WHERE activity_id = 26485995;\n\nselect a.is_private, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 202\n# and a.is_internal = 0\nand (a.actual_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type IN (\"softphone\",\"softphone-inbound\",\"conference\",\"sms-inbound\")\nand a.status IN ('completed', 'failed')\n# and a.external_id is not null\norder by a.actual_end_time desc;\n\nselect * from activities a where a.crm_configuration_id = 202\nand a.actual_start_time between '2025-03-20 00:00:00' and '2025-03-21 00:00:00'\n# AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM teams WHERE name LIKE '%Tourlane%';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_field_data WHERE crm_field_id = 98809;\n\nselect * from users where status = 1 AND timezone = 'MDT';\n\nselect * from opportunities where id = 3769814;\nselect * from deal_risks where opportunity_id = 3769814;\n\nselect cp.* from crm_profiles cp\njoin users u on cp.user_id = u.id\njoin crm_configurations crm on cp.crm_configuration_id = crm.id\nwhere crm.provider = 'hubspot' AND u.status = 1 AND log_notes != 'none';\n\nselect * from crm_fields where id = 154575;\n\nselect * from team_features where feature = 'SUPPORTS_SYNC_MISSING_CALL_DISPOSITIONS';\nSELECT * FROM teams WHERE id = 176; # crm 148\nselect * from activities where crm_configuration_id = 148 and provider = 'hubspot' order by id desc;\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nselect * from crm_fields cf\njoin crm_configurations crm on crm.id = cf.crm_configuration_id\nwhere crm.provider = 'hubspot' and cf.object_type IN ('account', 'contact');\n\n# *********************************************************************************************\nSELECT * FROM users WHERE id IN (15415, 15418);\nSELECT * FROM groups WHERE id IN (1805,1806);\nSELECT * FROM playbooks WHERE id = 1860;\nSELECT * FROM playbook_categories WHERE id = 38634;\nSELECT * FROM crm_fields WHERE id = 189962;\n\nSELECT * FROM teams WHERE name = 'Pulsar Group'; # 472, 380, 15138 raza.gilani@vuelio.com\n\nSELECT * FROM crm_profiles WHERE user_id = 15415;\nSELECT * FROM social_accounts WHERE sociable_id = 15415 and provider = 'salesforce';\n\nselect * from sidekick_settings where team_id = 472;\n\nSELECT * FROM activities WHERE uuid_to_bin('452c58c7-b87c-4fdd-953e-d7af185e9588') = uuid; # 28617536, user: 15418\nSELECT * FROM activities WHERE uuid_to_bin('399114ee-d3a8-458c-bff5-5f654658db0a') = uuid; # 28344407, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('f0aa567f-0ab1-4bbb-96aa-37dcf184676b') = uuid; # 28580288, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('50c086b1-2770-4bca-b5ae-6bac22ec426b') = uuid; # 28566069, user: 15415\n\n# *********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%TeamTailor%'; # 109, 218, 13969, salesforce-integrations@teamtailor.com\nselect * from crm_configurations where id = 218;\nSELECT * FROM activities WHERE uuid_to_bin('e39b5857-7fdb-4f5a-951a-8d3ca69bb1b0') = uuid; # 28338765\nSELECT * FROM users WHERE id IN (13232, 13230);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n0057R00000EPL5HQAX Inez Ekblad\n\n1091cb81-5ea1-4951-a0ed-f00b568f0140 Triman Kaur\n\nSELECT * FROM crm_profiles WHERE user_id IN (13232, 13230);\n\n############################################################################################\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939 00UVg00000FLvnSMAT\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id IN (94491,94493,94498);\nSELECT * FROM users WHERE id = 13658;\nSELECT * FROM teams WHERE id = 109;\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Strengthscope%'; # 481, 390, 15420, katy.holden@strengthscope.comk\nSELECT * FROM stages WHERE crm_configuration_id = 390;\nselect * from business_processes where team_id = 481 and crm_configuration_id = 390;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 481\nand sa.provider = 'salesforce';\n\n\nSELECT * FROM users WHERE id = 15780; # team 462\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 462\nand sa.provider = 'hubspot';\n\n\nselect * from teams where id = 495;\nSELECT * FROM users WHERE id = 15794;\nselect * from social_accounts where sociable_id = 15794;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Flight%'; # 427, 333, 13752\nSELECT * FROM accounts WHERE team_id = 427 and crm_provider_id = '668731000183444517';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Group GTI%'; # 495, 407, 15794\nSELECT * FROM activities WHERE crm_configuration_id = 407\nand status = 'completed' and type = 'conference'\norder by id desc;\n\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from permission_role;\n\nselect * from activities where crm_configuration_id = 407 and status = 'completed' order by id desc;\nSELECT * FROM activities WHERE id = 29512773;\nSELECT * FROM activities WHERE id IN (29042721,28991325,29002874);\n\nSELECT al.* from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 407\n# and a.id IN (29042721,28991325,29002874);\n\nSELECT * FROM users WHERE id = 15794;\nSELECT * FROM users WHERE team_id = 495;\nSELECT * FROM social_accounts WHERE sociable_id = 15794;\nSELECT * FROM opportunities WHERE team_id = 495 and name like '%OC:%';\nSELECT * FROM contacts WHERE team_id = 495;\nSELECT * FROM leads WHERE team_id = 495;\nSELECT * FROM accounts WHERE team_id = 495;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 407;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 407;\nSELECT * FROM crm_configurations WHERE id = 407;\nSELECT * FROM opportunities WHERE team_id = 495 and close_date BETWEEN '2025-06-01' AND '2025-07-01'\nand user_id IS NOT NULL and is_closed = 1 and is_won = 1;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hamilton Court FX LLP%'; # 249, 187, 10103\nSELECT * FROM activities WHERE uuid_to_bin('4659c2bb-9a49-484e-9327-a3d66f1e028c') = uuid; # 28951064\nSELECT * FROM crm_fields WHERE crm_configuration_id = 187 and object_type IN ('tasks', 'event');\n\n# *********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Checkstep%'; # 325, 256, 11753\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 325\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid; # 28611085\nSELECT * FROM activities WHERE uuid_to_bin('980f0336-840b-4185-a5a9-30cf8b0749a8') = uuid; # 28719733\nSELECT * FROM activity_summary_logs where activity_id = 28719733;\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 356, 9444\nSELECT * FROM activity_summary_logs where sent_at BETWEEN '2025-06-09 11:38:00' AND '2025-06-09 11:40:00';\nSELECT * FROM leads WHERE crm_configuration_id = 356 and crm_provider_id = '230045001502770504'; # 823630\nselect * from activities where crm_configuration_id = 356 and lead_id = 841732;\n\nSELECT * from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 356;\n\nselect * from activities where crm_configuration_id = 356\nand actual_end_time between '2025-06-09 11:00:00' and '2025-06-09 12:00:00'\norder by id desc;\n\nselect * from accounts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from leads where crm_configuration_id = 356 and crm_provider_id = '230045001514275654' order by id desc;\nselect * from contacts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from opportunities where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\n\nselect * from team_features where team_id = 260;\nselect * from features where id IN (1,2,4,6,18,19,20,9,10,3,23,24,25,26,27);\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid;\n\nselect * from crm_fields;\nselect * from crm_layout_entities;\n\nSELECT * FROM teams WHERE name LIKE '%Optable%';\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Teamtailor%'; # 109, 218, 13969\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id in (94491,94493,94498);\n\nselect * from teams where crm_id IS NULL;\n\nSELECT * FROM activities WHERE uuid_to_bin('71aa8a0c-9652-4ff6-bee7-d98ae60abef6') = uuid;\n\n# *************************************************************************************************\nselect * from team_domains where team_id = 399;\nSELECT * FROM teams WHERE name LIKE '%Rydoo%'; # 399, 318, 13207\n\nselect * from calendar_events where id = 5163781;\nSELECT * FROM activities WHERE uuid_to_bin('be2cbc52-7fda-46a0-9ae0-25d9553eafc0') = uuid; # 29443896\nSELECT * FROM participants WHERE activity_id = 29443896;\nselect * from contacts where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\nselect * from leads where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\n\nselect * from activities where user_id = 14937 order by created_at ;\n\nselect * from users where id = 14937;\n\nselect * from contacts where crm_configuration_id = 318 and email LIKE '%@strawberry.se';\nselect * from opportunities where crm_configuration_id = 318 and crm_provider_id = '006Sf00000D1WOAIA3';\n\nselect * from activities a join participants p on a.id = p.activity_id\nwhere crm_configuration_id = 318 and a.updated_at > '2025-06-23T08:18:43Z';\n\n# *************************************************************************************************\nSELECT * FROM opportunities WHERE team_id = 379 and crm_provider_id = '39334518886';\nSELECT * FROM opportunities WHERE team_id = 379 order by id desc;\nSELECT * FROM teams WHERE id = 379;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379 and sociable_id = 13852\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations WHERE id = 307;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 307;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1027;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307\n and id IN (144750,144855,145158,155227);\n\nSELECT * FROM activities;\n\n\nselect * from activities\nwhere created_at > '2025-07-01 00:00:00'\n# and created_at < '2025-08-01 00:00:00'\nand type not in ('email-outbound', 'email-inbound')\nand account_id is null\nand contact_id is null\nand lead_id is null\nand opportunity_id is not null\n;\nSELECT * FROM activities WHERE id IN (25344155, 25344296, 25501909, 28692187);\nSELECT * FROM crm_configurations WHERE id in (335,301,200);\n\nselect * from crm_fields where crm_configuration_id = 230 and crm_provider_id = 'Age2__c';\n\nSELECT * FROM teams WHERE name LIKE '%Resights%';\nselect * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nselect * from teams where id IN (442);\n\nselect * from activities\nwhere crm_configuration_id = 177\nand provider = 'amazon-connect'\n order by id desc;\n# and source <> 'gong';\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nSELECT * FROM activities WHERE uuid_to_bin('cec1993b-a7e5-4164-b74d-d680ea51d2f2') = uuid;\n\n\nselect * from crm_configurations where store_transcript = 1;\nSELECT * FROM teams WHERE id IN (80);\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sedna%'; # 277, 213, 12594\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 277\nand sa.provider = 'salesforce';\n\nselect * from activities where crm_configuration_id = 213 and account_id = 2511502;\n\nselect * from crm_configurations where id = 213;\n\nSELECT * FROM activities WHERE uuid_to_bin('35aa790a-8569-4544-8268-66f9a4a26804') = uuid; # 33981604\nSELECT * FROM participants WHERE activity_id = 33981604;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 337 and object_type = 'task';\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 431\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b5476c7d-19a8-491b-869d-676ea1e857b6') = uuid; # 33997223\nselect * from activity_summary_logs where activity_id = 33997223;\nselect * from activity_notes where activity_id = 33997223;\n\n# ***********************************\nSELECT * FROM teams WHERE name LIKE '%Abode%';\n\n\nselect * from features;\nselect * from teams t\nwhere t.status = 'active'\nand id NOT IN (select team_id from team_features where feature_id = 9)\n;\n\n\nselect * from playbook_layouts where playbook_id = 1725;\nSELECT * FROM activities WHERE uuid_to_bin('65cc283c-4849-49e6-927f-4c281c8fea19') = uuid; # 34297473\nselect * from teams where id = 318;\nselect * from crm_configurations where team_id = 318;\nselect * from playbooks where team_id = 318;\nSELECT * FROM crm_layouts where crm_configuration_id = 381;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1259;\nSELECT * FROM crm_fields WHERE id IN (192938,192936,192939);\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1266;\nSELECT * FROM crm_fields WHERE id IN (192980,192991,192997,192998,193064,193067);\n\nSELECT * FROM activities WHERE uuid_to_bin('a902289b-285c-48eb-9cc2-6ad6c5d938f5') = uuid; # 34297533\n\n\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nSELECT * FROM crm_fields WHERE id IN (131668,131669,131670,131671,131676,131797);\n\nSELECT * FROM teams WHERE name LIKE '%Peripass%'; # 351, 281, 12124\nselect * from crm_layouts where crm_configuration_id = 281;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nselect * from crm_fields where crm_configuration_id = 281 and id in (131668,131669,131670,131671,131676,131797);\nselect * from opportunities where crm_configuration_id = 281;\n\nSELECT * FROM activities WHERE id IN (34211315, 34130075);\nSELECT * FROM crm_field_data WHERE object_id IN (34211315, 34130075);\n\nselect cf.crm_configuration_id, cle.crm_layout_id, cle.id, cf.id from crm_field_data cfd\njoin crm_layout_entities cle on cle.id = cfd.crm_layout_entity_id\njoin crm_fields cf on cle.crm_field_id = cf.id\nwhere cf.deleted_at IS NOT NULL\nGROUP BY cle.id, cf.id;\n\nselect * from crm_layouts where id IN (355);\nselect u.email, t.crm_id, t.* from teams t\njoin users u on u.id = t.owner_id\nwhere crm_id IN (97);\n\nSELECT * FROM crm_fields WHERE id = 96492;\n\nselect * from permissions;\nselect * from permission_role where permission_id = 247;\nselect * from roles;\n\nselect * from migrations;\n# *****************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('291e3c21-11cc-4728-aee7-6e4bedf86d72') = uuid; # 34262174\nSELECT * FROM crm_configurations WHERE id = 301;\nSELECT * FROM teams WHERE id = 343;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from participants where activity_id = 34262174;\n\nselect * from contacts where crm_configuration_id = 301 and id = 6976326;\nselect * from accounts where crm_configuration_id = 301 and id IN (4647626, 4815829); # 30761335403\n\nselect * from activity_summary_logs where activity_id = 34262174;\n\nselect * from users where status = 1 AND timezone = 'EST';\n\n# ****************************************************************************\nSELECT * FROM users WHERE id = 13869;\nSELECT * FROM crm_configurations WHERE id = 320;\nSELECT * FROM teams WHERE id = 401;\n\nSELECT * FROM activities WHERE uuid_to_bin('2228c16f-10be-48d5-90d4-67385219dc01') = uuid; # 29670601\n\nSELECT * FROM accounts WHERE id = 7761483;\nSELECT * FROM opportunities WHERE id = 6051814;\n\nSELECT * FROM teams WHERE name LIKE '%Seedlegals%';\n\n;select * from opportunities where updated_at > '2025-10-11' AND crm_provider_id = '34713761166';\n\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 177;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 577;\nSELECT * FROM crm_fields WHERE id IN (68458,68459,68480,68497,68524,68530,68554,68618,68662,68781,68810,68898,68981,69049,97467);\n\nSELECT t.id, crm.id, t.name, crm.sync_objects, crm.provider, crm.last_synced_at FROM crm_configurations crm join teams t on t.crm_id = crm.id\nwhere t.status = 'active' AND crm.provider = 'hubspot' AND crm.last_synced_at < '2025-10-22 00:00:00';\n\nSELECT * FROM activities WHERE uuid_to_bin('fa09449f-cba9-496a-b8f3-865cd3c72351') = uuid;\nSELECT * FROM crm_configurations where id = 184;\nSELECT * FROM teams WHERE id = 246;\nSELECT * FROM social_accounts WHERE sociable_id = 9259 and provider = 'hubspot';\n\nSELECT * FROM users WHERE email LIKE '%rhian.old@bud.co.uk%'; # 17700\nSELECT * FROM teams WHERE id = 551;\n\nSELECT * FROM crm_configurations WHERE id = 471;\nSELECT * FROM activities WHERE crm_configuration_id = 471 and crm_provider_id IS NOT NULL;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 471;\nSELECT * FROM crm_fields WHERE id = 307260;\nSELECT * FROM crm_field_values WHERE crm_field_id = 307260;\n\nselect * from crm_layouts where crm_configuration_id = 471;\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1547;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1548;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 551 and sa.provider = 'hubspot';\n\nSELECT * FROM teams WHERE name LIKE '%$PCS%';\n\n# ********************************************************************************************************\nselect * from crm_configurations crm\njoin teams t on t.crm_id = crm.id\nwhere t.status = 'active'\nand crm.provider = 'hubspot';\n\n# $slug = 'HUBSPOT_WEBHOOK_SYNC';\n# $team = Jiminny\\Models\\Team::find(2);\n# $feature = Feature::query()->where('slug', $slug)->first();\n# TeamFeature::query()->create(['feature_id' => $feature->getId(),'team_id' => $team->getId()]);\n\n# hubspot_webhook_metrics\n\nselect * from crm_configurations where id = 331; # 416\nSELECT * FROM teams WHERE id = 416;\nSELECT * FROM opportunities WHERE team_id = 190;\n\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%';\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 190 and sa.provider = 'hubspot';\n\n\n\nSELECT * FROM teams WHERE name LIKE '%Rapaport%'; # 431, 337\nSELECT * FROM teams where id = 431;\nSELECT * FROM crm_configurations where team_id = 431;\nSELECT * FROM activity_providers where team_id = 431;\nSELECT * FROM activities where crm_configuration_id = 337 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 431 and sa.provider = 'salesforce';\n\nSELECT * FROM teams WHERE name LIKE '%BiP%'; # 401, 320\nSELECT * FROM teams where id = 401;\nSELECT * FROM crm_configurations where team_id = 401;\nSELECT * FROM activity_providers where team_id = 401;\nSELECT * FROM activities where crm_configuration_id = 320 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 401 and sa.provider = 'salesforce';\n\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 307; # 379 - Story Terrace Inc , portalId: 3921157\nSELECT * FROM contacts WHERE team_id = 379 and updated_at > '2026-01-31 11:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-01 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 379 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 485; # 563 - LATUS Group (ad94d501-5d09-44fd-878f-ca3a9f8865c3) , portalId: 3904501\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 338; # 432 - Formalize , portalId: 9214205\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 432 and sa.provider = 'hubspot';\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 436; # 519 - Moxso , portalId: 25531989\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 96; # 119 - Nourish Care , portalId: 26617984\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 331; # 416 - The National College , portalId: 7213852\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 308; # 380 - Foodles , portalId: 7723616\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 379; # 471 - imat-uve , portalId: 9177354\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 465; # 545 - Spotler , portalId: 144759271\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 455; # 537 - indevis , portalId: 25666868\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 200; # 265 - Jobadder , portalId: 6426676\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 335; # 429 - Eletive , portalId: 6110563\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 363; # 456 - Global Group , portalId: 8901981\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 297; # 369 - Unbiased , portalId: 9229005\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 353; # 449 - Fuuse , portalId: 25781745\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 487; # 566 - Nimbus , portalId: 39982590\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 487;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1630;\nselect * from crm_fields where crm_configuration_id = 487 and\n(uuid_to_bin('4c6b2971-64d4-45b8-b377-427be758b5a5') = uuid or uuid_to_bin('59e368d8-65a0-4b77-b611-db37c99fbe68') = uuid);\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 420; # 506 - voiio , portalId: 145629154\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 479; # 558 - Momice , portalId: 535962\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 59; # 80 - Storyclash GmbH , portalId: 4268479\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 175; # 203 - Team iAM , portalId: 5534732\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 368; # 460 - OneTouch Health , portalId: 5534732183355\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\n\n\nselect * from users where id = 29643;\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM teams WHERE name LIKE '%Buynomics%'; # 462, 482, 14910\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\n# and description like '%The call focused on understanding Welch%'\norder by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 462 and sa.provider = 'salesforce';\n\nselect * from contacts where crm_configuration_id = 482 and name = 'Cyndall Hill'; # 15504749\nselect * from contacts where id = 10891096; # 482\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\nand contact_id = 15504749\norder by id desc;\n\nselect * from activities where id = 36793003; # 96cc7bc1-8622-4d27-92f4-baf664fc1a56, 00UOf00000PDdOXMA1\nselect * from transcription where id = 7646782;\nselect * from ai_prompts where transcription_id = 7646782;\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7a8471a3-847e-4822-802b-ddf426bbc252') = uuid; # 37370018\nSELECT * FROM activity_summary_logs WHERE activity_id = 37370018;\nSELECT * FROM teams WHERE id = 555;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 555 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7c17b8aa-09df-4f85-a0f7-51f47afd712d') = uuid; # 37395250\nSELECT * FROM activities WHERE uuid_to_bin('14d60388-260d-494b-aa0d-63fdb1c78026') = uuid; # 37395250\n\nSELECT a.* FROM activities a JOIN crm_configurations c on c.id = a.crm_configuration_id\nwhere a.type IN ('softphone', 'softphone-outbound') and c.provider = 'hubspot'\nand a.provider NOT IN ('hubspot')\n# and a.provider IN ('salesloft')\n# and c.id NOT IN (70)\n# and a.duration > 30\n# and actual_start_time > '2026-02-05 00:00:00'\norder by a.id desc;\n\nSELECT * FROM activities WHERE id = 37549787;\nSELECT * FROM crm_profiles WHERE user_id = 17613;\n\nSELECT * FROM crm_configurations WHERE id = 70;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 93 and sa.provider = 'hubspot';\n\nSELECT asf.activity_search_id, asf.id, asf.value\nFROM activity_search_filters asf\nWHERE asf.filter = 'group_id'\nAND asf.value IN (\n SELECT CONCAT(\n HEX(SUBSTR(uuid, 5, 4)), '-',\n HEX(SUBSTR(uuid, 3, 2)), '-',\n HEX(SUBSTR(uuid, 1, 2)), '-',\n HEX(SUBSTR(uuid, 9, 2)), '-',\n HEX(SUBSTR(uuid, 11))\n )\n FROM groups\n WHERE deleted_at IS NOT NULL\n);\n\nSELECT * FROM crm_configurations WHERE id = 373; # KPSBremen.de 465 # - no social account\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 465 and sa.provider = 'hubspot';\n\nselect * from crm_configurations where id = 494;\n\nSELECT * FROM teams WHERE name LIKE '%splose%'; # 572, 495, 18708\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 572 and sa.provider = 'pipedrive';\n\nselect * from opportunities where team_id = 572\n# and name like '%Onebright%'\n# and is_closed = 1 and is_won = 0\n order by id desc;\n\n\nselect * from users where deleted_at is null and status = 2;\n\nselect * from contacts where id = 17900517;\nselect * from accounts where id = 10109838;\nselect * from opportunities where id = 6955880;\n\nselect * from opportunity_contacts where opportunity_id = 6955880;\nselect * from opportunity_contacts where contact_id = 17900517;\n\nselect * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id\nwhere crm.provider != 'salesforce';\n\nSELECT * FROM activities WHERE uuid_to_bin('adcb8331-5988-4353-834e-383a355abba2') = uuid; # 38056424, crm 104659682404\nselect * from teams where id = 456;\nSELECT * FROM crm_configurations WHERE id = 363;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 456 and sa.provider = 'hubspot';\n\nselect * from crm_layouts where crm_configuration_id = 363;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id IN (1203, 1204, 1635);\nSELECT * FROM crm_fields WHERE id IN (181536, 181538, 213455);\n\nSELECT * FROM teams WHERE name LIKE '%Electric%'; # 342, 272, 12767\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and name like 'NORTHUMBRIA POL%'; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 order by remotely_created_at asc; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and updated_at > '2026-01-01 00:00:00';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 272 and object_type = 'opportunity';\nSELECT * FROM crm_field_values WHERE crm_field_id = 127164;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\n\nSELECT * FROM teams WHERE id = 472;\nSELECT * FROM crm_configurations WHERE id = 380;\nselect * from activities where id = 38285673; # 38285673\nSELECT * FROM users WHERE id = 16942;\nSELECT * FROM groups WHERE id = 1964;\nSELECT * FROM playbooks WHERE id = 2033;\n\nselect * from teams where created_at > '2026-03-09';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 499; # 1065\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1678;\n\nSELECT * FROM teams WHERE id = 575;\nselect * from opportunities where team_id = 575;\n\nSELECT * FROM activities WHERE uuid_to_bin('96b1261f-2357-49f9-ab38-23ce12008ea0') = uuid;\n\nselect * from contacts c\nwhere c.crm_configuration_id = 370 order by c.updated_at desc;\n\nSELECT * FROM participants where activity_id = 38833541;\nSELECT * FROM participants where activity_id = 39216301;\nSELECT * FROM activity_summary_logs where activity_id = 39216301;\nSELECT * FROM activities WHERE uuid_to_bin('c7d99fbe-1fb1-41f2-8f4d-52e2bf70e1e9') = uuid; # 38833541, crm 478116564181\nSELECT * FROM activities WHERE uuid_to_bin('2e6ff4d3-9faa-447a-a8c1-9acde4d885ae') = uuid; # 39216301, crm 480171536586\nselect * from crm_profiles where crm_configuration_id = 319 and crm_provider_id = 525785080;\nselect * from opportunities where crm_configuration_id = 319 and crm_provider_id = 410150124747;\nselect * from accounts where crm_configuration_id = 319 and crm_provider_id = 47150650569;\nselect * from contacts where crm_configuration_id = 319 and crm_provider_id IN ('665587441856', '742723347700');\n# owner 13236 525785080\n# contact 1 16779180 665587441856 - activity - Alex Howes alex@supportroom.com created 2026-01-26\n# contact 2 19247563 742723347700 - ash@supportroom.com 2026-03-24\n# company 4176133 47150650569\n# deal 7100953 410150124747\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 400 and sa.provider = 'hubspot';\n\nselect * from features;\nselect * from team_features where feature_id = 40;\n\nselect * from teams where id = 556; # owner: 18101, crm: 477\nselect * from crm_configurations where id = 477;\nSELECT * FROM users WHERE id = 18101;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 556 and sa.provider = 'integration-app';\n\nselect * from opportunities where id = 7594349;\nselect * from opportunity_stages where opportunity_id = 7594349 order by created_at desc;\nselect * from business_processes where id = 6024;\nselect * from business_process_stages where stage_id = 16352;\nselect * from business_process_stages where business_process_id = 6024;\nselect * from stages where team_id = 459;\nselect * from teams where id = 459;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 459 and sa.provider = 'hubspot';\n\nSELECT os.stage_id, s.crm_provider_id, s.name, COUNT(*) as cnt\nFROM opportunity_stages os\nJOIN stages s ON s.id = os.stage_id\nWHERE os.opportunity_id = 7594349\nGROUP BY os.stage_id, s.crm_provider_id, s.name\nORDER BY cnt DESC;\n\nSELECT s.id, s.crm_provider_id, s.name, s.team_id, s.crm_configuration_id\nFROM stages s\nJOIN business_process_stages bps ON bps.stage_id = s.id\nWHERE bps.business_process_id = 6024\nAND s.crm_provider_id = 'contractsent';\n\nselect * from stages where id IN (16352,20612,18281,7344,16378,16309,5036,15223,14535,6293,12098,11607)\n\nSELECT * FROM teams WHERE name LIKE '%Pulsar Group%'; # 472, 380, 15138, raza.gilani@vuelio.com\nselect * from playbooks where team_id = 472; # event 226147\nSELECT * FROM playbook_categories WHERE playbook_id = 2288;\nSELECT * FROM crm_fields WHERE id = 226147;\nSELECT * FROM crm_field_values WHERE crm_field_id = 226147;\n\nSELECT * FROM crm_configurations WHERE id = 380;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 472 and sa.provider = 'salesforce';","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}]...
|
-3293064906782757730
|
-8385861013498915692
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
2
47
3
11
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\AjReportsRepository;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
private readonly AjReportsRepository $ajReportsRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
$ajReportCount = $this->ajReportsRepository->countActiveReportsBySavedSearch($search->getId());
if ($ajReportCount > 0) {
return $this->response->errorWrongArgs(
"This saved search is used by {$ajReportCount} active AJ report(s). "
. 'Please remove or update those reports before deleting this saved search.'
);
}
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$crmService = $this->providerRegistry->get($team->crm->provider);
if (! $user->isCrmRequired()) {
$crmService->setUser($team->getOwner());
} else {
$crmService->setUser($user);
}
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
}
/**
* Remove activity from this user's favorite...
|
NULL
|
|
60898
|
1313
|
30
|
2026-04-21T06:24:41.992782+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752681992_m2.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
app.jiminny.com/dashboard
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
1
1
My Recordings
My Recordings
Team Recordings
Team Recordings
Everyone's Recordings
Everyone's Recordings
Unknown Customer
Notetaker added on 05-15-23 @ 20:45
15 May, 2023, 8:47 PM
Schedule
Schedule
Invite Notetaker
This Week
This Week
My Schedule
My Schedule
No Meetings
Trending this month
Trending this month
Sort by Sort by: Most played
Sort by
Sort by:
Most played
Miles Weeks at Cloud Gateway
Miles Weeks and Zornitsa Dzhongova
Miles Weeks and Zornitsa Dzhongova
4
times played
Unknown Customer
Steve Lazarus and Greg Moser
Steve Lazarus and Greg Moser
4
times played
Graeme Hennessey at RealTime eClinical Solutions
Meet with Becky from Jiminny 🚀
Meet with Becky from Jiminny 🚀
3
times played
Todd Upchurch at LeadVenture
Jiminny - sync (Lauren & Todd)
Jiminny - sync (Lauren & Todd)
3
times played
David Roberts at Sigma Labs
Jiminny Onboarding Workshop
Jiminny Onboarding Workshop
2
times played
Tony Lombardo at AutoLeap
Meeting with Oliver
Meeting with Oliver
2
times played
Tom Daniels at Worldover
Worldover Onboarding Workshop
Worldover Onboarding Workshop
2
times played
Will Pagden at Rosterfy
Rosterfy & Jiminny [Intro call]
Rosterfy & Jiminny [Intro call]
2
times played
Marin Nedevski at Reward Gateway
Jheelam Ghosh and Lauren Hudson
Jheelam Ghosh and Lauren Hudson
2
times played
Alex Bogumil at Cognitive Credit
Alex & Gabby Jiminny Customisations Alignment
Alex & Gabby Jiminny Customisations Alignment
2
times played
Phil Hart at Oxford Medical Simulation
🚀 Meet with Oliver from Jiminny
🚀 Meet with Oliver from Jiminny
2
times played
Melanie Yu Yu at Unibuddy
Jiminny <> Unibuddy (weekly acceleration!)
Jiminny <> Unibuddy (weekly acceleration!)
2
times played
Philipp Kronsteiner at DocPlanner
Meeting with Oliver
Meeting with Oliver
1
times played
Johnathan Berryman at INSURITAS
Jiminny + VIU by HUB/Insuritas Touchbase-Monthly
Jiminny + VIU by HUB/Insuritas Touchbase-Monthly
1
times played
Kerensa Martin at CreateFuture
Jiminny x CF - Connect to Jiminny :)
Jiminny x CF - Connect to Jiminny :)
1
times played
Jack Wilson at Akixi
Akixi & Jiminny Onboarding Workshop 🚀
Akixi & Jiminny Onboarding Workshop 🚀
1
times played
Kelly Atkins at BT Local Business Severnside
BT Coventry & Jiminny
BT Coventry & Jiminny
1
times played
Rachel Hand at Storage King
🚀 Meet with Becky from Jiminny
🚀 Meet with Becky from Jiminny
1
times played
Zilch
🚀 Meet with Becky from Jiminny
🚀 Meet with Becky from Jiminny
1
times played
Adriana Voyce at Credentially
Meeting with Stoyan 🚀 (Adriana Voyce)
Meeting with Stoyan 🚀 (Adriana Voyce)
1
times played
Diane Farah at Flosonics Medical
Meeting with Stoyan 🚀 (Diane Farah)
Meeting with Stoyan 🚀 (Diane Farah)
1
times played
Melissa Desousa at Lloyd's List Intelligence
Melissa De Sousa and Petko Kashinski
Melissa De Sousa and Petko Kashinski
1
times played
Graeme Hennessey at RealTime eClinical Solutions
Jiminny - Commercials Review & Next Steps 🚀
Jiminny - Commercials Review & Next Steps 🚀
1
times played
Oscar Linares at Storyclash GmbH
Oscar Linares and Petko Kashinski
Oscar Linares and Petko Kashinski
1
times played
James Casey at Referoo
Notetaker added by Oliver Harris
Notetaker added by Oliver Harris
1
times played
Live Feed
Live Feed
Stoyan Tanev
listened to call
Yesterday, 5:28 PM
Support / Troubleshooting
with
Diane Farah
Held:
17 Apr, 4:58 PM
Duration:
7m
Value:
$22,656
Lauren Hudson
listened to call
Yesterday, 5:16 PM
Kick-Off / Onboarding
with
Todd Upchurch
Held:
8 Apr, 4:28 PM
Duration:
33m
Value:
$4,800
Becky Butler
listened to call
Yesterday, 4:43 PM
Disco/Demo
with
Graeme Hennessey
Held:
10 Apr, 5:29 PM
Duration:
31m
Value:
$19,716
Calum Scott
listened to call
Yesterday, 3:17 PM
Trial Strategy Session
with
James Casey
Held:
24 Mar, 4:34 PM
Duration:
22m
Value:
$9,600
Calum Scott
listened to call
Yesterday, 3:14 PM
Kick-Off / Onboarding
with
unknown customer
Held:
16 Mar, 6:03 PM
Duration:
28m
Value:
$0
Calum Scott
listened to call
Yesterday, 3:08 PM
End of Trial check in
with
James Casey...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.08344415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.08344415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.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-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.19963431,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.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 MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.15791224,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.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 Mail","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.02144282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.3639266,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.39106146,"width":0.07413564,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"1","depth":12,"bounds":{"left":0.08228058,"top":0.91380686,"width":0.015957447,"height":0.035115723},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":14,"bounds":{"left":0.091755316,"top":0.9173983,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"My Recordings","depth":14,"bounds":{"left":0.15209441,"top":0.07182761,"width":0.061336435,"height":0.052673582},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"My Recordings","depth":15,"bounds":{"left":0.1653923,"top":0.0905826,"width":0.03474069,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Team Recordings","depth":14,"bounds":{"left":0.21343085,"top":0.07182761,"width":0.065990694,"height":0.052673582},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Team Recordings","depth":15,"bounds":{"left":0.22672872,"top":0.0905826,"width":0.03939495,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Everyone's Recordings","depth":14,"bounds":{"left":0.27942154,"top":0.07182761,"width":0.0787899,"height":0.052673582},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Everyone's Recordings","depth":15,"bounds":{"left":0.29271942,"top":0.0905826,"width":0.05219415,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unknown Customer","depth":19,"bounds":{"left":0.14079122,"top":0.14604948,"width":0.04155585,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Notetaker added on 05-15-23 @ 20:45","depth":19,"bounds":{"left":0.14079122,"top":0.16679968,"width":0.079953454,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15 May, 2023, 8:47 PM","depth":18,"bounds":{"left":0.14079122,"top":0.18754987,"width":0.047706116,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Schedule","depth":13,"bounds":{"left":0.40608376,"top":0.27214685,"width":0.029421542,"height":0.025538707},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Schedule","depth":14,"bounds":{"left":0.40608376,"top":0.27414206,"width":0.029421542,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Invite Notetaker","depth":14,"bounds":{"left":0.6505984,"top":0.2697526,"width":0.044215426,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"This Week","depth":14,"bounds":{"left":0.41107047,"top":0.31763768,"width":0.1377992,"height":0.02952913},"value":"This Week","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"This Week","depth":17,"bounds":{"left":0.4147274,"top":0.3256185,"width":0.021941489,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"My Schedule","depth":14,"bounds":{"left":0.5521942,"top":0.31763768,"width":0.13763298,"height":0.02952913},"value":"My Schedule","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"My Schedule","depth":17,"bounds":{"left":0.55585104,"top":0.3256185,"width":0.02642952,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"No Meetings","depth":16,"bounds":{"left":0.53723407,"top":0.69193935,"width":0.02642952,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Trending this month","depth":13,"bounds":{"left":0.41107047,"top":0.08858739,"width":0.04637633,"height":0.01915403},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trending this month","depth":14,"bounds":{"left":0.41107047,"top":0.0905826,"width":0.04637633,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Sort by Sort by: Most played","depth":13,"bounds":{"left":0.62117684,"top":0.08339984,"width":0.06865027,"height":0.02952913},"value":"Sort by Sort by: Most played","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Sort by","depth":14,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sort by:","depth":15,"bounds":{"left":0.62483376,"top":0.091380686,"width":0.016954787,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Most played","depth":15,"bounds":{"left":0.64178854,"top":0.091380686,"width":0.026097074,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Miles Weeks at Cloud Gateway","depth":16,"bounds":{"left":0.51379657,"top":0.18036711,"width":0.06665558,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Miles Weeks and Zornitsa Dzhongova","depth":15,"bounds":{"left":0.5069814,"top":0.1991221,"width":0.08693484,"height":0.011971269},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Miles Weeks and Zornitsa Dzhongova","depth":16,"bounds":{"left":0.5169548,"top":0.1991221,"width":0.06698803,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":16,"bounds":{"left":0.55136305,"top":0.2150838,"width":0.0051529254,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"bounds":{"left":0.54105717,"top":0.23144454,"width":0.01861702,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unknown Customer","depth":16,"bounds":{"left":0.813996,"top":0.18036711,"width":0.04338431,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Steve Lazarus and Greg Moser","depth":15,"bounds":{"left":0.80202794,"top":0.1991221,"width":0.07396942,"height":0.011971269},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Steve Lazarus and Greg Moser","depth":16,"bounds":{"left":0.81200135,"top":0.1991221,"width":0.054022606,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":16,"bounds":{"left":0.83992684,"top":0.2150838,"width":0.0051529254,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"bounds":{"left":0.829621,"top":0.23144454,"width":0.01861702,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Graeme Hennessey at RealTime eClinical Solutions","depth":16,"bounds":{"left":1.0,"top":0.17996807,"width":-0.07014632,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meet with Becky from Jiminny 🚀","depth":15,"bounds":{"left":1.0,"top":0.19872306,"width":-0.08809841,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meet with Becky from Jiminny 🚀","depth":16,"bounds":{"left":1.0,"top":0.19872306,"width":-0.09807181,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Todd Upchurch at LeadVenture","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny - sync (Lauren & Todd)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny - sync (Lauren & Todd)","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"David Roberts at Sigma Labs","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny Onboarding Workshop","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Onboarding Workshop","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tony Lombardo at AutoLeap","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meeting with Oliver","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meeting with Oliver","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tom Daniels at Worldover","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Worldover Onboarding Workshop","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Worldover Onboarding Workshop","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Will Pagden at Rosterfy","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Rosterfy & Jiminny [Intro call]","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Rosterfy & Jiminny [Intro call]","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Marin Nedevski at Reward Gateway","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jheelam Ghosh and Lauren Hudson","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jheelam Ghosh and Lauren Hudson","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Alex Bogumil at Cognitive Credit","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Alex & Gabby Jiminny Customisations Alignment","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Alex & Gabby Jiminny Customisations Alignment","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Phil Hart at Oxford Medical Simulation","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"🚀 Meet with Oliver from Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"🚀 Meet with Oliver from Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Melanie Yu Yu at Unibuddy","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny <> Unibuddy (weekly acceleration!)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny <> Unibuddy (weekly acceleration!)","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Philipp Kronsteiner at DocPlanner","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meeting with Oliver","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meeting with Oliver","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Johnathan Berryman at INSURITAS","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny + VIU by HUB/Insuritas Touchbase-Monthly","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny + VIU by HUB/Insuritas Touchbase-Monthly","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kerensa Martin at CreateFuture","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny x CF - Connect to Jiminny :)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny x CF - Connect to Jiminny :)","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jack Wilson at Akixi","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Akixi & Jiminny Onboarding Workshop 🚀","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Akixi & Jiminny Onboarding Workshop 🚀","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kelly Atkins at BT Local Business Severnside","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"BT Coventry & Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BT Coventry & Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rachel Hand at Storage King","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"🚀 Meet with Becky from Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"🚀 Meet with Becky from Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zilch","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"🚀 Meet with Becky from Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"🚀 Meet with Becky from Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Adriana Voyce at Credentially","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meeting with Stoyan 🚀 (Adriana Voyce)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meeting with Stoyan 🚀 (Adriana Voyce)","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diane Farah at Flosonics Medical","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meeting with Stoyan 🚀 (Diane Farah)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meeting with Stoyan 🚀 (Diane Farah)","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Melissa Desousa at Lloyd's List Intelligence","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Melissa De Sousa and Petko Kashinski","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Melissa De Sousa and Petko Kashinski","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Graeme Hennessey at RealTime eClinical Solutions","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny - Commercials Review & Next Steps 🚀","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny - Commercials Review & Next Steps 🚀","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Oscar Linares at Storyclash GmbH","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Oscar Linares and Petko Kashinski","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Oscar Linares and Petko Kashinski","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"James Casey at Referoo","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Notetaker added by Oliver Harris","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notetaker added by Oliver Harris","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Live Feed","depth":13,"bounds":{"left":0.70644945,"top":0.08858739,"width":0.021775266,"height":0.01915403},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Live Feed","depth":14,"bounds":{"left":0.70644945,"top":0.0905826,"width":0.021775266,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":21,"bounds":{"left":0.7280585,"top":0.14086193,"width":0.027426861,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.7571476,"top":0.14086193,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 5:28 PM","depth":20,"bounds":{"left":0.94414896,"top":0.14046289,"width":0.039228722,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Support / Troubleshooting","depth":23,"bounds":{"left":0.7280585,"top":0.17158818,"width":0.05435505,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.7834109,"top":0.17158818,"width":0.008976064,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diane Farah","depth":23,"bounds":{"left":0.7933843,"top":0.17158818,"width":0.025099734,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"bounds":{"left":0.7357048,"top":0.20909816,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Apr, 4:58 PM","depth":22,"bounds":{"left":0.74667555,"top":0.20909816,"width":0.030418882,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"bounds":{"left":0.8507314,"top":0.20909816,"width":0.01861702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7m","depth":22,"bounds":{"left":0.8700133,"top":0.20909816,"width":0.005984043,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"bounds":{"left":0.9496343,"top":0.20909816,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$22,656","depth":22,"bounds":{"left":0.9624335,"top":0.20909816,"width":0.015957447,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lauren Hudson","depth":21,"bounds":{"left":0.7280585,"top":0.25418994,"width":0.03158245,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.7613032,"top":0.25418994,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 5:16 PM","depth":20,"bounds":{"left":0.94414896,"top":0.25379092,"width":0.039228722,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kick-Off / Onboarding","depth":23,"bounds":{"left":0.7280585,"top":0.2849162,"width":0.04654255,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.77543217,"top":0.2849162,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Todd Upchurch","depth":23,"bounds":{"left":0.7854056,"top":0.2849162,"width":0.031416222,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"bounds":{"left":0.7357048,"top":0.32242617,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8 Apr, 4:28 PM","depth":22,"bounds":{"left":0.74667555,"top":0.32242617,"width":0.027925532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"bounds":{"left":0.84956783,"top":0.32242617,"width":0.018450798,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"33m","depth":22,"bounds":{"left":0.8686835,"top":0.32242617,"width":0.008643617,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"bounds":{"left":0.95212764,"top":0.32242617,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$4,800","depth":22,"bounds":{"left":0.96492684,"top":0.32242617,"width":0.013464096,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Becky Butler","depth":21,"bounds":{"left":0.7280585,"top":0.36751795,"width":0.026761968,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.7564827,"top":0.36751795,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 4:43 PM","depth":20,"bounds":{"left":0.94414896,"top":0.36711892,"width":0.039228722,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Disco/Demo","depth":23,"bounds":{"left":0.7280585,"top":0.3982442,"width":0.025930852,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.75482047,"top":0.3982442,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Graeme Hennessey","depth":23,"bounds":{"left":0.7647939,"top":0.3982442,"width":0.040226065,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"bounds":{"left":0.7357048,"top":0.43575418,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10 Apr, 5:29 PM","depth":22,"bounds":{"left":0.74667555,"top":0.43575418,"width":0.030418882,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"bounds":{"left":0.84956783,"top":0.43575418,"width":0.018450798,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31m","depth":22,"bounds":{"left":0.8686835,"top":0.43575418,"width":0.008643617,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"bounds":{"left":0.9496343,"top":0.43575418,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$19,716","depth":22,"bounds":{"left":0.9624335,"top":0.43575418,"width":0.015957447,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Calum Scott","depth":21,"bounds":{"left":0.7280585,"top":0.48084596,"width":0.025265958,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.7549867,"top":0.48084596,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 3:17 PM","depth":20,"bounds":{"left":0.94414896,"top":0.48044693,"width":0.039228722,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trial Strategy Session","depth":23,"bounds":{"left":0.7280585,"top":0.51157224,"width":0.04438165,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.77327126,"top":0.51157224,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"James Casey","depth":23,"bounds":{"left":0.78324467,"top":0.51157224,"width":0.02642952,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"bounds":{"left":0.7357048,"top":0.5490822,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"24 Mar, 4:34 PM","depth":22,"bounds":{"left":0.74667555,"top":0.5490822,"width":0.03125,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"bounds":{"left":0.85123,"top":0.5490822,"width":0.018450798,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"22m","depth":22,"bounds":{"left":0.8703458,"top":0.5490822,"width":0.008643617,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"bounds":{"left":0.95212764,"top":0.5490822,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$9,600","depth":22,"bounds":{"left":0.96492684,"top":0.5490822,"width":0.013464096,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Calum Scott","depth":21,"bounds":{"left":0.7280585,"top":0.59417397,"width":0.025265958,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.7549867,"top":0.59417397,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 3:14 PM","depth":20,"bounds":{"left":0.94414896,"top":0.5937749,"width":0.039228722,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kick-Off / Onboarding","depth":23,"bounds":{"left":0.7280585,"top":0.6249002,"width":0.04654255,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.77543217,"top":0.6249002,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"unknown customer","depth":23,"bounds":{"left":0.7854056,"top":0.6249002,"width":0.040059842,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"bounds":{"left":0.7357048,"top":0.6624102,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16 Mar, 6:03 PM","depth":22,"bounds":{"left":0.74667555,"top":0.6624102,"width":0.03125,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"bounds":{"left":0.85538566,"top":0.6624102,"width":0.01861702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"28m","depth":22,"bounds":{"left":0.8746675,"top":0.6624102,"width":0.008477394,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"bounds":{"left":0.960605,"top":0.6624102,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$0","depth":22,"bounds":{"left":0.9734042,"top":0.6624102,"width":0.004986702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Calum Scott","depth":21,"bounds":{"left":0.7280585,"top":0.707502,"width":0.025265958,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.7549867,"top":0.707502,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 3:08 PM","depth":20,"bounds":{"left":0.94414896,"top":0.70710295,"width":0.039228722,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"End of Trial check in","depth":23,"bounds":{"left":0.7280585,"top":0.73822826,"width":0.04105718,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.77011305,"top":0.73822826,"width":0.008976064,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"James Casey","depth":23,"bounds":{"left":0.78008646,"top":0.73822826,"width":0.026263298,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6669104502989367528
|
7416675208497097987
|
app_switch
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
1
1
My Recordings
My Recordings
Team Recordings
Team Recordings
Everyone's Recordings
Everyone's Recordings
Unknown Customer
Notetaker added on 05-15-23 @ 20:45
15 May, 2023, 8:47 PM
Schedule
Schedule
Invite Notetaker
This Week
This Week
My Schedule
My Schedule
No Meetings
Trending this month
Trending this month
Sort by Sort by: Most played
Sort by
Sort by:
Most played
Miles Weeks at Cloud Gateway
Miles Weeks and Zornitsa Dzhongova
Miles Weeks and Zornitsa Dzhongova
4
times played
Unknown Customer
Steve Lazarus and Greg Moser
Steve Lazarus and Greg Moser
4
times played
Graeme Hennessey at RealTime eClinical Solutions
Meet with Becky from Jiminny 🚀
Meet with Becky from Jiminny 🚀
3
times played
Todd Upchurch at LeadVenture
Jiminny - sync (Lauren & Todd)
Jiminny - sync (Lauren & Todd)
3
times played
David Roberts at Sigma Labs
Jiminny Onboarding Workshop
Jiminny Onboarding Workshop
2
times played
Tony Lombardo at AutoLeap
Meeting with Oliver
Meeting with Oliver
2
times played
Tom Daniels at Worldover
Worldover Onboarding Workshop
Worldover Onboarding Workshop
2
times played
Will Pagden at Rosterfy
Rosterfy & Jiminny [Intro call]
Rosterfy & Jiminny [Intro call]
2
times played
Marin Nedevski at Reward Gateway
Jheelam Ghosh and Lauren Hudson
Jheelam Ghosh and Lauren Hudson
2
times played
Alex Bogumil at Cognitive Credit
Alex & Gabby Jiminny Customisations Alignment
Alex & Gabby Jiminny Customisations Alignment
2
times played
Phil Hart at Oxford Medical Simulation
🚀 Meet with Oliver from Jiminny
🚀 Meet with Oliver from Jiminny
2
times played
Melanie Yu Yu at Unibuddy
Jiminny <> Unibuddy (weekly acceleration!)
Jiminny <> Unibuddy (weekly acceleration!)
2
times played
Philipp Kronsteiner at DocPlanner
Meeting with Oliver
Meeting with Oliver
1
times played
Johnathan Berryman at INSURITAS
Jiminny + VIU by HUB/Insuritas Touchbase-Monthly
Jiminny + VIU by HUB/Insuritas Touchbase-Monthly
1
times played
Kerensa Martin at CreateFuture
Jiminny x CF - Connect to Jiminny :)
Jiminny x CF - Connect to Jiminny :)
1
times played
Jack Wilson at Akixi
Akixi & Jiminny Onboarding Workshop 🚀
Akixi & Jiminny Onboarding Workshop 🚀
1
times played
Kelly Atkins at BT Local Business Severnside
BT Coventry & Jiminny
BT Coventry & Jiminny
1
times played
Rachel Hand at Storage King
🚀 Meet with Becky from Jiminny
🚀 Meet with Becky from Jiminny
1
times played
Zilch
🚀 Meet with Becky from Jiminny
🚀 Meet with Becky from Jiminny
1
times played
Adriana Voyce at Credentially
Meeting with Stoyan 🚀 (Adriana Voyce)
Meeting with Stoyan 🚀 (Adriana Voyce)
1
times played
Diane Farah at Flosonics Medical
Meeting with Stoyan 🚀 (Diane Farah)
Meeting with Stoyan 🚀 (Diane Farah)
1
times played
Melissa Desousa at Lloyd's List Intelligence
Melissa De Sousa and Petko Kashinski
Melissa De Sousa and Petko Kashinski
1
times played
Graeme Hennessey at RealTime eClinical Solutions
Jiminny - Commercials Review & Next Steps 🚀
Jiminny - Commercials Review & Next Steps 🚀
1
times played
Oscar Linares at Storyclash GmbH
Oscar Linares and Petko Kashinski
Oscar Linares and Petko Kashinski
1
times played
James Casey at Referoo
Notetaker added by Oliver Harris
Notetaker added by Oliver Harris
1
times played
Live Feed
Live Feed
Stoyan Tanev
listened to call
Yesterday, 5:28 PM
Support / Troubleshooting
with
Diane Farah
Held:
17 Apr, 4:58 PM
Duration:
7m
Value:
$22,656
Lauren Hudson
listened to call
Yesterday, 5:16 PM
Kick-Off / Onboarding
with
Todd Upchurch
Held:
8 Apr, 4:28 PM
Duration:
33m
Value:
$4,800
Becky Butler
listened to call
Yesterday, 4:43 PM
Disco/Demo
with
Graeme Hennessey
Held:
10 Apr, 5:29 PM
Duration:
31m
Value:
$19,716
Calum Scott
listened to call
Yesterday, 3:17 PM
Trial Strategy Session
with
James Casey
Held:
24 Mar, 4:34 PM
Duration:
22m
Value:
$9,600
Calum Scott
listened to call
Yesterday, 3:14 PM
Kick-Off / Onboarding
with
unknown customer
Held:
16 Mar, 6:03 PM
Duration:
28m
Value:
$0
Calum Scott
listened to call
Yesterday, 3:08 PM
End of Trial check in
with
James Casey...
|
NULL
|
|
61061
|
1316
|
20
|
2026-04-21T06:34:37.859296+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776753277859_m1.jpg...
|
iTerm2
|
✳ Build full day activity summary from Screenpipe
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesDOCKER881 iTerm2ShellEditViewSessionScriptsProfilesDOCKER881Window-zshHelp-zsh* Build full day activity summary from Screenpipe* Build full day activity su... 84screenpipe"Description mirrors JY-20500 but targets HubSpot objects (deals, accounts, contacts) instead of SalesforceAО 85-zsh100% <Tue 21 Apr 9:34:37T81₴6APP (-zsh)*7+Also visible in backlog (not opened individually but listed):TicketJY-20503JY-20503JY-20699JY-20412JY-20361JY-19628JY-20625JY-20410TitleBatch insert/update CRM objects in...Batch insert/update CRM objectsWrong formatting for summary in...Change Auto-log delayAJ Panorama for Call Scoring in ODEvaluation of AJ PanoramaJiminny MCP ConnectorUpdate the template...EpicCRM SyncCRM SyncPlatform SprintAutomated ReportsAsk AnythingEstimate2.54-Key outcomes from the session:- JY-20500 and JY-20501 were pulled into Platform Sprint 3 Q2 and ranked during the meeting- JY-20501 description and JY-20500 description were updated by Stefka Stoyanova during the call- JY-20613 had its estimate confirmed at 2.5 points- Figma (Project Phoenix) was used to walk through JY-20676/JY-20615 UI flows* Brewed for 1m 57s* recap: Platform refinement meeting reviewed 5 Jira tickets, mainly JY-20500/20501 batch CRM sync for Salesforce and HubSpot,both moved to Sprint3 Q2. Next: checkif sprintassignments saved correctly in Jira. (disable recaps in /config)? for shortcuts~112k uncached • /clear to start freshnew task? /clear to save 113.2k tokens...
|
NULL
|
6223838141027342925
|
NULL
|
app_switch
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesDOCKER881 iTerm2ShellEditViewSessionScriptsProfilesDOCKER881Window-zshHelp-zsh* Build full day activity summary from Screenpipe* Build full day activity su... 84screenpipe"Description mirrors JY-20500 but targets HubSpot objects (deals, accounts, contacts) instead of SalesforceAО 85-zsh100% <Tue 21 Apr 9:34:37T81₴6APP (-zsh)*7+Also visible in backlog (not opened individually but listed):TicketJY-20503JY-20503JY-20699JY-20412JY-20361JY-19628JY-20625JY-20410TitleBatch insert/update CRM objects in...Batch insert/update CRM objectsWrong formatting for summary in...Change Auto-log delayAJ Panorama for Call Scoring in ODEvaluation of AJ PanoramaJiminny MCP ConnectorUpdate the template...EpicCRM SyncCRM SyncPlatform SprintAutomated ReportsAsk AnythingEstimate2.54-Key outcomes from the session:- JY-20500 and JY-20501 were pulled into Platform Sprint 3 Q2 and ranked during the meeting- JY-20501 description and JY-20500 description were updated by Stefka Stoyanova during the call- JY-20613 had its estimate confirmed at 2.5 points- Figma (Project Phoenix) was used to walk through JY-20676/JY-20615 UI flows* Brewed for 1m 57s* recap: Platform refinement meeting reviewed 5 Jira tickets, mainly JY-20500/20501 batch CRM sync for Salesforce and HubSpot,both moved to Sprint3 Q2. Next: checkif sprintassignments saved correctly in Jira. (disable recaps in /config)? for shortcuts~112k uncached • /clear to start freshnew task? /clear to save 113.2k tokens...
|
NULL
|
|
61062
|
1317
|
28
|
2026-04-21T06:34:37.859318+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776753277859_m2.jpg...
|
iTerm2
|
✳ Build full day activity summary from Screenpipe
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxVIewMistorbookmarksProtlles1OOISWindowmelpn FirefoxVIewMistorbookmarksProtlles1OOISWindowmelpnny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6793RookmarksO JIMINNYIY [SRD-6793] Les Mills activity t XQ Search bookmarks@ For you(• Recent[SRD-6787] Issue with reconnecti• Jy-20698 handle failed field sync& Jiminny MCP Connector - Product[JY-20676] Notify the user if a PalJiminny Mai(UY-20500) Batch initial sync for Sv a bookmarks loolbarSprint Board# SRD QueueGithubJiminny DEVAsk Jiminny Reports by nikolay-yankov • ...© Circle Cl& PROD US8 StagingLal Sentry> E Bookmarks Menu* Starredi8$ AppsQ Spaces+***( Service-Desk•, Queues.A Feed - jiminny - Sentr… Other BookmarksTeam PriorityE All open tickets (12•, Unassianed t... 28 Jiminny(JY-20701 | Reschedule HubSpot S)# Support tea…..E Raised by mePipelines - jiminnvlapr•, Assigned to ….- New TabService requ...1@ Platform teama Processingt.Site reliability... 0# New features... O•; InfoSec issues oai Readv for Cu... 10Eh Pecolved ti 000+= View all queues >Service requestsA IncidentsIul Reports@ OperationsAl Knowledge Base& Customers• Channels• Email logs/› Developer escalationsSlack integration& Reporting Center[ Add shortcutQ Search+ Create< Back #F SRD-6793• While testina somethina on Les Milis's instance. I saw that we are not pullina in their activity tvoes when a new Plavbook is createdI tried creating "LMUS CX Playbook test" Playbook (ID 5515), but no activity types got pulled in.When I tried reproducing the same on our Jiminny instance, the activity types appeared.Can someone please check why we are not pulling the activity types for Les Mills?Data CentreUSSteps to reproduceCreate a new playbook in Les Mills's instanceCustomer typeEnterpriseActual outcomeNo activity tvoes are beina imported upon new Plavbook creationiExpected outcomeThe activity types to get importedSeverity levelS2ImpactNoneRoot causeVia have no access to FieldDefinition (needed to sync activity types).Linked work itemsrelates to* JY-20698 Les Mills activity types not pulling inCODE REVIEW@• Add internal note Reply to customerNormaltext ~| B I ... || +v | WiteCanned responsesPulsar seems to be workina fine. I created new plavbooks and the fields were populated also on the one the client claims activity tvoes were missina. For Les Mills that is a different storv. The team owner we usefor sync has no permission for FieldDefinition via Tooling API. When I run0. Enhance reply100% L2PTue 21 Apr 9:34:37L ASK ROVO A ® Lô 02In Progress vDetailsAssigneeLukas KovalikReporter@ Stoyan TomovRequest Type# Report a bugKnowledge base@ View related articlesPriority levelP2 MediumDev TeamPlatform teamOrganizationLes MillsCanny LinksOpen Canny Links> More fields Labels, Time tracking, Type of...> Automation 4 Rule executions> featureOS Open featureOsIntercomShowing 1 out of 1 linked conversationsQ Christopher Wilton M =... >> Sentry Sol Linked Issues...
|
NULL
|
-1038443548015801210
|
NULL
|
app_switch
|
ocr
|
NULL
|
FirefoxVIewMistorbookmarksProtlles1OOISWindowmelpn FirefoxVIewMistorbookmarksProtlles1OOISWindowmelpnny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6793RookmarksO JIMINNYIY [SRD-6793] Les Mills activity t XQ Search bookmarks@ For you(• Recent[SRD-6787] Issue with reconnecti• Jy-20698 handle failed field sync& Jiminny MCP Connector - Product[JY-20676] Notify the user if a PalJiminny Mai(UY-20500) Batch initial sync for Sv a bookmarks loolbarSprint Board# SRD QueueGithubJiminny DEVAsk Jiminny Reports by nikolay-yankov • ...© Circle Cl& PROD US8 StagingLal Sentry> E Bookmarks Menu* Starredi8$ AppsQ Spaces+***( Service-Desk•, Queues.A Feed - jiminny - Sentr… Other BookmarksTeam PriorityE All open tickets (12•, Unassianed t... 28 Jiminny(JY-20701 | Reschedule HubSpot S)# Support tea…..E Raised by mePipelines - jiminnvlapr•, Assigned to ….- New TabService requ...1@ Platform teama Processingt.Site reliability... 0# New features... O•; InfoSec issues oai Readv for Cu... 10Eh Pecolved ti 000+= View all queues >Service requestsA IncidentsIul Reports@ OperationsAl Knowledge Base& Customers• Channels• Email logs/› Developer escalationsSlack integration& Reporting Center[ Add shortcutQ Search+ Create< Back #F SRD-6793• While testina somethina on Les Milis's instance. I saw that we are not pullina in their activity tvoes when a new Plavbook is createdI tried creating "LMUS CX Playbook test" Playbook (ID 5515), but no activity types got pulled in.When I tried reproducing the same on our Jiminny instance, the activity types appeared.Can someone please check why we are not pulling the activity types for Les Mills?Data CentreUSSteps to reproduceCreate a new playbook in Les Mills's instanceCustomer typeEnterpriseActual outcomeNo activity tvoes are beina imported upon new Plavbook creationiExpected outcomeThe activity types to get importedSeverity levelS2ImpactNoneRoot causeVia have no access to FieldDefinition (needed to sync activity types).Linked work itemsrelates to* JY-20698 Les Mills activity types not pulling inCODE REVIEW@• Add internal note Reply to customerNormaltext ~| B I ... || +v | WiteCanned responsesPulsar seems to be workina fine. I created new plavbooks and the fields were populated also on the one the client claims activity tvoes were missina. For Les Mills that is a different storv. The team owner we usefor sync has no permission for FieldDefinition via Tooling API. When I run0. Enhance reply100% L2PTue 21 Apr 9:34:37L ASK ROVO A ® Lô 02In Progress vDetailsAssigneeLukas KovalikReporter@ Stoyan TomovRequest Type# Report a bugKnowledge base@ View related articlesPriority levelP2 MediumDev TeamPlatform teamOrganizationLes MillsCanny LinksOpen Canny Links> More fields Labels, Time tracking, Type of...> Automation 4 Rule executions> featureOS Open featureOsIntercomShowing 1 out of 1 linked conversationsQ Christopher Wilton M =... >> Sentry Sol Linked Issues...
|
NULL
|
|
61150
|
1320
|
1
|
2026-04-21T06:41:37.780074+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776753697780_m1.jpg...
|
iTerm2
|
ec2-user@ip-10-30-159-186:~
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Tue Apr 21 09:09:33 on ttys012
Poetry Last login: Tue Apr 21 09:09:33 on ttys012
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 ~ $ vprod
Enter MFA code for arn:aws:iam::438740370364:mfa/[EMAIL]:
An error occurred (ValidationError) when calling the AssumeRole operation: 1 validation error detected: Value '824798648029' at 'tokenCode' failed to satisfy constraint: Member must have length less than or equal to 6
nc: missing hostname and port
usage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]
[--apple-recv-anyif] [--apple-awdl-unres]
[--apple-boundif ifbound]
[--apple-no-cellular] [--apple-no-expensive]
[--apple-no-flowadv] [--apple-tcp-timeout conntimo]
[--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]
[--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]
[--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]
[--apple-tcp-adp-wtimo num_probes]
[--setsockopt-later] [--apple-no-connectx]
[--apple-delegate-pid pid] [--apple-delegate-uuid uuid]
[--apple-kao] [--apple-ext-bk-idle]
[--apple-netsvctype svc] [---apple-nowakefromsleep]
[--apple-notify-ack] [--apple-sockev]
[--apple-tos tos] [--apple-tos-cmsg]
[-s source_ip_address] [-w timeout] [-X proxy_version]
[-x proxy_address[:port]] [hostname] [port[s]]
Connection closed by UNKNOWN port 65535
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod
Enter MFA code for arn:aws:iam::438740370364:mfa/[EMAIL]:
An error occurred (AccessDenied) when calling the AssumeRole operation: MultiFactorAuthentication failed with invalid MFA one time pass code.
nc: missing hostname and port
usage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]
[--apple-recv-anyif] [--apple-awdl-unres]
[--apple-boundif ifbound]
[--apple-no-cellular] [--apple-no-expensive]
[--apple-no-flowadv] [--apple-tcp-timeout conntimo]
[--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]
[--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]
[--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]
[--apple-tcp-adp-wtimo num_probes]
[--setsockopt-later] [--apple-no-connectx]
[--apple-delegate-pid pid] [--apple-delegate-uuid uuid]
[--apple-kao] [--apple-ext-bk-idle]
[--apple-netsvctype svc] [---apple-nowakefromsleep]
[--apple-notify-ack] [--apple-sockev]
[--apple-tos tos] [--apple-tos-cmsg]
[-s source_ip_address] [-w timeout] [-X proxy_version]
[-x proxy_address[:port]] [hostname] [port[s]]
Connection closed by UNKNOWN port 65535
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod
Enter MFA code for arn:aws:iam::438740370364:mfa/[EMAIL]:
Warning: Permanently added 'jiminny-prod-ecs1' (ED25519) to the list of known hosts.
A newer release of "Amazon Linux" is available.
Version 2023.10.20260105:
Version 2023.10.20260120:
Version 2023.10.20260202:
Version 2023.10.20260216:
Version 2023.10.20260302:
Version 2023.10.20260325:
Version 2023.10.20260330:
Version 2023.11.20260406:
Version 2023.11.20260413:
Version 2023.8.20250707:
Version 2023.8.20250715:
Version 2023.8.20250721:
Version 2023.8.20250808:
Version 2023.8.20250818:
Version 2023.8.20250908:
Version 2023.8.20250915:
Version 2023.9.20250929:
Version 2023.9.20251014:
Version 2023.9.20251020:
Version 2023.9.20251027:
Version 2023.9.20251105:
Version 2023.9.20251110:
Version 2023.9.20251117:
Version 2023.9.20251208:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_
~\_ ####_
~~ \_#####\
~~ \###|
~~ \#/ ___ Amazon Linux 2023 (ECS Optimized)
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
For documentation, visit [URL_WITH_CREDENTIALS] ~]$ docker exec -it $(docker ps --format "{{.ID}}" --filter "name=ecs-worker" | head -1) /bin/bash -c "cd /home/jiminny && bash"
root@4703d23a3a38:/home/jiminny# php artisan crm:sync-team-metadata 711 --sync
[2026-04-21 06:39:44] production.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-team-metadata","memoryBeforeCommandInMb":116.0,"memoryPeakBeforeCommandInMb":116.0} {"correlation_id":"b3917ecb-2836-4f3a-a8b1-b9551e4c1890","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Fetching token {"socialAccountId":45478,"provider":"salesforce"} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Token retrieved {"socialAccountId":45478,"provider":"salesforce"} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Generating access token. {"mode":"encrypted"} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Tokens not found in cache, decrypting {"social_account_id":45478} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting data key {"social_account_id":45478} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting tokens {"social_account_id":45478} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"salesforce","crm_owner":16067,"team_id":711} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [SyncTeamMetadata] Begin syncing metadata {"provider":"Salesforce","team_name":"Les Mills","team_id":711} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: Syncing organization... {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [Salesforce] Sending request {"endpoint":"[URL_WITH_CREDENTIALS]
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
security
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
ec2-user@ip-10-30-159-186:~...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Tue Apr 21 09:09:33 on ttys012\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 ~ $ vprod\nEnter MFA code for arn:aws:iam::438740370364:mfa/lukas.kovalik@jiminny.com: \n\nAn error occurred (ValidationError) when calling the AssumeRole operation: 1 validation error detected: Value '824798648029' at 'tokenCode' failed to satisfy constraint: Member must have length less than or equal to 6\nnc: missing hostname and port\nusage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-recv-anyif] [--apple-awdl-unres]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-boundif ifbound]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-cellular] [--apple-no-expensive]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-flowadv] [--apple-tcp-timeout conntimo]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-adp-wtimo num_probes]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--setsockopt-later] [--apple-no-connectx]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-delegate-pid pid] [--apple-delegate-uuid uuid]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-kao] [--apple-ext-bk-idle]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-netsvctype svc] [---apple-nowakefromsleep]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-notify-ack] [--apple-sockev]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tos tos] [--apple-tos-cmsg]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-s source_ip_address] [-w timeout] [-X proxy_version]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-x proxy_address[:port]] [hostname] [port[s]]\nConnection closed by UNKNOWN port 65535\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod\nEnter MFA code for arn:aws:iam::438740370364:mfa/lukas.kovalik@jiminny.com: \n\nAn error occurred (AccessDenied) when calling the AssumeRole operation: MultiFactorAuthentication failed with invalid MFA one time pass code. \nnc: missing hostname and port\nusage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-recv-anyif] [--apple-awdl-unres]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-boundif ifbound]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-cellular] [--apple-no-expensive]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-flowadv] [--apple-tcp-timeout conntimo]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-adp-wtimo num_probes]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--setsockopt-later] [--apple-no-connectx]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-delegate-pid pid] [--apple-delegate-uuid uuid]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-kao] [--apple-ext-bk-idle]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-netsvctype svc] [---apple-nowakefromsleep]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-notify-ack] [--apple-sockev]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tos tos] [--apple-tos-cmsg]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-s source_ip_address] [-w timeout] [-X proxy_version]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-x proxy_address[:port]] [hostname] [port[s]]\nConnection closed by UNKNOWN port 65535\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod\nEnter MFA code for arn:aws:iam::438740370364:mfa/lukas.kovalik@jiminny.com: \nWarning: Permanently added 'jiminny-prod-ecs1' (ED25519) to the list of known hosts.\n\nA newer release of \"Amazon Linux\" is available.\n Version 2023.10.20260105:\n Version 2023.10.20260120:\n Version 2023.10.20260202:\n Version 2023.10.20260216:\n Version 2023.10.20260302:\n Version 2023.10.20260325:\n Version 2023.10.20260330:\n Version 2023.11.20260406:\n Version 2023.11.20260413:\n Version 2023.8.20250707:\n Version 2023.8.20250715:\n Version 2023.8.20250721:\n Version 2023.8.20250808:\n Version 2023.8.20250818:\n Version 2023.8.20250908:\n Version 2023.8.20250915:\n Version 2023.9.20250929:\n Version 2023.9.20251014:\n Version 2023.9.20251020:\n Version 2023.9.20251027:\n Version 2023.9.20251105:\n Version 2023.9.20251110:\n Version 2023.9.20251117:\n Version 2023.9.20251208:\nRun \"/usr/bin/dnf check-release-update\" for full release and version update info\n , #_\n ~\\_ ####_\n ~~ \\_#####\\\n ~~ \\###|\n ~~ \\#/ ___ Amazon Linux 2023 (ECS Optimized)\n ~~ V~' '->\n ~~~ /\n ~~._. _/\n _/ _/\n _/m/'\n\nFor documentation, visit http://aws.amazon.com/documentation/ecs\nLast login: Tue Apr 21 06:33:23 2026 from 10.30.45.167\n[ec2-user@ip-10-30-159-186 ~]$ docker exec -it $(docker ps --format \"{{.ID}}\" --filter \"name=ecs-worker\" | head -1) /bin/bash -c \"cd /home/jiminny && bash\"\nroot@4703d23a3a38:/home/jiminny# php artisan crm:sync-team-metadata 711 --sync\n[2026-04-21 06:39:44] production.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-team-metadata\",\"memoryBeforeCommandInMb\":116.0,\"memoryPeakBeforeCommandInMb\":116.0} {\"correlation_id\":\"b3917ecb-2836-4f3a-a8b1-b9551e4c1890\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":45478,\"provider\":\"salesforce\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":45478,\"provider\":\"salesforce\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"encrypted\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Tokens not found in cache, decrypting {\"social_account_id\":45478} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting data key {\"social_account_id\":45478} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting tokens {\"social_account_id\":45478} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"salesforce\",\"crm_owner\":16067,\"team_id\":711} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [SyncTeamMetadata] Begin syncing metadata {\"provider\":\"Salesforce\",\"team_name\":\"Les Mills\",\"team_id\":711} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: Syncing organization... {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [Salesforce] Sending request {\"endpoint\":\"https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName,OrganizationType,IsSandbox GET\",\"team_id\":711} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.ERROR: [Salesforce] Request exception [404] The requested resource does not exist {\"url\":\"https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName,OrganizationType,IsSandbox\",\"data\":{\"headers\":{\"Authorization\":\"Bearer 00D90000000fUsz!AQEAQKRIt62MP5OBhF0_SPMdUfRNQaX22hSEy4wwlvkW0y7Y8vtMasenRvudh0QG9oI81aqNrLu.wGgkCiT09RHg0aQXiF_d\"}},\"response\":{\"GuzzleHttp\\\\Psr7\\\\Stream\":\"[{\\\"errorCode\\\":\\\"NOT_FOUND\\\",\\\"message\\\":\\\"The requested resource does not exist\\\"}]\"},\"fields\":[]} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.ERROR: The requested resource does not exist {\"exception\":\"[object] (Jiminny\\\\Exceptions\\\\HttpNotFoundException(code: 404): The requested resource does not exist at /home/jiminny/app/Services/Crm/Salesforce/Client.php:573)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Salesforce/Client.php(408): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Client->request('GET', 'https://lesmill...', Array)\n#1 /home/jiminny/app/Services/Crm/Salesforce/Client.php(343): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Client->requestWithAutomaticReauthorize('GET', 'https://lesmill...', Array)\n#2 /home/jiminny/app/Services/Crm/Salesforce/ServiceTraits/RecordManipulationsTrait.php(58): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Client->get('https://lesmill...')\n#3 /home/jiminny/app/Services/Crm/Salesforce/Service.php(1602): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Service->getRecord('Organization', '00D90000000fUsz...', Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncTeamMetadata.php(97): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Service->syncOrganization()\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Jiminny\\\\Repositories\\\\TeamRepository), Object(Illuminate\\\\Log\\\\LogManager))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\SyncJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\SyncJob), Array)\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php(131): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php(111): Illuminate\\\\Queue\\\\SyncQueue->executeJob(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), '', 'crm-sync')\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(246): Illuminate\\\\Queue\\\\SyncQueue->push(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), '', 'crm-sync')\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(230): Illuminate\\\\Bus\\\\Dispatcher->pushCommandToQueue(Object(Illuminate\\\\Queue\\\\SyncQueue), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\\\\Bus\\\\Dispatcher->dispatchToQueue(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(477): Illuminate\\\\Bus\\\\Dispatcher->dispatchSync(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), NULL)\n#26 /home/jiminny/app/Console/Commands/Command.php(102): dispatch_sync(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#27 /home/jiminny/app/Console/Commands/Crm/SyncTeamMetadata.php(50): Jiminny\\\\Console\\\\Commands\\\\Command->dispatch(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\Crm\\\\SyncTeamMetadata->handle()\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#31 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#33 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#34 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#35 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#36 /home/jiminny/app/Console/Commands/Command.php(41): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/symfony/console/Application.php(1117): Jiminny\\\\Console\\\\Commands\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\Crm\\\\SyncTeamMetadata), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#39 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#40 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#41 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#42 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#43 {main}\n\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n\nIn Client.php line 573:\n \n The requested resource does not exist \n \n\nroot@4703d23a3a38:/home/jiminny#","depth":4,"value":"Last login: Tue Apr 21 09:09:33 on ttys012\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 ~ $ vprod\nEnter MFA code for arn:aws:iam::438740370364:mfa/lukas.kovalik@jiminny.com: \n\nAn error occurred (ValidationError) when calling the AssumeRole operation: 1 validation error detected: Value '824798648029' at 'tokenCode' failed to satisfy constraint: Member must have length less than or equal to 6\nnc: missing hostname and port\nusage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-recv-anyif] [--apple-awdl-unres]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-boundif ifbound]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-cellular] [--apple-no-expensive]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-flowadv] [--apple-tcp-timeout conntimo]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-adp-wtimo num_probes]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--setsockopt-later] [--apple-no-connectx]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-delegate-pid pid] [--apple-delegate-uuid uuid]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-kao] [--apple-ext-bk-idle]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-netsvctype svc] [---apple-nowakefromsleep]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-notify-ack] [--apple-sockev]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tos tos] [--apple-tos-cmsg]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-s source_ip_address] [-w timeout] [-X proxy_version]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-x proxy_address[:port]] [hostname] [port[s]]\nConnection closed by UNKNOWN port 65535\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod\nEnter MFA code for arn:aws:iam::438740370364:mfa/lukas.kovalik@jiminny.com: \n\nAn error occurred (AccessDenied) when calling the AssumeRole operation: MultiFactorAuthentication failed with invalid MFA one time pass code. \nnc: missing hostname and port\nusage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-recv-anyif] [--apple-awdl-unres]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-boundif ifbound]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-cellular] [--apple-no-expensive]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-flowadv] [--apple-tcp-timeout conntimo]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-adp-wtimo num_probes]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--setsockopt-later] [--apple-no-connectx]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-delegate-pid pid] [--apple-delegate-uuid uuid]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-kao] [--apple-ext-bk-idle]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-netsvctype svc] [---apple-nowakefromsleep]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-notify-ack] [--apple-sockev]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tos tos] [--apple-tos-cmsg]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-s source_ip_address] [-w timeout] [-X proxy_version]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-x proxy_address[:port]] [hostname] [port[s]]\nConnection closed by UNKNOWN port 65535\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod\nEnter MFA code for arn:aws:iam::438740370364:mfa/lukas.kovalik@jiminny.com: \nWarning: Permanently added 'jiminny-prod-ecs1' (ED25519) to the list of known hosts.\n\nA newer release of \"Amazon Linux\" is available.\n Version 2023.10.20260105:\n Version 2023.10.20260120:\n Version 2023.10.20260202:\n Version 2023.10.20260216:\n Version 2023.10.20260302:\n Version 2023.10.20260325:\n Version 2023.10.20260330:\n Version 2023.11.20260406:\n Version 2023.11.20260413:\n Version 2023.8.20250707:\n Version 2023.8.20250715:\n Version 2023.8.20250721:\n Version 2023.8.20250808:\n Version 2023.8.20250818:\n Version 2023.8.20250908:\n Version 2023.8.20250915:\n Version 2023.9.20250929:\n Version 2023.9.20251014:\n Version 2023.9.20251020:\n Version 2023.9.20251027:\n Version 2023.9.20251105:\n Version 2023.9.20251110:\n Version 2023.9.20251117:\n Version 2023.9.20251208:\nRun \"/usr/bin/dnf check-release-update\" for full release and version update info\n , #_\n ~\\_ ####_\n ~~ \\_#####\\\n ~~ \\###|\n ~~ \\#/ ___ Amazon Linux 2023 (ECS Optimized)\n ~~ V~' '->\n ~~~ /\n ~~._. _/\n _/ _/\n _/m/'\n\nFor documentation, visit http://aws.amazon.com/documentation/ecs\nLast login: Tue Apr 21 06:33:23 2026 from 10.30.45.167\n[ec2-user@ip-10-30-159-186 ~]$ docker exec -it $(docker ps --format \"{{.ID}}\" --filter \"name=ecs-worker\" | head -1) /bin/bash -c \"cd /home/jiminny && bash\"\nroot@4703d23a3a38:/home/jiminny# php artisan crm:sync-team-metadata 711 --sync\n[2026-04-21 06:39:44] production.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-team-metadata\",\"memoryBeforeCommandInMb\":116.0,\"memoryPeakBeforeCommandInMb\":116.0} {\"correlation_id\":\"b3917ecb-2836-4f3a-a8b1-b9551e4c1890\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":45478,\"provider\":\"salesforce\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":45478,\"provider\":\"salesforce\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"encrypted\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Tokens not found in cache, decrypting {\"social_account_id\":45478} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting data key {\"social_account_id\":45478} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting tokens {\"social_account_id\":45478} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"salesforce\",\"crm_owner\":16067,\"team_id\":711} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [SyncTeamMetadata] Begin syncing metadata {\"provider\":\"Salesforce\",\"team_name\":\"Les Mills\",\"team_id\":711} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: Syncing organization... {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [Salesforce] Sending request {\"endpoint\":\"https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName,OrganizationType,IsSandbox GET\",\"team_id\":711} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.ERROR: [Salesforce] Request exception [404] The requested resource does not exist {\"url\":\"https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName,OrganizationType,IsSandbox\",\"data\":{\"headers\":{\"Authorization\":\"Bearer 00D90000000fUsz!AQEAQKRIt62MP5OBhF0_SPMdUfRNQaX22hSEy4wwlvkW0y7Y8vtMasenRvudh0QG9oI81aqNrLu.wGgkCiT09RHg0aQXiF_d\"}},\"response\":{\"GuzzleHttp\\\\Psr7\\\\Stream\":\"[{\\\"errorCode\\\":\\\"NOT_FOUND\\\",\\\"message\\\":\\\"The requested resource does not exist\\\"}]\"},\"fields\":[]} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.ERROR: The requested resource does not exist {\"exception\":\"[object] (Jiminny\\\\Exceptions\\\\HttpNotFoundException(code: 404): The requested resource does not exist at /home/jiminny/app/Services/Crm/Salesforce/Client.php:573)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Salesforce/Client.php(408): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Client->request('GET', 'https://lesmill...', Array)\n#1 /home/jiminny/app/Services/Crm/Salesforce/Client.php(343): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Client->requestWithAutomaticReauthorize('GET', 'https://lesmill...', Array)\n#2 /home/jiminny/app/Services/Crm/Salesforce/ServiceTraits/RecordManipulationsTrait.php(58): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Client->get('https://lesmill...')\n#3 /home/jiminny/app/Services/Crm/Salesforce/Service.php(1602): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Service->getRecord('Organization', '00D90000000fUsz...', Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncTeamMetadata.php(97): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Service->syncOrganization()\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Jiminny\\\\Repositories\\\\TeamRepository), Object(Illuminate\\\\Log\\\\LogManager))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\SyncJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\SyncJob), Array)\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php(131): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php(111): Illuminate\\\\Queue\\\\SyncQueue->executeJob(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), '', 'crm-sync')\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(246): Illuminate\\\\Queue\\\\SyncQueue->push(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), '', 'crm-sync')\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(230): Illuminate\\\\Bus\\\\Dispatcher->pushCommandToQueue(Object(Illuminate\\\\Queue\\\\SyncQueue), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\\\\Bus\\\\Dispatcher->dispatchToQueue(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(477): Illuminate\\\\Bus\\\\Dispatcher->dispatchSync(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), NULL)\n#26 /home/jiminny/app/Console/Commands/Command.php(102): dispatch_sync(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#27 /home/jiminny/app/Console/Commands/Crm/SyncTeamMetadata.php(50): Jiminny\\\\Console\\\\Commands\\\\Command->dispatch(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\Crm\\\\SyncTeamMetadata->handle()\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#31 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#33 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#34 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#35 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#36 /home/jiminny/app/Console/Commands/Command.php(41): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/symfony/console/Application.php(1117): Jiminny\\\\Console\\\\Commands\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\Crm\\\\SyncTeamMetadata), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#39 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#40 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#41 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#42 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#43 {main}\n\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n\nIn Client.php line 573:\n \n The requested resource does not exist \n \n\nroot@4703d23a3a38:/home/jiminny#","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.12326389,"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.12326389,"top":0.05888889,"width":0.12326389,"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.12743056,"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.24652778,"top":0.05888889,"width":0.12326389,"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.25069445,"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 (node)","depth":2,"bounds":{"left":0.36979166,"top":0.05888889,"width":0.12326389,"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.37395832,"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":"security","depth":2,"bounds":{"left":0.49305555,"top":0.05888889,"width":0.12326389,"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.49722221,"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.6163194,"top":0.05888889,"width":0.12326389,"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.62048614,"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.7395833,"top":0.05888889,"width":0.12326389,"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.74375,"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:~ (nc)","depth":2,"bounds":{"left":0.8628472,"top":0.05888889,"width":0.12326389,"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.8670139,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95763886,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"ec2-user@ip-10-30-159-186:~","depth":1,"bounds":{"left":0.4298611,"top":0.033333335,"width":0.14305556,"height":0.017777778},"role_description":"text"}]...
|
4330360275006960429
|
407617728793941881
|
app_switch
|
accessibility
|
NULL
|
Last login: Tue Apr 21 09:09:33 on ttys012
Poetry Last login: Tue Apr 21 09:09:33 on ttys012
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 ~ $ vprod
Enter MFA code for arn:aws:iam::438740370364:mfa/[EMAIL]:
An error occurred (ValidationError) when calling the AssumeRole operation: 1 validation error detected: Value '824798648029' at 'tokenCode' failed to satisfy constraint: Member must have length less than or equal to 6
nc: missing hostname and port
usage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]
[--apple-recv-anyif] [--apple-awdl-unres]
[--apple-boundif ifbound]
[--apple-no-cellular] [--apple-no-expensive]
[--apple-no-flowadv] [--apple-tcp-timeout conntimo]
[--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]
[--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]
[--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]
[--apple-tcp-adp-wtimo num_probes]
[--setsockopt-later] [--apple-no-connectx]
[--apple-delegate-pid pid] [--apple-delegate-uuid uuid]
[--apple-kao] [--apple-ext-bk-idle]
[--apple-netsvctype svc] [---apple-nowakefromsleep]
[--apple-notify-ack] [--apple-sockev]
[--apple-tos tos] [--apple-tos-cmsg]
[-s source_ip_address] [-w timeout] [-X proxy_version]
[-x proxy_address[:port]] [hostname] [port[s]]
Connection closed by UNKNOWN port 65535
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod
Enter MFA code for arn:aws:iam::438740370364:mfa/[EMAIL]:
An error occurred (AccessDenied) when calling the AssumeRole operation: MultiFactorAuthentication failed with invalid MFA one time pass code.
nc: missing hostname and port
usage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]
[--apple-recv-anyif] [--apple-awdl-unres]
[--apple-boundif ifbound]
[--apple-no-cellular] [--apple-no-expensive]
[--apple-no-flowadv] [--apple-tcp-timeout conntimo]
[--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]
[--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]
[--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]
[--apple-tcp-adp-wtimo num_probes]
[--setsockopt-later] [--apple-no-connectx]
[--apple-delegate-pid pid] [--apple-delegate-uuid uuid]
[--apple-kao] [--apple-ext-bk-idle]
[--apple-netsvctype svc] [---apple-nowakefromsleep]
[--apple-notify-ack] [--apple-sockev]
[--apple-tos tos] [--apple-tos-cmsg]
[-s source_ip_address] [-w timeout] [-X proxy_version]
[-x proxy_address[:port]] [hostname] [port[s]]
Connection closed by UNKNOWN port 65535
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod
Enter MFA code for arn:aws:iam::438740370364:mfa/[EMAIL]:
Warning: Permanently added 'jiminny-prod-ecs1' (ED25519) to the list of known hosts.
A newer release of "Amazon Linux" is available.
Version 2023.10.20260105:
Version 2023.10.20260120:
Version 2023.10.20260202:
Version 2023.10.20260216:
Version 2023.10.20260302:
Version 2023.10.20260325:
Version 2023.10.20260330:
Version 2023.11.20260406:
Version 2023.11.20260413:
Version 2023.8.20250707:
Version 2023.8.20250715:
Version 2023.8.20250721:
Version 2023.8.20250808:
Version 2023.8.20250818:
Version 2023.8.20250908:
Version 2023.8.20250915:
Version 2023.9.20250929:
Version 2023.9.20251014:
Version 2023.9.20251020:
Version 2023.9.20251027:
Version 2023.9.20251105:
Version 2023.9.20251110:
Version 2023.9.20251117:
Version 2023.9.20251208:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_
~\_ ####_
~~ \_#####\
~~ \###|
~~ \#/ ___ Amazon Linux 2023 (ECS Optimized)
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
For documentation, visit [URL_WITH_CREDENTIALS] ~]$ docker exec -it $(docker ps --format "{{.ID}}" --filter "name=ecs-worker" | head -1) /bin/bash -c "cd /home/jiminny && bash"
root@4703d23a3a38:/home/jiminny# php artisan crm:sync-team-metadata 711 --sync
[2026-04-21 06:39:44] production.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-team-metadata","memoryBeforeCommandInMb":116.0,"memoryPeakBeforeCommandInMb":116.0} {"correlation_id":"b3917ecb-2836-4f3a-a8b1-b9551e4c1890","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Fetching token {"socialAccountId":45478,"provider":"salesforce"} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Token retrieved {"socialAccountId":45478,"provider":"salesforce"} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Generating access token. {"mode":"encrypted"} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Tokens not found in cache, decrypting {"social_account_id":45478} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting data key {"social_account_id":45478} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting tokens {"social_account_id":45478} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"salesforce","crm_owner":16067,"team_id":711} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [SyncTeamMetadata] Begin syncing metadata {"provider":"Salesforce","team_name":"Les Mills","team_id":711} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: Syncing organization... {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [Salesforce] Sending request {"endpoint":"[URL_WITH_CREDENTIALS]
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
security
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
ec2-user@ip-10-30-159-186:~...
|
NULL
|
|
61151
|
1321
|
1
|
2026-04-21T06:41:37.780050+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776753697780_m2.jpg...
|
iTerm2
|
ec2-user@ip-10-30-159-186:~
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Tue Apr 21 09:09:33 on ttys012
Poetry Last login: Tue Apr 21 09:09:33 on ttys012
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 ~ $ vprod
Enter MFA code for arn:aws:iam::438740370364:mfa/[EMAIL]:
An error occurred (ValidationError) when calling the AssumeRole operation: 1 validation error detected: Value '824798648029' at 'tokenCode' failed to satisfy constraint: Member must have length less than or equal to 6
nc: missing hostname and port
usage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]
[--apple-recv-anyif] [--apple-awdl-unres]
[--apple-boundif ifbound]
[--apple-no-cellular] [--apple-no-expensive]
[--apple-no-flowadv] [--apple-tcp-timeout conntimo]
[--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]
[--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]
[--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]
[--apple-tcp-adp-wtimo num_probes]
[--setsockopt-later] [--apple-no-connectx]
[--apple-delegate-pid pid] [--apple-delegate-uuid uuid]
[--apple-kao] [--apple-ext-bk-idle]
[--apple-netsvctype svc] [---apple-nowakefromsleep]
[--apple-notify-ack] [--apple-sockev]
[--apple-tos tos] [--apple-tos-cmsg]
[-s source_ip_address] [-w timeout] [-X proxy_version]
[-x proxy_address[:port]] [hostname] [port[s]]
Connection closed by UNKNOWN port 65535
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod
Enter MFA code for arn:aws:iam::438740370364:mfa/[EMAIL]:
An error occurred (AccessDenied) when calling the AssumeRole operation: MultiFactorAuthentication failed with invalid MFA one time pass code.
nc: missing hostname and port
usage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]
[--apple-recv-anyif] [--apple-awdl-unres]
[--apple-boundif ifbound]
[--apple-no-cellular] [--apple-no-expensive]
[--apple-no-flowadv] [--apple-tcp-timeout conntimo]
[--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]
[--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]
[--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]
[--apple-tcp-adp-wtimo num_probes]
[--setsockopt-later] [--apple-no-connectx]
[--apple-delegate-pid pid] [--apple-delegate-uuid uuid]
[--apple-kao] [--apple-ext-bk-idle]
[--apple-netsvctype svc] [---apple-nowakefromsleep]
[--apple-notify-ack] [--apple-sockev]
[--apple-tos tos] [--apple-tos-cmsg]
[-s source_ip_address] [-w timeout] [-X proxy_version]
[-x proxy_address[:port]] [hostname] [port[s]]
Connection closed by UNKNOWN port 65535
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod
Enter MFA code for arn:aws:iam::438740370364:mfa/[EMAIL]:
Warning: Permanently added 'jiminny-prod-ecs1' (ED25519) to the list of known hosts.
A newer release of "Amazon Linux" is available.
Version 2023.10.20260105:
Version 2023.10.20260120:
Version 2023.10.20260202:
Version 2023.10.20260216:
Version 2023.10.20260302:
Version 2023.10.20260325:
Version 2023.10.20260330:
Version 2023.11.20260406:
Version 2023.11.20260413:
Version 2023.8.20250707:
Version 2023.8.20250715:
Version 2023.8.20250721:
Version 2023.8.20250808:
Version 2023.8.20250818:
Version 2023.8.20250908:
Version 2023.8.20250915:
Version 2023.9.20250929:
Version 2023.9.20251014:
Version 2023.9.20251020:
Version 2023.9.20251027:
Version 2023.9.20251105:
Version 2023.9.20251110:
Version 2023.9.20251117:
Version 2023.9.20251208:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_
~\_ ####_
~~ \_#####\
~~ \###|
~~ \#/ ___ Amazon Linux 2023 (ECS Optimized)
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
For documentation, visit [URL_WITH_CREDENTIALS] ~]$ docker exec -it $(docker ps --format "{{.ID}}" --filter "name=ecs-worker" | head -1) /bin/bash -c "cd /home/jiminny && bash"
root@4703d23a3a38:/home/jiminny# php artisan crm:sync-team-metadata 711 --sync
[2026-04-21 06:39:44] production.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-team-metadata","memoryBeforeCommandInMb":116.0,"memoryPeakBeforeCommandInMb":116.0} {"correlation_id":"b3917ecb-2836-4f3a-a8b1-b9551e4c1890","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Fetching token {"socialAccountId":45478,"provider":"salesforce"} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Token retrieved {"socialAccountId":45478,"provider":"salesforce"} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Generating access token. {"mode":"encrypted"} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Tokens not found in cache, decrypting {"social_account_id":45478} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting data key {"social_account_id":45478} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting tokens {"social_account_id":45478} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"salesforce","crm_owner":16067,"team_id":711} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [SyncTeamMetadata] Begin syncing metadata {"provider":"Salesforce","team_name":"Les Mills","team_id":711} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: Syncing organization... {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [Salesforce] Sending request {"endpoint":"[URL_WITH_CREDENTIALS]
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
security
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
ec2-user@ip-10-30-159-186:~...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Tue Apr 21 09:09:33 on ttys012\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 ~ $ vprod\nEnter MFA code for arn:aws:iam::438740370364:mfa/lukas.kovalik@jiminny.com: \n\nAn error occurred (ValidationError) when calling the AssumeRole operation: 1 validation error detected: Value '824798648029' at 'tokenCode' failed to satisfy constraint: Member must have length less than or equal to 6\nnc: missing hostname and port\nusage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-recv-anyif] [--apple-awdl-unres]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-boundif ifbound]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-cellular] [--apple-no-expensive]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-flowadv] [--apple-tcp-timeout conntimo]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-adp-wtimo num_probes]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--setsockopt-later] [--apple-no-connectx]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-delegate-pid pid] [--apple-delegate-uuid uuid]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-kao] [--apple-ext-bk-idle]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-netsvctype svc] [---apple-nowakefromsleep]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-notify-ack] [--apple-sockev]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tos tos] [--apple-tos-cmsg]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-s source_ip_address] [-w timeout] [-X proxy_version]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-x proxy_address[:port]] [hostname] [port[s]]\nConnection closed by UNKNOWN port 65535\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod\nEnter MFA code for arn:aws:iam::438740370364:mfa/lukas.kovalik@jiminny.com: \n\nAn error occurred (AccessDenied) when calling the AssumeRole operation: MultiFactorAuthentication failed with invalid MFA one time pass code. \nnc: missing hostname and port\nusage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-recv-anyif] [--apple-awdl-unres]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-boundif ifbound]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-cellular] [--apple-no-expensive]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-flowadv] [--apple-tcp-timeout conntimo]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-adp-wtimo num_probes]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--setsockopt-later] [--apple-no-connectx]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-delegate-pid pid] [--apple-delegate-uuid uuid]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-kao] [--apple-ext-bk-idle]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-netsvctype svc] [---apple-nowakefromsleep]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-notify-ack] [--apple-sockev]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tos tos] [--apple-tos-cmsg]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-s source_ip_address] [-w timeout] [-X proxy_version]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-x proxy_address[:port]] [hostname] [port[s]]\nConnection closed by UNKNOWN port 65535\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod\nEnter MFA code for arn:aws:iam::438740370364:mfa/lukas.kovalik@jiminny.com: \nWarning: Permanently added 'jiminny-prod-ecs1' (ED25519) to the list of known hosts.\n\nA newer release of \"Amazon Linux\" is available.\n Version 2023.10.20260105:\n Version 2023.10.20260120:\n Version 2023.10.20260202:\n Version 2023.10.20260216:\n Version 2023.10.20260302:\n Version 2023.10.20260325:\n Version 2023.10.20260330:\n Version 2023.11.20260406:\n Version 2023.11.20260413:\n Version 2023.8.20250707:\n Version 2023.8.20250715:\n Version 2023.8.20250721:\n Version 2023.8.20250808:\n Version 2023.8.20250818:\n Version 2023.8.20250908:\n Version 2023.8.20250915:\n Version 2023.9.20250929:\n Version 2023.9.20251014:\n Version 2023.9.20251020:\n Version 2023.9.20251027:\n Version 2023.9.20251105:\n Version 2023.9.20251110:\n Version 2023.9.20251117:\n Version 2023.9.20251208:\nRun \"/usr/bin/dnf check-release-update\" for full release and version update info\n , #_\n ~\\_ ####_\n ~~ \\_#####\\\n ~~ \\###|\n ~~ \\#/ ___ Amazon Linux 2023 (ECS Optimized)\n ~~ V~' '->\n ~~~ /\n ~~._. _/\n _/ _/\n _/m/'\n\nFor documentation, visit http://aws.amazon.com/documentation/ecs\nLast login: Tue Apr 21 06:33:23 2026 from 10.30.45.167\n[ec2-user@ip-10-30-159-186 ~]$ docker exec -it $(docker ps --format \"{{.ID}}\" --filter \"name=ecs-worker\" | head -1) /bin/bash -c \"cd /home/jiminny && bash\"\nroot@4703d23a3a38:/home/jiminny# php artisan crm:sync-team-metadata 711 --sync\n[2026-04-21 06:39:44] production.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-team-metadata\",\"memoryBeforeCommandInMb\":116.0,\"memoryPeakBeforeCommandInMb\":116.0} {\"correlation_id\":\"b3917ecb-2836-4f3a-a8b1-b9551e4c1890\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":45478,\"provider\":\"salesforce\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":45478,\"provider\":\"salesforce\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"encrypted\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Tokens not found in cache, decrypting {\"social_account_id\":45478} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting data key {\"social_account_id\":45478} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting tokens {\"social_account_id\":45478} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"salesforce\",\"crm_owner\":16067,\"team_id\":711} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [SyncTeamMetadata] Begin syncing metadata {\"provider\":\"Salesforce\",\"team_name\":\"Les Mills\",\"team_id\":711} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: Syncing organization... {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [Salesforce] Sending request {\"endpoint\":\"https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName,OrganizationType,IsSandbox GET\",\"team_id\":711} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.ERROR: [Salesforce] Request exception [404] The requested resource does not exist {\"url\":\"https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName,OrganizationType,IsSandbox\",\"data\":{\"headers\":{\"Authorization\":\"Bearer 00D90000000fUsz!AQEAQKRIt62MP5OBhF0_SPMdUfRNQaX22hSEy4wwlvkW0y7Y8vtMasenRvudh0QG9oI81aqNrLu.wGgkCiT09RHg0aQXiF_d\"}},\"response\":{\"GuzzleHttp\\\\Psr7\\\\Stream\":\"[{\\\"errorCode\\\":\\\"NOT_FOUND\\\",\\\"message\\\":\\\"The requested resource does not exist\\\"}]\"},\"fields\":[]} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.ERROR: The requested resource does not exist {\"exception\":\"[object] (Jiminny\\\\Exceptions\\\\HttpNotFoundException(code: 404): The requested resource does not exist at /home/jiminny/app/Services/Crm/Salesforce/Client.php:573)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Salesforce/Client.php(408): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Client->request('GET', 'https://lesmill...', Array)\n#1 /home/jiminny/app/Services/Crm/Salesforce/Client.php(343): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Client->requestWithAutomaticReauthorize('GET', 'https://lesmill...', Array)\n#2 /home/jiminny/app/Services/Crm/Salesforce/ServiceTraits/RecordManipulationsTrait.php(58): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Client->get('https://lesmill...')\n#3 /home/jiminny/app/Services/Crm/Salesforce/Service.php(1602): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Service->getRecord('Organization', '00D90000000fUsz...', Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncTeamMetadata.php(97): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Service->syncOrganization()\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Jiminny\\\\Repositories\\\\TeamRepository), Object(Illuminate\\\\Log\\\\LogManager))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\SyncJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\SyncJob), Array)\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php(131): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php(111): Illuminate\\\\Queue\\\\SyncQueue->executeJob(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), '', 'crm-sync')\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(246): Illuminate\\\\Queue\\\\SyncQueue->push(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), '', 'crm-sync')\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(230): Illuminate\\\\Bus\\\\Dispatcher->pushCommandToQueue(Object(Illuminate\\\\Queue\\\\SyncQueue), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\\\\Bus\\\\Dispatcher->dispatchToQueue(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(477): Illuminate\\\\Bus\\\\Dispatcher->dispatchSync(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), NULL)\n#26 /home/jiminny/app/Console/Commands/Command.php(102): dispatch_sync(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#27 /home/jiminny/app/Console/Commands/Crm/SyncTeamMetadata.php(50): Jiminny\\\\Console\\\\Commands\\\\Command->dispatch(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\Crm\\\\SyncTeamMetadata->handle()\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#31 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#33 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#34 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#35 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#36 /home/jiminny/app/Console/Commands/Command.php(41): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/symfony/console/Application.php(1117): Jiminny\\\\Console\\\\Commands\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\Crm\\\\SyncTeamMetadata), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#39 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#40 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#41 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#42 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#43 {main}\n\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n\nIn Client.php line 573:\n \n The requested resource does not exist \n \n\nroot@4703d23a3a38:/home/jiminny#","depth":4,"value":"Last login: Tue Apr 21 09:09:33 on ttys012\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 ~ $ vprod\nEnter MFA code for arn:aws:iam::438740370364:mfa/lukas.kovalik@jiminny.com: \n\nAn error occurred (ValidationError) when calling the AssumeRole operation: 1 validation error detected: Value '824798648029' at 'tokenCode' failed to satisfy constraint: Member must have length less than or equal to 6\nnc: missing hostname and port\nusage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-recv-anyif] [--apple-awdl-unres]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-boundif ifbound]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-cellular] [--apple-no-expensive]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-flowadv] [--apple-tcp-timeout conntimo]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-adp-wtimo num_probes]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--setsockopt-later] [--apple-no-connectx]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-delegate-pid pid] [--apple-delegate-uuid uuid]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-kao] [--apple-ext-bk-idle]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-netsvctype svc] [---apple-nowakefromsleep]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-notify-ack] [--apple-sockev]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tos tos] [--apple-tos-cmsg]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-s source_ip_address] [-w timeout] [-X proxy_version]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-x proxy_address[:port]] [hostname] [port[s]]\nConnection closed by UNKNOWN port 65535\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod\nEnter MFA code for arn:aws:iam::438740370364:mfa/lukas.kovalik@jiminny.com: \n\nAn error occurred (AccessDenied) when calling the AssumeRole operation: MultiFactorAuthentication failed with invalid MFA one time pass code. \nnc: missing hostname and port\nusage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-recv-anyif] [--apple-awdl-unres]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-boundif ifbound]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-cellular] [--apple-no-expensive]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-no-flowadv] [--apple-tcp-timeout conntimo]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tcp-adp-wtimo num_probes]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--setsockopt-later] [--apple-no-connectx]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-delegate-pid pid] [--apple-delegate-uuid uuid]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-kao] [--apple-ext-bk-idle]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-netsvctype svc] [---apple-nowakefromsleep]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-notify-ack] [--apple-sockev]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [--apple-tos tos] [--apple-tos-cmsg]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-s source_ip_address] [-w timeout] [-X proxy_version]\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t [-x proxy_address[:port]] [hostname] [port[s]]\nConnection closed by UNKNOWN port 65535\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod\nEnter MFA code for arn:aws:iam::438740370364:mfa/lukas.kovalik@jiminny.com: \nWarning: Permanently added 'jiminny-prod-ecs1' (ED25519) to the list of known hosts.\n\nA newer release of \"Amazon Linux\" is available.\n Version 2023.10.20260105:\n Version 2023.10.20260120:\n Version 2023.10.20260202:\n Version 2023.10.20260216:\n Version 2023.10.20260302:\n Version 2023.10.20260325:\n Version 2023.10.20260330:\n Version 2023.11.20260406:\n Version 2023.11.20260413:\n Version 2023.8.20250707:\n Version 2023.8.20250715:\n Version 2023.8.20250721:\n Version 2023.8.20250808:\n Version 2023.8.20250818:\n Version 2023.8.20250908:\n Version 2023.8.20250915:\n Version 2023.9.20250929:\n Version 2023.9.20251014:\n Version 2023.9.20251020:\n Version 2023.9.20251027:\n Version 2023.9.20251105:\n Version 2023.9.20251110:\n Version 2023.9.20251117:\n Version 2023.9.20251208:\nRun \"/usr/bin/dnf check-release-update\" for full release and version update info\n , #_\n ~\\_ ####_\n ~~ \\_#####\\\n ~~ \\###|\n ~~ \\#/ ___ Amazon Linux 2023 (ECS Optimized)\n ~~ V~' '->\n ~~~ /\n ~~._. _/\n _/ _/\n _/m/'\n\nFor documentation, visit http://aws.amazon.com/documentation/ecs\nLast login: Tue Apr 21 06:33:23 2026 from 10.30.45.167\n[ec2-user@ip-10-30-159-186 ~]$ docker exec -it $(docker ps --format \"{{.ID}}\" --filter \"name=ecs-worker\" | head -1) /bin/bash -c \"cd /home/jiminny && bash\"\nroot@4703d23a3a38:/home/jiminny# php artisan crm:sync-team-metadata 711 --sync\n[2026-04-21 06:39:44] production.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-team-metadata\",\"memoryBeforeCommandInMb\":116.0,\"memoryPeakBeforeCommandInMb\":116.0} {\"correlation_id\":\"b3917ecb-2836-4f3a-a8b1-b9551e4c1890\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":45478,\"provider\":\"salesforce\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":45478,\"provider\":\"salesforce\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"encrypted\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Tokens not found in cache, decrypting {\"social_account_id\":45478} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting data key {\"social_account_id\":45478} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting tokens {\"social_account_id\":45478} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"salesforce\",\"crm_owner\":16067,\"team_id\":711} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [SyncTeamMetadata] Begin syncing metadata {\"provider\":\"Salesforce\",\"team_name\":\"Les Mills\",\"team_id\":711} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: Syncing organization... {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.INFO: [Salesforce] Sending request {\"endpoint\":\"https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName,OrganizationType,IsSandbox GET\",\"team_id\":711} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.ERROR: [Salesforce] Request exception [404] The requested resource does not exist {\"url\":\"https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName,OrganizationType,IsSandbox\",\"data\":{\"headers\":{\"Authorization\":\"Bearer 00D90000000fUsz!AQEAQKRIt62MP5OBhF0_SPMdUfRNQaX22hSEy4wwlvkW0y7Y8vtMasenRvudh0QG9oI81aqNrLu.wGgkCiT09RHg0aQXiF_d\"}},\"response\":{\"GuzzleHttp\\\\Psr7\\\\Stream\":\"[{\\\"errorCode\\\":\\\"NOT_FOUND\\\",\\\"message\\\":\\\"The requested resource does not exist\\\"}]\"},\"fields\":[]} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n[2026-04-21 06:39:44] production.ERROR: The requested resource does not exist {\"exception\":\"[object] (Jiminny\\\\Exceptions\\\\HttpNotFoundException(code: 404): The requested resource does not exist at /home/jiminny/app/Services/Crm/Salesforce/Client.php:573)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Salesforce/Client.php(408): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Client->request('GET', 'https://lesmill...', Array)\n#1 /home/jiminny/app/Services/Crm/Salesforce/Client.php(343): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Client->requestWithAutomaticReauthorize('GET', 'https://lesmill...', Array)\n#2 /home/jiminny/app/Services/Crm/Salesforce/ServiceTraits/RecordManipulationsTrait.php(58): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Client->get('https://lesmill...')\n#3 /home/jiminny/app/Services/Crm/Salesforce/Service.php(1602): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Service->getRecord('Organization', '00D90000000fUsz...', Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncTeamMetadata.php(97): Jiminny\\\\Services\\\\Crm\\\\Salesforce\\\\Service->syncOrganization()\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Jiminny\\\\Repositories\\\\TeamRepository), Object(Illuminate\\\\Log\\\\LogManager))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\SyncJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\SyncJob), Array)\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php(131): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php(111): Illuminate\\\\Queue\\\\SyncQueue->executeJob(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), '', 'crm-sync')\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(246): Illuminate\\\\Queue\\\\SyncQueue->push(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), '', 'crm-sync')\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(230): Illuminate\\\\Bus\\\\Dispatcher->pushCommandToQueue(Object(Illuminate\\\\Queue\\\\SyncQueue), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\\\\Bus\\\\Dispatcher->dispatchToQueue(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(477): Illuminate\\\\Bus\\\\Dispatcher->dispatchSync(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata), NULL)\n#26 /home/jiminny/app/Console/Commands/Command.php(102): dispatch_sync(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#27 /home/jiminny/app/Console/Commands/Crm/SyncTeamMetadata.php(50): Jiminny\\\\Console\\\\Commands\\\\Command->dispatch(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncTeamMetadata))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\Crm\\\\SyncTeamMetadata->handle()\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#31 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#33 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#34 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#35 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#36 /home/jiminny/app/Console/Commands/Command.php(41): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/symfony/console/Application.php(1117): Jiminny\\\\Console\\\\Commands\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\Crm\\\\SyncTeamMetadata), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#39 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#40 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#41 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#42 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#43 {main}\n\"} {\"correlation_id\":\"9f4cb09c-7717-4174-b568-a757006779fd\",\"trace_id\":\"67615309-0a8b-4eda-948f-1f885b9bdad4\"}\n\n\nIn Client.php line 573:\n \n The requested resource does not exist \n \n\nroot@4703d23a3a38:/home/jiminny#","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.05900931,"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.32928857,"top":1.0,"width":0.05900931,"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.33128324,"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.3882979,"top":1.0,"width":0.05900931,"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.39029256,"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 (node)","depth":2,"bounds":{"left":0.44730717,"top":1.0,"width":0.05900931,"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.44930187,"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":"security","depth":2,"bounds":{"left":0.5063165,"top":1.0,"width":0.05900931,"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.50831115,"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.5653258,"top":1.0,"width":0.05900931,"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.56732047,"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.6243351,"top":1.0,"width":0.05900931,"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.6263298,"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:~ (nc)","depth":2,"bounds":{"left":0.6833444,"top":1.0,"width":0.05900931,"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.6853391,"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.7287234,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"ec2-user@ip-10-30-159-186:~","depth":1,"bounds":{"left":0.47606382,"top":1.0,"width":0.068484046,"height":-0.02394259},"role_description":"text"}]...
|
4330360275006960429
|
407617728793941881
|
app_switch
|
accessibility
|
NULL
|
Last login: Tue Apr 21 09:09:33 on ttys012
Poetry Last login: Tue Apr 21 09:09:33 on ttys012
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 ~ $ vprod
Enter MFA code for arn:aws:iam::438740370364:mfa/[EMAIL]:
An error occurred (ValidationError) when calling the AssumeRole operation: 1 validation error detected: Value '824798648029' at 'tokenCode' failed to satisfy constraint: Member must have length less than or equal to 6
nc: missing hostname and port
usage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]
[--apple-recv-anyif] [--apple-awdl-unres]
[--apple-boundif ifbound]
[--apple-no-cellular] [--apple-no-expensive]
[--apple-no-flowadv] [--apple-tcp-timeout conntimo]
[--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]
[--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]
[--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]
[--apple-tcp-adp-wtimo num_probes]
[--setsockopt-later] [--apple-no-connectx]
[--apple-delegate-pid pid] [--apple-delegate-uuid uuid]
[--apple-kao] [--apple-ext-bk-idle]
[--apple-netsvctype svc] [---apple-nowakefromsleep]
[--apple-notify-ack] [--apple-sockev]
[--apple-tos tos] [--apple-tos-cmsg]
[-s source_ip_address] [-w timeout] [-X proxy_version]
[-x proxy_address[:port]] [hostname] [port[s]]
Connection closed by UNKNOWN port 65535
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod
Enter MFA code for arn:aws:iam::438740370364:mfa/[EMAIL]:
An error occurred (AccessDenied) when calling the AssumeRole operation: MultiFactorAuthentication failed with invalid MFA one time pass code.
nc: missing hostname and port
usage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]
[--apple-recv-anyif] [--apple-awdl-unres]
[--apple-boundif ifbound]
[--apple-no-cellular] [--apple-no-expensive]
[--apple-no-flowadv] [--apple-tcp-timeout conntimo]
[--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]
[--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]
[--tcp-adp-rtimo num_probes] [--apple-intcoproc-allow]
[--apple-tcp-adp-wtimo num_probes]
[--setsockopt-later] [--apple-no-connectx]
[--apple-delegate-pid pid] [--apple-delegate-uuid uuid]
[--apple-kao] [--apple-ext-bk-idle]
[--apple-netsvctype svc] [---apple-nowakefromsleep]
[--apple-notify-ack] [--apple-sockev]
[--apple-tos tos] [--apple-tos-cmsg]
[-s source_ip_address] [-w timeout] [-X proxy_version]
[-x proxy_address[:port]] [hostname] [port[s]]
Connection closed by UNKNOWN port 65535
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vprod
Enter MFA code for arn:aws:iam::438740370364:mfa/[EMAIL]:
Warning: Permanently added 'jiminny-prod-ecs1' (ED25519) to the list of known hosts.
A newer release of "Amazon Linux" is available.
Version 2023.10.20260105:
Version 2023.10.20260120:
Version 2023.10.20260202:
Version 2023.10.20260216:
Version 2023.10.20260302:
Version 2023.10.20260325:
Version 2023.10.20260330:
Version 2023.11.20260406:
Version 2023.11.20260413:
Version 2023.8.20250707:
Version 2023.8.20250715:
Version 2023.8.20250721:
Version 2023.8.20250808:
Version 2023.8.20250818:
Version 2023.8.20250908:
Version 2023.8.20250915:
Version 2023.9.20250929:
Version 2023.9.20251014:
Version 2023.9.20251020:
Version 2023.9.20251027:
Version 2023.9.20251105:
Version 2023.9.20251110:
Version 2023.9.20251117:
Version 2023.9.20251208:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_
~\_ ####_
~~ \_#####\
~~ \###|
~~ \#/ ___ Amazon Linux 2023 (ECS Optimized)
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
For documentation, visit [URL_WITH_CREDENTIALS] ~]$ docker exec -it $(docker ps --format "{{.ID}}" --filter "name=ecs-worker" | head -1) /bin/bash -c "cd /home/jiminny && bash"
root@4703d23a3a38:/home/jiminny# php artisan crm:sync-team-metadata 711 --sync
[2026-04-21 06:39:44] production.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-team-metadata","memoryBeforeCommandInMb":116.0,"memoryPeakBeforeCommandInMb":116.0} {"correlation_id":"b3917ecb-2836-4f3a-a8b1-b9551e4c1890","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Fetching token {"socialAccountId":45478,"provider":"salesforce"} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [SocialAccountService] Token retrieved {"socialAccountId":45478,"provider":"salesforce"} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Generating access token. {"mode":"encrypted"} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Tokens not found in cache, decrypting {"social_account_id":45478} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting data key {"social_account_id":45478} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [EncryptedTokenManager] Decrypting tokens {"social_account_id":45478} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"salesforce","crm_owner":16067,"team_id":711} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [SyncTeamMetadata] Begin syncing metadata {"provider":"Salesforce","team_name":"Les Mills","team_id":711} {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: Syncing organization... {"correlation_id":"9f4cb09c-7717-4174-b568-a757006779fd","trace_id":"67615309-0a8b-4eda-948f-1f885b9bdad4"}
[2026-04-21 06:39:44] production.INFO: [Salesforce] Sending request {"endpoint":"[URL_WITH_CREDENTIALS]
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
security
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
ec2-user@ip-10-30-159-186:~...
|
NULL
|
|
61513
|
1326
|
44
|
2026-04-21T07:00:55.702278+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776754855702_m1.jpg...
|
CleanShot X
|
Meet - Daily - Platform — Work
|
1
|
meet.google.com/agt-teir-cwt?authuser=lukas.kovali meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.com...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
You left the meeting
You left the meeting
Rejoin
Rejoin
Return to home screen
Return to home screen
How was the audio and video?
How was the audio and video?
Rate the meeting 1 star out of 5.
Rate the meeting 2 stars out of 5.
Rate the meeting 3 stars out of 5.
Rate the meeting 4 stars out of 5.
Rate the meeting 5 stars out of 5.
Very bad
Very good
Feedback
Feedback
60
Returning to home screen
Returning to home screen in 60 seconds....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","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":"You left the meeting","depth":9,"bounds":{"left":0.4045139,"top":0.18333334,"width":0.22465278,"height":0.04888889},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You left the meeting","depth":10,"bounds":{"left":0.4045139,"top":0.18277778,"width":0.22465278,"height":0.050555557},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rejoin","depth":10,"bounds":{"left":0.41493055,"top":0.27222222,"width":0.062152777,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Rejoin","depth":12,"bounds":{"left":0.43229166,"top":0.28444445,"width":0.027430555,"height":0.020555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Return to home screen","depth":10,"bounds":{"left":0.4826389,"top":0.27222222,"width":0.13611111,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Return to home screen","depth":12,"bounds":{"left":0.49930555,"top":0.28444445,"width":0.10277778,"height":0.020555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How was the audio and video?","depth":9,"bounds":{"left":0.41284722,"top":0.39222223,"width":0.20833333,"height":0.046666667},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How was the audio and video?","depth":10,"bounds":{"left":0.41284722,"top":0.39444444,"width":0.15729167,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Rate the meeting 1 star out of 5.","depth":9,"bounds":{"left":0.41631943,"top":0.43888888,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Rate the meeting 2 stars out of 5.","depth":9,"bounds":{"left":0.45833334,"top":0.43888888,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Rate the meeting 3 stars out of 5.","depth":9,"bounds":{"left":0.5003472,"top":0.43888888,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Rate the meeting 4 stars out of 5.","depth":9,"bounds":{"left":0.54236114,"top":0.43888888,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Rate the meeting 5 stars out of 5.","depth":9,"bounds":{"left":0.584375,"top":0.43888888,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Very bad","depth":10,"bounds":{"left":0.41979167,"top":0.49333334,"width":0.034027778,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Very good","depth":10,"bounds":{"left":0.575,"top":0.49333334,"width":0.03923611,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Feedback","depth":10,"bounds":{"left":0.03784722,"top":0.95111114,"width":0.081597224,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feedback","depth":12,"bounds":{"left":0.06423611,"top":0.9633333,"width":0.044097222,"height":0.020555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"60","depth":11,"bounds":{"left":0.061458334,"top":0.11666667,"width":0.011111111,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Returning to home screen","depth":11,"bounds":{"left":0.09201389,"top":0.11666667,"width":0.11423611,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Returning to home screen in 60 seconds.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-7419687225687020690
|
704842156581760906
|
app_switch
|
accessibility
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
You left the meeting
You left the meeting
Rejoin
Rejoin
Return to home screen
Return to home screen
How was the audio and video?
How was the audio and video?
Rate the meeting 1 star out of 5.
Rate the meeting 2 stars out of 5.
Rate the meeting 3 stars out of 5.
Rate the meeting 4 stars out of 5.
Rate the meeting 5 stars out of 5.
Very bad
Very good
Feedback
Feedback
60
Returning to home screen
Returning to home screen in 60 seconds....
|
NULL
|
|
61534
|
1326
|
51
|
2026-04-21T07:01:54.307996+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776754914307_m1.jpg...
|
Finder
|
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Firefox File EditView•<→ CHistoryBookmarksProfi Firefox File EditView•<→ CHistoryBookmarksProfilesToolsWindow Help• • @ meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.com‹ > 0 • ₴ Daily - Platform • 4m left A100% C8 Tue 21 Apr 10:01:53Returning to home screenYou left the meetingRejoinReturn to home screenHow was the audio and video?Very badVery goodLộ3• Feedback...
|
NULL
|
3631326046065051042
|
NULL
|
app_switch
|
ocr
|
NULL
|
Firefox File EditView•<→ CHistoryBookmarksProfi Firefox File EditView•<→ CHistoryBookmarksProfilesToolsWindow Help• • @ meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.com‹ > 0 • ₴ Daily - Platform • 4m left A100% C8 Tue 21 Apr 10:01:53Returning to home screenYou left the meetingRejoinReturn to home screenHow was the audio and video?Very badVery goodLộ3• Feedback...
|
NULL
|
|
61535
|
1327
|
55
|
2026-04-21T07:01:54.308036+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776754914308_m2.jpg...
|
Finder
|
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxcalVIewMistor•.•IY [SRD-6793] Les Mills act FirefoxcalVIewMistor•.•IY [SRD-6793] Les Mills activity type(SRD-6787] Issue with reconnectirX Jiminny MCP Connector - Product+ (UY-20676) Notify the user if a PanM Jiminny Mail(JY-20500) Batch initial sync for S.Feed - jiminny - Sentry& Jiminny() JY-20701 | Reschedule HubSpot SPipelines - jiminny/appNew TabService-Desk - Queues - Platform_ New TabbookmarksProtlles1OOISWindowmelpO JIMINNYg For you© Recent|# Starred8$ AppsQ SpacesJiminny (New)ull Plarorm leamIID SE KanbanII Capture TeamW Enterprise Stability I...ID Processing TeamC Service-Desk= More spaces= FiltersC DashboardsC÷ OperationsI2 Confluence: Teamsºa Customise sidebarF1 14m 22c567 8 MRQ SearchSpaces / Jiminny (New)Platform TeamSummary& TimelineE BacklogII Active sprints# Calendar Reports4 Testing BoardQ Search board00001Epic vTypev•Label vQuick filters ~READY FOR DEV 7Rework Nudges - Phase 2 - changeNudaes to use the indexed at periodCOST-EFFECTIVE AND FASTER NUDGESBacklogN JY-20489IN DEV 2Change forever nudges to 1 yearCOST-EFFECTIVE AND FASTER NUDGESIn Dev |CODE REVIEW1Delays in CRM SyncPLATFORM STABILITYCode Review[ JY-20553… JY-97124.5 12 •00 =0Investigate and fix why exceedronrawesome packade limirsiMAINTENANCEReady for Devl JY-20564|AI Review - Q1 - Summary/Action items/Key Points$1AI Reports > Empty page design arlpromotionAJ REPORTSBacklog[ JY-20372Send emall notitication when the revort is.not generatedAJ REPORTSBacklog[ JY-2015712 0000=@Nouiry a user petore tne AJ keoor exoiresiAJ REPORTSBacklog[ JY-20508Svnc obbortunities without a local ownerl(user_id is null)PLATFORM STABILITYBacklogEJY-20352+ Create"Dally - Platrorm • 4m lert100% LzTue 21 Apr 10:01:54Ask Rovo# List & Forms Cg Components ⅘ Development% Code O Security & Releases A) Deployments E Archived work items E Docs @ ShortcutsvBLOCKED3.5 % 000 =€PSSlack integration& Reporting CenterComplete sprintGroup: QueriesOA 2(Part2] Automated reports with AskJiminnyAJ REPORTSIn QAAI) (BE) (FE QAO JY-18909PO ACCEPTANCEDEPLOY 75 ?•0=Evaluation for AI Activity TypesFinderPrepare fallback with email for SSO forpersistent name_id_ tormatREDUCE CHURNClosed… JY-206321m∞eee=AJ Panorama > Don't show internal errorsto customersASK ANYTHING ON ANYTHINGDeployedProphet)** JY-20278Upgrade Python and libraries - AprMAINTENANCEDeployedE JY-19967|10••=₴CLONE - [Team insights] Filter gets resetautomaticallv(SUPPORT TICKETSDeployedYY JY-206810.5 % 000 gTssue with reconnectina 7oholSUPPORT TICKETSDeployedX* JY-206922 F2 =0Toch Navl Tmnrove Nenendahot Rot 2Experiment with Github ActionsClosedIEJY-206960•=Les Mills activity types not pulling in...
|
NULL
|
666286388472639523
|
NULL
|
app_switch
|
ocr
|
NULL
|
FirefoxcalVIewMistor•.•IY [SRD-6793] Les Mills act FirefoxcalVIewMistor•.•IY [SRD-6793] Les Mills activity type(SRD-6787] Issue with reconnectirX Jiminny MCP Connector - Product+ (UY-20676) Notify the user if a PanM Jiminny Mail(JY-20500) Batch initial sync for S.Feed - jiminny - Sentry& Jiminny() JY-20701 | Reschedule HubSpot SPipelines - jiminny/appNew TabService-Desk - Queues - Platform_ New TabbookmarksProtlles1OOISWindowmelpO JIMINNYg For you© Recent|# Starred8$ AppsQ SpacesJiminny (New)ull Plarorm leamIID SE KanbanII Capture TeamW Enterprise Stability I...ID Processing TeamC Service-Desk= More spaces= FiltersC DashboardsC÷ OperationsI2 Confluence: Teamsºa Customise sidebarF1 14m 22c567 8 MRQ SearchSpaces / Jiminny (New)Platform TeamSummary& TimelineE BacklogII Active sprints# Calendar Reports4 Testing BoardQ Search board00001Epic vTypev•Label vQuick filters ~READY FOR DEV 7Rework Nudges - Phase 2 - changeNudaes to use the indexed at periodCOST-EFFECTIVE AND FASTER NUDGESBacklogN JY-20489IN DEV 2Change forever nudges to 1 yearCOST-EFFECTIVE AND FASTER NUDGESIn Dev |CODE REVIEW1Delays in CRM SyncPLATFORM STABILITYCode Review[ JY-20553… JY-97124.5 12 •00 =0Investigate and fix why exceedronrawesome packade limirsiMAINTENANCEReady for Devl JY-20564|AI Review - Q1 - Summary/Action items/Key Points$1AI Reports > Empty page design arlpromotionAJ REPORTSBacklog[ JY-20372Send emall notitication when the revort is.not generatedAJ REPORTSBacklog[ JY-2015712 0000=@Nouiry a user petore tne AJ keoor exoiresiAJ REPORTSBacklog[ JY-20508Svnc obbortunities without a local ownerl(user_id is null)PLATFORM STABILITYBacklogEJY-20352+ Create"Dally - Platrorm • 4m lert100% LzTue 21 Apr 10:01:54Ask Rovo# List & Forms Cg Components ⅘ Development% Code O Security & Releases A) Deployments E Archived work items E Docs @ ShortcutsvBLOCKED3.5 % 000 =€PSSlack integration& Reporting CenterComplete sprintGroup: QueriesOA 2(Part2] Automated reports with AskJiminnyAJ REPORTSIn QAAI) (BE) (FE QAO JY-18909PO ACCEPTANCEDEPLOY 75 ?•0=Evaluation for AI Activity TypesFinderPrepare fallback with email for SSO forpersistent name_id_ tormatREDUCE CHURNClosed… JY-206321m∞eee=AJ Panorama > Don't show internal errorsto customersASK ANYTHING ON ANYTHINGDeployedProphet)** JY-20278Upgrade Python and libraries - AprMAINTENANCEDeployedE JY-19967|10••=₴CLONE - [Team insights] Filter gets resetautomaticallv(SUPPORT TICKETSDeployedYY JY-206810.5 % 000 gTssue with reconnectina 7oholSUPPORT TICKETSDeployedX* JY-206922 F2 =0Toch Navl Tmnrove Nenendahot Rot 2Experiment with Github ActionsClosedIEJY-206960•=Les Mills activity types not pulling in...
|
NULL
|
|
61718
|
1330
|
35
|
2026-04-21T07:09:51.779107+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755391779_m1.jpg...
|
PhpStorm
|
faVsco.js – console [EU]
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
System SettingsFileApril 2soun+EEST08:0009:0010:09 System SettingsFileApril 2soun+EEST08:0009:0010:0911:0012:0013:0014:0015:0016:00SoundSound inputSound outputSound volumeAlerts and sound effectsMute the soundAccessibilityBackground soundsBackgroundsounds volumeFlash the screen when analert sound occursPlay sound whencommand is recognisedPlay soundsPlay sounds for keys anddwell actionsPlay system soundsSelect Background SoundTurn off backgroundsounds when your Mac isnot in useUse click key soundsHearing DevicesBluetoothBluetooth audioControl CentreShow volume in themenu barNetworkEditViewWindowHelpSoundSound EffectsAlert soundPlay sound effects throughAlert volumePlay sound on startupPlay user interface sound effectsPlay feedback when volume is changedOutput & InputOutputBoop € Osoundcore AeroClip €InputNameTypeMacBook Pro Speakerssoundcore AeroClipDELL U3821DWBuilt-inBluetoothDisplayPortApplications may be able to access head pose information when playingspatialised audio.Output volume4 H(•*))• MuteBalanceLeftRightSupport Daily - in 4h 51 m100% <8Tue 21 Apr 10:09:51Week vTodayCPUMemoryEnergyDiskNetworkThreadsPortsSat 25Sun ,4 MB66MEMORY PRESSURE PID Physical Memory:Memory Used:Cached Files:Swap Used:16,00 GB13,71 GB2,24 GB2,22 GBApp Memory:Wired Memory:Compressed:Userlukaslukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,42 GB2,63 GB6,10 GB...
|
NULL
|
3754978673451819288
|
NULL
|
app_switch
|
ocr
|
NULL
|
System SettingsFileApril 2soun+EEST08:0009:0010:09 System SettingsFileApril 2soun+EEST08:0009:0010:0911:0012:0013:0014:0015:0016:00SoundSound inputSound outputSound volumeAlerts and sound effectsMute the soundAccessibilityBackground soundsBackgroundsounds volumeFlash the screen when analert sound occursPlay sound whencommand is recognisedPlay soundsPlay sounds for keys anddwell actionsPlay system soundsSelect Background SoundTurn off backgroundsounds when your Mac isnot in useUse click key soundsHearing DevicesBluetoothBluetooth audioControl CentreShow volume in themenu barNetworkEditViewWindowHelpSoundSound EffectsAlert soundPlay sound effects throughAlert volumePlay sound on startupPlay user interface sound effectsPlay feedback when volume is changedOutput & InputOutputBoop € Osoundcore AeroClip €InputNameTypeMacBook Pro Speakerssoundcore AeroClipDELL U3821DWBuilt-inBluetoothDisplayPortApplications may be able to access head pose information when playingspatialised audio.Output volume4 H(•*))• MuteBalanceLeftRightSupport Daily - in 4h 51 m100% <8Tue 21 Apr 10:09:51Week vTodayCPUMemoryEnergyDiskNetworkThreadsPortsSat 25Sun ,4 MB66MEMORY PRESSURE PID Physical Memory:Memory Used:Cached Files:Swap Used:16,00 GB13,71 GB2,24 GB2,22 GBApp Memory:Wired Memory:Compressed:Userlukaslukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,42 GB2,63 GB6,10 GB...
|
NULL
|
|
61719
|
1331
|
27
|
2026-04-21T07:09:51.710118+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755391710_m2.jpg...
|
PhpStorm
|
faVsco.js – console [EU]
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rireroxIY [SRD-6793] Les Mills activity type[SRD-6 rireroxIY [SRD-6793] Les Mills activity type[SRD-6787] Issue with reconnectiX Jiminny MCP Connector - Product(JY-20676] Notify the user if a ParM Jiminny Mail(JY-20500) Batch initial sync for S.a Feed — jiminny - Sentry8 Jiminny() JY-20701 | Reschedule HubSpc XPipelines - jiminny/appNew TabService-Desk - Queues - Platform_ New TabVIewMistorbookmarksProtllesToolsWindowHelp/11989/changes#diff-36d5a1cf1e0d50f665f647ae3b76748c33ed4a24728b7b73480f430c866b088€ft Onen1Y.207011 Reschedule HuhSnot Svnc Ohiects #11980yalokin-jiminny wants to merge 22 commits into master from JY-20701-reschedule-HubSpot-processingv app/Console/Commands/Crm/SyncObjects.php C• Filter files...• → app• — Console• ^ Commands/Crmv — Traits+ SyncObjectsCommandTrait…# SvncHubspotObiects.ohn₴ SyncObjects.phpE Kernel.php|v E Htto/Controllers/Webhook/Hub…# ProcessesWebhooksTrait.php• F Jobs/Crm# SvncHubspotObiects.ohn₴ SyncObjects.php• ^ Services/Crm/Hubspot/Service…@ OnnortunitvSvncTrait.ohn> _ tests/Unit|use Jiminny Jods term\syncudjects as syncubjectsJod,use Jiminny Models Team:class SyncObfects extends Commandprivate const int STAGGER_DELAY_SECONDS = 2;* Ine name and Signature or the console command.@@ -33,48 +38,48 @@ public function handle(): void$teams = [];if (<teamid) {Steams!] = Team::idOrUuld($teamId);} else {Steams = Team::where('status", Team::STATUS_ACTIVE)->get);SdisnatchIndey = 0.foreach ($teams as $team) {scontio = Steam->getcrmcontiaurationg):if (Sconfig->getAttribute('svnc obiects') === false) ‹continue,if (Steam->getAttribute('owner_id') === null) ‹Sthis->error(sprintf('Team %s (%s) is not yet assigned an owner. skipping...', Steam->getName(), $team->getUuid()));continue;if (Sconfig->aetAttribute('over quota at') |l Sconfig->getAttribute('avi disabled at')) {|Sthis->error(sprintf('Team %s (%s) API unavailable... skipping...', $team->getName(), Steam->getUuid()));cont inue.Q < 40 0 f Support Daily- in 4h 51m A 100%C42 & Tue 21 Apr 10:09:510S00=• 1/ 11 viewed• Awaitina approvallSubmit review -+41 -36 0022Viewed11&e 38use Jiminny\Jods\Crm\syncudjects as syncupjectsJod;+ use Jiminny Jobs Job;+ use Jiminny\Models\Crm\Configuration;use Jiminny Models Team;Class Syncobjects extends Commanduse SyncObiectsCommandTrait:* The name and signature of the console command.$teams = [];if (SteamId) {Steam = Team:: id0rUuld(SteamId):if (Steam && $team->crm?->provider === Configuration::PROVIDER_HUBSPOT) {Sthis->error(sorintf('Team %s (%s) uses HubSpot. Use crm:sync-hubspot-objects instead.',Steam->aetNamed).Steam->getUuid()return:ir (stean) tSteams = Steam:61 +} else {// Exclude HubSpot teams - handled by crm:sync-hubspot-obiectsSteams = Team: :where('status', Team::STATUS_ACTIVE)->whereHas ('crm', fn (Sa) => $a->where('provider'. '!='. Configuration::PROVIDER HUBSPOT) )|->get();Sthis->dispatchSvncJobsForTeams($teams):...
|
NULL
|
-8911587254080899496
|
NULL
|
app_switch
|
ocr
|
NULL
|
rireroxIY [SRD-6793] Les Mills activity type[SRD-6 rireroxIY [SRD-6793] Les Mills activity type[SRD-6787] Issue with reconnectiX Jiminny MCP Connector - Product(JY-20676] Notify the user if a ParM Jiminny Mail(JY-20500) Batch initial sync for S.a Feed — jiminny - Sentry8 Jiminny() JY-20701 | Reschedule HubSpc XPipelines - jiminny/appNew TabService-Desk - Queues - Platform_ New TabVIewMistorbookmarksProtllesToolsWindowHelp/11989/changes#diff-36d5a1cf1e0d50f665f647ae3b76748c33ed4a24728b7b73480f430c866b088€ft Onen1Y.207011 Reschedule HuhSnot Svnc Ohiects #11980yalokin-jiminny wants to merge 22 commits into master from JY-20701-reschedule-HubSpot-processingv app/Console/Commands/Crm/SyncObjects.php C• Filter files...• → app• — Console• ^ Commands/Crmv — Traits+ SyncObjectsCommandTrait…# SvncHubspotObiects.ohn₴ SyncObjects.phpE Kernel.php|v E Htto/Controllers/Webhook/Hub…# ProcessesWebhooksTrait.php• F Jobs/Crm# SvncHubspotObiects.ohn₴ SyncObjects.php• ^ Services/Crm/Hubspot/Service…@ OnnortunitvSvncTrait.ohn> _ tests/Unit|use Jiminny Jods term\syncudjects as syncubjectsJod,use Jiminny Models Team:class SyncObfects extends Commandprivate const int STAGGER_DELAY_SECONDS = 2;* Ine name and Signature or the console command.@@ -33,48 +38,48 @@ public function handle(): void$teams = [];if (<teamid) {Steams!] = Team::idOrUuld($teamId);} else {Steams = Team::where('status", Team::STATUS_ACTIVE)->get);SdisnatchIndey = 0.foreach ($teams as $team) {scontio = Steam->getcrmcontiaurationg):if (Sconfig->getAttribute('svnc obiects') === false) ‹continue,if (Steam->getAttribute('owner_id') === null) ‹Sthis->error(sprintf('Team %s (%s) is not yet assigned an owner. skipping...', Steam->getName(), $team->getUuid()));continue;if (Sconfig->aetAttribute('over quota at') |l Sconfig->getAttribute('avi disabled at')) {|Sthis->error(sprintf('Team %s (%s) API unavailable... skipping...', $team->getName(), Steam->getUuid()));cont inue.Q < 40 0 f Support Daily- in 4h 51m A 100%C42 & Tue 21 Apr 10:09:510S00=• 1/ 11 viewed• Awaitina approvallSubmit review -+41 -36 0022Viewed11&e 38use Jiminny\Jods\Crm\syncudjects as syncupjectsJod;+ use Jiminny Jobs Job;+ use Jiminny\Models\Crm\Configuration;use Jiminny Models Team;Class Syncobjects extends Commanduse SyncObiectsCommandTrait:* The name and signature of the console command.$teams = [];if (SteamId) {Steam = Team:: id0rUuld(SteamId):if (Steam && $team->crm?->provider === Configuration::PROVIDER_HUBSPOT) {Sthis->error(sorintf('Team %s (%s) uses HubSpot. Use crm:sync-hubspot-objects instead.',Steam->aetNamed).Steam->getUuid()return:ir (stean) tSteams = Steam:61 +} else {// Exclude HubSpot teams - handled by crm:sync-hubspot-obiectsSteams = Team: :where('status', Team::STATUS_ACTIVE)->whereHas ('crm', fn (Sa) => $a->where('provider'. '!='. Configuration::PROVIDER HUBSPOT) )|->get();Sthis->dispatchSvncJobsForTeams($teams):...
|
NULL
|
|
61805
|
1332
|
3
|
2026-04-21T07:12:34.987990+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755554987_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Tue Apr 21 09:52:59 on ttys014
Poetry Last login: Tue Apr 21 09:52:59 on ttys014
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 ~ $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Tue Apr 21 09:52:59 on ttys014\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"Last login: Tue Apr 21 09:52:59 on ttys014\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"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":"-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 (node)","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:~ (nc)","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":"AXStaticText","text":"⌥⌘1","depth":1,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"role_description":"text"}]...
|
-6323271322178087527
|
-4070526005479749223
|
app_switch
|
accessibility
|
NULL
|
Last login: Tue Apr 21 09:52:59 on ttys014
Poetry Last login: Tue Apr 21 09:52:59 on ttys014
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 ~ $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
61806
|
1333
|
3
|
2026-04-21T07:12:34.988071+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755554988_m2.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Tue Apr 21 09:52:59 on ttys014
Poetry Last login: Tue Apr 21 09:52:59 on ttys014
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 ~ $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Tue Apr 21 09:52:59 on ttys014\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"bounds":{"left":0.2918883,"top":0.06304868,"width":0.7081117,"height":0.93695134},"value":"Last login: Tue Apr 21 09:52:59 on ttys014\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.2918883,"top":0.042298485,"width":0.077792555,"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.29388297,"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.36968085,"top":0.042298485,"width":0.077792555,"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.37167552,"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.4474734,"top":0.042298485,"width":0.077792555,"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.44946808,"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 (node)","depth":2,"bounds":{"left":0.52526593,"top":0.042298485,"width":0.077792555,"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.52726066,"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.6030585,"top":0.042298485,"width":0.077792555,"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.6050532,"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.68085104,"top":0.042298485,"width":0.077792555,"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.6828458,"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.7586436,"top":0.042298485,"width":0.077792555,"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.7606383,"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:~ (nc)","depth":2,"bounds":{"left":0.83643615,"top":0.042298485,"width":0.077792555,"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.8384308,"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.91422874,"top":0.042298485,"width":0.077792555,"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.9162234,"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.97839093,"top":0.023144454,"width":0.01861702,"height":0.013567438},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.6402925,"top":0.023942538,"width":0.010970744,"height":0.012769354},"role_description":"text"}]...
|
-6323271322178087527
|
-4070526005479749223
|
app_switch
|
accessibility
|
NULL
|
Last login: Tue Apr 21 09:52:59 on ttys014
Poetry Last login: Tue Apr 21 09:52:59 on ttys014
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 ~ $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
61811
|
1333
|
5
|
2026-04-21T07:12:48.947783+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755568947_m2.jpg...
|
PhpStorm
|
faVsco.js – SyncObjects.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
namespace Jiminny\Console\Commands\Crm;
use Jiminny\Console\Commands\Command;
use Jiminny\Jobs\Crm\SyncObjects as SyncObjectsJob;
use Jiminny\Models\Team;
class SyncObjects extends Command
{
private const int STAGGER_DELAY_SECONDS = 2;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'crm:sync-objects {team?} {--sync}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sync remote CRM objects.';
/**
* Execute the console command.
*/
public function handle(): void
{
$teamId = $this->argument('team');
$teams = [];
if ($teamId) {
$teams[] = Team::idOrUuId($teamId);
} else {
$teams = Team::where('status', Team::STATUS_ACTIVE)->get();
}
$dispatchIndex = 0;
foreach ($teams as $team) {
$config = $team->getCrmConfiguration();
if ($config->getAttribute('sync_objects') === false) {
continue;
}
if ($team->getAttribute('owner_id') === null) {
$this->error(sprintf('Team %s (%s) is not yet assigned an owner. skipping...', $team->getName(), $team->getUuid()));
continue;
}
if ($config->getAttribute('over_quota_at') || $config->getAttribute('api_disabled_at')) {
$this->error(sprintf('Team %s (%s) API unavailable... skipping...', $team->getName(), $team->getUuid()));
continue;
}
$delay = $dispatchIndex * self::STAGGER_DELAY_SECONDS;
$lastSyncedAt = $config->getAttribute('last_synced_at');
$this->info(
sprintf(
'Syncing objects for %s (%s) since %s (delay: %ds)',
$team->getName(),
$team->getUuid(),
$lastSyncedAt?->toDateTimeString() ?? 'never',
$delay
)
);
$this->dispatch((new SyncObjectsJob($team))->delay(now()->addSeconds($delay)));
$dispatchIndex++;
}
}
}
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
27
9
23
3
105
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM team_features where team_id = 1;
SELECT * FROM teams WHERE name LIKE '%Vixio%'; # 340,270,11922
SELECT * FROM users WHERE team_id = 340; # 12015
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 340
and sa.provider = 'salesforce';
# and sa.provider = 'salesloft';
select * from crm_fields where crm_configuration_id = 270 and object_type = 'event';
# 125558 - Event Type - Event_Type__c
# 125552 - Event Status - Event_Status__c
SELECT * FROM sidekick_settings WHERE team_id = 340;
SELECT * FROM crm_field_values WHERE crm_field_id in (125552);
select * from activities where crm_configuration_id = 270
and type = 'conference' and crm_provider_id IS NOT NULL
and actual_start_time > '2024-09-16 09:00:00' order by scheduled_start_time;
SELECT * FROM activities WHERE id = 20871677;
SELECT * FROM crm_field_data WHERE activity_id = 20871677;
select * from crm_layouts where crm_configuration_id = 270;
select * from crm_layout_entities where crm_layout_id in (886,887);
SELECT * FROM crm_configurations WHERE id = 270;
select * from playbooks where team_id = 340; # 1514
select * from groups where team_id = 340;
SELECT * FROM crm_fields WHERE id IN (125393, 125401);
select g.name as 'team name', p.name as 'playbook name', f.label as 'activity type field' from groups g
join playbooks p on g.playbook_id = p.id
join crm_fields f on p.activity_field_id = f.id
where g.team_id = 340;
SELECT * FROM activities WHERE uuid_to_bin('0c180357-67d2-419e-a8c3-b832a3490770') = uuid; # 20448716
select * from crm_field_data where object_id = 20448716;
select * from activities where crm_configuration_id = 270 and provider = 'salesloft' order by id desc;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%CybSafe%'; # 343,273,12008
select * from opportunities where team_id = 343;
select * from opportunities where team_id = 343 and crm_provider_id = '18099102526';
select * from opportunities where team_id = 343 and account_id = 945217482;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 343
and sa.provider = 'hubspot';
select * from accounts where team_id = 343 order by name asc;
select * from stages where crm_configuration_id = 273 and type = 'opportunity';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Voyado%'; # 353,283,12143
SELECT * FROM activities WHERE crm_configuration_id = 283 and account_id = 3777844 order by id desc;
SELECT * FROM accounts WHERE team_id = 353 AND name LIKE '%Salesloft%';
SELECT * FROM activities WHERE id = 20717903;
select * from participants where activity_id IN (20929172,20928605,20928468,20926272,20926271,20926270,20926269,20916499,20916454,20916436,20916435,20900015,20900014,20900013,20897312,20897243,20897241,20897237,20897232,20897229,20893648,20893231,20893230,20893229,20893228,20889784,20885039,20885038,20885037,20885036,20885035,20882728,20882708,20882703,20882702,20869828,20869811,20869806,20869801,20869799,20869798,20869796,20869795,20869794,20869761,20869760,20869759,20868688,20868687,20850340,20847195,20841710,20833967,20827021,20825307,20825305,20825297,20824615,20824400,20823927,20821760,20795588,20794233,20794057,20793710,20785811,20781789,20781394,20781307,20762651,20758453,20758282,20757323,20756643,20756636,20756629,20756627,20756606,20756605,20756604,20756603,20756602,20756600,20756599,20756598,20756595,20756594,20756589,20756587,20756577,20756573,20748918,20748386,20748385,20748384,20748383,20748382,20748381,20748380,20748379,20748377,20748375,20748373,20743301,20717905,20717904,20717903,20717901,20717899);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 353
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%modern world business solutions%'; # 345,275,12016, [EMAIL]
SELECT * FROM activities WHERE uuid_to_bin('3921d399-3fef-4609-a291-b0097a166d43') = uuid;
# id: 20940638, user: 12022, contact: 5305871
SELECT * FROM activity_summary_logs WHERE activity_id = 20940638;
select * from contacts where team_id = 345 and crm_provider_id = '30891432415' order by name asc; # 5305871
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 345
and sa.provider = 'hubspot';
select * from users where team_id = 345 and id = 12022;
SELECT * FROM crm_profiles WHERE user_id = 12022;
SELECT * FROM participants WHERE activity_id = 20940638;
SELECT * FROM users u
JOIN crm_profiles cp ON u.id = cp.user_id
WHERE u.team_id = 345;
select * from contacts where team_id = 345 and crm_provider_id = '30880813535' order by name desc; # 5305871
select * from team_features where team_id = 345;
SELECT * FROM activities WHERE uuid_to_bin('11701e2d-2f82-4dab-a616-1db4fad238df') = uuid; # 21115197
SELECT * FROM participants WHERE activity_id = 20897406;
SELECT * FROM activities WHERE uuid_to_bin('63ba55cd-1abc-447d-83da-0137000005b7') = uuid; # 20953912
SELECT * FROM activities WHERE crm_configuration_id = 275 and provider = 'ringcentral' and title like '%1252629100%';
SELECT * FROM activities WHERE id = 20946641;
SELECT * FROM crm_profiles WHERE user_id = 10211;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120,97,10984, [EMAIL]
SELECT * FROM opportunities WHERE crm_configuration_id = 97 and crm_provider_id = '006N1000006c5PpIAI';
select * from stages where crm_configuration_id = 97 and type = 'opportunity';
select * from opportunities where team_id = 120;
select * from crm_configurations crm join teams t on crm.id = t.crm_id
where 1=1
AND t.current_billing_plan IS NOT NULL
AND crm.auto_sync_activity = 0
and crm.provider = 'hubspot';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Exclaimer%'; # 270,205,10053,[EMAIL]
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 270
and sa.provider = 'salesforce';
SELECT * FROM activities WHERE uuid_to_bin('b54df794-2a9a-4957-8d80-09a600ead5f8') = uuid; # 21637956
SELECT * FROM crm_profiles WHERE user_id = 11446;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Cygnetise%'; # 372,300,12554, [EMAIL]
select * from playbooks where team_id = 372;
select * from crm_fields where crm_configuration_id = 300 and object_type = 'event'; # 141340
SELECT * FROM crm_field_values WHERE crm_field_id = 141340;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 372
and sa.provider = 'salesforce';
select * from crm_profiles where crm_configuration_id = 300;
SELECT * FROM crm_configurations WHERE team_id = 372;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Planday%'; # 291,242,11501,[EMAIL]
SELECT * FROM opportunities WHERE team_id = 291 and crm_provider_id = '006bG000005DO86QAG'; # 3207756
select * from crm_field_data where object_id = 3207756;
SELECT * FROM crm_fields WHERE id = 111834;
select f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value
FROM crm_fields f
JOIN crm_field_data fd ON f.id = fd.crm_field_id
WHERE f.crm_configuration_id = 242
AND f.object_type = 'opportunity'
AND fd.object_id IN (3207756)
ORDER BY fd.object_id, fd.updated_at;
SELECT * FROM crm_configurations WHERE auto_connect = 1;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150,[EMAIL]
select * from group_deal_risk_types drgt join groups g on drgt.group_id = g.id
where g.team_id = 187;
select * from `groups` where team_id = 187;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 187
and sa.provider = 'salesforce';
# Destination - 98870 - Destination__c
# Stage - 79014 - StageName
# Land Arrangement - 98856 - Land_Arrangement__c
# Flight - 98848 - Flight__c
# Last activity date - 98812 - LastActivityDate
# Last modified date - 98809 - LastModifiedDate
# Last inbound mail timestamp - 99151 - Last_Inbound_Mail_Timestamp__c
# next call - 98864 - Next_Call__c
select * from crm_fields where crm_configuration_id = 209 and object_type = 'opportunity';
SELECT * FROM crm_layouts WHERE crm_configuration_id = 209;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;
select * from opportunities where team_id = 187 and name LIKE'%Muriel Sal%';
select * from opportunities where team_id = 187 and user_id = 9951 and is_closed = 0;
select * from activities where opportunity_id = 3538248;
SELECT * FROM crm_profiles WHERE user_id = 8150;
select * from deal_risks where opportunity_id = 3538248;
select * from teams where crm_id IS NULL;
SELECT opp.id AS opportunity_id,
u.group_id AS group_id,
MAX(
CASE
WHEN a.type IN ("sms-inbound", "sms-outbound") THEN a.created_at
ELSE a.actual_end_time
END) as last_date
FROM opportunities opp
left join activities a on a.opportunity_id = opp.id
inner join users u on opp.user_id = u.id
where opp.user_id IN (9951)
AND opp.is_closed = 0
and a.status IN ('completed', 'received', 'delivered') OR a.status IS NULL
group by opp.id;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Cybsafe%'; # 343,301,12008,[EMAIL]
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 343
and sa.provider = 'hubspot';
SELECT * FROM crm_profiles WHERE crm_configuration_id = 301;
SELECT * FROM contacts WHERE id = 6612363;
SELECT * FROM accounts WHERE id = 4235676;
SELECT * FROM opportunities WHERE crm_configuration_id = 301 and crm_provider_id = 32983784868;
select * from opportunity_stages where opportunity_id = 4503759;
# SELECT * FROM opportunities WHERE id = 4569937;
select * from activities where crm_configuration_id = 301;
SELECT * FROM activities WHERE uuid_to_bin('d3b2b28b-c3d0-4c2d-8ed0-eef42855278a') = uuid; # 26330370
SELECT * FROM participants WHERE activity_id = 26330370;
SELECT * FROM teams WHERE id = 375;
select * from playbooks where team_id = 375;
select * from stages where crm_configuration_id = 301 and type = 'opportunity';
select * from teams;
select * from contact_roles;
SELECT * FROM opportunities WHERE team_id = 343 and user_id = 12871 and close_date >= '2024-11-01';
select * from users u join crm_profiles cp on cp.user_id = u.id where u.team_id = 343;
SELECT * FROM crm_field_data WHERE object_id = 3771706;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 343
and sa.provider = 'hubspot';
SELECT * FROM crm_fields WHERE crm_configuration_id = 301 and object_type = 'opportunity'
and crm_provider_id LIKE "%traffic_light%";
SELECT * FROM crm_field_values WHERE crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531);
SELECT fd.* FROM opportunities o
JOIN crm_field_data fd ON o.id = fd.object_id
WHERE o.team_id = 343
# and o.user_id IS NOT NULL
and fd.crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531)
and fd.value != ''
order by value desc
# group by o.id
;
SELECT * FROM opportunities WHERE id = 3769843;
SELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150, [EMAIL]
SELECT * FROM crm_layouts WHERE crm_configuration_id = 209;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Funding Circle%'; # 220,177,8603,[EMAIL]
SELECT * FROM activities WHERE uuid_to_bin('7a40e99b-3b37-4bb1-b983-325b81801c01') = uuid; # 23139839
SELECT * FROM opportunities WHERE id = 3855992;
SELECT * FROM users WHERE name LIKE '%Angus Pollard%'; # 8988
SELECT * FROM teams WHERE name LIKE '%Story Terrace%'; # 379, 307, 12894
SELECT * FROM crm_fields WHERE crm_configuration_id = 307 and object_type != 'opportunity';
select * from contacts where team_id = 379 and name like '%bebro%'; # 5874411, crm: 77229348507
SELECT * FROM crm_field_data WHERE object_id = 5874411;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 379
and sa.provider = 'hubspot';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%mentio%'; # 117, 94, 6371, [EMAIL]
SELECT * FROM activities WHERE uuid_to_bin('82939311-1af0-4506-8546-21e8d1fdf2c1') = uuid;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Tourlane%'; # 187, 209, 8150, [EMAIL]
SELECT * FROM opportunities WHERE team_id = 187 and crm_provider_id = '006Se000008xfvNIAQ'; # 3537793
select * from generic_ai_prompts where subject_id = 3537793;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120, 97, 10984, [EMAIL]
SELECT * FROM crm_configurations WHERE id = 97;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 97;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 355;
SELECT * FROM crm_fields WHERE id = 32682;
select cfd.value, o.* from opportunities o
join crm_field_data cfd on o.id = cfd.object_id and cfd.crm_field_id = 32682
where team_id = 120
and cfd.value != ''
;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 120
and sa.provider = 'salesforce';
select * from opportunities where team_id = 120 and crm_provider_id = '006N1000007X8MAIA0';
SELECT * FROM crm_field_data WHERE object_id = 2313439;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE id = 410;
SELECT * FROM teams WHERE name LIKE '%Local Business Oxford%';
select * from scorecards where team_id = 410;
select * from scorecard_rules;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Funding%'; # 220, 177, 8603, [EMAIL]
select * from activities a
join opportunities o on a.opportunity_id = o.id
join users u on o.user_id = u.id
where a.crm_configuration_id = 177 and a.type LIKE '%email-out%'
# and a.actual_end_time > '2024-12-16 00:00:00'
# and o.remotely_created_at > '2024-12-01 00:00:00'
# and u.group_id = 1014
and u.id = 9021
order by a.id desc;
SELECT * FROM opportunities WHERE id in (3981384,4017346);
SELECT * FROM users WHERE team_id = 220 and id IN (8775, 11435);
select * from users where id = 9021;
select * from inboxes where user_id = 9021;
select * from inbox_emails where inbox_id = 1349 and email_date > '2024-12-18 00:00:00';
select * from email_messages where team_id = 220
and orig_date > '2024-12-16 00:00:00' and orig_date < '2024-12-19 00:00:00'
and subject LIKE '%Personal%'
# and 'from' = '[EMAIL]'
;
select * from activities a
join opportunities o on a.opportunity_id = o.id
where a.user_id = 9021 and a.type LIKE '%email-out%'
and a.actual_end_time > '2024-12-18 00:00:00'
and o.user_id IS NOT NULL
and o.remotely_created_at > '2024-12-01 00:00:00'
order by a.id desc;
SELECT * FROM opportunities WHERE team_id = 220 and name LIKE '%Right Car move Limited%' and id = 3966852;
select * from activities where crm_configuration_id = 177 and type LIKE '%email%' and opportunity_id = 3966852 order by id desc;
select * from team_settings where name IN ('useCloseDate');
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Hurree%'; # 104, 81, 6175, [EMAIL]
SELECT * FROM opportunities WHERE team_id = 104 and name = 'PropOp';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 104
and sa.provider = 'hubspot';
select * from crm_configurations where last_synced_at > '2025-01-19 01:00:00'
select * from teams where crm_id IS NULL;
select t.name as 'team', u.name as 'owner', u.email, u.phone
from teams t
join activity_providers ap on t.id = ap.team_id
join users u on t.owner_id = u.id
where 1=1
and t.status = 'active'
and ap.is_enabled = 1
# and u.status = 1
and ap.provider = 'ms-teams';
select * from crm_configurations where provider = 'bullhorn'; # 344
SELECT * FROM teams WHERE id = 442; # 14293
select * from users where team_id = 442;
select * from social_accounts sa where sa.sociable_id = 14293;
select * from invitations where team_id = 442;
# [PASSWORD_DOTS]
SELECT * FROM users WHERE email LIKE '%[EMAIL]%'; # 14022
SELECT * FROM teams WHERE id = 429;
select * from opportunities where team_id = 429 and crm_provider_id IN (16157415775, 22246219645);
select * from activities where opportunity_id in (4340436,4353519);
select * from transcription where activity_id IN (25630961,25381771);
select * from generic_ai_prompts where subject_id IN (4353519);
SELECT
a.id as activity_id,
a.opportunity_id,
a.type as activity_type,
a.language,
CONCAT(a.title, a.description) AS mail_content,
e.from AS mail_from,
e.to AS mail_to,
e.subject AS mail_subject,
e.body AS mail_body,
p.type as prompt_type,
p.status as prompt_status,
p.content AS prompt_content,
a.actual_start_time as created_at
FROM activities a
LEFT JOIN ai_prompts p ON a.transcription_id = p.transcription_id AND p.deleted_at IS NULL
LEFT JOIN email_messages e ON a.id = e.activity_id
WHERE a.actual_start_time > '2024-01-01 00:00:00'
AND a.opportunity_id IN (4353519)
AND a.status IN ('completed', 'received', 'delivered')
AND a.deleted_at IS NULL
AND a.type NOT IN ('sms-inbound', 'sms-outbound')
ORDER BY a.opportunity_id ASC, a.id ASC;
SELECT * FROM users WHERE name LIKE '%George Fierstone%'; # 14293
SELECT * FROM teams WHERE id = 442;
SELECT * FROM crm_configurations WHERE id = 344;
select * from team_features where team_id = 442;
select * from groups where team_id = 442;
select * from playbooks where team_id = 442;
select * from playbook_categories where playbook_id = 1729;
select * from crm_fields where crm_configuration_id = 344 and id = 172024;
SELECT * FROM crm_field_values WHERE crm_field_id = 172024;
select * from crm_layouts where crm_configuration_id = 344;
select * from playbook_layouts where playbook_id = 1729;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 221, 9444
select s.*
# , s.sent_at, u.name, a.*
from activity_summary_logs s
inner join activities a on a.id = s.activity_id
inner join users u on u.id = a.user_id
where a.crm_configuration_id = 356
and s.sent_at > date_sub(now(), interval 60 day)
order by a.actual_end_time desc;
select * from activities a
# inner join activity_summary_logs s on s.activity_id = a.id
where a.crm_configuration_id = 356 and a.actual_end_time > date_sub(now(), interval 60 day)
# and a.crm_provider_id is not null
# and provider <> 'ringcentral'
and status = 'completed'
order by a.actual_end_time desc;
select * from teams order by id desc; # 17328, 32, 17830, [EMAIL]
SELECT * FROM users;
SELECT * FROM users where team_id = 260 and status = 1; # 201 - 150 active
SELECT * FROM teams WHERE id = 260;
select * from team_settings where team_id = 260;
select * from crm_configurations where team_id = 260;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 356;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 1184;
select * from accounts where crm_configuration_id = 221 order by id desc; # 7000
select * from leads where crm_configuration_id = 221 order by id desc; # 0
select * from contacts where crm_configuration_id = 221 order by id desc; # 200 000
select * from opportunities where crm_configuration_id = 221 order by id desc; # 0
select * from crm_profiles where crm_configuration_id = 221 order by id desc; # 23
select * from crm_fields where crm_configuration_id = 221;
select * from crm_field_values where crm_field_id = 5302 order by id desc;
select * from crm_layouts where crm_configuration_id = 221 order by id desc;
select * from stages where crm_configuration_id = 221 order by id desc;
select * from accounts where crm_configuration_id = 356 order by id desc; # 7000
select * from leads where crm_configuration_id = 356 order by id desc; # 0
select * from contacts where crm_configuration_id = 356 order by id desc; # 200 000
select * from opportunities where crm_configuration_id = 356 order by id desc; # 0
select * from crm_profiles where crm_configuration_id = 356 order by id desc; # 23
select * from crm_fields where crm_configuration_id = 356;
select * from crm_field_values where crm_field_id = 5302 order by id desc;
select * from crm_layouts where crm_configuration_id = 356 order by id desc;
select * from stages where crm_configuration_id = 356 order by id desc;
select * from playbooks where team_id = 260 order by id desc; # 4 (2 deleted)
select * from groups where team_id = 260 order by id desc; # 27 groups, (2 deleted)
select * from playbook_layouts where playbook_id IN (1410,1409,1276,1254); # 4
select ce.* from calendars c
join users u on c.user_id = u.id
join calendar_events ce on c.id = ce.calendar_id
where u.team_id = 260
and (ce.start_time > '2025-02-21 00:00:00')
;
# calendar events 1207
#
select * from opportunities where team_id = 260;
SELECT * FROM crm_field_data WHERE object_id = 4696496;
select * from activities where crm_configuration_id = 356 and crm_provider_id IS NOT NULL;
select * from activities where crm_configuration_id IN (221) and provider NOT IN ('ms-teams', 'uploader', 'zoom-bot')
# and type = 'conference' and status = 'scheduled' and activities.is_internal = 0
and created_at > '2024-03-01 00:00:00'
order by id desc; # 880 000, ringcentral, avaya
SELECT * FROM participants WHERE activity_id = 26371744;
# all activities 942 000 +
# conference 7385 - scheduled 984 - external 343
select * from activities where id = 26321812;
select * from participants where activity_id = 26321812;
select * from participants where activity_id in (26414510,26414514,26414516,26414604,26414653,26414655);
select * from leads where id in (720428,689175,731546,645866,621037);
select * from users where id = 13841;
select * from opportunities where user_id = 9541;
select * from stages where id = 15900;
select * from accounts where
# id IN (4160055,5053725,4965303,4896434)
id in (4584518,3249934,3218025,3891133,3399450,4172999,4485161,3101785,4587203,3070816,2870343,2870341,3563940,4550846,3424464,3249963,2870342)
;
select * from activities where id = 26654935;
SELECT * FROM opportunities WHERE id = 4803458;
SELECT * FROM opportunities where team_id = 260 and user_id = 13841 AND stage_id = 15900;
SELECT id, uuid, provider, type, lead_id, account_id, contact_id, opportunity_id, stage_id, status, recording_state, title, actual_start_time, actual_end_time
FROM activities WHERE user_id = 13841 AND opportunity_id IN (4729783, 4731717, 4731726, 4732064, 4732849, 4803458, 4813213);
SELECT DISTINCT
o.id, o.stage_id, s.name, a.title,
a.*
FROM activities a
# INNER JOIN tracks t ON a.id = t.activity_id
INNER JOIN users u ON a.user_id = u.id
INNER JOIN teams team ON u.team_id = team.id
INNER JOIN groups g ON u.group_id = g.id
INNER JOIN opportunities o ON a.opportunity_id = o.id
INNER JOIN stages s ON o.stage_id = s.id
WHERE
a.crm_configuration_id = 356
AND a.status IN ('completed', 'failed')
AND a.recording_state != 'stopped'
# and a.user_id = 13841
AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')
AND team.uuid = uuid_to_bin('a607fba7-452e-4683-b2af-00d6cb52c93c')
AND g.uuid = uuid_to_bin('b5d69e40-24a0-4c16-810b-5fa462299f94')
AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
# AND t.type IN ('audio', 'video')
AND (
(a.actual_start_time BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59')
OR
(
a.actual_start_time IS NULL
AND a.type IN ('sms-outbound', 'sms-inbound')
AND a.created_at BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59'
)
)
AND (
a.is_private = 0
OR (
a.is_private = 1
AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')
)
)
AND (
# s.id = 15900
s.uuid = uuid_to_bin('04ca1c26-c666-4268-a129-419c0acffd73')
OR s.uuid IS NULL -- Include records without opportunity stage
)
ORDER BY a.actual_end_time DESC;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Lead Forensics%'; # 190, 162, 8474, [EMAIL]
SELECT * FROM users WHERE team_id = 190;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 190
and sa.provider = 'hubspot';
select * from role_user where user_id = 8474;
select * from crm_configurations where provider = 'bullhorn';
SELECT * FROM opportunities WHERE uuid_to_bin('94578249-65ec-4205-90f2-7d1a7d5ab64a') = uuid;
SELECT * FROM users WHERE uuid_to_bin('26dbadeb-926f-4150-b11b-771b9d4c2f9a') = uuid;
SELECT * FROM opportunities WHERE id = 4732493;
select * from activities where opportunity_id = 4732493;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE id = 443; # 358, 14315, [EMAIL]
SELECT * FROM opportunities WHERE team_id = 443;
SELECT a.id, a.type, a.user_id, a.status, a.deleted_at, u.name, u.email, u.team_id as activity_team_id, u.status, u.deleted_at, t.name, t.status, s.team_id as stage_team_id
FROM activities AS a
JOIN stages AS s ON a.stage_id = s.id
JOIN users AS u ON u.id = a.user_id
JOIN teams AS t ON t.id = s.team_id
WHERE u.team_id <> s.team_id and t.id > 135;
SELECT
crm_configuration_id,
crm_provider_id,
COUNT(*) as duplicate_count,
GROUP_CONCAT(id) as stage_ids,
GROUP_CONCAT(name) as stage_names
FROM stages
GROUP BY crm_configuration_id, crm_provider_id
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC;
select * from stages where id IN (14898,14907);
select * from business_processes;
SELECT *
FROM crm_configurations
WHERE team_id IN (
SELECT team_id
FROM crm_configurations
GROUP BY team_id
HAVING COUNT(*) > 1
)
ORDER BY team_id;
SELECT *
FROM teams
WHERE crm_id IN (
SELECT crm_id
FROM teams
GROUP BY crm_id
HAVING COUNT(*) > 1
)
ORDER BY crm_id;
# [PASSWORD_DOTS]
select * from crm_configurations where provider = 'integration-app';
SELECT * FROM teams WHERE id = 443; # Correre Naturale 358 14315 [EMAIL]
select * from activities where crm_configuration_id = 358 order by actual_end_time desc;
select id, uuid, actual_end_time, crm_provider_id, is_internal, playbook_category_id, type, user_id, lead_id, contact_id, account_id, opportunity_id, status, title from activities where crm_configuration_id = 358 order by actual_end_time desc;
select * from team_features where team_id = 358;
select * from activity_summary_logs;
select * from teams where id = 406;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Sportfive%'; # 267, 202, 14637, [EMAIL]
select * from activities where crm_configuration_id = 202 order by actual_end_time desc;
SELECT * FROM users where id = 14637;
SELECT * FROM teams where id = 267;
SELECT * FROM groups where id = 1118;
select g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a
inner join users u on u.id = a.user_id
inner join groups g on g.id = u.group_id
where a.crm_configuration_id = 202
and a.is_internal = 0
and (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')
and a.type = 'conference'
and a.status != 'completed'
and a.external_id is not null
order by a.scheduled_start_time desc;
SELECT * FROM activities
WHERE crm_configuration_id = 202
AND status IN ('completed', 'failed')
AND recording_state != 'stopped'
AND type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
AND (is_private = 0 OR user_id = 14637)
AND (
(
actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'
) OR (
actual_start_time IS NULL
AND type IN ('sms-outbound', 'sms-inbound')
AND created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'
)
)
AND NOT EXISTS (
SELECT 1
FROM tracks
WHERE
tracks.activity_id = activities.id
AND tracks.type IN ('audio', 'video')
)
ORDER BY actual_end_time DESC;
SELECT DISTINCT
a.*
FROM activities a
INNER JOIN tracks t ON a.id = t.activity_id
INNER JOIN users u ON a.user_id = u.id
INNER JOIN teams team ON u.team_id = team.id
WHERE
a.crm_configuration_id = 202
AND a.status IN ('completed', 'failed')
AND a.recording_state != 'stopped'
# and a.user_id = 14637
AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
# AND t.type IN ('audio', 'video')
AND (
(a.actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59')
OR
(
a.actual_start_time IS NULL
AND a.type IN ('sms-outbound', 'sms-inbound')
AND a.created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'
)
)
AND (
a.is_private = 0
OR (
a.is_private = 1
AND a.user_id = 14637
)
)
ORDER BY a.actual_end_time DESC
;
SELECT DISTINCT a.*
FROM activities a
INNER JOIN users u ON a.user_id = u.id
INNER JOIN teams t ON u.team_id = t.id
# INNER JOIN tracks tr ON a.id = tr.activity_id
# INNER JOIN groups g ON u.group_id = g.id
WHERE 1=1
AND t.id = 267
# AND t.uuid = uuid_to_bin('aed4927b-f1ea-499e-94c3-83762fd233e8')
AND a.status IN ('completed', 'failed')
AND a.recording_state != 'stopped'
AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
# AND tr.type NOT IN ('audio', 'video')
AND (
a.is_private = 0
OR a.user_id = 14637
)
AND (
(a.actual_start_time BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59')
OR (
a.actual_start_time IS NULL
AND a.type IN ('sms-outbound', 'sms-inbound')
AND a.created_at BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59'
)
)
# and NOT EXISTS (
# SELECT 1
# FROM tracks t
# WHERE t.activity_id = a.id
# AND t.type IN ('audio', 'video')
# )
ORDER BY a.actual_end_time DESC;
SELECT * FROM tracks WHERE activity_id = 26485995;
select a.is_private, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a
inner join users u on u.id = a.user_id
where a.crm_configuration_id = 202
# and a.is_internal = 0
and (a.actual_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')
and a.type IN ("softphone","softphone-inbound","conference","sms-inbound")
and a.status IN ('completed', 'failed')
# and a.external_id is not null
order by a.actual_end_time desc;
select * from activities a where a.crm_configuration_id = 202
and a.actual_start_time between '2025-03-20 00:00:00' and '2025-03-21 00:00:00'
# AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
select g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a
inner join users u on u.id = a.user_id
inner join groups g on g.id = u.group_id
where a.crm_configuration_id = 202
and a.is_internal = 0
and (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')
and a.type = 'conference'
and a.status != 'completed'
and a.external_id is not null
order by a.scheduled_start_time desc;
SELECT * FROM teams WHERE name LIKE '%Tourlane%';
SELECT * FROM crm_fields WHERE crm_configuration_id = 209 and object_type = 'opportunity';
SELECT * FROM crm_field_data WHERE crm_field_id = 98809;
select * from users where status = 1 AND timezone = 'MDT';
select * from opportunities where id = 3769814;
select * from deal_risks where opportunity_id = 3769814;
select cp.* from crm_profiles cp
join users u on cp.user_id = u.id
join crm_configurations crm on cp.crm_configuration_id = crm.id
where crm.provider = 'hubspot' AND u.status = 1 AND log_notes != 'none';
select * from crm_fields where id = 154575;
select * from team_features where feature = 'SUPPORTS_SYNC_MISSING_CALL_DISPOSITIONS';
SELECT * FROM teams WHERE id = 176; # crm 148
select * from activities where crm_configuration_id = 148 and provider = 'hubspot' order by id desc;
select * from activity_providers where provider = 'amazon-connect';
select * from crm_fields cf
join crm_configurations crm on crm.id = cf.crm_configuration_id
where crm.provider = 'hubspot' and cf.object_type IN ('account', 'contact');
# [PASSWORD_DOTS]
SELECT * FROM users WHERE id IN (15415, 15418);
SELECT * FROM groups WHERE id IN (1805,1806);
SELECT * FROM playbooks WHERE id = 1860;
SELECT * FROM playbook_categories WHERE id = 38634;
SELECT * FROM crm_fields WHERE id = 189962;
SELECT * FROM teams WHERE name = 'Pulsar Group'; # 472, 380, 15138 [EMAIL]
SELECT * FROM crm_profiles WHERE user_id = 15415;
SELECT * FROM social_accounts WHERE sociable_id = 15415 and provider = 'salesforce';
select * from sidekick_settings where team_id = 472;
SELECT * FROM activities WHERE uuid_to_bin('452c58c7-b87c-4fdd-953e-d7af185e9588') = uuid; # 28617536, user: 15418
SELECT * FROM activities WHERE uuid_to_bin('399114ee-d3a8-458c-bff5-5f654658db0a') = uuid; # 28344407, user: 15415
SELECT * FROM activities WHERE uuid_to_bin('f0aa567f-0ab1-4bbb-96aa-37dcf184676b') = uuid; # 28580288, user: 15415
SELECT * FROM activities WHERE uuid_to_bin('50c086b1-2770-4bca-b5ae-6bac22ec426b') = uuid; # 28566069, user: 15415
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%TeamTailor%'; # 109, 218, 13969, [EMAIL]
select * from crm_configurations where id = 218;
SELECT * FROM activities WHERE uuid_to_bin('e39b5857-7fdb-4f5a-951a-8d3ca69bb1b0') = uuid; # 28338765
SELECT * FROM users WHERE id IN (13232, 13230);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 109
and sa.provider = 'salesforce';
0057R00000EPL5HQAX Inez Ekblad
1091cb81-5ea1-4951-a0ed-f00b568f0140 Triman Kaur
SELECT * FROM crm_profiles WHERE user_id IN (13232, 13230);
############################################################################################
SELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939 00UVg00000FLvnSMAT
SELECT * FROM crm_field_data WHERE activity_id = 28655939;
SELECT * FROM crm_fields WHERE id IN (94491,94493,94498);
SELECT * FROM users WHERE id = 13658;
SELECT * FROM teams WHERE id = 109;
SELECT * FROM crm_configurations WHERE id = 218;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 109
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Strengthscope%'; # 481, 390, 15420, [EMAIL]
SELECT * FROM stages WHERE crm_configuration_id = 390;
select * from business_processes where team_id = 481 and crm_configuration_id = 390;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 481
and sa.provider = 'salesforce';
SELECT * FROM users WHERE id = 15780; # team 462
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 462
and sa.provider = 'hubspot';
select * from teams where id = 495;
SELECT * FROM users WHERE id = 15794;
select * from social_accounts where sociable_id = 15794;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Flight%'; # 427, 333, 13752
SELECT * FROM accounts WHERE team_id = 427 and crm_provider_id = '668731000183444517';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Group GTI%'; # 495, 407, 15794
SELECT * FROM activities WHERE crm_configuration_id = 407
and status = 'completed' and type = 'conference'
order by id desc;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from permission_role;
select * from activities where crm_configuration_id = 407 and status = 'completed' order by id desc;
SELECT * FROM activities WHERE id = 29512773;
SELECT * FROM activities WHERE id IN (29042721,28991325,29002874);
SELECT al.* from activity_summary_logs al join activities a on a.id = al.activity_id
where a.crm_configuration_id = 407
# and a.id IN (29042721,28991325,29002874);
SELECT * FROM users WHERE id = 15794;
SELECT * FROM users WHERE team_id = 495;
SELECT * FROM social_accounts WHERE sociable_id = 15794;
SELECT * FROM opportunities WHERE team_id = 495 and name like '%OC:%';
SELECT * FROM contacts WHERE team_id = 495;
SELECT * FROM leads WHERE team_id = 495;
SELECT * FROM accounts WHERE team_id = 495;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 407;
SELECT * FROM crm_fields WHERE crm_configuration_id = 407;
SELECT * FROM crm_configurations WHERE id = 407;
SELECT * FROM opportunities WHERE team_id = 495 and close_date BETWEEN '2025-06-01' AND '2025-07-01'
and user_id IS NOT NULL and is_closed = 1 and is_won = 1;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Hamilton Court FX LLP%'; # 249, 187, 10103
SELECT * FROM activities WHERE uuid_to_bin('4659c2bb-9a49-484e-9327-a3d66f1e028c') = uuid; # 28951064
SELECT * FROM crm_fields WHERE crm_configuration_id = 187 and object_type IN ('tasks', 'event');
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Checkstep%'; # 325, 256, 11753
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 325
and sa.provider = 'hubspot';
SELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid; # 28611085
SELECT * FROM activities WHERE uuid_to_bin('980f0336-840b-4185-a5a9-30cf8b0749a8') = uuid; # 28719733
SELECT * FROM activity_summary_logs where activity_id = 28719733;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 356, 9444
SELECT * FROM activity_summary_logs where sent_at BETWEEN '2025-06-09 11:38:00' AND '2025-06-09 11:40:00';
SELECT * FROM leads WHERE crm_configuration_id = 356 and crm_provider_id = '230045001502770504'; # 823630
select * from activities where crm_configuration_id = 356 and lead_id = 841732;
SELECT * from activity_summary_logs al join activities a on a.id = al.activity_id
where a.crm_configuration_id = 356;
select * from activities where crm_configuration_id = 356
and actual_end_time between '2025-06-09 11:00:00' and '2025-06-09 12:00:00'
order by id desc;
select * from accounts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;
select * from leads where crm_configuration_id = 356 and crm_provider_id = '230045001514275654' order by id desc;
select * from contacts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;
select * from opportunities where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;
select * from team_features where team_id = 260;
select * from features where id IN (1,2,4,6,18,19,20,9,10,3,23,24,25,26,27);
SELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid;
select * from crm_fields;
select * from crm_layout_entities;
SELECT * FROM teams WHERE name LIKE '%Optable%';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Teamtailor%'; # 109, 218, 13969
SELECT * FROM crm_configurations WHERE id = 218;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 109
and sa.provider = 'salesforce';
SELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939
SELECT * FROM crm_field_data WHERE activity_id = 28655939;
SELECT * FROM crm_fields WHERE id in (94491,94493,94498);
select * from teams where crm_id IS NULL;
SELECT * FROM activities WHERE uuid_to_bin('71aa8a0c-9652-4ff6-bee7-d98ae60abef6') = uuid;
# [PASSWORD_DOTS]
select * from team_domains where team_id = 399;
SELECT * FROM teams WHERE name LIKE '%Rydoo%'; # 399, 318, 13207
select * from calendar_events where id = 5163781;
SELECT * FROM activities WHERE uuid_to_bin('be2cbc52-7fda-46a0-9ae0-25d9553eafc0') = uuid; # 29443896
SELECT * FROM participants WHERE activity_id = 29443896;
select * from contacts where crm_configuration_id = 318 and email = '[EMAIL]';
select * from leads where crm_configuration_id = 318 and email = '[EMAIL]';
select * from activities where user_id = 14937 order by created_at ;
select * from users where id = 14937;
select * from contacts where crm_configuration_id = 318 and email LIKE '%@strawberry.se';
select * from opportunities where crm_configuration_id = 318 and crm_provider_id = '006Sf00000D1WOAIA3';
select * from activities a join participants p on a.id = p.activity_id
where crm_configuration_id = 318 and a.updated_at > '2025-06-23T08:18:43Z';
# [PASSWORD_DOTS]
SELECT * FROM opportunities WHERE team_id = 379 and crm_provider_id = '39334518886';
SELECT * FROM opportunities WHERE team_id = 379 order by id desc;
SELECT * FROM teams WHERE id = 379;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 379 and sociable_id = 13852
and sa.provider = 'hubspot';
SELECT * FROM crm_configurations WHERE id = 307;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 307;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 1027;
SELECT * FROM crm_fields WHERE crm_configuration_id = 307
and id IN (144750,144855,145158,155227);
SELECT * FROM activities;
select * from activities
where created_at > '2025-07-01 00:00:00'
# and created_at < '2025-08-01 00:00:00'
and type not in ('email-outbound', 'email-inbound')
and account_id is null
and contact_id is null
and lead_id is null
and opportunity_id is not null
;
SELECT * FROM activities WHERE id IN (25344155, 25344296, 25501909, 28692187);
SELECT * FROM crm_configurations WHERE id in (335,301,200);
select * from crm_fields where crm_configuration_id = 230 and crm_provider_id = 'Age2__c';
SELECT * FROM teams WHERE name LIKE '%Resights%';
select * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';
select * from crm_configurations where provider = 'bullhorn'; # 344
select * from teams where id IN (442);
select * from activities
where crm_configuration_id = 177
and provider = 'amazon-connect'
order by id desc;
# and source <> 'gong';
select * from activity_providers where provider = 'amazon-connect';
SELECT * FROM activities WHERE uuid_to_bin('cec1993b-a7e5-4164-b74d-d680ea51d2f2') = uuid;
select * from crm_configurations where store_transcript = 1;
SELECT * FROM teams WHERE id IN (80);
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Sedna%'; # 277, 213, 12594
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 277
and sa.provider = 'salesforce';
select * from activities where crm_configuration_id = 213 and account_id = 2511502;
select * from crm_configurations where id = 213;
SELECT * FROM activities WHERE uuid_to_bin('35aa790a-8569-4544-8268-66f9a4a26804') = uuid; # 33981604
SELECT * FROM participants WHERE activity_id = 33981604;
SELECT * FROM crm_fields WHERE crm_configuration_id = 337 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 431
and sa.provider = 'salesforce';
SELECT * FROM activities WHERE uuid_to_bin('b5476c7d-19a8-491b-869d-676ea1e857b6') = uuid; # 33997223
select * from activity_summary_logs where activity_id = 33997223;
select * from activity_notes where activity_id = 33997223;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Abode%';
select * from features;
select * from teams t
where t.status = 'active'
and id NOT IN (select team_id from team_features where feature_id = 9)
;
select * from playbook_layouts where playbook_id = 1725;
SELECT * FROM activities WHERE uuid_to_bin('65cc283c-4849-49e6-927f-4c281c8fea19') = uuid; # 34297473
select * from teams where id = 318;
select * from crm_configurations w...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Console\\Commands\\Crm;\n\nuse Jiminny\\Console\\Commands\\Command;\nuse Jiminny\\Jobs\\Crm\\SyncObjects as SyncObjectsJob;\nuse Jiminny\\Models\\Team;\n\nclass SyncObjects extends Command\n{\n private const int STAGGER_DELAY_SECONDS = 2;\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'crm:sync-objects {team?} {--sync}';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Sync remote CRM objects.';\n\n /**\n * Execute the console command.\n */\n public function handle(): void\n {\n $teamId = $this->argument('team');\n $teams = [];\n\n if ($teamId) {\n $teams[] = Team::idOrUuId($teamId);\n } else {\n $teams = Team::where('status', Team::STATUS_ACTIVE)->get();\n }\n\n $dispatchIndex = 0;\n\n foreach ($teams as $team) {\n $config = $team->getCrmConfiguration();\n\n if ($config->getAttribute('sync_objects') === false) {\n continue;\n }\n\n if ($team->getAttribute('owner_id') === null) {\n $this->error(sprintf('Team %s (%s) is not yet assigned an owner. skipping...', $team->getName(), $team->getUuid()));\n\n continue;\n }\n\n if ($config->getAttribute('over_quota_at') || $config->getAttribute('api_disabled_at')) {\n $this->error(sprintf('Team %s (%s) API unavailable... skipping...', $team->getName(), $team->getUuid()));\n\n continue;\n }\n\n $delay = $dispatchIndex * self::STAGGER_DELAY_SECONDS;\n\n $lastSyncedAt = $config->getAttribute('last_synced_at');\n $this->info(\n sprintf(\n 'Syncing objects for %s (%s) since %s (delay: %ds)',\n $team->getName(),\n $team->getUuid(),\n $lastSyncedAt?->toDateTimeString() ?? 'never',\n $delay\n )\n );\n\n $this->dispatch((new SyncObjectsJob($team))->delay(now()->addSeconds($delay)));\n\n $dispatchIndex++;\n }\n }\n}","depth":4,"bounds":{"left":0.13597074,"top":0.0,"width":0.38896278,"height":1.0},"value":"<?php\n\nnamespace Jiminny\\Console\\Commands\\Crm;\n\nuse Jiminny\\Console\\Commands\\Command;\nuse Jiminny\\Jobs\\Crm\\SyncObjects as SyncObjectsJob;\nuse Jiminny\\Models\\Team;\n\nclass SyncObjects extends Command\n{\n private const int STAGGER_DELAY_SECONDS = 2;\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'crm:sync-objects {team?} {--sync}';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Sync remote CRM objects.';\n\n /**\n * Execute the console command.\n */\n public function handle(): void\n {\n $teamId = $this->argument('team');\n $teams = [];\n\n if ($teamId) {\n $teams[] = Team::idOrUuId($teamId);\n } else {\n $teams = Team::where('status', Team::STATUS_ACTIVE)->get();\n }\n\n $dispatchIndex = 0;\n\n foreach ($teams as $team) {\n $config = $team->getCrmConfiguration();\n\n if ($config->getAttribute('sync_objects') === false) {\n continue;\n }\n\n if ($team->getAttribute('owner_id') === null) {\n $this->error(sprintf('Team %s (%s) is not yet assigned an owner. skipping...', $team->getName(), $team->getUuid()));\n\n continue;\n }\n\n if ($config->getAttribute('over_quota_at') || $config->getAttribute('api_disabled_at')) {\n $this->error(sprintf('Team %s (%s) API unavailable... skipping...', $team->getName(), $team->getUuid()));\n\n continue;\n }\n\n $delay = $dispatchIndex * self::STAGGER_DELAY_SECONDS;\n\n $lastSyncedAt = $config->getAttribute('last_synced_at');\n $this->info(\n sprintf(\n 'Syncing objects for %s (%s) since %s (delay: %ds)',\n $team->getName(),\n $team->getUuid(),\n $lastSyncedAt?->toDateTimeString() ?? 'never',\n $delay\n )\n );\n\n $this->dispatch((new SyncObjectsJob($team))->delay(now()->addSeconds($delay)));\n\n $dispatchIndex++;\n }\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.5265958,"top":0.074221864,"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.53523934,"top":0.074221864,"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.5462101,"top":0.074221864,"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.55485374,"top":0.074221864,"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.56349736,"top":0.074221864,"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.5744681,"top":0.074221864,"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.58543885,"top":0.074221864,"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.61203456,"top":0.074221864,"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.62300533,"top":0.074221864,"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.074221864,"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":"27","depth":4,"bounds":{"left":0.9162234,"top":0.09896249,"width":0.009973404,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.9281915,"top":0.09896249,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"23","depth":4,"bounds":{"left":0.9381649,"top":0.09896249,"width":0.010305851,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.95046544,"top":0.09896249,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"105","depth":4,"bounds":{"left":0.96043885,"top":0.09896249,"width":0.011968086,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9740692,"top":0.09736632,"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.09736632,"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 * FROM team_features where team_id = 1;\n\nSELECT * FROM teams WHERE name LIKE '%Vixio%'; # 340,270,11922\nSELECT * FROM users WHERE team_id = 340; # 12015\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 340\nand sa.provider = 'salesforce';\n# and sa.provider = 'salesloft';\n\nselect * from crm_fields where crm_configuration_id = 270 and object_type = 'event';\n# 125558 - Event Type - Event_Type__c\n# 125552 - Event Status - Event_Status__c\n\nSELECT * FROM sidekick_settings WHERE team_id = 340;\n\nSELECT * FROM crm_field_values WHERE crm_field_id in (125552);\n\nselect * from activities where crm_configuration_id = 270\nand type = 'conference' and crm_provider_id IS NOT NULL\nand actual_start_time > '2024-09-16 09:00:00' order by scheduled_start_time;\n\nSELECT * FROM activities WHERE id = 20871677;\nSELECT * FROM crm_field_data WHERE activity_id = 20871677;\n\nselect * from crm_layouts where crm_configuration_id = 270;\nselect * from crm_layout_entities where crm_layout_id in (886,887);\n\nSELECT * FROM crm_configurations WHERE id = 270;\n\nselect * from playbooks where team_id = 340; # 1514\nselect * from groups where team_id = 340;\nSELECT * FROM crm_fields WHERE id IN (125393, 125401);\n\nselect g.name as 'team name', p.name as 'playbook name', f.label as 'activity type field' from groups g\njoin playbooks p on g.playbook_id = p.id\njoin crm_fields f on p.activity_field_id = f.id\nwhere g.team_id = 340;\n\nSELECT * FROM activities WHERE uuid_to_bin('0c180357-67d2-419e-a8c3-b832a3490770') = uuid; # 20448716\nselect * from crm_field_data where object_id = 20448716;\n\nselect * from activities where crm_configuration_id = 270 and provider = 'salesloft' order by id desc;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%CybSafe%'; # 343,273,12008\nselect * from opportunities where team_id = 343;\nselect * from opportunities where team_id = 343 and crm_provider_id = '18099102526';\nselect * from opportunities where team_id = 343 and account_id = 945217482;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from accounts where team_id = 343 order by name asc;\n\nselect * from stages where crm_configuration_id = 273 and type = 'opportunity';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Voyado%'; # 353,283,12143\nSELECT * FROM activities WHERE crm_configuration_id = 283 and account_id = 3777844 order by id desc;\nSELECT * FROM accounts WHERE team_id = 353 AND name LIKE '%Salesloft%';\nSELECT * FROM activities WHERE id = 20717903;\n\nselect * from participants where activity_id IN (20929172,20928605,20928468,20926272,20926271,20926270,20926269,20916499,20916454,20916436,20916435,20900015,20900014,20900013,20897312,20897243,20897241,20897237,20897232,20897229,20893648,20893231,20893230,20893229,20893228,20889784,20885039,20885038,20885037,20885036,20885035,20882728,20882708,20882703,20882702,20869828,20869811,20869806,20869801,20869799,20869798,20869796,20869795,20869794,20869761,20869760,20869759,20868688,20868687,20850340,20847195,20841710,20833967,20827021,20825307,20825305,20825297,20824615,20824400,20823927,20821760,20795588,20794233,20794057,20793710,20785811,20781789,20781394,20781307,20762651,20758453,20758282,20757323,20756643,20756636,20756629,20756627,20756606,20756605,20756604,20756603,20756602,20756600,20756599,20756598,20756595,20756594,20756589,20756587,20756577,20756573,20748918,20748386,20748385,20748384,20748383,20748382,20748381,20748380,20748379,20748377,20748375,20748373,20743301,20717905,20717904,20717903,20717901,20717899);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 353\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%modern world business solutions%'; # 345,275,12016, l.atkinson@mwbsolutions.co.uk\nSELECT * FROM activities WHERE uuid_to_bin('3921d399-3fef-4609-a291-b0097a166d43') = uuid;\n# id: 20940638, user: 12022, contact: 5305871\nSELECT * FROM activity_summary_logs WHERE activity_id = 20940638;\nselect * from contacts where team_id = 345 and crm_provider_id = '30891432415' order by name asc; # 5305871\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 345\nand sa.provider = 'hubspot';\n\nselect * from users where team_id = 345 and id = 12022;\nSELECT * FROM crm_profiles WHERE user_id = 12022;\nSELECT * FROM participants WHERE activity_id = 20940638;\nSELECT * FROM users u\nJOIN crm_profiles cp ON u.id = cp.user_id\nWHERE u.team_id = 345;\n\nselect * from contacts where team_id = 345 and crm_provider_id = '30880813535' order by name desc; # 5305871\n\nselect * from team_features where team_id = 345;\nSELECT * FROM activities WHERE uuid_to_bin('11701e2d-2f82-4dab-a616-1db4fad238df') = uuid; # 21115197\nSELECT * FROM participants WHERE activity_id = 20897406;\n\n\n\nSELECT * FROM activities WHERE uuid_to_bin('63ba55cd-1abc-447d-83da-0137000005b7') = uuid; # 20953912\nSELECT * FROM activities WHERE crm_configuration_id = 275 and provider = 'ringcentral' and title like '%1252629100%';\n\n\nSELECT * FROM activities WHERE id = 20946641;\nSELECT * FROM crm_profiles WHERE user_id = 10211;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120,97,10984, triger@lunio.ai\nSELECT * FROM opportunities WHERE crm_configuration_id = 97 and crm_provider_id = '006N1000006c5PpIAI';\nselect * from stages where crm_configuration_id = 97 and type = 'opportunity';\nselect * from opportunities where team_id = 120;\n\n\nselect * from crm_configurations crm join teams t on crm.id = t.crm_id\nwhere 1=1\nAND t.current_billing_plan IS NOT NULL\nAND crm.auto_sync_activity = 0\nand crm.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Exclaimer%'; # 270,205,10053,james.lewendon@exclaimer.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 270\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b54df794-2a9a-4957-8d80-09a600ead5f8') = uuid; # 21637956\nSELECT * FROM crm_profiles WHERE user_id = 11446;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cygnetise%'; # 372,300,12554, alex.chikly@cygnetise.com\nselect * from playbooks where team_id = 372;\nselect * from crm_fields where crm_configuration_id = 300 and object_type = 'event'; # 141340\nSELECT * FROM crm_field_values WHERE crm_field_id = 141340;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 372\nand sa.provider = 'salesforce';\n\nselect * from crm_profiles where crm_configuration_id = 300;\nSELECT * FROM crm_configurations WHERE team_id = 372;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Planday%'; # 291,242,11501,mfa@planday.com\nSELECT * FROM opportunities WHERE team_id = 291 and crm_provider_id = '006bG000005DO86QAG'; # 3207756\nselect * from crm_field_data where object_id = 3207756;\nSELECT * FROM crm_fields WHERE id = 111834;\n\nselect f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value\nFROM crm_fields f\nJOIN crm_field_data fd ON f.id = fd.crm_field_id\nWHERE f.crm_configuration_id = 242\nAND f.object_type = 'opportunity'\nAND fd.object_id IN (3207756)\nORDER BY fd.object_id, fd.updated_at;\n\nSELECT * FROM crm_configurations WHERE auto_connect = 1;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150,salesforce-admin@tourlane.com\nselect * from group_deal_risk_types drgt join groups g on drgt.group_id = g.id\nwhere g.team_id = 187;\n\nselect * from `groups` where team_id = 187;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 187\nand sa.provider = 'salesforce';\n\n# Destination - 98870 - Destination__c\n# Stage - 79014 - StageName\n# Land Arrangement - 98856 - Land_Arrangement__c\n# Flight - 98848 - Flight__c\n# Last activity date - 98812 - LastActivityDate\n# Last modified date - 98809 - LastModifiedDate\n# Last inbound mail timestamp - 99151 - Last_Inbound_Mail_Timestamp__c\n# next call - 98864 - Next_Call__c\n\nselect * from crm_fields where crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\nselect * from opportunities where team_id = 187 and name LIKE'%Muriel Sal%';\nselect * from opportunities where team_id = 187 and user_id = 9951 and is_closed = 0;\nselect * from activities where opportunity_id = 3538248;\n\nSELECT * FROM crm_profiles WHERE user_id = 8150;\n\nselect * from deal_risks where opportunity_id = 3538248;\n\nselect * from teams where crm_id IS NULL;\n\nSELECT opp.id AS opportunity_id,\n u.group_id AS group_id,\n MAX(\n CASE\n WHEN a.type IN (\"sms-inbound\", \"sms-outbound\") THEN a.created_at\n ELSE a.actual_end_time\n END) as last_date\nFROM opportunities opp\nleft join activities a on a.opportunity_id = opp.id\ninner join users u on opp.user_id = u.id\nwhere opp.user_id IN (9951)\n\nAND opp.is_closed = 0\nand a.status IN ('completed', 'received', 'delivered') OR a.status IS NULL\ngroup by opp.id;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cybsafe%'; # 343,301,12008,polly.morphew@cybsafe.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 301;\nSELECT * FROM contacts WHERE id = 6612363;\nSELECT * FROM accounts WHERE id = 4235676;\nSELECT * FROM opportunities WHERE crm_configuration_id = 301 and crm_provider_id = 32983784868;\nselect * from opportunity_stages where opportunity_id = 4503759;\n# SELECT * FROM opportunities WHERE id = 4569937;\n\nselect * from activities where crm_configuration_id = 301;\nSELECT * FROM activities WHERE uuid_to_bin('d3b2b28b-c3d0-4c2d-8ed0-eef42855278a') = uuid; # 26330370\nSELECT * FROM participants WHERE activity_id = 26330370;\n\nSELECT * FROM teams WHERE id = 375;\nselect * from playbooks where team_id = 375;\n\nselect * from stages where crm_configuration_id = 301 and type = 'opportunity';\n\nselect * from teams;\nselect * from contact_roles;\n\nSELECT * FROM opportunities WHERE team_id = 343 and user_id = 12871 and close_date >= '2024-11-01';\n\nselect * from users u join crm_profiles cp on cp.user_id = u.id where u.team_id = 343;\n\nSELECT * FROM crm_field_data WHERE object_id = 3771706;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 301 and object_type = 'opportunity'\nand crm_provider_id LIKE \"%traffic_light%\";\nSELECT * FROM crm_field_values WHERE crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531);\n\nSELECT fd.* FROM opportunities o\nJOIN crm_field_data fd ON o.id = fd.object_id\nWHERE o.team_id = 343\n# and o.user_id IS NOT NULL\nand fd.crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531)\nand fd.value != ''\norder by value desc\n# group by o.id\n;\n\nSELECT * FROM opportunities WHERE id = 3769843;\n\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150, salesforce-admin@tourlane.com\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding Circle%'; # 220,177,8603,aswini.mishra@fundingcircle.com\nSELECT * FROM activities WHERE uuid_to_bin('7a40e99b-3b37-4bb1-b983-325b81801c01') = uuid; # 23139839\n\n\nSELECT * FROM opportunities WHERE id = 3855992;\n\nSELECT * FROM users WHERE name LIKE '%Angus Pollard%'; # 8988\n\nSELECT * FROM teams WHERE name LIKE '%Story Terrace%'; # 379, 307, 12894\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307 and object_type != 'opportunity';\n\nselect * from contacts where team_id = 379 and name like '%bebro%'; # 5874411, crm: 77229348507\nSELECT * FROM crm_field_data WHERE object_id = 5874411;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379\nand sa.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%mentio%'; # 117, 94, 6371, nikhil.kumar@mention-me.com\nSELECT * FROM activities WHERE uuid_to_bin('82939311-1af0-4506-8546-21e8d1fdf2c1') = uuid;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tourlane%'; # 187, 209, 8150, salesforce-admin@tourlane.com\nSELECT * FROM opportunities WHERE team_id = 187 and crm_provider_id = '006Se000008xfvNIAQ'; # 3537793\nselect * from generic_ai_prompts where subject_id = 3537793;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120, 97, 10984, triger@lunio.ai\nSELECT * FROM crm_configurations WHERE id = 97;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 97;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 355;\nSELECT * FROM crm_fields WHERE id = 32682;\n\nselect cfd.value, o.* from opportunities o\njoin crm_field_data cfd on o.id = cfd.object_id and cfd.crm_field_id = 32682\nwhere team_id = 120\nand cfd.value != ''\n;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 120\nand sa.provider = 'salesforce';\n\nselect * from opportunities where team_id = 120 and crm_provider_id = '006N1000007X8MAIA0';\nSELECT * FROM crm_field_data WHERE object_id = 2313439;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 410;\nSELECT * FROM teams WHERE name LIKE '%Local Business Oxford%';\nselect * from scorecards where team_id = 410;\nselect * from scorecard_rules;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding%'; # 220, 177, 8603, aswini.mishra@fundingcircle.com\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\njoin users u on o.user_id = u.id\nwhere a.crm_configuration_id = 177 and a.type LIKE '%email-out%'\n# and a.actual_end_time > '2024-12-16 00:00:00'\n# and o.remotely_created_at > '2024-12-01 00:00:00'\n# and u.group_id = 1014\nand u.id = 9021\norder by a.id desc;\nSELECT * FROM opportunities WHERE id in (3981384,4017346);\nSELECT * FROM users WHERE team_id = 220 and id IN (8775, 11435);\n\nselect * from users where id = 9021;\nselect * from inboxes where user_id = 9021;\n\nselect * from inbox_emails where inbox_id = 1349 and email_date > '2024-12-18 00:00:00';\n\nselect * from email_messages where team_id = 220\nand orig_date > '2024-12-16 00:00:00' and orig_date < '2024-12-19 00:00:00'\nand subject LIKE '%Personal%'\n# and 'from' = 'credit@fundingcircle.com'\n;\n\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\nwhere a.user_id = 9021 and a.type LIKE '%email-out%'\nand a.actual_end_time > '2024-12-18 00:00:00'\nand o.user_id IS NOT NULL\nand o.remotely_created_at > '2024-12-01 00:00:00'\norder by a.id desc;\n\nSELECT * FROM opportunities WHERE team_id = 220 and name LIKE '%Right Car move Limited%' and id = 3966852;\nselect * from activities where crm_configuration_id = 177 and type LIKE '%email%' and opportunity_id = 3966852 order by id desc;\n\nselect * from team_settings where name IN ('useCloseDate');\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hurree%'; # 104, 81, 6175, jfarrell@hurree.co\nSELECT * FROM opportunities WHERE team_id = 104 and name = 'PropOp';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 104\nand sa.provider = 'hubspot';\n\nselect * from crm_configurations where last_synced_at > '2025-01-19 01:00:00'\nselect * from teams where crm_id IS NULL;\n\nselect t.name as 'team', u.name as 'owner', u.email, u.phone\nfrom teams t\njoin activity_providers ap on t.id = ap.team_id\njoin users u on t.owner_id = u.id\nwhere 1=1\n and t.status = 'active'\n and ap.is_enabled = 1\n# and u.status = 1\n and ap.provider = 'ms-teams';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nSELECT * FROM teams WHERE id = 442; # 14293\nselect * from users where team_id = 442;\nselect * from social_accounts sa where sa.sociable_id = 14293;\nselect * from invitations where team_id = 442;\n\n# ********************************************************************************************************\nSELECT * FROM users WHERE email LIKE '%nea.liikamaa@eletive.com%'; # 14022\nSELECT * FROM teams WHERE id = 429;\nselect * from opportunities where team_id = 429 and crm_provider_id IN (16157415775, 22246219645);\nselect * from activities where opportunity_id in (4340436,4353519);\n\nselect * from transcription where activity_id IN (25630961,25381771);\nselect * from generic_ai_prompts where subject_id IN (4353519);\n\nSELECT\n a.id as activity_id,\n a.opportunity_id,\n a.type as activity_type,\n a.language,\n CONCAT(a.title, a.description) AS mail_content,\n e.from AS mail_from,\n e.to AS mail_to,\n e.subject AS mail_subject,\n e.body AS mail_body,\n p.type as prompt_type,\n p.status as prompt_status,\n p.content AS prompt_content,\n a.actual_start_time as created_at\nFROM activities a\n LEFT JOIN ai_prompts p ON a.transcription_id = p.transcription_id AND p.deleted_at IS NULL\n LEFT JOIN email_messages e ON a.id = e.activity_id\nWHERE a.actual_start_time > '2024-01-01 00:00:00'\n AND a.opportunity_id IN (4353519)\n AND a.status IN ('completed', 'received', 'delivered')\n AND a.deleted_at IS NULL\n AND a.type NOT IN ('sms-inbound', 'sms-outbound')\nORDER BY a.opportunity_id ASC, a.id ASC;\n\nSELECT * FROM users WHERE name LIKE '%George Fierstone%'; # 14293\nSELECT * FROM teams WHERE id = 442;\nSELECT * FROM crm_configurations WHERE id = 344;\nselect * from team_features where team_id = 442;\nselect * from groups where team_id = 442;\nselect * from playbooks where team_id = 442;\nselect * from playbook_categories where playbook_id = 1729;\nselect * from crm_fields where crm_configuration_id = 344 and id = 172024;\nSELECT * FROM crm_field_values WHERE crm_field_id = 172024;\nselect * from crm_layouts where crm_configuration_id = 344;\nselect * from playbook_layouts where playbook_id = 1729;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 221, 9444\n\nselect s.*\n# , s.sent_at, u.name, a.*\nfrom activity_summary_logs s\ninner join activities a on a.id = s.activity_id\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 356\nand s.sent_at > date_sub(now(), interval 60 day)\norder by a.actual_end_time desc;\n\nselect * from activities a\n# inner join activity_summary_logs s on s.activity_id = a.id\nwhere a.crm_configuration_id = 356 and a.actual_end_time > date_sub(now(), interval 60 day)\n# and a.crm_provider_id is not null\n# and provider <> 'ringcentral'\nand status = 'completed'\norder by a.actual_end_time desc;\n\nselect * from teams order by id desc; # 17328, 32, 17830, integration-account@jiminny.com\nSELECT * FROM users;\nSELECT * FROM users where team_id = 260 and status = 1; # 201 - 150 active\nSELECT * FROM teams WHERE id = 260;\nselect * from team_settings where team_id = 260;\nselect * from crm_configurations where team_id = 260;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 356;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1184;\n\nselect * from accounts where crm_configuration_id = 221 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 221 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 221 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 221 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 221 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 221;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 221 order by id desc;\nselect * from stages where crm_configuration_id = 221 order by id desc;\n\nselect * from accounts where crm_configuration_id = 356 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 356 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 356 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 356 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 356 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 356;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 356 order by id desc;\nselect * from stages where crm_configuration_id = 356 order by id desc;\n\nselect * from playbooks where team_id = 260 order by id desc; # 4 (2 deleted)\nselect * from groups where team_id = 260 order by id desc; # 27 groups, (2 deleted)\nselect * from playbook_layouts where playbook_id IN (1410,1409,1276,1254); # 4\nselect ce.* from calendars c\njoin users u on c.user_id = u.id\njoin calendar_events ce on c.id = ce.calendar_id\nwhere u.team_id = 260\nand (ce.start_time > '2025-02-21 00:00:00')\n;\n# calendar events 1207\n#\n\nselect * from opportunities where team_id = 260;\nSELECT * FROM crm_field_data WHERE object_id = 4696496;\n\nselect * from activities where crm_configuration_id = 356 and crm_provider_id IS NOT NULL;\nselect * from activities where crm_configuration_id IN (221) and provider NOT IN ('ms-teams', 'uploader', 'zoom-bot')\n# and type = 'conference' and status = 'scheduled' and activities.is_internal = 0\nand created_at > '2024-03-01 00:00:00'\norder by id desc; # 880 000, ringcentral, avaya\nSELECT * FROM participants WHERE activity_id = 26371744;\n\n# all activities 942 000 +\n# conference 7385 - scheduled 984 - external 343\n\nselect * from activities where id = 26321812;\nselect * from participants where activity_id = 26321812;\nselect * from participants where activity_id in (26414510,26414514,26414516,26414604,26414653,26414655);\nselect * from leads where id in (720428,689175,731546,645866,621037);\n\nselect * from users where id = 13841;\nselect * from opportunities where user_id = 9541;\nselect * from stages where id = 15900;\n\nselect * from accounts where\n# id IN (4160055,5053725,4965303,4896434)\nid in (4584518,3249934,3218025,3891133,3399450,4172999,4485161,3101785,4587203,3070816,2870343,2870341,3563940,4550846,3424464,3249963,2870342)\n;\n\nselect * from activities where id = 26654935;\nSELECT * FROM opportunities WHERE id = 4803458;\n\nSELECT * FROM opportunities where team_id = 260 and user_id = 13841 AND stage_id = 15900;\nSELECT id, uuid, provider, type, lead_id, account_id, contact_id, opportunity_id, stage_id, status, recording_state, title, actual_start_time, actual_end_time\nFROM activities WHERE user_id = 13841 AND opportunity_id IN (4729783, 4731717, 4731726, 4732064, 4732849, 4803458, 4813213);\n\nSELECT DISTINCT\n o.id, o.stage_id, s.name, a.title,\n a.*\nFROM activities a\n# INNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nINNER JOIN groups g ON u.group_id = g.id\nINNER JOIN opportunities o ON a.opportunity_id = o.id\nINNER JOIN stages s ON o.stage_id = s.id\nWHERE\n a.crm_configuration_id = 356\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 13841\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n AND team.uuid = uuid_to_bin('a607fba7-452e-4683-b2af-00d6cb52c93c')\n AND g.uuid = uuid_to_bin('b5d69e40-24a0-4c16-810b-5fa462299f94')\n\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n )\n )\n AND (\n# s.id = 15900\n s.uuid = uuid_to_bin('04ca1c26-c666-4268-a129-419c0acffd73')\n OR s.uuid IS NULL -- Include records without opportunity stage\n )\n\nORDER BY a.actual_end_time DESC;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%'; # 190, 162, 8474, willsc@leadforensics.com\nSELECT * FROM users WHERE team_id = 190;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 190\nand sa.provider = 'hubspot';\n\nselect * from role_user where user_id = 8474;\n\nselect * from crm_configurations where provider = 'bullhorn';\n\nSELECT * FROM opportunities WHERE uuid_to_bin('94578249-65ec-4205-90f2-7d1a7d5ab64a') = uuid;\nSELECT * FROM users WHERE uuid_to_bin('26dbadeb-926f-4150-b11b-771b9d4c2f9a') = uuid;\n\nSELECT * FROM opportunities WHERE id = 4732493;\nselect * from activities where opportunity_id = 4732493;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 443; # 358, 14315, andrea.romano@correrenaturale.com\nSELECT * FROM opportunities WHERE team_id = 443;\n\nSELECT a.id, a.type, a.user_id, a.status, a.deleted_at, u.name, u.email, u.team_id as activity_team_id, u.status, u.deleted_at, t.name, t.status, s.team_id as stage_team_id\nFROM activities AS a\nJOIN stages AS s ON a.stage_id = s.id\nJOIN users AS u ON u.id = a.user_id\nJOIN teams AS t ON t.id = s.team_id\nWHERE u.team_id <> s.team_id and t.id > 135;\n\n\nSELECT\n crm_configuration_id,\n crm_provider_id,\n COUNT(*) as duplicate_count,\n GROUP_CONCAT(id) as stage_ids,\n GROUP_CONCAT(name) as stage_names\nFROM stages\nGROUP BY crm_configuration_id, crm_provider_id\nHAVING COUNT(*) > 1\nORDER BY duplicate_count DESC;\n\nselect * from stages where id IN (14898,14907);\n\nselect * from business_processes;\n\nSELECT *\nFROM crm_configurations\nWHERE team_id IN (\n SELECT team_id\n FROM crm_configurations\n GROUP BY team_id\n HAVING COUNT(*) > 1\n)\nORDER BY team_id;\n\nSELECT *\nFROM teams\nWHERE crm_id IN (\n SELECT crm_id\n FROM teams\n GROUP BY crm_id\n HAVING COUNT(*) > 1\n)\nORDER BY crm_id;\n\n# ***************************************************************************\nselect * from crm_configurations where provider = 'integration-app';\nSELECT * FROM teams WHERE id = 443; # Correre Naturale 358 14315 andrea.romano@correrenaturale.com\nselect * from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect id, uuid, actual_end_time, crm_provider_id, is_internal, playbook_category_id, type, user_id, lead_id, contact_id, account_id, opportunity_id, status, title from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect * from team_features where team_id = 358;\nselect * from activity_summary_logs;\n\nselect * from teams where id = 406;\n\n# ************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sportfive%'; # 267, 202, 14637, srv.salesforce@sportfive.com\nselect * from activities where crm_configuration_id = 202 order by actual_end_time desc;\n\nSELECT * FROM users where id = 14637;\nSELECT * FROM teams where id = 267;\nSELECT * FROM groups where id = 1118;\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 202\n AND status IN ('completed', 'failed')\n AND recording_state != 'stopped'\n AND type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n AND (is_private = 0 OR user_id = 14637)\n AND (\n (\n actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n ) OR (\n actual_start_time IS NULL\n AND type IN ('sms-outbound', 'sms-inbound')\n AND created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND NOT EXISTS (\n SELECT 1\n FROM tracks\n WHERE\n tracks.activity_id = activities.id\n AND tracks.type IN ('audio', 'video')\n )\nORDER BY actual_end_time DESC;\n\nSELECT DISTINCT\n a.*\nFROM activities a\nINNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nWHERE\n a.crm_configuration_id = 202\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 14637\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND a.user_id = 14637\n )\n )\n\nORDER BY a.actual_end_time DESC\n;\n\nSELECT DISTINCT a.*\nFROM activities a\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams t ON u.team_id = t.id\n# INNER JOIN tracks tr ON a.id = tr.activity_id\n# INNER JOIN groups g ON u.group_id = g.id\nWHERE 1=1\n AND t.id = 267\n# AND t.uuid = uuid_to_bin('aed4927b-f1ea-499e-94c3-83762fd233e8')\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND tr.type NOT IN ('audio', 'video')\n AND (\n a.is_private = 0\n OR a.user_id = 14637\n )\n AND (\n (a.actual_start_time BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59')\n OR (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59'\n )\n )\n# and NOT EXISTS (\n# SELECT 1\n# FROM tracks t\n# WHERE t.activity_id = a.id\n# AND t.type IN ('audio', 'video')\n# )\n\nORDER BY a.actual_end_time DESC;\n\nSELECT * FROM tracks WHERE activity_id = 26485995;\n\nselect a.is_private, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 202\n# and a.is_internal = 0\nand (a.actual_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type IN (\"softphone\",\"softphone-inbound\",\"conference\",\"sms-inbound\")\nand a.status IN ('completed', 'failed')\n# and a.external_id is not null\norder by a.actual_end_time desc;\n\nselect * from activities a where a.crm_configuration_id = 202\nand a.actual_start_time between '2025-03-20 00:00:00' and '2025-03-21 00:00:00'\n# AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM teams WHERE name LIKE '%Tourlane%';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_field_data WHERE crm_field_id = 98809;\n\nselect * from users where status = 1 AND timezone = 'MDT';\n\nselect * from opportunities where id = 3769814;\nselect * from deal_risks where opportunity_id = 3769814;\n\nselect cp.* from crm_profiles cp\njoin users u on cp.user_id = u.id\njoin crm_configurations crm on cp.crm_configuration_id = crm.id\nwhere crm.provider = 'hubspot' AND u.status = 1 AND log_notes != 'none';\n\nselect * from crm_fields where id = 154575;\n\nselect * from team_features where feature = 'SUPPORTS_SYNC_MISSING_CALL_DISPOSITIONS';\nSELECT * FROM teams WHERE id = 176; # crm 148\nselect * from activities where crm_configuration_id = 148 and provider = 'hubspot' order by id desc;\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nselect * from crm_fields cf\njoin crm_configurations crm on crm.id = cf.crm_configuration_id\nwhere crm.provider = 'hubspot' and cf.object_type IN ('account', 'contact');\n\n# *********************************************************************************************\nSELECT * FROM users WHERE id IN (15415, 15418);\nSELECT * FROM groups WHERE id IN (1805,1806);\nSELECT * FROM playbooks WHERE id = 1860;\nSELECT * FROM playbook_categories WHERE id = 38634;\nSELECT * FROM crm_fields WHERE id = 189962;\n\nSELECT * FROM teams WHERE name = 'Pulsar Group'; # 472, 380, 15138 raza.gilani@vuelio.com\n\nSELECT * FROM crm_profiles WHERE user_id = 15415;\nSELECT * FROM social_accounts WHERE sociable_id = 15415 and provider = 'salesforce';\n\nselect * from sidekick_settings where team_id = 472;\n\nSELECT * FROM activities WHERE uuid_to_bin('452c58c7-b87c-4fdd-953e-d7af185e9588') = uuid; # 28617536, user: 15418\nSELECT * FROM activities WHERE uuid_to_bin('399114ee-d3a8-458c-bff5-5f654658db0a') = uuid; # 28344407, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('f0aa567f-0ab1-4bbb-96aa-37dcf184676b') = uuid; # 28580288, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('50c086b1-2770-4bca-b5ae-6bac22ec426b') = uuid; # 28566069, user: 15415\n\n# *********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%TeamTailor%'; # 109, 218, 13969, salesforce-integrations@teamtailor.com\nselect * from crm_configurations where id = 218;\nSELECT * FROM activities WHERE uuid_to_bin('e39b5857-7fdb-4f5a-951a-8d3ca69bb1b0') = uuid; # 28338765\nSELECT * FROM users WHERE id IN (13232, 13230);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n0057R00000EPL5HQAX Inez Ekblad\n\n1091cb81-5ea1-4951-a0ed-f00b568f0140 Triman Kaur\n\nSELECT * FROM crm_profiles WHERE user_id IN (13232, 13230);\n\n############################################################################################\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939 00UVg00000FLvnSMAT\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id IN (94491,94493,94498);\nSELECT * FROM users WHERE id = 13658;\nSELECT * FROM teams WHERE id = 109;\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Strengthscope%'; # 481, 390, 15420, katy.holden@strengthscope.comk\nSELECT * FROM stages WHERE crm_configuration_id = 390;\nselect * from business_processes where team_id = 481 and crm_configuration_id = 390;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 481\nand sa.provider = 'salesforce';\n\n\nSELECT * FROM users WHERE id = 15780; # team 462\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 462\nand sa.provider = 'hubspot';\n\n\nselect * from teams where id = 495;\nSELECT * FROM users WHERE id = 15794;\nselect * from social_accounts where sociable_id = 15794;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Flight%'; # 427, 333, 13752\nSELECT * FROM accounts WHERE team_id = 427 and crm_provider_id = '668731000183444517';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Group GTI%'; # 495, 407, 15794\nSELECT * FROM activities WHERE crm_configuration_id = 407\nand status = 'completed' and type = 'conference'\norder by id desc;\n\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from permission_role;\n\nselect * from activities where crm_configuration_id = 407 and status = 'completed' order by id desc;\nSELECT * FROM activities WHERE id = 29512773;\nSELECT * FROM activities WHERE id IN (29042721,28991325,29002874);\n\nSELECT al.* from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 407\n# and a.id IN (29042721,28991325,29002874);\n\nSELECT * FROM users WHERE id = 15794;\nSELECT * FROM users WHERE team_id = 495;\nSELECT * FROM social_accounts WHERE sociable_id = 15794;\nSELECT * FROM opportunities WHERE team_id = 495 and name like '%OC:%';\nSELECT * FROM contacts WHERE team_id = 495;\nSELECT * FROM leads WHERE team_id = 495;\nSELECT * FROM accounts WHERE team_id = 495;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 407;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 407;\nSELECT * FROM crm_configurations WHERE id = 407;\nSELECT * FROM opportunities WHERE team_id = 495 and close_date BETWEEN '2025-06-01' AND '2025-07-01'\nand user_id IS NOT NULL and is_closed = 1 and is_won = 1;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hamilton Court FX LLP%'; # 249, 187, 10103\nSELECT * FROM activities WHERE uuid_to_bin('4659c2bb-9a49-484e-9327-a3d66f1e028c') = uuid; # 28951064\nSELECT * FROM crm_fields WHERE crm_configuration_id = 187 and object_type IN ('tasks', 'event');\n\n# *********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Checkstep%'; # 325, 256, 11753\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 325\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid; # 28611085\nSELECT * FROM activities WHERE uuid_to_bin('980f0336-840b-4185-a5a9-30cf8b0749a8') = uuid; # 28719733\nSELECT * FROM activity_summary_logs where activity_id = 28719733;\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 356, 9444\nSELECT * FROM activity_summary_logs where sent_at BETWEEN '2025-06-09 11:38:00' AND '2025-06-09 11:40:00';\nSELECT * FROM leads WHERE crm_configuration_id = 356 and crm_provider_id = '230045001502770504'; # 823630\nselect * from activities where crm_configuration_id = 356 and lead_id = 841732;\n\nSELECT * from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 356;\n\nselect * from activities where crm_configuration_id = 356\nand actual_end_time between '2025-06-09 11:00:00' and '2025-06-09 12:00:00'\norder by id desc;\n\nselect * from accounts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from leads where crm_configuration_id = 356 and crm_provider_id = '230045001514275654' order by id desc;\nselect * from contacts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from opportunities where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\n\nselect * from team_features where team_id = 260;\nselect * from features where id IN (1,2,4,6,18,19,20,9,10,3,23,24,25,26,27);\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid;\n\nselect * from crm_fields;\nselect * from crm_layout_entities;\n\nSELECT * FROM teams WHERE name LIKE '%Optable%';\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Teamtailor%'; # 109, 218, 13969\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id in (94491,94493,94498);\n\nselect * from teams where crm_id IS NULL;\n\nSELECT * FROM activities WHERE uuid_to_bin('71aa8a0c-9652-4ff6-bee7-d98ae60abef6') = uuid;\n\n# *************************************************************************************************\nselect * from team_domains where team_id = 399;\nSELECT * FROM teams WHERE name LIKE '%Rydoo%'; # 399, 318, 13207\n\nselect * from calendar_events where id = 5163781;\nSELECT * FROM activities WHERE uuid_to_bin('be2cbc52-7fda-46a0-9ae0-25d9553eafc0') = uuid; # 29443896\nSELECT * FROM participants WHERE activity_id = 29443896;\nselect * from contacts where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\nselect * from leads where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\n\nselect * from activities where user_id = 14937 order by created_at ;\n\nselect * from users where id = 14937;\n\nselect * from contacts where crm_configuration_id = 318 and email LIKE '%@strawberry.se';\nselect * from opportunities where crm_configuration_id = 318 and crm_provider_id = '006Sf00000D1WOAIA3';\n\nselect * from activities a join participants p on a.id = p.activity_id\nwhere crm_configuration_id = 318 and a.updated_at > '2025-06-23T08:18:43Z';\n\n# *************************************************************************************************\nSELECT * FROM opportunities WHERE team_id = 379 and crm_provider_id = '39334518886';\nSELECT * FROM opportunities WHERE team_id = 379 order by id desc;\nSELECT * FROM teams WHERE id = 379;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379 and sociable_id = 13852\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations WHERE id = 307;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 307;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1027;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307\n and id IN (144750,144855,145158,155227);\n\nSELECT * FROM activities;\n\n\nselect * from activities\nwhere created_at > '2025-07-01 00:00:00'\n# and created_at < '2025-08-01 00:00:00'\nand type not in ('email-outbound', 'email-inbound')\nand account_id is null\nand contact_id is null\nand lead_id is null\nand opportunity_id is not null\n;\nSELECT * FROM activities WHERE id IN (25344155, 25344296, 25501909, 28692187);\nSELECT * FROM crm_configurations WHERE id in (335,301,200);\n\nselect * from crm_fields where crm_configuration_id = 230 and crm_provider_id = 'Age2__c';\n\nSELECT * FROM teams WHERE name LIKE '%Resights%';\nselect * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nselect * from teams where id IN (442);\n\nselect * from activities\nwhere crm_configuration_id = 177\nand provider = 'amazon-connect'\n order by id desc;\n# and source <> 'gong';\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nSELECT * FROM activities WHERE uuid_to_bin('cec1993b-a7e5-4164-b74d-d680ea51d2f2') = uuid;\n\n\nselect * from crm_configurations where store_transcript = 1;\nSELECT * FROM teams WHERE id IN (80);\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sedna%'; # 277, 213, 12594\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 277\nand sa.provider = 'salesforce';\n\nselect * from activities where crm_configuration_id = 213 and account_id = 2511502;\n\nselect * from crm_configurations where id = 213;\n\nSELECT * FROM activities WHERE uuid_to_bin('35aa790a-8569-4544-8268-66f9a4a26804') = uuid; # 33981604\nSELECT * FROM participants WHERE activity_id = 33981604;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 337 and object_type = 'task';\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 431\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b5476c7d-19a8-491b-869d-676ea1e857b6') = uuid; # 33997223\nselect * from activity_summary_logs where activity_id = 33997223;\nselect * from activity_notes where activity_id = 33997223;\n\n# ***********************************\nSELECT * FROM teams WHERE name LIKE '%Abode%';\n\n\nselect * from features;\nselect * from teams t\nwhere t.status = 'active'\nand id NOT IN (select team_id from team_features where feature_id = 9)\n;\n\n\nselect * from playbook_layouts where playbook_id = 1725;\nSELECT * FROM activities WHERE uuid_to_bin('65cc283c-4849-49e6-927f-4c281c8fea19') = uuid; # 34297473\nselect * from teams where id = 318;\nselect * from crm_configurations where team_id = 318;\nselect * from playbooks where team_id = 318;\nSELECT * FROM crm_layouts where crm_configuration_id = 381;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1259;\nSELECT * FROM crm_fields WHERE id IN (192938,192936,192939);\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1266;\nSELECT * FROM crm_fields WHERE id IN (192980,192991,192997,192998,193064,193067);\n\nSELECT * FROM activities WHERE uuid_to_bin('a902289b-285c-48eb-9cc2-6ad6c5d938f5') = uuid; # 34297533\n\n\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nSELECT * FROM crm_fields WHERE id IN (131668,131669,131670,131671,131676,131797);\n\nSELECT * FROM teams WHERE name LIKE '%Peripass%'; # 351, 281, 12124\nselect * from crm_layouts where crm_configuration_id = 281;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nselect * from crm_fields where crm_configuration_id = 281 and id in (131668,131669,131670,131671,131676,131797);\nselect * from opportunities where crm_configuration_id = 281;\n\nSELECT * FROM activities WHERE id IN (34211315, 34130075);\nSELECT * FROM crm_field_data WHERE object_id IN (34211315, 34130075);\n\nselect cf.crm_configuration_id, cle.crm_layout_id, cle.id, cf.id from crm_field_data cfd\njoin crm_layout_entities cle on cle.id = cfd.crm_layout_entity_id\njoin crm_fields cf on cle.crm_field_id = cf.id\nwhere cf.deleted_at IS NOT NULL\nGROUP BY cle.id, cf.id;\n\nselect * from crm_layouts where id IN (355);\nselect u.email, t.crm_id, t.* from teams t\njoin users u on u.id = t.owner_id\nwhere crm_id IN (97);\n\nSELECT * FROM crm_fields WHERE id = 96492;\n\nselect * from permissions;\nselect * from permission_role where permission_id = 247;\nselect * from roles;\n\nselect * from migrations;\n# *****************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('291e3c21-11cc-4728-aee7-6e4bedf86d72') = uuid; # 34262174\nSELECT * FROM crm_configurations WHERE id = 301;\nSELECT * FROM teams WHERE id = 343;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from participants where activity_id = 34262174;\n\nselect * from contacts where crm_configuration_id = 301 and id = 6976326;\nselect * from accounts where crm_configuration_id = 301 and id IN (4647626, 4815829); # 30761335403\n\nselect * from activity_summary_logs where activity_id = 34262174;\n\nselect * from users where status = 1 AND timezone = 'EST';\n\n# ****************************************************************************\nSELECT * FROM users WHERE id = 13869;\nSELECT * FROM crm_configurations WHERE id = 320;\nSELECT * FROM teams WHERE id = 401;\n\nSELECT * FROM activities WHERE uuid_to_bin('2228c16f-10be-48d5-90d4-67385219dc01') = uuid; # 29670601\n\nSELECT * FROM accounts WHERE id = 7761483;\nSELECT * FROM opportunities WHERE id = 6051814;\n\nSELECT * FROM teams WHERE name LIKE '%Seedlegals%';\n\n;select * from opportunities where updated_at > '2025-10-11' AND crm_provider_id = '34713761166';\n\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 177;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 577;\nSELECT * FROM crm_fields WHERE id IN (68458,68459,68480,68497,68524,68530,68554,68618,68662,68781,68810,68898,68981,69049,97467);\n\nSELECT t.id, crm.id, t.name, crm.sync_objects, crm.provider, crm.last_synced_at FROM crm_configurations crm join teams t on t.crm_id = crm.id\nwhere t.status = 'active' AND crm.provider = 'hubspot' AND crm.last_synced_at < '2025-10-22 00:00:00';\n\nSELECT * FROM activities WHERE uuid_to_bin('fa09449f-cba9-496a-b8f3-865cd3c72351') = uuid;\nSELECT * FROM crm_configurations where id = 184;\nSELECT * FROM teams WHERE id = 246;\nSELECT * FROM social_accounts WHERE sociable_id = 9259 and provider = 'hubspot';\n\nSELECT * FROM users WHERE email LIKE '%rhian.old@bud.co.uk%'; # 17700\nSELECT * FROM teams WHERE id = 551;\n\nSELECT * FROM crm_configurations WHERE id = 471;\nSELECT * FROM activities WHERE crm_configuration_id = 471 and crm_provider_id IS NOT NULL;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 471;\nSELECT * FROM crm_fields WHERE id = 307260;\nSELECT * FROM crm_field_values WHERE crm_field_id = 307260;\n\nselect * from crm_layouts where crm_configuration_id = 471;\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1547;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1548;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 551 and sa.provider = 'hubspot';\n\nSELECT * FROM teams WHERE name LIKE '%$PCS%';\n\n# ********************************************************************************************************\nselect * from crm_configurations crm\njoin teams t on t.crm_id = crm.id\nwhere t.status = 'active'\nand crm.provider = 'hubspot';\n\n# $slug = 'HUBSPOT_WEBHOOK_SYNC';\n# $team = Jiminny\\Models\\Team::find(2);\n# $feature = Feature::query()->where('slug', $slug)->first();\n# TeamFeature::query()->create(['feature_id' => $feature->getId(),'team_id' => $team->getId()]);\n\n# hubspot_webhook_metrics\n\nselect * from crm_configurations where id = 331; # 416\nSELECT * FROM teams WHERE id = 416;\nSELECT * FROM opportunities WHERE team_id = 190;\n\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%';\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 190 and sa.provider = 'hubspot';\n\n\n\nSELECT * FROM teams WHERE name LIKE '%Rapaport%'; # 431, 337\nSELECT * FROM teams where id = 431;\nSELECT * FROM crm_configurations where team_id = 431;\nSELECT * FROM activity_providers where team_id = 431;\nSELECT * FROM activities where crm_configuration_id = 337 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 431 and sa.provider = 'salesforce';\n\nSELECT * FROM teams WHERE name LIKE '%BiP%'; # 401, 320\nSELECT * FROM teams where id = 401;\nSELECT * FROM crm_configurations where team_id = 401;\nSELECT * FROM activity_providers where team_id = 401;\nSELECT * FROM activities where crm_configuration_id = 320 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 401 and sa.provider = 'salesforce';\n\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 307; # 379 - Story Terrace Inc , portalId: 3921157\nSELECT * FROM contacts WHERE team_id = 379 and updated_at > '2026-01-31 11:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-01 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 379 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 485; # 563 - LATUS Group (ad94d501-5d09-44fd-878f-ca3a9f8865c3) , portalId: 3904501\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 338; # 432 - Formalize , portalId: 9214205\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 432 and sa.provider = 'hubspot';\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 436; # 519 - Moxso , portalId: 25531989\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 96; # 119 - Nourish Care , portalId: 26617984\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 331; # 416 - The National College , portalId: 7213852\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 308; # 380 - Foodles , portalId: 7723616\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 379; # 471 - imat-uve , portalId: 9177354\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 465; # 545 - Spotler , portalId: 144759271\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 455; # 537 - indevis , portalId: 25666868\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 200; # 265 - Jobadder , portalId: 6426676\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 335; # 429 - Eletive , portalId: 6110563\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 363; # 456 - Global Group , portalId: 8901981\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 297; # 369 - Unbiased , portalId: 9229005\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 353; # 449 - Fuuse , portalId: 25781745\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 487; # 566 - Nimbus , portalId: 39982590\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 487;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1630;\nselect * from crm_fields where crm_configuration_id = 487 and\n(uuid_to_bin('4c6b2971-64d4-45b8-b377-427be758b5a5') = uuid or uuid_to_bin('59e368d8-65a0-4b77-b611-db37c99fbe68') = uuid);\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 420; # 506 - voiio , portalId: 145629154\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 479; # 558 - Momice , portalId: 535962\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 59; # 80 - Storyclash GmbH , portalId: 4268479\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 175; # 203 - Team iAM , portalId: 5534732\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 368; # 460 - OneTouch Health , portalId: 5534732183355\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\n\n\nselect * from users where id = 29643;\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM teams WHERE name LIKE '%Buynomics%'; # 462, 482, 14910\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\n# and description like '%The call focused on understanding Welch%'\norder by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 462 and sa.provider = 'salesforce';\n\nselect * from contacts where crm_configuration_id = 482 and name = 'Cyndall Hill'; # 15504749\nselect * from contacts where id = 10891096; # 482\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\nand contact_id = 15504749\norder by id desc;\n\nselect * from activities where id = 36793003; # 96cc7bc1-8622-4d27-92f4-baf664fc1a56, 00UOf00000PDdOXMA1\nselect * from transcription where id = 7646782;\nselect * from ai_prompts where transcription_id = 7646782;\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7a8471a3-847e-4822-802b-ddf426bbc252') = uuid; # 37370018\nSELECT * FROM activity_summary_logs WHERE activity_id = 37370018;\nSELECT * FROM teams WHERE id = 555;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 555 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7c17b8aa-09df-4f85-a0f7-51f47afd712d') = uuid; # 37395250\nSELECT * FROM activities WHERE uuid_to_bin('14d60388-260d-494b-aa0d-63fdb1c78026') = uuid; # 37395250\n\nSELECT a.* FROM activities a JOIN crm_configurations c on c.id = a.crm_configuration_id\nwhere a.type IN ('softphone', 'softphone-outbound') and c.provider = 'hubspot'\nand a.provider NOT IN ('hubspot')\n# and a.provider IN ('salesloft')\n# and c.id NOT IN (70)\n# and a.duration > 30\n# and actual_start_time > '2026-02-05 00:00:00'\norder by a.id desc;\n\nSELECT * FROM activities WHERE id = 37549787;\nSELECT * FROM crm_profiles WHERE user_id = 17613;\n\nSELECT * FROM crm_configurations WHERE id = 70;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 93 and sa.provider = 'hubspot';\n\nSELECT asf.activity_search_id, asf.id, asf.value\nFROM activity_search_filters asf\nWHERE asf.filter = 'group_id'\nAND asf.value IN (\n SELECT CONCAT(\n HEX(SUBSTR(uuid, 5, 4)), '-',\n HEX(SUBSTR(uuid, 3, 2)), '-',\n HEX(SUBSTR(uuid, 1, 2)), '-',\n HEX(SUBSTR(uuid, 9, 2)), '-',\n HEX(SUBSTR(uuid, 11))\n )\n FROM groups\n WHERE deleted_at IS NOT NULL\n);\n\nSELECT * FROM crm_configurations WHERE id = 373; # KPSBremen.de 465 # - no social account\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 465 and sa.provider = 'hubspot';\n\nselect * from crm_configurations where id = 494;\n\nSELECT * FROM teams WHERE name LIKE '%splose%'; # 572, 495, 18708\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 572 and sa.provider = 'pipedrive';\n\nselect * from opportunities where team_id = 572\n# and name like '%Onebright%'\n# and is_closed = 1 and is_won = 0\n order by id desc;\n\n\nselect * from users where deleted_at is null and status = 2;\n\nselect * from contacts where id = 17900517;\nselect * from accounts where id = 10109838;\nselect * from opportunities where id = 6955880;\n\nselect * from opportunity_contacts where opportunity_id = 6955880;\nselect * from opportunity_contacts where contact_id = 17900517;\n\nselect * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id\nwhere crm.provider != 'salesforce';\n\nSELECT * FROM activities WHERE uuid_to_bin('adcb8331-5988-4353-834e-383a355abba2') = uuid; # 38056424, crm 104659682404\nselect * from teams where id = 456;\nSELECT * FROM crm_configurations WHERE id = 363;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 456 and sa.provider = 'hubspot';\n\nselect * from crm_layouts where crm_configuration_id = 363;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id IN (1203, 1204, 1635);\nSELECT * FROM crm_fields WHERE id IN (181536, 181538, 213455);\n\nSELECT * FROM teams WHERE name LIKE '%Electric%'; # 342, 272, 12767\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and name like 'NORTHUMBRIA POL%'; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 order by remotely_created_at asc; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and updated_at > '2026-01-01 00:00:00';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 272 and object_type = 'opportunity';\nSELECT * FROM crm_field_values WHERE crm_field_id = 127164;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\n\nSELECT * FROM teams WHERE id = 472;\nSELECT * FROM crm_configurations WHERE id = 380;\nselect * from activities where id = 38285673; # 38285673\nSELECT * FROM users WHERE id = 16942;\nSELECT * FROM groups WHERE id = 1964;\nSELECT * FROM playbooks WHERE id = 2033;\n\nselect * from teams where created_at > '2026-03-09';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 499; # 1065\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1678;\n\nSELECT * FROM teams WHERE id = 575;\nselect * from opportunities where team_id = 575;\n\nSELECT * FROM activities WHERE uuid_to_bin('96b1261f-2357-49f9-ab38-23ce12008ea0') = uuid;\n\nselect * from contacts c\nwhere c.crm_configuration_id = 370 order by c.updated_at desc;\n\nSELECT * FROM participants where activity_id = 38833541;\nSELECT * FROM participants where activity_id = 39216301;\nSELECT * FROM activity_summary_logs where activity_id = 39216301;\nSELECT * FROM activities WHERE uuid_to_bin('c7d99fbe-1fb1-41f2-8f4d-52e2bf70e1e9') = uuid; # 38833541, crm 478116564181\nSELECT * FROM activities WHERE uuid_to_bin('2e6ff4d3-9faa-447a-a8c1-9acde4d885ae') = uuid; # 39216301, crm 480171536586\nselect * from crm_profiles where crm_configuration_id = 319 and crm_provider_id = 525785080;\nselect * from opportunities where crm_configuration_id = 319 and crm_provider_id = 410150124747;\nselect * from accounts where crm_configuration_id = 319 and crm_provider_id = 47150650569;\nselect * from contacts where crm_configuration_id = 319 and crm_provider_id IN ('665587441856', '742723347700');\n# owner 13236 525785080\n# contact 1 16779180 665587441856 - activity - Alex Howes alex@supportroom.com created 2026-01-26\n# contact 2 19247563 742723347700 - ash@supportroom.com 2026-03-24\n# company 4176133 47150650569\n# deal 7100953 410150124747\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 400 and sa.provider = 'hubspot';\n\nselect * from features;\nselect * from team_features where feature_id = 40;\n\nselect * from teams where id = 556; # owner: 18101, crm: 477\nselect * from crm_configurations where id = 477;\nSELECT * FROM users WHERE id = 18101;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 556 and sa.provider = 'integration-app';\n\nselect * from opportunities where id = 7594349;\nselect * from opportunity_stages where opportunity_id = 7594349 order by created_at desc;\nselect * from business_processes where id = 6024;\nselect * from business_process_stages where stage_id = 16352;\nselect * from business_process_stages where business_process_id = 6024;\nselect * from stages where team_id = 459;\nselect * from teams where id = 459;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 459 and sa.provider = 'hubspot';\n\nSELECT os.stage_id, s.crm_provider_id, s.name, COUNT(*) as cnt\nFROM opportunity_stages os\nJOIN stages s ON s.id = os.stage_id\nWHERE os.opportunity_id = 7594349\nGROUP BY os.stage_id, s.crm_provider_id, s.name\nORDER BY cnt DESC;\n\nSELECT s.id, s.crm_provider_id, s.name, s.team_id, s.crm_configuration_id\nFROM stages s\nJOIN business_process_stages bps ON bps.stage_id = s.id\nWHERE bps.business_process_id = 6024\nAND s.crm_provider_id = 'contractsent';\n\nselect * from stages where id IN (16352,20612,18281,7344,16378,16309,5036,15223,14535,6293,12098,11607)\n\nSELECT * FROM teams WHERE name LIKE '%Pulsar Group%'; # 472, 380, 15138, raza.gilani@vuelio.com\nselect * from playbooks where team_id = 472; # event 226147\nSELECT * FROM playbook_categories WHERE playbook_id = 2288;\nSELECT * FROM crm_fields WHERE id = 226147;\nSELECT * FROM crm_field_values WHERE crm_field_id = 226147;\n\nSELECT * FROM crm_configurations WHERE id = 380;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 472 and sa.provider = 'salesforce';","depth":4,"value":"SELECT * FROM team_features where team_id = 1;\n\nSELECT * FROM teams WHERE name LIKE '%Vixio%'; # 340,270,11922\nSELECT * FROM users WHERE team_id = 340; # 12015\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 340\nand sa.provider = 'salesforce';\n# and sa.provider = 'salesloft';\n\nselect * from crm_fields where crm_configuration_id = 270 and object_type = 'event';\n# 125558 - Event Type - Event_Type__c\n# 125552 - Event Status - Event_Status__c\n\nSELECT * FROM sidekick_settings WHERE team_id = 340;\n\nSELECT * FROM crm_field_values WHERE crm_field_id in (125552);\n\nselect * from activities where crm_configuration_id = 270\nand type = 'conference' and crm_provider_id IS NOT NULL\nand actual_start_time > '2024-09-16 09:00:00' order by scheduled_start_time;\n\nSELECT * FROM activities WHERE id = 20871677;\nSELECT * FROM crm_field_data WHERE activity_id = 20871677;\n\nselect * from crm_layouts where crm_configuration_id = 270;\nselect * from crm_layout_entities where crm_layout_id in (886,887);\n\nSELECT * FROM crm_configurations WHERE id = 270;\n\nselect * from playbooks where team_id = 340; # 1514\nselect * from groups where team_id = 340;\nSELECT * FROM crm_fields WHERE id IN (125393, 125401);\n\nselect g.name as 'team name', p.name as 'playbook name', f.label as 'activity type field' from groups g\njoin playbooks p on g.playbook_id = p.id\njoin crm_fields f on p.activity_field_id = f.id\nwhere g.team_id = 340;\n\nSELECT * FROM activities WHERE uuid_to_bin('0c180357-67d2-419e-a8c3-b832a3490770') = uuid; # 20448716\nselect * from crm_field_data where object_id = 20448716;\n\nselect * from activities where crm_configuration_id = 270 and provider = 'salesloft' order by id desc;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%CybSafe%'; # 343,273,12008\nselect * from opportunities where team_id = 343;\nselect * from opportunities where team_id = 343 and crm_provider_id = '18099102526';\nselect * from opportunities where team_id = 343 and account_id = 945217482;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from accounts where team_id = 343 order by name asc;\n\nselect * from stages where crm_configuration_id = 273 and type = 'opportunity';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Voyado%'; # 353,283,12143\nSELECT * FROM activities WHERE crm_configuration_id = 283 and account_id = 3777844 order by id desc;\nSELECT * FROM accounts WHERE team_id = 353 AND name LIKE '%Salesloft%';\nSELECT * FROM activities WHERE id = 20717903;\n\nselect * from participants where activity_id IN (20929172,20928605,20928468,20926272,20926271,20926270,20926269,20916499,20916454,20916436,20916435,20900015,20900014,20900013,20897312,20897243,20897241,20897237,20897232,20897229,20893648,20893231,20893230,20893229,20893228,20889784,20885039,20885038,20885037,20885036,20885035,20882728,20882708,20882703,20882702,20869828,20869811,20869806,20869801,20869799,20869798,20869796,20869795,20869794,20869761,20869760,20869759,20868688,20868687,20850340,20847195,20841710,20833967,20827021,20825307,20825305,20825297,20824615,20824400,20823927,20821760,20795588,20794233,20794057,20793710,20785811,20781789,20781394,20781307,20762651,20758453,20758282,20757323,20756643,20756636,20756629,20756627,20756606,20756605,20756604,20756603,20756602,20756600,20756599,20756598,20756595,20756594,20756589,20756587,20756577,20756573,20748918,20748386,20748385,20748384,20748383,20748382,20748381,20748380,20748379,20748377,20748375,20748373,20743301,20717905,20717904,20717903,20717901,20717899);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 353\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%modern world business solutions%'; # 345,275,12016, l.atkinson@mwbsolutions.co.uk\nSELECT * FROM activities WHERE uuid_to_bin('3921d399-3fef-4609-a291-b0097a166d43') = uuid;\n# id: 20940638, user: 12022, contact: 5305871\nSELECT * FROM activity_summary_logs WHERE activity_id = 20940638;\nselect * from contacts where team_id = 345 and crm_provider_id = '30891432415' order by name asc; # 5305871\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 345\nand sa.provider = 'hubspot';\n\nselect * from users where team_id = 345 and id = 12022;\nSELECT * FROM crm_profiles WHERE user_id = 12022;\nSELECT * FROM participants WHERE activity_id = 20940638;\nSELECT * FROM users u\nJOIN crm_profiles cp ON u.id = cp.user_id\nWHERE u.team_id = 345;\n\nselect * from contacts where team_id = 345 and crm_provider_id = '30880813535' order by name desc; # 5305871\n\nselect * from team_features where team_id = 345;\nSELECT * FROM activities WHERE uuid_to_bin('11701e2d-2f82-4dab-a616-1db4fad238df') = uuid; # 21115197\nSELECT * FROM participants WHERE activity_id = 20897406;\n\n\n\nSELECT * FROM activities WHERE uuid_to_bin('63ba55cd-1abc-447d-83da-0137000005b7') = uuid; # 20953912\nSELECT * FROM activities WHERE crm_configuration_id = 275 and provider = 'ringcentral' and title like '%1252629100%';\n\n\nSELECT * FROM activities WHERE id = 20946641;\nSELECT * FROM crm_profiles WHERE user_id = 10211;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120,97,10984, triger@lunio.ai\nSELECT * FROM opportunities WHERE crm_configuration_id = 97 and crm_provider_id = '006N1000006c5PpIAI';\nselect * from stages where crm_configuration_id = 97 and type = 'opportunity';\nselect * from opportunities where team_id = 120;\n\n\nselect * from crm_configurations crm join teams t on crm.id = t.crm_id\nwhere 1=1\nAND t.current_billing_plan IS NOT NULL\nAND crm.auto_sync_activity = 0\nand crm.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Exclaimer%'; # 270,205,10053,james.lewendon@exclaimer.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 270\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b54df794-2a9a-4957-8d80-09a600ead5f8') = uuid; # 21637956\nSELECT * FROM crm_profiles WHERE user_id = 11446;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cygnetise%'; # 372,300,12554, alex.chikly@cygnetise.com\nselect * from playbooks where team_id = 372;\nselect * from crm_fields where crm_configuration_id = 300 and object_type = 'event'; # 141340\nSELECT * FROM crm_field_values WHERE crm_field_id = 141340;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 372\nand sa.provider = 'salesforce';\n\nselect * from crm_profiles where crm_configuration_id = 300;\nSELECT * FROM crm_configurations WHERE team_id = 372;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Planday%'; # 291,242,11501,mfa@planday.com\nSELECT * FROM opportunities WHERE team_id = 291 and crm_provider_id = '006bG000005DO86QAG'; # 3207756\nselect * from crm_field_data where object_id = 3207756;\nSELECT * FROM crm_fields WHERE id = 111834;\n\nselect f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value\nFROM crm_fields f\nJOIN crm_field_data fd ON f.id = fd.crm_field_id\nWHERE f.crm_configuration_id = 242\nAND f.object_type = 'opportunity'\nAND fd.object_id IN (3207756)\nORDER BY fd.object_id, fd.updated_at;\n\nSELECT * FROM crm_configurations WHERE auto_connect = 1;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150,salesforce-admin@tourlane.com\nselect * from group_deal_risk_types drgt join groups g on drgt.group_id = g.id\nwhere g.team_id = 187;\n\nselect * from `groups` where team_id = 187;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 187\nand sa.provider = 'salesforce';\n\n# Destination - 98870 - Destination__c\n# Stage - 79014 - StageName\n# Land Arrangement - 98856 - Land_Arrangement__c\n# Flight - 98848 - Flight__c\n# Last activity date - 98812 - LastActivityDate\n# Last modified date - 98809 - LastModifiedDate\n# Last inbound mail timestamp - 99151 - Last_Inbound_Mail_Timestamp__c\n# next call - 98864 - Next_Call__c\n\nselect * from crm_fields where crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\nselect * from opportunities where team_id = 187 and name LIKE'%Muriel Sal%';\nselect * from opportunities where team_id = 187 and user_id = 9951 and is_closed = 0;\nselect * from activities where opportunity_id = 3538248;\n\nSELECT * FROM crm_profiles WHERE user_id = 8150;\n\nselect * from deal_risks where opportunity_id = 3538248;\n\nselect * from teams where crm_id IS NULL;\n\nSELECT opp.id AS opportunity_id,\n u.group_id AS group_id,\n MAX(\n CASE\n WHEN a.type IN (\"sms-inbound\", \"sms-outbound\") THEN a.created_at\n ELSE a.actual_end_time\n END) as last_date\nFROM opportunities opp\nleft join activities a on a.opportunity_id = opp.id\ninner join users u on opp.user_id = u.id\nwhere opp.user_id IN (9951)\n\nAND opp.is_closed = 0\nand a.status IN ('completed', 'received', 'delivered') OR a.status IS NULL\ngroup by opp.id;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cybsafe%'; # 343,301,12008,polly.morphew@cybsafe.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 301;\nSELECT * FROM contacts WHERE id = 6612363;\nSELECT * FROM accounts WHERE id = 4235676;\nSELECT * FROM opportunities WHERE crm_configuration_id = 301 and crm_provider_id = 32983784868;\nselect * from opportunity_stages where opportunity_id = 4503759;\n# SELECT * FROM opportunities WHERE id = 4569937;\n\nselect * from activities where crm_configuration_id = 301;\nSELECT * FROM activities WHERE uuid_to_bin('d3b2b28b-c3d0-4c2d-8ed0-eef42855278a') = uuid; # 26330370\nSELECT * FROM participants WHERE activity_id = 26330370;\n\nSELECT * FROM teams WHERE id = 375;\nselect * from playbooks where team_id = 375;\n\nselect * from stages where crm_configuration_id = 301 and type = 'opportunity';\n\nselect * from teams;\nselect * from contact_roles;\n\nSELECT * FROM opportunities WHERE team_id = 343 and user_id = 12871 and close_date >= '2024-11-01';\n\nselect * from users u join crm_profiles cp on cp.user_id = u.id where u.team_id = 343;\n\nSELECT * FROM crm_field_data WHERE object_id = 3771706;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 301 and object_type = 'opportunity'\nand crm_provider_id LIKE \"%traffic_light%\";\nSELECT * FROM crm_field_values WHERE crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531);\n\nSELECT fd.* FROM opportunities o\nJOIN crm_field_data fd ON o.id = fd.object_id\nWHERE o.team_id = 343\n# and o.user_id IS NOT NULL\nand fd.crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531)\nand fd.value != ''\norder by value desc\n# group by o.id\n;\n\nSELECT * FROM opportunities WHERE id = 3769843;\n\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150, salesforce-admin@tourlane.com\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding Circle%'; # 220,177,8603,aswini.mishra@fundingcircle.com\nSELECT * FROM activities WHERE uuid_to_bin('7a40e99b-3b37-4bb1-b983-325b81801c01') = uuid; # 23139839\n\n\nSELECT * FROM opportunities WHERE id = 3855992;\n\nSELECT * FROM users WHERE name LIKE '%Angus Pollard%'; # 8988\n\nSELECT * FROM teams WHERE name LIKE '%Story Terrace%'; # 379, 307, 12894\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307 and object_type != 'opportunity';\n\nselect * from contacts where team_id = 379 and name like '%bebro%'; # 5874411, crm: 77229348507\nSELECT * FROM crm_field_data WHERE object_id = 5874411;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379\nand sa.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%mentio%'; # 117, 94, 6371, nikhil.kumar@mention-me.com\nSELECT * FROM activities WHERE uuid_to_bin('82939311-1af0-4506-8546-21e8d1fdf2c1') = uuid;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tourlane%'; # 187, 209, 8150, salesforce-admin@tourlane.com\nSELECT * FROM opportunities WHERE team_id = 187 and crm_provider_id = '006Se000008xfvNIAQ'; # 3537793\nselect * from generic_ai_prompts where subject_id = 3537793;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120, 97, 10984, triger@lunio.ai\nSELECT * FROM crm_configurations WHERE id = 97;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 97;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 355;\nSELECT * FROM crm_fields WHERE id = 32682;\n\nselect cfd.value, o.* from opportunities o\njoin crm_field_data cfd on o.id = cfd.object_id and cfd.crm_field_id = 32682\nwhere team_id = 120\nand cfd.value != ''\n;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 120\nand sa.provider = 'salesforce';\n\nselect * from opportunities where team_id = 120 and crm_provider_id = '006N1000007X8MAIA0';\nSELECT * FROM crm_field_data WHERE object_id = 2313439;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 410;\nSELECT * FROM teams WHERE name LIKE '%Local Business Oxford%';\nselect * from scorecards where team_id = 410;\nselect * from scorecard_rules;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding%'; # 220, 177, 8603, aswini.mishra@fundingcircle.com\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\njoin users u on o.user_id = u.id\nwhere a.crm_configuration_id = 177 and a.type LIKE '%email-out%'\n# and a.actual_end_time > '2024-12-16 00:00:00'\n# and o.remotely_created_at > '2024-12-01 00:00:00'\n# and u.group_id = 1014\nand u.id = 9021\norder by a.id desc;\nSELECT * FROM opportunities WHERE id in (3981384,4017346);\nSELECT * FROM users WHERE team_id = 220 and id IN (8775, 11435);\n\nselect * from users where id = 9021;\nselect * from inboxes where user_id = 9021;\n\nselect * from inbox_emails where inbox_id = 1349 and email_date > '2024-12-18 00:00:00';\n\nselect * from email_messages where team_id = 220\nand orig_date > '2024-12-16 00:00:00' and orig_date < '2024-12-19 00:00:00'\nand subject LIKE '%Personal%'\n# and 'from' = 'credit@fundingcircle.com'\n;\n\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\nwhere a.user_id = 9021 and a.type LIKE '%email-out%'\nand a.actual_end_time > '2024-12-18 00:00:00'\nand o.user_id IS NOT NULL\nand o.remotely_created_at > '2024-12-01 00:00:00'\norder by a.id desc;\n\nSELECT * FROM opportunities WHERE team_id = 220 and name LIKE '%Right Car move Limited%' and id = 3966852;\nselect * from activities where crm_configuration_id = 177 and type LIKE '%email%' and opportunity_id = 3966852 order by id desc;\n\nselect * from team_settings where name IN ('useCloseDate');\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hurree%'; # 104, 81, 6175, jfarrell@hurree.co\nSELECT * FROM opportunities WHERE team_id = 104 and name = 'PropOp';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 104\nand sa.provider = 'hubspot';\n\nselect * from crm_configurations where last_synced_at > '2025-01-19 01:00:00'\nselect * from teams where crm_id IS NULL;\n\nselect t.name as 'team', u.name as 'owner', u.email, u.phone\nfrom teams t\njoin activity_providers ap on t.id = ap.team_id\njoin users u on t.owner_id = u.id\nwhere 1=1\n and t.status = 'active'\n and ap.is_enabled = 1\n# and u.status = 1\n and ap.provider = 'ms-teams';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nSELECT * FROM teams WHERE id = 442; # 14293\nselect * from users where team_id = 442;\nselect * from social_accounts sa where sa.sociable_id = 14293;\nselect * from invitations where team_id = 442;\n\n# ********************************************************************************************************\nSELECT * FROM users WHERE email LIKE '%nea.liikamaa@eletive.com%'; # 14022\nSELECT * FROM teams WHERE id = 429;\nselect * from opportunities where team_id = 429 and crm_provider_id IN (16157415775, 22246219645);\nselect * from activities where opportunity_id in (4340436,4353519);\n\nselect * from transcription where activity_id IN (25630961,25381771);\nselect * from generic_ai_prompts where subject_id IN (4353519);\n\nSELECT\n a.id as activity_id,\n a.opportunity_id,\n a.type as activity_type,\n a.language,\n CONCAT(a.title, a.description) AS mail_content,\n e.from AS mail_from,\n e.to AS mail_to,\n e.subject AS mail_subject,\n e.body AS mail_body,\n p.type as prompt_type,\n p.status as prompt_status,\n p.content AS prompt_content,\n a.actual_start_time as created_at\nFROM activities a\n LEFT JOIN ai_prompts p ON a.transcription_id = p.transcription_id AND p.deleted_at IS NULL\n LEFT JOIN email_messages e ON a.id = e.activity_id\nWHERE a.actual_start_time > '2024-01-01 00:00:00'\n AND a.opportunity_id IN (4353519)\n AND a.status IN ('completed', 'received', 'delivered')\n AND a.deleted_at IS NULL\n AND a.type NOT IN ('sms-inbound', 'sms-outbound')\nORDER BY a.opportunity_id ASC, a.id ASC;\n\nSELECT * FROM users WHERE name LIKE '%George Fierstone%'; # 14293\nSELECT * FROM teams WHERE id = 442;\nSELECT * FROM crm_configurations WHERE id = 344;\nselect * from team_features where team_id = 442;\nselect * from groups where team_id = 442;\nselect * from playbooks where team_id = 442;\nselect * from playbook_categories where playbook_id = 1729;\nselect * from crm_fields where crm_configuration_id = 344 and id = 172024;\nSELECT * FROM crm_field_values WHERE crm_field_id = 172024;\nselect * from crm_layouts where crm_configuration_id = 344;\nselect * from playbook_layouts where playbook_id = 1729;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 221, 9444\n\nselect s.*\n# , s.sent_at, u.name, a.*\nfrom activity_summary_logs s\ninner join activities a on a.id = s.activity_id\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 356\nand s.sent_at > date_sub(now(), interval 60 day)\norder by a.actual_end_time desc;\n\nselect * from activities a\n# inner join activity_summary_logs s on s.activity_id = a.id\nwhere a.crm_configuration_id = 356 and a.actual_end_time > date_sub(now(), interval 60 day)\n# and a.crm_provider_id is not null\n# and provider <> 'ringcentral'\nand status = 'completed'\norder by a.actual_end_time desc;\n\nselect * from teams order by id desc; # 17328, 32, 17830, integration-account@jiminny.com\nSELECT * FROM users;\nSELECT * FROM users where team_id = 260 and status = 1; # 201 - 150 active\nSELECT * FROM teams WHERE id = 260;\nselect * from team_settings where team_id = 260;\nselect * from crm_configurations where team_id = 260;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 356;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1184;\n\nselect * from accounts where crm_configuration_id = 221 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 221 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 221 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 221 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 221 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 221;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 221 order by id desc;\nselect * from stages where crm_configuration_id = 221 order by id desc;\n\nselect * from accounts where crm_configuration_id = 356 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 356 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 356 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 356 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 356 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 356;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 356 order by id desc;\nselect * from stages where crm_configuration_id = 356 order by id desc;\n\nselect * from playbooks where team_id = 260 order by id desc; # 4 (2 deleted)\nselect * from groups where team_id = 260 order by id desc; # 27 groups, (2 deleted)\nselect * from playbook_layouts where playbook_id IN (1410,1409,1276,1254); # 4\nselect ce.* from calendars c\njoin users u on c.user_id = u.id\njoin calendar_events ce on c.id = ce.calendar_id\nwhere u.team_id = 260\nand (ce.start_time > '2025-02-21 00:00:00')\n;\n# calendar events 1207\n#\n\nselect * from opportunities where team_id = 260;\nSELECT * FROM crm_field_data WHERE object_id = 4696496;\n\nselect * from activities where crm_configuration_id = 356 and crm_provider_id IS NOT NULL;\nselect * from activities where crm_configuration_id IN (221) and provider NOT IN ('ms-teams', 'uploader', 'zoom-bot')\n# and type = 'conference' and status = 'scheduled' and activities.is_internal = 0\nand created_at > '2024-03-01 00:00:00'\norder by id desc; # 880 000, ringcentral, avaya\nSELECT * FROM participants WHERE activity_id = 26371744;\n\n# all activities 942 000 +\n# conference 7385 - scheduled 984 - external 343\n\nselect * from activities where id = 26321812;\nselect * from participants where activity_id = 26321812;\nselect * from participants where activity_id in (26414510,26414514,26414516,26414604,26414653,26414655);\nselect * from leads where id in (720428,689175,731546,645866,621037);\n\nselect * from users where id = 13841;\nselect * from opportunities where user_id = 9541;\nselect * from stages where id = 15900;\n\nselect * from accounts where\n# id IN (4160055,5053725,4965303,4896434)\nid in (4584518,3249934,3218025,3891133,3399450,4172999,4485161,3101785,4587203,3070816,2870343,2870341,3563940,4550846,3424464,3249963,2870342)\n;\n\nselect * from activities where id = 26654935;\nSELECT * FROM opportunities WHERE id = 4803458;\n\nSELECT * FROM opportunities where team_id = 260 and user_id = 13841 AND stage_id = 15900;\nSELECT id, uuid, provider, type, lead_id, account_id, contact_id, opportunity_id, stage_id, status, recording_state, title, actual_start_time, actual_end_time\nFROM activities WHERE user_id = 13841 AND opportunity_id IN (4729783, 4731717, 4731726, 4732064, 4732849, 4803458, 4813213);\n\nSELECT DISTINCT\n o.id, o.stage_id, s.name, a.title,\n a.*\nFROM activities a\n# INNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nINNER JOIN groups g ON u.group_id = g.id\nINNER JOIN opportunities o ON a.opportunity_id = o.id\nINNER JOIN stages s ON o.stage_id = s.id\nWHERE\n a.crm_configuration_id = 356\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 13841\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n AND team.uuid = uuid_to_bin('a607fba7-452e-4683-b2af-00d6cb52c93c')\n AND g.uuid = uuid_to_bin('b5d69e40-24a0-4c16-810b-5fa462299f94')\n\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n )\n )\n AND (\n# s.id = 15900\n s.uuid = uuid_to_bin('04ca1c26-c666-4268-a129-419c0acffd73')\n OR s.uuid IS NULL -- Include records without opportunity stage\n )\n\nORDER BY a.actual_end_time DESC;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%'; # 190, 162, 8474, willsc@leadforensics.com\nSELECT * FROM users WHERE team_id = 190;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 190\nand sa.provider = 'hubspot';\n\nselect * from role_user where user_id = 8474;\n\nselect * from crm_configurations where provider = 'bullhorn';\n\nSELECT * FROM opportunities WHERE uuid_to_bin('94578249-65ec-4205-90f2-7d1a7d5ab64a') = uuid;\nSELECT * FROM users WHERE uuid_to_bin('26dbadeb-926f-4150-b11b-771b9d4c2f9a') = uuid;\n\nSELECT * FROM opportunities WHERE id = 4732493;\nselect * from activities where opportunity_id = 4732493;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 443; # 358, 14315, andrea.romano@correrenaturale.com\nSELECT * FROM opportunities WHERE team_id = 443;\n\nSELECT a.id, a.type, a.user_id, a.status, a.deleted_at, u.name, u.email, u.team_id as activity_team_id, u.status, u.deleted_at, t.name, t.status, s.team_id as stage_team_id\nFROM activities AS a\nJOIN stages AS s ON a.stage_id = s.id\nJOIN users AS u ON u.id = a.user_id\nJOIN teams AS t ON t.id = s.team_id\nWHERE u.team_id <> s.team_id and t.id > 135;\n\n\nSELECT\n crm_configuration_id,\n crm_provider_id,\n COUNT(*) as duplicate_count,\n GROUP_CONCAT(id) as stage_ids,\n GROUP_CONCAT(name) as stage_names\nFROM stages\nGROUP BY crm_configuration_id, crm_provider_id\nHAVING COUNT(*) > 1\nORDER BY duplicate_count DESC;\n\nselect * from stages where id IN (14898,14907);\n\nselect * from business_processes;\n\nSELECT *\nFROM crm_configurations\nWHERE team_id IN (\n SELECT team_id\n FROM crm_configurations\n GROUP BY team_id\n HAVING COUNT(*) > 1\n)\nORDER BY team_id;\n\nSELECT *\nFROM teams\nWHERE crm_id IN (\n SELECT crm_id\n FROM teams\n GROUP BY crm_id\n HAVING COUNT(*) > 1\n)\nORDER BY crm_id;\n\n# ***************************************************************************\nselect * from crm_configurations where provider = 'integration-app';\nSELECT * FROM teams WHERE id = 443; # Correre Naturale 358 14315 andrea.romano@correrenaturale.com\nselect * from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect id, uuid, actual_end_time, crm_provider_id, is_internal, playbook_category_id, type, user_id, lead_id, contact_id, account_id, opportunity_id, status, title from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect * from team_features where team_id = 358;\nselect * from activity_summary_logs;\n\nselect * from teams where id = 406;\n\n# ************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sportfive%'; # 267, 202, 14637, srv.salesforce@sportfive.com\nselect * from activities where crm_configuration_id = 202 order by actual_end_time desc;\n\nSELECT * FROM users where id = 14637;\nSELECT * FROM teams where id = 267;\nSELECT * FROM groups where id = 1118;\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 202\n AND status IN ('completed', 'failed')\n AND recording_state != 'stopped'\n AND type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n AND (is_private = 0 OR user_id = 14637)\n AND (\n (\n actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n ) OR (\n actual_start_time IS NULL\n AND type IN ('sms-outbound', 'sms-inbound')\n AND created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND NOT EXISTS (\n SELECT 1\n FROM tracks\n WHERE\n tracks.activity_id = activities.id\n AND tracks.type IN ('audio', 'video')\n )\nORDER BY actual_end_time DESC;\n\nSELECT DISTINCT\n a.*\nFROM activities a\nINNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nWHERE\n a.crm_configuration_id = 202\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 14637\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND a.user_id = 14637\n )\n )\n\nORDER BY a.actual_end_time DESC\n;\n\nSELECT DISTINCT a.*\nFROM activities a\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams t ON u.team_id = t.id\n# INNER JOIN tracks tr ON a.id = tr.activity_id\n# INNER JOIN groups g ON u.group_id = g.id\nWHERE 1=1\n AND t.id = 267\n# AND t.uuid = uuid_to_bin('aed4927b-f1ea-499e-94c3-83762fd233e8')\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND tr.type NOT IN ('audio', 'video')\n AND (\n a.is_private = 0\n OR a.user_id = 14637\n )\n AND (\n (a.actual_start_time BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59')\n OR (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59'\n )\n )\n# and NOT EXISTS (\n# SELECT 1\n# FROM tracks t\n# WHERE t.activity_id = a.id\n# AND t.type IN ('audio', 'video')\n# )\n\nORDER BY a.actual_end_time DESC;\n\nSELECT * FROM tracks WHERE activity_id = 26485995;\n\nselect a.is_private, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 202\n# and a.is_internal = 0\nand (a.actual_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type IN (\"softphone\",\"softphone-inbound\",\"conference\",\"sms-inbound\")\nand a.status IN ('completed', 'failed')\n# and a.external_id is not null\norder by a.actual_end_time desc;\n\nselect * from activities a where a.crm_configuration_id = 202\nand a.actual_start_time between '2025-03-20 00:00:00' and '2025-03-21 00:00:00'\n# AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM teams WHERE name LIKE '%Tourlane%';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_field_data WHERE crm_field_id = 98809;\n\nselect * from users where status = 1 AND timezone = 'MDT';\n\nselect * from opportunities where id = 3769814;\nselect * from deal_risks where opportunity_id = 3769814;\n\nselect cp.* from crm_profiles cp\njoin users u on cp.user_id = u.id\njoin crm_configurations crm on cp.crm_configuration_id = crm.id\nwhere crm.provider = 'hubspot' AND u.status = 1 AND log_notes != 'none';\n\nselect * from crm_fields where id = 154575;\n\nselect * from team_features where feature = 'SUPPORTS_SYNC_MISSING_CALL_DISPOSITIONS';\nSELECT * FROM teams WHERE id = 176; # crm 148\nselect * from activities where crm_configuration_id = 148 and provider = 'hubspot' order by id desc;\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nselect * from crm_fields cf\njoin crm_configurations crm on crm.id = cf.crm_configuration_id\nwhere crm.provider = 'hubspot' and cf.object_type IN ('account', 'contact');\n\n# *********************************************************************************************\nSELECT * FROM users WHERE id IN (15415, 15418);\nSELECT * FROM groups WHERE id IN (1805,1806);\nSELECT * FROM playbooks WHERE id = 1860;\nSELECT * FROM playbook_categories WHERE id = 38634;\nSELECT * FROM crm_fields WHERE id = 189962;\n\nSELECT * FROM teams WHERE name = 'Pulsar Group'; # 472, 380, 15138 raza.gilani@vuelio.com\n\nSELECT * FROM crm_profiles WHERE user_id = 15415;\nSELECT * FROM social_accounts WHERE sociable_id = 15415 and provider = 'salesforce';\n\nselect * from sidekick_settings where team_id = 472;\n\nSELECT * FROM activities WHERE uuid_to_bin('452c58c7-b87c-4fdd-953e-d7af185e9588') = uuid; # 28617536, user: 15418\nSELECT * FROM activities WHERE uuid_to_bin('399114ee-d3a8-458c-bff5-5f654658db0a') = uuid; # 28344407, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('f0aa567f-0ab1-4bbb-96aa-37dcf184676b') = uuid; # 28580288, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('50c086b1-2770-4bca-b5ae-6bac22ec426b') = uuid; # 28566069, user: 15415\n\n# *********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%TeamTailor%'; # 109, 218, 13969, salesforce-integrations@teamtailor.com\nselect * from crm_configurations where id = 218;\nSELECT * FROM activities WHERE uuid_to_bin('e39b5857-7fdb-4f5a-951a-8d3ca69bb1b0') = uuid; # 28338765\nSELECT * FROM users WHERE id IN (13232, 13230);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n0057R00000EPL5HQAX Inez Ekblad\n\n1091cb81-5ea1-4951-a0ed-f00b568f0140 Triman Kaur\n\nSELECT * FROM crm_profiles WHERE user_id IN (13232, 13230);\n\n############################################################################################\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939 00UVg00000FLvnSMAT\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id IN (94491,94493,94498);\nSELECT * FROM users WHERE id = 13658;\nSELECT * FROM teams WHERE id = 109;\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Strengthscope%'; # 481, 390, 15420, katy.holden@strengthscope.comk\nSELECT * FROM stages WHERE crm_configuration_id = 390;\nselect * from business_processes where team_id = 481 and crm_configuration_id = 390;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 481\nand sa.provider = 'salesforce';\n\n\nSELECT * FROM users WHERE id = 15780; # team 462\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 462\nand sa.provider = 'hubspot';\n\n\nselect * from teams where id = 495;\nSELECT * FROM users WHERE id = 15794;\nselect * from social_accounts where sociable_id = 15794;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Flight%'; # 427, 333, 13752\nSELECT * FROM accounts WHERE team_id = 427 and crm_provider_id = '668731000183444517';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Group GTI%'; # 495, 407, 15794\nSELECT * FROM activities WHERE crm_configuration_id = 407\nand status = 'completed' and type = 'conference'\norder by id desc;\n\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from permission_role;\n\nselect * from activities where crm_configuration_id = 407 and status = 'completed' order by id desc;\nSELECT * FROM activities WHERE id = 29512773;\nSELECT * FROM activities WHERE id IN (29042721,28991325,29002874);\n\nSELECT al.* from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 407\n# and a.id IN (29042721,28991325,29002874);\n\nSELECT * FROM users WHERE id = 15794;\nSELECT * FROM users WHERE team_id = 495;\nSELECT * FROM social_accounts WHERE sociable_id = 15794;\nSELECT * FROM opportunities WHERE team_id = 495 and name like '%OC:%';\nSELECT * FROM contacts WHERE team_id = 495;\nSELECT * FROM leads WHERE team_id = 495;\nSELECT * FROM accounts WHERE team_id = 495;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 407;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 407;\nSELECT * FROM crm_configurations WHERE id = 407;\nSELECT * FROM opportunities WHERE team_id = 495 and close_date BETWEEN '2025-06-01' AND '2025-07-01'\nand user_id IS NOT NULL and is_closed = 1 and is_won = 1;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hamilton Court FX LLP%'; # 249, 187, 10103\nSELECT * FROM activities WHERE uuid_to_bin('4659c2bb-9a49-484e-9327-a3d66f1e028c') = uuid; # 28951064\nSELECT * FROM crm_fields WHERE crm_configuration_id = 187 and object_type IN ('tasks', 'event');\n\n# *********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Checkstep%'; # 325, 256, 11753\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 325\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid; # 28611085\nSELECT * FROM activities WHERE uuid_to_bin('980f0336-840b-4185-a5a9-30cf8b0749a8') = uuid; # 28719733\nSELECT * FROM activity_summary_logs where activity_id = 28719733;\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 356, 9444\nSELECT * FROM activity_summary_logs where sent_at BETWEEN '2025-06-09 11:38:00' AND '2025-06-09 11:40:00';\nSELECT * FROM leads WHERE crm_configuration_id = 356 and crm_provider_id = '230045001502770504'; # 823630\nselect * from activities where crm_configuration_id = 356 and lead_id = 841732;\n\nSELECT * from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 356;\n\nselect * from activities where crm_configuration_id = 356\nand actual_end_time between '2025-06-09 11:00:00' and '2025-06-09 12:00:00'\norder by id desc;\n\nselect * from accounts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from leads where crm_configuration_id = 356 and crm_provider_id = '230045001514275654' order by id desc;\nselect * from contacts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from opportunities where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\n\nselect * from team_features where team_id = 260;\nselect * from features where id IN (1,2,4,6,18,19,20,9,10,3,23,24,25,26,27);\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid;\n\nselect * from crm_fields;\nselect * from crm_layout_entities;\n\nSELECT * FROM teams WHERE name LIKE '%Optable%';\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Teamtailor%'; # 109, 218, 13969\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id in (94491,94493,94498);\n\nselect * from teams where crm_id IS NULL;\n\nSELECT * FROM activities WHERE uuid_to_bin('71aa8a0c-9652-4ff6-bee7-d98ae60abef6') = uuid;\n\n# *************************************************************************************************\nselect * from team_domains where team_id = 399;\nSELECT * FROM teams WHERE name LIKE '%Rydoo%'; # 399, 318, 13207\n\nselect * from calendar_events where id = 5163781;\nSELECT * FROM activities WHERE uuid_to_bin('be2cbc52-7fda-46a0-9ae0-25d9553eafc0') = uuid; # 29443896\nSELECT * FROM participants WHERE activity_id = 29443896;\nselect * from contacts where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\nselect * from leads where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\n\nselect * from activities where user_id = 14937 order by created_at ;\n\nselect * from users where id = 14937;\n\nselect * from contacts where crm_configuration_id = 318 and email LIKE '%@strawberry.se';\nselect * from opportunities where crm_configuration_id = 318 and crm_provider_id = '006Sf00000D1WOAIA3';\n\nselect * from activities a join participants p on a.id = p.activity_id\nwhere crm_configuration_id = 318 and a.updated_at > '2025-06-23T08:18:43Z';\n\n# *************************************************************************************************\nSELECT * FROM opportunities WHERE team_id = 379 and crm_provider_id = '39334518886';\nSELECT * FROM opportunities WHERE team_id = 379 order by id desc;\nSELECT * FROM teams WHERE id = 379;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379 and sociable_id = 13852\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations WHERE id = 307;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 307;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1027;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307\n and id IN (144750,144855,145158,155227);\n\nSELECT * FROM activities;\n\n\nselect * from activities\nwhere created_at > '2025-07-01 00:00:00'\n# and created_at < '2025-08-01 00:00:00'\nand type not in ('email-outbound', 'email-inbound')\nand account_id is null\nand contact_id is null\nand lead_id is null\nand opportunity_id is not null\n;\nSELECT * FROM activities WHERE id IN (25344155, 25344296, 25501909, 28692187);\nSELECT * FROM crm_configurations WHERE id in (335,301,200);\n\nselect * from crm_fields where crm_configuration_id = 230 and crm_provider_id = 'Age2__c';\n\nSELECT * FROM teams WHERE name LIKE '%Resights%';\nselect * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nselect * from teams where id IN (442);\n\nselect * from activities\nwhere crm_configuration_id = 177\nand provider = 'amazon-connect'\n order by id desc;\n# and source <> 'gong';\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nSELECT * FROM activities WHERE uuid_to_bin('cec1993b-a7e5-4164-b74d-d680ea51d2f2') = uuid;\n\n\nselect * from crm_configurations where store_transcript = 1;\nSELECT * FROM teams WHERE id IN (80);\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sedna%'; # 277, 213, 12594\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 277\nand sa.provider = 'salesforce';\n\nselect * from activities where crm_configuration_id = 213 and account_id = 2511502;\n\nselect * from crm_configurations where id = 213;\n\nSELECT * FROM activities WHERE uuid_to_bin('35aa790a-8569-4544-8268-66f9a4a26804') = uuid; # 33981604\nSELECT * FROM participants WHERE activity_id = 33981604;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 337 and object_type = 'task';\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 431\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b5476c7d-19a8-491b-869d-676ea1e857b6') = uuid; # 33997223\nselect * from activity_summary_logs where activity_id = 33997223;\nselect * from activity_notes where activity_id = 33997223;\n\n# ***********************************\nSELECT * FROM teams WHERE name LIKE '%Abode%';\n\n\nselect * from features;\nselect * from teams t\nwhere t.status = 'active'\nand id NOT IN (select team_id from team_features where feature_id = 9)\n;\n\n\nselect * from playbook_layouts where playbook_id = 1725;\nSELECT * FROM activities WHERE uuid_to_bin('65cc283c-4849-49e6-927f-4c281c8fea19') = uuid; # 34297473\nselect * from teams where id = 318;\nselect * from crm_configurations where team_id = 318;\nselect * from playbooks where team_id = 318;\nSELECT * FROM crm_layouts where crm_configuration_id = 381;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1259;\nSELECT * FROM crm_fields WHERE id IN (192938,192936,192939);\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1266;\nSELECT * FROM crm_fields WHERE id IN (192980,192991,192997,192998,193064,193067);\n\nSELECT * FROM activities WHERE uuid_to_bin('a902289b-285c-48eb-9cc2-6ad6c5d938f5') = uuid; # 34297533\n\n\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nSELECT * FROM crm_fields WHERE id IN (131668,131669,131670,131671,131676,131797);\n\nSELECT * FROM teams WHERE name LIKE '%Peripass%'; # 351, 281, 12124\nselect * from crm_layouts where crm_configuration_id = 281;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nselect * from crm_fields where crm_configuration_id = 281 and id in (131668,131669,131670,131671,131676,131797);\nselect * from opportunities where crm_configuration_id = 281;\n\nSELECT * FROM activities WHERE id IN (34211315, 34130075);\nSELECT * FROM crm_field_data WHERE object_id IN (34211315, 34130075);\n\nselect cf.crm_configuration_id, cle.crm_layout_id, cle.id, cf.id from crm_field_data cfd\njoin crm_layout_entities cle on cle.id = cfd.crm_layout_entity_id\njoin crm_fields cf on cle.crm_field_id = cf.id\nwhere cf.deleted_at IS NOT NULL\nGROUP BY cle.id, cf.id;\n\nselect * from crm_layouts where id IN (355);\nselect u.email, t.crm_id, t.* from teams t\njoin users u on u.id = t.owner_id\nwhere crm_id IN (97);\n\nSELECT * FROM crm_fields WHERE id = 96492;\n\nselect * from permissions;\nselect * from permission_role where permission_id = 247;\nselect * from roles;\n\nselect * from migrations;\n# *****************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('291e3c21-11cc-4728-aee7-6e4bedf86d72') = uuid; # 34262174\nSELECT * FROM crm_configurations WHERE id = 301;\nSELECT * FROM teams WHERE id = 343;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from participants where activity_id = 34262174;\n\nselect * from contacts where crm_configuration_id = 301 and id = 6976326;\nselect * from accounts where crm_configuration_id = 301 and id IN (4647626, 4815829); # 30761335403\n\nselect * from activity_summary_logs where activity_id = 34262174;\n\nselect * from users where status = 1 AND timezone = 'EST';\n\n# ****************************************************************************\nSELECT * FROM users WHERE id = 13869;\nSELECT * FROM crm_configurations WHERE id = 320;\nSELECT * FROM teams WHERE id = 401;\n\nSELECT * FROM activities WHERE uuid_to_bin('2228c16f-10be-48d5-90d4-67385219dc01') = uuid; # 29670601\n\nSELECT * FROM accounts WHERE id = 7761483;\nSELECT * FROM opportunities WHERE id = 6051814;\n\nSELECT * FROM teams WHERE name LIKE '%Seedlegals%';\n\n;select * from opportunities where updated_at > '2025-10-11' AND crm_provider_id = '34713761166';\n\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 177;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 577;\nSELECT * FROM crm_fields WHERE id IN (68458,68459,68480,68497,68524,68530,68554,68618,68662,68781,68810,68898,68981,69049,97467);\n\nSELECT t.id, crm.id, t.name, crm.sync_objects, crm.provider, crm.last_synced_at FROM crm_configurations crm join teams t on t.crm_id = crm.id\nwhere t.status = 'active' AND crm.provider = 'hubspot' AND crm.last_synced_at < '2025-10-22 00:00:00';\n\nSELECT * FROM activities WHERE uuid_to_bin('fa09449f-cba9-496a-b8f3-865cd3c72351') = uuid;\nSELECT * FROM crm_configurations where id = 184;\nSELECT * FROM teams WHERE id = 246;\nSELECT * FROM social_accounts WHERE sociable_id = 9259 and provider = 'hubspot';\n\nSELECT * FROM users WHERE email LIKE '%rhian.old@bud.co.uk%'; # 17700\nSELECT * FROM teams WHERE id = 551;\n\nSELECT * FROM crm_configurations WHERE id = 471;\nSELECT * FROM activities WHERE crm_configuration_id = 471 and crm_provider_id IS NOT NULL;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 471;\nSELECT * FROM crm_fields WHERE id = 307260;\nSELECT * FROM crm_field_values WHERE crm_field_id = 307260;\n\nselect * from crm_layouts where crm_configuration_id = 471;\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1547;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1548;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 551 and sa.provider = 'hubspot';\n\nSELECT * FROM teams WHERE name LIKE '%$PCS%';\n\n# ********************************************************************************************************\nselect * from crm_configurations crm\njoin teams t on t.crm_id = crm.id\nwhere t.status = 'active'\nand crm.provider = 'hubspot';\n\n# $slug = 'HUBSPOT_WEBHOOK_SYNC';\n# $team = Jiminny\\Models\\Team::find(2);\n# $feature = Feature::query()->where('slug', $slug)->first();\n# TeamFeature::query()->create(['feature_id' => $feature->getId(),'team_id' => $team->getId()]);\n\n# hubspot_webhook_metrics\n\nselect * from crm_configurations where id = 331; # 416\nSELECT * FROM teams WHERE id = 416;\nSELECT * FROM opportunities WHERE team_id = 190;\n\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%';\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 190 and sa.provider = 'hubspot';\n\n\n\nSELECT * FROM teams WHERE name LIKE '%Rapaport%'; # 431, 337\nSELECT * FROM teams where id = 431;\nSELECT * FROM crm_configurations where team_id = 431;\nSELECT * FROM activity_providers where team_id = 431;\nSELECT * FROM activities where crm_configuration_id = 337 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 431 and sa.provider = 'salesforce';\n\nSELECT * FROM teams WHERE name LIKE '%BiP%'; # 401, 320\nSELECT * FROM teams where id = 401;\nSELECT * FROM crm_configurations where team_id = 401;\nSELECT * FROM activity_providers where team_id = 401;\nSELECT * FROM activities where crm_configuration_id = 320 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 401 and sa.provider = 'salesforce';\n\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 307; # 379 - Story Terrace Inc , portalId: 3921157\nSELECT * FROM contacts WHERE team_id = 379 and updated_at > '2026-01-31 11:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-01 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 379 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 485; # 563 - LATUS Group (ad94d501-5d09-44fd-878f-ca3a9f8865c3) , portalId: 3904501\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 338; # 432 - Formalize , portalId: 9214205\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 432 and sa.provider = 'hubspot';\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 436; # 519 - Moxso , portalId: 25531989\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 96; # 119 - Nourish Care , portalId: 26617984\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 331; # 416 - The National College , portalId: 7213852\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 308; # 380 - Foodles , portalId: 7723616\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 379; # 471 - imat-uve , portalId: 9177354\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 465; # 545 - Spotler , portalId: 144759271\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 455; # 537 - indevis , portalId: 25666868\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 200; # 265 - Jobadder , portalId: 6426676\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 335; # 429 - Eletive , portalId: 6110563\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 363; # 456 - Global Group , portalId: 8901981\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 297; # 369 - Unbiased , portalId: 9229005\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 353; # 449 - Fuuse , portalId: 25781745\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 487; # 566 - Nimbus , portalId: 39982590\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 487;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1630;\nselect * from crm_fields where crm_configuration_id = 487 and\n(uuid_to_bin('4c6b2971-64d4-45b8-b377-427be758b5a5') = uuid or uuid_to_bin('59e368d8-65a0-4b77-b611-db37c99fbe68') = uuid);\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 420; # 506 - voiio , portalId: 145629154\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 479; # 558 - Momice , portalId: 535962\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 59; # 80 - Storyclash GmbH , portalId: 4268479\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 175; # 203 - Team iAM , portalId: 5534732\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 368; # 460 - OneTouch Health , portalId: 5534732183355\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\n\n\nselect * from users where id = 29643;\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM teams WHERE name LIKE '%Buynomics%'; # 462, 482, 14910\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\n# and description like '%The call focused on understanding Welch%'\norder by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 462 and sa.provider = 'salesforce';\n\nselect * from contacts where crm_configuration_id = 482 and name = 'Cyndall Hill'; # 15504749\nselect * from contacts where id = 10891096; # 482\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\nand contact_id = 15504749\norder by id desc;\n\nselect * from activities where id = 36793003; # 96cc7bc1-8622-4d27-92f4-baf664fc1a56, 00UOf00000PDdOXMA1\nselect * from transcription where id = 7646782;\nselect * from ai_prompts where transcription_id = 7646782;\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7a8471a3-847e-4822-802b-ddf426bbc252') = uuid; # 37370018\nSELECT * FROM activity_summary_logs WHERE activity_id = 37370018;\nSELECT * FROM teams WHERE id = 555;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 555 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7c17b8aa-09df-4f85-a0f7-51f47afd712d') = uuid; # 37395250\nSELECT * FROM activities WHERE uuid_to_bin('14d60388-260d-494b-aa0d-63fdb1c78026') = uuid; # 37395250\n\nSELECT a.* FROM activities a JOIN crm_configurations c on c.id = a.crm_configuration_id\nwhere a.type IN ('softphone', 'softphone-outbound') and c.provider = 'hubspot'\nand a.provider NOT IN ('hubspot')\n# and a.provider IN ('salesloft')\n# and c.id NOT IN (70)\n# and a.duration > 30\n# and actual_start_time > '2026-02-05 00:00:00'\norder by a.id desc;\n\nSELECT * FROM activities WHERE id = 37549787;\nSELECT * FROM crm_profiles WHERE user_id = 17613;\n\nSELECT * FROM crm_configurations WHERE id = 70;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 93 and sa.provider = 'hubspot';\n\nSELECT asf.activity_search_id, asf.id, asf.value\nFROM activity_search_filters asf\nWHERE asf.filter = 'group_id'\nAND asf.value IN (\n SELECT CONCAT(\n HEX(SUBSTR(uuid, 5, 4)), '-',\n HEX(SUBSTR(uuid, 3, 2)), '-',\n HEX(SUBSTR(uuid, 1, 2)), '-',\n HEX(SUBSTR(uuid, 9, 2)), '-',\n HEX(SUBSTR(uuid, 11))\n )\n FROM groups\n WHERE deleted_at IS NOT NULL\n);\n\nSELECT * FROM crm_configurations WHERE id = 373; # KPSBremen.de 465 # - no social account\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 465 and sa.provider = 'hubspot';\n\nselect * from crm_configurations where id = 494;\n\nSELECT * FROM teams WHERE name LIKE '%splose%'; # 572, 495, 18708\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 572 and sa.provider = 'pipedrive';\n\nselect * from opportunities where team_id = 572\n# and name like '%Onebright%'\n# and is_closed = 1 and is_won = 0\n order by id desc;\n\n\nselect * from users where deleted_at is null and status = 2;\n\nselect * from contacts where id = 17900517;\nselect * from accounts where id = 10109838;\nselect * from opportunities where id = 6955880;\n\nselect * from opportunity_contacts where opportunity_id = 6955880;\nselect * from opportunity_contacts where contact_id = 17900517;\n\nselect * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id\nwhere crm.provider != 'salesforce';\n\nSELECT * FROM activities WHERE uuid_to_bin('adcb8331-5988-4353-834e-383a355abba2') = uuid; # 38056424, crm 104659682404\nselect * from teams where id = 456;\nSELECT * FROM crm_configurations WHERE id = 363;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 456 and sa.provider = 'hubspot';\n\nselect * from crm_layouts where crm_configuration_id = 363;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id IN (1203, 1204, 1635);\nSELECT * FROM crm_fields WHERE id IN (181536, 181538, 213455);\n\nSELECT * FROM teams WHERE name LIKE '%Electric%'; # 342, 272, 12767\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and name like 'NORTHUMBRIA POL%'; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 order by remotely_created_at asc; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and updated_at > '2026-01-01 00:00:00';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 272 and object_type = 'opportunity';\nSELECT * FROM crm_field_values WHERE crm_field_id = 127164;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\n\nSELECT * FROM teams WHERE id = 472;\nSELECT * FROM crm_configurations WHERE id = 380;\nselect * from activities where id = 38285673; # 38285673\nSELECT * FROM users WHERE id = 16942;\nSELECT * FROM groups WHERE id = 1964;\nSELECT * FROM playbooks WHERE id = 2033;\n\nselect * from teams where created_at > '2026-03-09';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 499; # 1065\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1678;\n\nSELECT * FROM teams WHERE id = 575;\nselect * from opportunities where team_id = 575;\n\nSELECT * FROM activities WHERE uuid_to_bin('96b1261f-2357-49f9-ab38-23ce12008ea0') = uuid;\n\nselect * from contacts c\nwhere c.crm_configuration_id = 370 order by c.updated_at desc;\n\nSELECT * FROM participants where activity_id = 38833541;\nSELECT * FROM participants where activity_id = 39216301;\nSELECT * FROM activity_summary_logs where activity_id = 39216301;\nSELECT * FROM activities WHERE uuid_to_bin('c7d99fbe-1fb1-41f2-8f4d-52e2bf70e1e9') = uuid; # 38833541, crm 478116564181\nSELECT * FROM activities WHERE uuid_to_bin('2e6ff4d3-9faa-447a-a8c1-9acde4d885ae') = uuid; # 39216301, crm 480171536586\nselect * from crm_profiles where crm_configuration_id = 319 and crm_provider_id = 525785080;\nselect * from opportunities where crm_configuration_id = 319 and crm_provider_id = 410150124747;\nselect * from accounts where crm_configuration_id = 319 and crm_provider_id = 47150650569;\nselect * from contacts where crm_configuration_id = 319 and crm_provider_id IN ('665587441856', '742723347700');\n# owner 13236 525785080\n# contact 1 16779180 665587441856 - activity - Alex Howes alex@supportroom.com created 2026-01-26\n# contact 2 19247563 742723347700 - ash@supportroom.com 2026-03-24\n# company 4176133 47150650569\n# deal 7100953 410150124747\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 400 and sa.provider = 'hubspot';\n\nselect * from features;\nselect * from team_features where feature_id = 40;\n\nselect * from teams where id = 556; # owner: 18101, crm: 477\nselect * from crm_configurations where id = 477;\nSELECT * FROM users WHERE id = 18101;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 556 and sa.provider = 'integration-app';\n\nselect * from opportunities where id = 7594349;\nselect * from opportunity_stages where opportunity_id = 7594349 order by created_at desc;\nselect * from business_processes where id = 6024;\nselect * from business_process_stages where stage_id = 16352;\nselect * from business_process_stages where business_process_id = 6024;\nselect * from stages where team_id = 459;\nselect * from teams where id = 459;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 459 and sa.provider = 'hubspot';\n\nSELECT os.stage_id, s.crm_provider_id, s.name, COUNT(*) as cnt\nFROM opportunity_stages os\nJOIN stages s ON s.id = os.stage_id\nWHERE os.opportunity_id = 7594349\nGROUP BY os.stage_id, s.crm_provider_id, s.name\nORDER BY cnt DESC;\n\nSELECT s.id, s.crm_provider_id, s.name, s.team_id, s.crm_configuration_id\nFROM stages s\nJOIN business_process_stages bps ON bps.stage_id = s.id\nWHERE bps.business_process_id = 6024\nAND s.crm_provider_id = 'contractsent';\n\nselect * from stages where id IN (16352,20612,18281,7344,16378,16309,5036,15223,14535,6293,12098,11607)\n\nSELECT * FROM teams WHERE name LIKE '%Pulsar Group%'; # 472, 380, 15138, raza.gilani@vuelio.com\nselect * from playbooks where team_id = 472; # event 226147\nSELECT * FROM playbook_categories WHERE playbook_id = 2288;\nSELECT * FROM crm_fields WHERE id = 226147;\nSELECT * FROM crm_field_values WHERE crm_field_id = 226147;\n\nSELECT * FROM crm_configurations WHERE id = 380;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 472 and sa.provider = 'salesforce';","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-1329581072730640681
|
2146738311620114029
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
namespace Jiminny\Console\Commands\Crm;
use Jiminny\Console\Commands\Command;
use Jiminny\Jobs\Crm\SyncObjects as SyncObjectsJob;
use Jiminny\Models\Team;
class SyncObjects extends Command
{
private const int STAGGER_DELAY_SECONDS = 2;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'crm:sync-objects {team?} {--sync}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sync remote CRM objects.';
/**
* Execute the console command.
*/
public function handle(): void
{
$teamId = $this->argument('team');
$teams = [];
if ($teamId) {
$teams[] = Team::idOrUuId($teamId);
} else {
$teams = Team::where('status', Team::STATUS_ACTIVE)->get();
}
$dispatchIndex = 0;
foreach ($teams as $team) {
$config = $team->getCrmConfiguration();
if ($config->getAttribute('sync_objects') === false) {
continue;
}
if ($team->getAttribute('owner_id') === null) {
$this->error(sprintf('Team %s (%s) is not yet assigned an owner. skipping...', $team->getName(), $team->getUuid()));
continue;
}
if ($config->getAttribute('over_quota_at') || $config->getAttribute('api_disabled_at')) {
$this->error(sprintf('Team %s (%s) API unavailable... skipping...', $team->getName(), $team->getUuid()));
continue;
}
$delay = $dispatchIndex * self::STAGGER_DELAY_SECONDS;
$lastSyncedAt = $config->getAttribute('last_synced_at');
$this->info(
sprintf(
'Syncing objects for %s (%s) since %s (delay: %ds)',
$team->getName(),
$team->getUuid(),
$lastSyncedAt?->toDateTimeString() ?? 'never',
$delay
)
);
$this->dispatch((new SyncObjectsJob($team))->delay(now()->addSeconds($delay)));
$dispatchIndex++;
}
}
}
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
27
9
23
3
105
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM team_features where team_id = 1;
SELECT * FROM teams WHERE name LIKE '%Vixio%'; # 340,270,11922
SELECT * FROM users WHERE team_id = 340; # 12015
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 340
and sa.provider = 'salesforce';
# and sa.provider = 'salesloft';
select * from crm_fields where crm_configuration_id = 270 and object_type = 'event';
# 125558 - Event Type - Event_Type__c
# 125552 - Event Status - Event_Status__c
SELECT * FROM sidekick_settings WHERE team_id = 340;
SELECT * FROM crm_field_values WHERE crm_field_id in (125552);
select * from activities where crm_configuration_id = 270
and type = 'conference' and crm_provider_id IS NOT NULL
and actual_start_time > '2024-09-16 09:00:00' order by scheduled_start_time;
SELECT * FROM activities WHERE id = 20871677;
SELECT * FROM crm_field_data WHERE activity_id = 20871677;
select * from crm_layouts where crm_configuration_id = 270;
select * from crm_layout_entities where crm_layout_id in (886,887);
SELECT * FROM crm_configurations WHERE id = 270;
select * from playbooks where team_id = 340; # 1514
select * from groups where team_id = 340;
SELECT * FROM crm_fields WHERE id IN (125393, 125401);
select g.name as 'team name', p.name as 'playbook name', f.label as 'activity type field' from groups g
join playbooks p on g.playbook_id = p.id
join crm_fields f on p.activity_field_id = f.id
where g.team_id = 340;
SELECT * FROM activities WHERE uuid_to_bin('0c180357-67d2-419e-a8c3-b832a3490770') = uuid; # 20448716
select * from crm_field_data where object_id = 20448716;
select * from activities where crm_configuration_id = 270 and provider = 'salesloft' order by id desc;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%CybSafe%'; # 343,273,12008
select * from opportunities where team_id = 343;
select * from opportunities where team_id = 343 and crm_provider_id = '18099102526';
select * from opportunities where team_id = 343 and account_id = 945217482;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 343
and sa.provider = 'hubspot';
select * from accounts where team_id = 343 order by name asc;
select * from stages where crm_configuration_id = 273 and type = 'opportunity';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Voyado%'; # 353,283,12143
SELECT * FROM activities WHERE crm_configuration_id = 283 and account_id = 3777844 order by id desc;
SELECT * FROM accounts WHERE team_id = 353 AND name LIKE '%Salesloft%';
SELECT * FROM activities WHERE id = 20717903;
select * from participants where activity_id IN (20929172,20928605,20928468,20926272,20926271,20926270,20926269,20916499,20916454,20916436,20916435,20900015,20900014,20900013,20897312,20897243,20897241,20897237,20897232,20897229,20893648,20893231,20893230,20893229,20893228,20889784,20885039,20885038,20885037,20885036,20885035,20882728,20882708,20882703,20882702,20869828,20869811,20869806,20869801,20869799,20869798,20869796,20869795,20869794,20869761,20869760,20869759,20868688,20868687,20850340,20847195,20841710,20833967,20827021,20825307,20825305,20825297,20824615,20824400,20823927,20821760,20795588,20794233,20794057,20793710,20785811,20781789,20781394,20781307,20762651,20758453,20758282,20757323,20756643,20756636,20756629,20756627,20756606,20756605,20756604,20756603,20756602,20756600,20756599,20756598,20756595,20756594,20756589,20756587,20756577,20756573,20748918,20748386,20748385,20748384,20748383,20748382,20748381,20748380,20748379,20748377,20748375,20748373,20743301,20717905,20717904,20717903,20717901,20717899);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 353
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%modern world business solutions%'; # 345,275,12016, [EMAIL]
SELECT * FROM activities WHERE uuid_to_bin('3921d399-3fef-4609-a291-b0097a166d43') = uuid;
# id: 20940638, user: 12022, contact: 5305871
SELECT * FROM activity_summary_logs WHERE activity_id = 20940638;
select * from contacts where team_id = 345 and crm_provider_id = '30891432415' order by name asc; # 5305871
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 345
and sa.provider = 'hubspot';
select * from users where team_id = 345 and id = 12022;
SELECT * FROM crm_profiles WHERE user_id = 12022;
SELECT * FROM participants WHERE activity_id = 20940638;
SELECT * FROM users u
JOIN crm_profiles cp ON u.id = cp.user_id
WHERE u.team_id = 345;
select * from contacts where team_id = 345 and crm_provider_id = '30880813535' order by name desc; # 5305871
select * from team_features where team_id = 345;
SELECT * FROM activities WHERE uuid_to_bin('11701e2d-2f82-4dab-a616-1db4fad238df') = uuid; # 21115197
SELECT * FROM participants WHERE activity_id = 20897406;
SELECT * FROM activities WHERE uuid_to_bin('63ba55cd-1abc-447d-83da-0137000005b7') = uuid; # 20953912
SELECT * FROM activities WHERE crm_configuration_id = 275 and provider = 'ringcentral' and title like '%1252629100%';
SELECT * FROM activities WHERE id = 20946641;
SELECT * FROM crm_profiles WHERE user_id = 10211;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120,97,10984, [EMAIL]
SELECT * FROM opportunities WHERE crm_configuration_id = 97 and crm_provider_id = '006N1000006c5PpIAI';
select * from stages where crm_configuration_id = 97 and type = 'opportunity';
select * from opportunities where team_id = 120;
select * from crm_configurations crm join teams t on crm.id = t.crm_id
where 1=1
AND t.current_billing_plan IS NOT NULL
AND crm.auto_sync_activity = 0
and crm.provider = 'hubspot';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Exclaimer%'; # 270,205,10053,[EMAIL]
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 270
and sa.provider = 'salesforce';
SELECT * FROM activities WHERE uuid_to_bin('b54df794-2a9a-4957-8d80-09a600ead5f8') = uuid; # 21637956
SELECT * FROM crm_profiles WHERE user_id = 11446;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Cygnetise%'; # 372,300,12554, [EMAIL]
select * from playbooks where team_id = 372;
select * from crm_fields where crm_configuration_id = 300 and object_type = 'event'; # 141340
SELECT * FROM crm_field_values WHERE crm_field_id = 141340;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 372
and sa.provider = 'salesforce';
select * from crm_profiles where crm_configuration_id = 300;
SELECT * FROM crm_configurations WHERE team_id = 372;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Planday%'; # 291,242,11501,[EMAIL]
SELECT * FROM opportunities WHERE team_id = 291 and crm_provider_id = '006bG000005DO86QAG'; # 3207756
select * from crm_field_data where object_id = 3207756;
SELECT * FROM crm_fields WHERE id = 111834;
select f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value
FROM crm_fields f
JOIN crm_field_data fd ON f.id = fd.crm_field_id
WHERE f.crm_configuration_id = 242
AND f.object_type = 'opportunity'
AND fd.object_id IN (3207756)
ORDER BY fd.object_id, fd.updated_at;
SELECT * FROM crm_configurations WHERE auto_connect = 1;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150,[EMAIL]
select * from group_deal_risk_types drgt join groups g on drgt.group_id = g.id
where g.team_id = 187;
select * from `groups` where team_id = 187;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 187
and sa.provider = 'salesforce';
# Destination - 98870 - Destination__c
# Stage - 79014 - StageName
# Land Arrangement - 98856 - Land_Arrangement__c
# Flight - 98848 - Flight__c
# Last activity date - 98812 - LastActivityDate
# Last modified date - 98809 - LastModifiedDate
# Last inbound mail timestamp - 99151 - Last_Inbound_Mail_Timestamp__c
# next call - 98864 - Next_Call__c
select * from crm_fields where crm_configuration_id = 209 and object_type = 'opportunity';
SELECT * FROM crm_layouts WHERE crm_configuration_id = 209;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;
select * from opportunities where team_id = 187 and name LIKE'%Muriel Sal%';
select * from opportunities where team_id = 187 and user_id = 9951 and is_closed = 0;
select * from activities where opportunity_id = 3538248;
SELECT * FROM crm_profiles WHERE user_id = 8150;
select * from deal_risks where opportunity_id = 3538248;
select * from teams where crm_id IS NULL;
SELECT opp.id AS opportunity_id,
u.group_id AS group_id,
MAX(
CASE
WHEN a.type IN ("sms-inbound", "sms-outbound") THEN a.created_at
ELSE a.actual_end_time
END) as last_date
FROM opportunities opp
left join activities a on a.opportunity_id = opp.id
inner join users u on opp.user_id = u.id
where opp.user_id IN (9951)
AND opp.is_closed = 0
and a.status IN ('completed', 'received', 'delivered') OR a.status IS NULL
group by opp.id;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Cybsafe%'; # 343,301,12008,[EMAIL]
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 343
and sa.provider = 'hubspot';
SELECT * FROM crm_profiles WHERE crm_configuration_id = 301;
SELECT * FROM contacts WHERE id = 6612363;
SELECT * FROM accounts WHERE id = 4235676;
SELECT * FROM opportunities WHERE crm_configuration_id = 301 and crm_provider_id = 32983784868;
select * from opportunity_stages where opportunity_id = 4503759;
# SELECT * FROM opportunities WHERE id = 4569937;
select * from activities where crm_configuration_id = 301;
SELECT * FROM activities WHERE uuid_to_bin('d3b2b28b-c3d0-4c2d-8ed0-eef42855278a') = uuid; # 26330370
SELECT * FROM participants WHERE activity_id = 26330370;
SELECT * FROM teams WHERE id = 375;
select * from playbooks where team_id = 375;
select * from stages where crm_configuration_id = 301 and type = 'opportunity';
select * from teams;
select * from contact_roles;
SELECT * FROM opportunities WHERE team_id = 343 and user_id = 12871 and close_date >= '2024-11-01';
select * from users u join crm_profiles cp on cp.user_id = u.id where u.team_id = 343;
SELECT * FROM crm_field_data WHERE object_id = 3771706;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 343
and sa.provider = 'hubspot';
SELECT * FROM crm_fields WHERE crm_configuration_id = 301 and object_type = 'opportunity'
and crm_provider_id LIKE "%traffic_light%";
SELECT * FROM crm_field_values WHERE crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531);
SELECT fd.* FROM opportunities o
JOIN crm_field_data fd ON o.id = fd.object_id
WHERE o.team_id = 343
# and o.user_id IS NOT NULL
and fd.crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531)
and fd.value != ''
order by value desc
# group by o.id
;
SELECT * FROM opportunities WHERE id = 3769843;
SELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150, [EMAIL]
SELECT * FROM crm_layouts WHERE crm_configuration_id = 209;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Funding Circle%'; # 220,177,8603,[EMAIL]
SELECT * FROM activities WHERE uuid_to_bin('7a40e99b-3b37-4bb1-b983-325b81801c01') = uuid; # 23139839
SELECT * FROM opportunities WHERE id = 3855992;
SELECT * FROM users WHERE name LIKE '%Angus Pollard%'; # 8988
SELECT * FROM teams WHERE name LIKE '%Story Terrace%'; # 379, 307, 12894
SELECT * FROM crm_fields WHERE crm_configuration_id = 307 and object_type != 'opportunity';
select * from contacts where team_id = 379 and name like '%bebro%'; # 5874411, crm: 77229348507
SELECT * FROM crm_field_data WHERE object_id = 5874411;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 379
and sa.provider = 'hubspot';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%mentio%'; # 117, 94, 6371, [EMAIL]
SELECT * FROM activities WHERE uuid_to_bin('82939311-1af0-4506-8546-21e8d1fdf2c1') = uuid;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Tourlane%'; # 187, 209, 8150, [EMAIL]
SELECT * FROM opportunities WHERE team_id = 187 and crm_provider_id = '006Se000008xfvNIAQ'; # 3537793
select * from generic_ai_prompts where subject_id = 3537793;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120, 97, 10984, [EMAIL]
SELECT * FROM crm_configurations WHERE id = 97;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 97;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 355;
SELECT * FROM crm_fields WHERE id = 32682;
select cfd.value, o.* from opportunities o
join crm_field_data cfd on o.id = cfd.object_id and cfd.crm_field_id = 32682
where team_id = 120
and cfd.value != ''
;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 120
and sa.provider = 'salesforce';
select * from opportunities where team_id = 120 and crm_provider_id = '006N1000007X8MAIA0';
SELECT * FROM crm_field_data WHERE object_id = 2313439;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE id = 410;
SELECT * FROM teams WHERE name LIKE '%Local Business Oxford%';
select * from scorecards where team_id = 410;
select * from scorecard_rules;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Funding%'; # 220, 177, 8603, [EMAIL]
select * from activities a
join opportunities o on a.opportunity_id = o.id
join users u on o.user_id = u.id
where a.crm_configuration_id = 177 and a.type LIKE '%email-out%'
# and a.actual_end_time > '2024-12-16 00:00:00'
# and o.remotely_created_at > '2024-12-01 00:00:00'
# and u.group_id = 1014
and u.id = 9021
order by a.id desc;
SELECT * FROM opportunities WHERE id in (3981384,4017346);
SELECT * FROM users WHERE team_id = 220 and id IN (8775, 11435);
select * from users where id = 9021;
select * from inboxes where user_id = 9021;
select * from inbox_emails where inbox_id = 1349 and email_date > '2024-12-18 00:00:00';
select * from email_messages where team_id = 220
and orig_date > '2024-12-16 00:00:00' and orig_date < '2024-12-19 00:00:00'
and subject LIKE '%Personal%'
# and 'from' = '[EMAIL]'
;
select * from activities a
join opportunities o on a.opportunity_id = o.id
where a.user_id = 9021 and a.type LIKE '%email-out%'
and a.actual_end_time > '2024-12-18 00:00:00'
and o.user_id IS NOT NULL
and o.remotely_created_at > '2024-12-01 00:00:00'
order by a.id desc;
SELECT * FROM opportunities WHERE team_id = 220 and name LIKE '%Right Car move Limited%' and id = 3966852;
select * from activities where crm_configuration_id = 177 and type LIKE '%email%' and opportunity_id = 3966852 order by id desc;
select * from team_settings where name IN ('useCloseDate');
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Hurree%'; # 104, 81, 6175, [EMAIL]
SELECT * FROM opportunities WHERE team_id = 104 and name = 'PropOp';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 104
and sa.provider = 'hubspot';
select * from crm_configurations where last_synced_at > '2025-01-19 01:00:00'
select * from teams where crm_id IS NULL;
select t.name as 'team', u.name as 'owner', u.email, u.phone
from teams t
join activity_providers ap on t.id = ap.team_id
join users u on t.owner_id = u.id
where 1=1
and t.status = 'active'
and ap.is_enabled = 1
# and u.status = 1
and ap.provider = 'ms-teams';
select * from crm_configurations where provider = 'bullhorn'; # 344
SELECT * FROM teams WHERE id = 442; # 14293
select * from users where team_id = 442;
select * from social_accounts sa where sa.sociable_id = 14293;
select * from invitations where team_id = 442;
# [PASSWORD_DOTS]
SELECT * FROM users WHERE email LIKE '%[EMAIL]%'; # 14022
SELECT * FROM teams WHERE id = 429;
select * from opportunities where team_id = 429 and crm_provider_id IN (16157415775, 22246219645);
select * from activities where opportunity_id in (4340436,4353519);
select * from transcription where activity_id IN (25630961,25381771);
select * from generic_ai_prompts where subject_id IN (4353519);
SELECT
a.id as activity_id,
a.opportunity_id,
a.type as activity_type,
a.language,
CONCAT(a.title, a.description) AS mail_content,
e.from AS mail_from,
e.to AS mail_to,
e.subject AS mail_subject,
e.body AS mail_body,
p.type as prompt_type,
p.status as prompt_status,
p.content AS prompt_content,
a.actual_start_time as created_at
FROM activities a
LEFT JOIN ai_prompts p ON a.transcription_id = p.transcription_id AND p.deleted_at IS NULL
LEFT JOIN email_messages e ON a.id = e.activity_id
WHERE a.actual_start_time > '2024-01-01 00:00:00'
AND a.opportunity_id IN (4353519)
AND a.status IN ('completed', 'received', 'delivered')
AND a.deleted_at IS NULL
AND a.type NOT IN ('sms-inbound', 'sms-outbound')
ORDER BY a.opportunity_id ASC, a.id ASC;
SELECT * FROM users WHERE name LIKE '%George Fierstone%'; # 14293
SELECT * FROM teams WHERE id = 442;
SELECT * FROM crm_configurations WHERE id = 344;
select * from team_features where team_id = 442;
select * from groups where team_id = 442;
select * from playbooks where team_id = 442;
select * from playbook_categories where playbook_id = 1729;
select * from crm_fields where crm_configuration_id = 344 and id = 172024;
SELECT * FROM crm_field_values WHERE crm_field_id = 172024;
select * from crm_layouts where crm_configuration_id = 344;
select * from playbook_layouts where playbook_id = 1729;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 221, 9444
select s.*
# , s.sent_at, u.name, a.*
from activity_summary_logs s
inner join activities a on a.id = s.activity_id
inner join users u on u.id = a.user_id
where a.crm_configuration_id = 356
and s.sent_at > date_sub(now(), interval 60 day)
order by a.actual_end_time desc;
select * from activities a
# inner join activity_summary_logs s on s.activity_id = a.id
where a.crm_configuration_id = 356 and a.actual_end_time > date_sub(now(), interval 60 day)
# and a.crm_provider_id is not null
# and provider <> 'ringcentral'
and status = 'completed'
order by a.actual_end_time desc;
select * from teams order by id desc; # 17328, 32, 17830, [EMAIL]
SELECT * FROM users;
SELECT * FROM users where team_id = 260 and status = 1; # 201 - 150 active
SELECT * FROM teams WHERE id = 260;
select * from team_settings where team_id = 260;
select * from crm_configurations where team_id = 260;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 356;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 1184;
select * from accounts where crm_configuration_id = 221 order by id desc; # 7000
select * from leads where crm_configuration_id = 221 order by id desc; # 0
select * from contacts where crm_configuration_id = 221 order by id desc; # 200 000
select * from opportunities where crm_configuration_id = 221 order by id desc; # 0
select * from crm_profiles where crm_configuration_id = 221 order by id desc; # 23
select * from crm_fields where crm_configuration_id = 221;
select * from crm_field_values where crm_field_id = 5302 order by id desc;
select * from crm_layouts where crm_configuration_id = 221 order by id desc;
select * from stages where crm_configuration_id = 221 order by id desc;
select * from accounts where crm_configuration_id = 356 order by id desc; # 7000
select * from leads where crm_configuration_id = 356 order by id desc; # 0
select * from contacts where crm_configuration_id = 356 order by id desc; # 200 000
select * from opportunities where crm_configuration_id = 356 order by id desc; # 0
select * from crm_profiles where crm_configuration_id = 356 order by id desc; # 23
select * from crm_fields where crm_configuration_id = 356;
select * from crm_field_values where crm_field_id = 5302 order by id desc;
select * from crm_layouts where crm_configuration_id = 356 order by id desc;
select * from stages where crm_configuration_id = 356 order by id desc;
select * from playbooks where team_id = 260 order by id desc; # 4 (2 deleted)
select * from groups where team_id = 260 order by id desc; # 27 groups, (2 deleted)
select * from playbook_layouts where playbook_id IN (1410,1409,1276,1254); # 4
select ce.* from calendars c
join users u on c.user_id = u.id
join calendar_events ce on c.id = ce.calendar_id
where u.team_id = 260
and (ce.start_time > '2025-02-21 00:00:00')
;
# calendar events 1207
#
select * from opportunities where team_id = 260;
SELECT * FROM crm_field_data WHERE object_id = 4696496;
select * from activities where crm_configuration_id = 356 and crm_provider_id IS NOT NULL;
select * from activities where crm_configuration_id IN (221) and provider NOT IN ('ms-teams', 'uploader', 'zoom-bot')
# and type = 'conference' and status = 'scheduled' and activities.is_internal = 0
and created_at > '2024-03-01 00:00:00'
order by id desc; # 880 000, ringcentral, avaya
SELECT * FROM participants WHERE activity_id = 26371744;
# all activities 942 000 +
# conference 7385 - scheduled 984 - external 343
select * from activities where id = 26321812;
select * from participants where activity_id = 26321812;
select * from participants where activity_id in (26414510,26414514,26414516,26414604,26414653,26414655);
select * from leads where id in (720428,689175,731546,645866,621037);
select * from users where id = 13841;
select * from opportunities where user_id = 9541;
select * from stages where id = 15900;
select * from accounts where
# id IN (4160055,5053725,4965303,4896434)
id in (4584518,3249934,3218025,3891133,3399450,4172999,4485161,3101785,4587203,3070816,2870343,2870341,3563940,4550846,3424464,3249963,2870342)
;
select * from activities where id = 26654935;
SELECT * FROM opportunities WHERE id = 4803458;
SELECT * FROM opportunities where team_id = 260 and user_id = 13841 AND stage_id = 15900;
SELECT id, uuid, provider, type, lead_id, account_id, contact_id, opportunity_id, stage_id, status, recording_state, title, actual_start_time, actual_end_time
FROM activities WHERE user_id = 13841 AND opportunity_id IN (4729783, 4731717, 4731726, 4732064, 4732849, 4803458, 4813213);
SELECT DISTINCT
o.id, o.stage_id, s.name, a.title,
a.*
FROM activities a
# INNER JOIN tracks t ON a.id = t.activity_id
INNER JOIN users u ON a.user_id = u.id
INNER JOIN teams team ON u.team_id = team.id
INNER JOIN groups g ON u.group_id = g.id
INNER JOIN opportunities o ON a.opportunity_id = o.id
INNER JOIN stages s ON o.stage_id = s.id
WHERE
a.crm_configuration_id = 356
AND a.status IN ('completed', 'failed')
AND a.recording_state != 'stopped'
# and a.user_id = 13841
AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')
AND team.uuid = uuid_to_bin('a607fba7-452e-4683-b2af-00d6cb52c93c')
AND g.uuid = uuid_to_bin('b5d69e40-24a0-4c16-810b-5fa462299f94')
AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
# AND t.type IN ('audio', 'video')
AND (
(a.actual_start_time BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59')
OR
(
a.actual_start_time IS NULL
AND a.type IN ('sms-outbound', 'sms-inbound')
AND a.created_at BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59'
)
)
AND (
a.is_private = 0
OR (
a.is_private = 1
AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')
)
)
AND (
# s.id = 15900
s.uuid = uuid_to_bin('04ca1c26-c666-4268-a129-419c0acffd73')
OR s.uuid IS NULL -- Include records without opportunity stage
)
ORDER BY a.actual_end_time DESC;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Lead Forensics%'; # 190, 162, 8474, [EMAIL]
SELECT * FROM users WHERE team_id = 190;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 190
and sa.provider = 'hubspot';
select * from role_user where user_id = 8474;
select * from crm_configurations where provider = 'bullhorn';
SELECT * FROM opportunities WHERE uuid_to_bin('94578249-65ec-4205-90f2-7d1a7d5ab64a') = uuid;
SELECT * FROM users WHERE uuid_to_bin('26dbadeb-926f-4150-b11b-771b9d4c2f9a') = uuid;
SELECT * FROM opportunities WHERE id = 4732493;
select * from activities where opportunity_id = 4732493;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE id = 443; # 358, 14315, [EMAIL]
SELECT * FROM opportunities WHERE team_id = 443;
SELECT a.id, a.type, a.user_id, a.status, a.deleted_at, u.name, u.email, u.team_id as activity_team_id, u.status, u.deleted_at, t.name, t.status, s.team_id as stage_team_id
FROM activities AS a
JOIN stages AS s ON a.stage_id = s.id
JOIN users AS u ON u.id = a.user_id
JOIN teams AS t ON t.id = s.team_id
WHERE u.team_id <> s.team_id and t.id > 135;
SELECT
crm_configuration_id,
crm_provider_id,
COUNT(*) as duplicate_count,
GROUP_CONCAT(id) as stage_ids,
GROUP_CONCAT(name) as stage_names
FROM stages
GROUP BY crm_configuration_id, crm_provider_id
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC;
select * from stages where id IN (14898,14907);
select * from business_processes;
SELECT *
FROM crm_configurations
WHERE team_id IN (
SELECT team_id
FROM crm_configurations
GROUP BY team_id
HAVING COUNT(*) > 1
)
ORDER BY team_id;
SELECT *
FROM teams
WHERE crm_id IN (
SELECT crm_id
FROM teams
GROUP BY crm_id
HAVING COUNT(*) > 1
)
ORDER BY crm_id;
# [PASSWORD_DOTS]
select * from crm_configurations where provider = 'integration-app';
SELECT * FROM teams WHERE id = 443; # Correre Naturale 358 14315 [EMAIL]
select * from activities where crm_configuration_id = 358 order by actual_end_time desc;
select id, uuid, actual_end_time, crm_provider_id, is_internal, playbook_category_id, type, user_id, lead_id, contact_id, account_id, opportunity_id, status, title from activities where crm_configuration_id = 358 order by actual_end_time desc;
select * from team_features where team_id = 358;
select * from activity_summary_logs;
select * from teams where id = 406;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Sportfive%'; # 267, 202, 14637, [EMAIL]
select * from activities where crm_configuration_id = 202 order by actual_end_time desc;
SELECT * FROM users where id = 14637;
SELECT * FROM teams where id = 267;
SELECT * FROM groups where id = 1118;
select g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a
inner join users u on u.id = a.user_id
inner join groups g on g.id = u.group_id
where a.crm_configuration_id = 202
and a.is_internal = 0
and (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')
and a.type = 'conference'
and a.status != 'completed'
and a.external_id is not null
order by a.scheduled_start_time desc;
SELECT * FROM activities
WHERE crm_configuration_id = 202
AND status IN ('completed', 'failed')
AND recording_state != 'stopped'
AND type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
AND (is_private = 0 OR user_id = 14637)
AND (
(
actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'
) OR (
actual_start_time IS NULL
AND type IN ('sms-outbound', 'sms-inbound')
AND created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'
)
)
AND NOT EXISTS (
SELECT 1
FROM tracks
WHERE
tracks.activity_id = activities.id
AND tracks.type IN ('audio', 'video')
)
ORDER BY actual_end_time DESC;
SELECT DISTINCT
a.*
FROM activities a
INNER JOIN tracks t ON a.id = t.activity_id
INNER JOIN users u ON a.user_id = u.id
INNER JOIN teams team ON u.team_id = team.id
WHERE
a.crm_configuration_id = 202
AND a.status IN ('completed', 'failed')
AND a.recording_state != 'stopped'
# and a.user_id = 14637
AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
# AND t.type IN ('audio', 'video')
AND (
(a.actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59')
OR
(
a.actual_start_time IS NULL
AND a.type IN ('sms-outbound', 'sms-inbound')
AND a.created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'
)
)
AND (
a.is_private = 0
OR (
a.is_private = 1
AND a.user_id = 14637
)
)
ORDER BY a.actual_end_time DESC
;
SELECT DISTINCT a.*
FROM activities a
INNER JOIN users u ON a.user_id = u.id
INNER JOIN teams t ON u.team_id = t.id
# INNER JOIN tracks tr ON a.id = tr.activity_id
# INNER JOIN groups g ON u.group_id = g.id
WHERE 1=1
AND t.id = 267
# AND t.uuid = uuid_to_bin('aed4927b-f1ea-499e-94c3-83762fd233e8')
AND a.status IN ('completed', 'failed')
AND a.recording_state != 'stopped'
AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
# AND tr.type NOT IN ('audio', 'video')
AND (
a.is_private = 0
OR a.user_id = 14637
)
AND (
(a.actual_start_time BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59')
OR (
a.actual_start_time IS NULL
AND a.type IN ('sms-outbound', 'sms-inbound')
AND a.created_at BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59'
)
)
# and NOT EXISTS (
# SELECT 1
# FROM tracks t
# WHERE t.activity_id = a.id
# AND t.type IN ('audio', 'video')
# )
ORDER BY a.actual_end_time DESC;
SELECT * FROM tracks WHERE activity_id = 26485995;
select a.is_private, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a
inner join users u on u.id = a.user_id
where a.crm_configuration_id = 202
# and a.is_internal = 0
and (a.actual_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')
and a.type IN ("softphone","softphone-inbound","conference","sms-inbound")
and a.status IN ('completed', 'failed')
# and a.external_id is not null
order by a.actual_end_time desc;
select * from activities a where a.crm_configuration_id = 202
and a.actual_start_time between '2025-03-20 00:00:00' and '2025-03-21 00:00:00'
# AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
select g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a
inner join users u on u.id = a.user_id
inner join groups g on g.id = u.group_id
where a.crm_configuration_id = 202
and a.is_internal = 0
and (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')
and a.type = 'conference'
and a.status != 'completed'
and a.external_id is not null
order by a.scheduled_start_time desc;
SELECT * FROM teams WHERE name LIKE '%Tourlane%';
SELECT * FROM crm_fields WHERE crm_configuration_id = 209 and object_type = 'opportunity';
SELECT * FROM crm_field_data WHERE crm_field_id = 98809;
select * from users where status = 1 AND timezone = 'MDT';
select * from opportunities where id = 3769814;
select * from deal_risks where opportunity_id = 3769814;
select cp.* from crm_profiles cp
join users u on cp.user_id = u.id
join crm_configurations crm on cp.crm_configuration_id = crm.id
where crm.provider = 'hubspot' AND u.status = 1 AND log_notes != 'none';
select * from crm_fields where id = 154575;
select * from team_features where feature = 'SUPPORTS_SYNC_MISSING_CALL_DISPOSITIONS';
SELECT * FROM teams WHERE id = 176; # crm 148
select * from activities where crm_configuration_id = 148 and provider = 'hubspot' order by id desc;
select * from activity_providers where provider = 'amazon-connect';
select * from crm_fields cf
join crm_configurations crm on crm.id = cf.crm_configuration_id
where crm.provider = 'hubspot' and cf.object_type IN ('account', 'contact');
# [PASSWORD_DOTS]
SELECT * FROM users WHERE id IN (15415, 15418);
SELECT * FROM groups WHERE id IN (1805,1806);
SELECT * FROM playbooks WHERE id = 1860;
SELECT * FROM playbook_categories WHERE id = 38634;
SELECT * FROM crm_fields WHERE id = 189962;
SELECT * FROM teams WHERE name = 'Pulsar Group'; # 472, 380, 15138 [EMAIL]
SELECT * FROM crm_profiles WHERE user_id = 15415;
SELECT * FROM social_accounts WHERE sociable_id = 15415 and provider = 'salesforce';
select * from sidekick_settings where team_id = 472;
SELECT * FROM activities WHERE uuid_to_bin('452c58c7-b87c-4fdd-953e-d7af185e9588') = uuid; # 28617536, user: 15418
SELECT * FROM activities WHERE uuid_to_bin('399114ee-d3a8-458c-bff5-5f654658db0a') = uuid; # 28344407, user: 15415
SELECT * FROM activities WHERE uuid_to_bin('f0aa567f-0ab1-4bbb-96aa-37dcf184676b') = uuid; # 28580288, user: 15415
SELECT * FROM activities WHERE uuid_to_bin('50c086b1-2770-4bca-b5ae-6bac22ec426b') = uuid; # 28566069, user: 15415
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%TeamTailor%'; # 109, 218, 13969, [EMAIL]
select * from crm_configurations where id = 218;
SELECT * FROM activities WHERE uuid_to_bin('e39b5857-7fdb-4f5a-951a-8d3ca69bb1b0') = uuid; # 28338765
SELECT * FROM users WHERE id IN (13232, 13230);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 109
and sa.provider = 'salesforce';
0057R00000EPL5HQAX Inez Ekblad
1091cb81-5ea1-4951-a0ed-f00b568f0140 Triman Kaur
SELECT * FROM crm_profiles WHERE user_id IN (13232, 13230);
############################################################################################
SELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939 00UVg00000FLvnSMAT
SELECT * FROM crm_field_data WHERE activity_id = 28655939;
SELECT * FROM crm_fields WHERE id IN (94491,94493,94498);
SELECT * FROM users WHERE id = 13658;
SELECT * FROM teams WHERE id = 109;
SELECT * FROM crm_configurations WHERE id = 218;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 109
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Strengthscope%'; # 481, 390, 15420, [EMAIL]
SELECT * FROM stages WHERE crm_configuration_id = 390;
select * from business_processes where team_id = 481 and crm_configuration_id = 390;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 481
and sa.provider = 'salesforce';
SELECT * FROM users WHERE id = 15780; # team 462
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 462
and sa.provider = 'hubspot';
select * from teams where id = 495;
SELECT * FROM users WHERE id = 15794;
select * from social_accounts where sociable_id = 15794;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Flight%'; # 427, 333, 13752
SELECT * FROM accounts WHERE team_id = 427 and crm_provider_id = '668731000183444517';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Group GTI%'; # 495, 407, 15794
SELECT * FROM activities WHERE crm_configuration_id = 407
and status = 'completed' and type = 'conference'
order by id desc;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from permission_role;
select * from activities where crm_configuration_id = 407 and status = 'completed' order by id desc;
SELECT * FROM activities WHERE id = 29512773;
SELECT * FROM activities WHERE id IN (29042721,28991325,29002874);
SELECT al.* from activity_summary_logs al join activities a on a.id = al.activity_id
where a.crm_configuration_id = 407
# and a.id IN (29042721,28991325,29002874);
SELECT * FROM users WHERE id = 15794;
SELECT * FROM users WHERE team_id = 495;
SELECT * FROM social_accounts WHERE sociable_id = 15794;
SELECT * FROM opportunities WHERE team_id = 495 and name like '%OC:%';
SELECT * FROM contacts WHERE team_id = 495;
SELECT * FROM leads WHERE team_id = 495;
SELECT * FROM accounts WHERE team_id = 495;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 407;
SELECT * FROM crm_fields WHERE crm_configuration_id = 407;
SELECT * FROM crm_configurations WHERE id = 407;
SELECT * FROM opportunities WHERE team_id = 495 and close_date BETWEEN '2025-06-01' AND '2025-07-01'
and user_id IS NOT NULL and is_closed = 1 and is_won = 1;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Hamilton Court FX LLP%'; # 249, 187, 10103
SELECT * FROM activities WHERE uuid_to_bin('4659c2bb-9a49-484e-9327-a3d66f1e028c') = uuid; # 28951064
SELECT * FROM crm_fields WHERE crm_configuration_id = 187 and object_type IN ('tasks', 'event');
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Checkstep%'; # 325, 256, 11753
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 325
and sa.provider = 'hubspot';
SELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid; # 28611085
SELECT * FROM activities WHERE uuid_to_bin('980f0336-840b-4185-a5a9-30cf8b0749a8') = uuid; # 28719733
SELECT * FROM activity_summary_logs where activity_id = 28719733;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 356, 9444
SELECT * FROM activity_summary_logs where sent_at BETWEEN '2025-06-09 11:38:00' AND '2025-06-09 11:40:00';
SELECT * FROM leads WHERE crm_configuration_id = 356 and crm_provider_id = '230045001502770504'; # 823630
select * from activities where crm_configuration_id = 356 and lead_id = 841732;
SELECT * from activity_summary_logs al join activities a on a.id = al.activity_id
where a.crm_configuration_id = 356;
select * from activities where crm_configuration_id = 356
and actual_end_time between '2025-06-09 11:00:00' and '2025-06-09 12:00:00'
order by id desc;
select * from accounts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;
select * from leads where crm_configuration_id = 356 and crm_provider_id = '230045001514275654' order by id desc;
select * from contacts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;
select * from opportunities where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;
select * from team_features where team_id = 260;
select * from features where id IN (1,2,4,6,18,19,20,9,10,3,23,24,25,26,27);
SELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid;
select * from crm_fields;
select * from crm_layout_entities;
SELECT * FROM teams WHERE name LIKE '%Optable%';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Teamtailor%'; # 109, 218, 13969
SELECT * FROM crm_configurations WHERE id = 218;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 109
and sa.provider = 'salesforce';
SELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939
SELECT * FROM crm_field_data WHERE activity_id = 28655939;
SELECT * FROM crm_fields WHERE id in (94491,94493,94498);
select * from teams where crm_id IS NULL;
SELECT * FROM activities WHERE uuid_to_bin('71aa8a0c-9652-4ff6-bee7-d98ae60abef6') = uuid;
# [PASSWORD_DOTS]
select * from team_domains where team_id = 399;
SELECT * FROM teams WHERE name LIKE '%Rydoo%'; # 399, 318, 13207
select * from calendar_events where id = 5163781;
SELECT * FROM activities WHERE uuid_to_bin('be2cbc52-7fda-46a0-9ae0-25d9553eafc0') = uuid; # 29443896
SELECT * FROM participants WHERE activity_id = 29443896;
select * from contacts where crm_configuration_id = 318 and email = '[EMAIL]';
select * from leads where crm_configuration_id = 318 and email = '[EMAIL]';
select * from activities where user_id = 14937 order by created_at ;
select * from users where id = 14937;
select * from contacts where crm_configuration_id = 318 and email LIKE '%@strawberry.se';
select * from opportunities where crm_configuration_id = 318 and crm_provider_id = '006Sf00000D1WOAIA3';
select * from activities a join participants p on a.id = p.activity_id
where crm_configuration_id = 318 and a.updated_at > '2025-06-23T08:18:43Z';
# [PASSWORD_DOTS]
SELECT * FROM opportunities WHERE team_id = 379 and crm_provider_id = '39334518886';
SELECT * FROM opportunities WHERE team_id = 379 order by id desc;
SELECT * FROM teams WHERE id = 379;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 379 and sociable_id = 13852
and sa.provider = 'hubspot';
SELECT * FROM crm_configurations WHERE id = 307;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 307;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 1027;
SELECT * FROM crm_fields WHERE crm_configuration_id = 307
and id IN (144750,144855,145158,155227);
SELECT * FROM activities;
select * from activities
where created_at > '2025-07-01 00:00:00'
# and created_at < '2025-08-01 00:00:00'
and type not in ('email-outbound', 'email-inbound')
and account_id is null
and contact_id is null
and lead_id is null
and opportunity_id is not null
;
SELECT * FROM activities WHERE id IN (25344155, 25344296, 25501909, 28692187);
SELECT * FROM crm_configurations WHERE id in (335,301,200);
select * from crm_fields where crm_configuration_id = 230 and crm_provider_id = 'Age2__c';
SELECT * FROM teams WHERE name LIKE '%Resights%';
select * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';
select * from crm_configurations where provider = 'bullhorn'; # 344
select * from teams where id IN (442);
select * from activities
where crm_configuration_id = 177
and provider = 'amazon-connect'
order by id desc;
# and source <> 'gong';
select * from activity_providers where provider = 'amazon-connect';
SELECT * FROM activities WHERE uuid_to_bin('cec1993b-a7e5-4164-b74d-d680ea51d2f2') = uuid;
select * from crm_configurations where store_transcript = 1;
SELECT * FROM teams WHERE id IN (80);
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Sedna%'; # 277, 213, 12594
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 277
and sa.provider = 'salesforce';
select * from activities where crm_configuration_id = 213 and account_id = 2511502;
select * from crm_configurations where id = 213;
SELECT * FROM activities WHERE uuid_to_bin('35aa790a-8569-4544-8268-66f9a4a26804') = uuid; # 33981604
SELECT * FROM participants WHERE activity_id = 33981604;
SELECT * FROM crm_fields WHERE crm_configuration_id = 337 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 431
and sa.provider = 'salesforce';
SELECT * FROM activities WHERE uuid_to_bin('b5476c7d-19a8-491b-869d-676ea1e857b6') = uuid; # 33997223
select * from activity_summary_logs where activity_id = 33997223;
select * from activity_notes where activity_id = 33997223;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Abode%';
select * from features;
select * from teams t
where t.status = 'active'
and id NOT IN (select team_id from team_features where feature_id = 9)
;
select * from playbook_layouts where playbook_id = 1725;
SELECT * FROM activities WHERE uuid_to_bin('65cc283c-4849-49e6-927f-4c281c8fea19') = uuid; # 34297473
select * from teams where id = 318;
select * from crm_configurations w...
|
NULL
|
|
61814
|
1332
|
8
|
2026-04-21T07:12:51.964314+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755571964_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
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) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"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) $","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) $","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":"-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":"-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 (node)","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:~ (nc)","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":"AXStaticText","text":"⌥⌘1","depth":1,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"role_description":"text"}]...
|
-1317397407342100510
|
-3030126455398448707
|
app_switch
|
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) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
61815
|
1333
|
7
|
2026-04-21T07:12:51.948387+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755571948_m2.jpg...
|
iTerm2
|
-zsh
|
1
|
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) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"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) $","depth":4,"bounds":{"left":0.2918883,"top":0.06384677,"width":0.7081117,"height":0.93615323},"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) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.2918883,"top":0.04309657,"width":0.077792555,"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.29388297,"top":0.046288908,"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.36968085,"top":0.04309657,"width":0.077792555,"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.37167552,"top":0.046288908,"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.4474734,"top":0.04309657,"width":0.077792555,"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.44946808,"top":0.046288908,"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 (node)","depth":2,"bounds":{"left":0.52526593,"top":0.04309657,"width":0.077792555,"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.52726066,"top":0.046288908,"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.6030585,"top":0.04309657,"width":0.077792555,"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.6050532,"top":0.046288908,"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.68085104,"top":0.04309657,"width":0.077792555,"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.6828458,"top":0.046288908,"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.7586436,"top":0.04309657,"width":0.077792555,"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.7606383,"top":0.046288908,"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:~ (nc)","depth":2,"bounds":{"left":0.83643615,"top":0.04309657,"width":0.077792555,"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.8384308,"top":0.046288908,"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.91422874,"top":0.04309657,"width":0.077792555,"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.9162234,"top":0.046288908,"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.97839093,"top":0.023942538,"width":0.01861702,"height":0.013567438},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.6402925,"top":0.024740623,"width":0.010970744,"height":0.012769354},"role_description":"text"}]...
|
-1317397407342100510
|
-3030126455398448707
|
app_switch
|
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) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
61820
|
1332
|
10
|
2026-04-21T07:12:59.661665+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755579661_m1.jpg...
|
iTerm2
|
-zsh
|
1
|
NULL
|
monitor_1
|
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) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"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) $","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) $","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":"-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":"-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 (node)","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:~ (nc)","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":"AXStaticText","text":"⌥⌘1","depth":1,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"role_description":"text"}]...
|
-1317397407342100510
|
-3030126455398448707
|
app_switch
|
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) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
61821
|
1333
|
11
|
2026-04-21T07:12:59.724976+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755579724_m2.jpg...
|
iTerm2
|
-zsh
|
1
|
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) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"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) $","depth":4,"bounds":{"left":0.2918883,"top":0.06384677,"width":0.7081117,"height":0.93615323},"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) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.2918883,"top":0.04309657,"width":0.077792555,"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.29388297,"top":0.046288908,"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.36968085,"top":0.04309657,"width":0.077792555,"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.37167552,"top":0.046288908,"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.4474734,"top":0.04309657,"width":0.077792555,"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.44946808,"top":0.046288908,"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 (node)","depth":2,"bounds":{"left":0.52526593,"top":0.04309657,"width":0.077792555,"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.52726066,"top":0.046288908,"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.6030585,"top":0.04309657,"width":0.077792555,"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.6050532,"top":0.046288908,"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.68085104,"top":0.04309657,"width":0.077792555,"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.6828458,"top":0.046288908,"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.7586436,"top":0.04309657,"width":0.077792555,"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.7606383,"top":0.046288908,"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:~ (nc)","depth":2,"bounds":{"left":0.83643615,"top":0.04309657,"width":0.077792555,"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.8384308,"top":0.046288908,"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.91422874,"top":0.04309657,"width":0.077792555,"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.9162234,"top":0.046288908,"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.97839093,"top":0.023942538,"width":0.01861702,"height":0.013567438},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.6402925,"top":0.024740623,"width":0.010970744,"height":0.012769354},"role_description":"text"}]...
|
-1317397407342100510
|
-3030126455398448707
|
app_switch
|
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) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (node)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
61822
|
1333
|
12
|
2026-04-21T07:13:00.796545+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755580796_m2.jpg...
|
Firefox
|
JY-20701 | Reschedule HubSpot Sync Objects by yalo JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/11989/changes#diff-b8b github.com/jiminny/app/pull/11989/changes#diff-b8b6dffeffd9f880149efbe08aa7165b161a69611ee9fc88406f7ca73903b1a2...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Close tab
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
New Tab
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (21)
Security and quality
(
21
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
Edit title
Preview
Preview
Awaiting approval
Awaiting approval
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
Lines changed: 949 additions & 97 deletions
Conversation (5)
Conversation
(
5
)
Commits (22)
Commits
(
22
)
Checks (3)
Checks
(
3
)
Files changed (11)
Files changed
(
11
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
JY-20701 | Reschedule HubSpot Sync Objects
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
All commits
All commits
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
1
/
11
viewed
Awaiting approval
Awaiting approval
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Console
Commands/Crm
Traits
SyncObjectsCommandTrait.php
SyncObjectsCommandTrait.php
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Kernel.php
Kernel.php
Http/Controllers/Webhook/Hubspot
ProcessesWebhooksTrait.php
ProcessesWebhooksTrait.php
Jobs/Crm
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Services/Crm/Hubspot/ServiceTraits
OpportunitySyncTrait.php
OpportunitySyncTrait.php
tests/Unit
Collapse file
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
Copy file name to clipboard
Lines changed: 81 additions & 0 deletions
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -0,0 +1,81 @@
1
+
<?php
2
+
3
+
declare
(strict_types=
1
);
4
+
5
+
namespace
Jiminny
\
Console
\
Commands
\
Crm
\
Traits
;
6
+
7
+
use
Jiminny
\
Jobs
\
Job
;
8
+
use
Jiminny
\
Models
\
Team
;
9
+
10
+
trait
SyncObjectsCommandTrait
11
+
{
12
+
abstract
protected
function
getStaggerDelaySeconds
():
float
;
13
+
14
+
abstract
protected
function
getLogPrefix
():
string
;
15
+
16
+
abstract
protected
function
createSyncJob
(
Team
$
team
):
Job
;
17
+
18
+
protected
function
getMaxDelaySeconds
(): ?...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.09524601,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.08344415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.15791224,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.02144282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.1740359,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.3639266,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.38946527,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.40063846,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.42218676,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.013297873,"top":0.43335995,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.0,"top":0.45490822,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.4660814,"width":0.10721409,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.48922586,"width":0.07413564,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to content","depth":6,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open menu","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Homepage (g then d)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search or jump to…","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to search","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat with Copilot","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Open Copilot…","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create new...","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues(g then i)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pull requests","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Repositories","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"You have unread notifications(g then n)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open user navigation menu","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Repository navigation","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository navigation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (31)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agents","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Agents","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Actions","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Wiki","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Wiki","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (21)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security and quality","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review this update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub account settings","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dismiss banner","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11989","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit title","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Preview","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Preview","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Awaiting approval","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Awaiting approval","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Code","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 22 commits into","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20701-reschedule-HubSpot-processing","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701-reschedule-HubSpot-processing","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 949 additions & 97 deletions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Conversation (5)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Conversation","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Commits (22)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Commits","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"22","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Checks (3)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Files changed (11)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Files changed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Pull Request Toolbar","depth":14,"bounds":{"left":0.090259306,"top":0.07581804,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pull Request Toolbar","depth":15,"bounds":{"left":0.090259306,"top":0.07861133,"width":0.030086435,"height":0.08060654},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse file tree","depth":14,"bounds":{"left":0.090259306,"top":0.0650439,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Open","depth":14,"bounds":{"left":0.112865694,"top":0.06943336,"width":0.011968086,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":14,"bounds":{"left":0.1314827,"top":0.058260176,"width":0.103390954,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":16,"bounds":{"left":0.1314827,"top":0.059856344,"width":0.103390954,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"bounds":{"left":0.23753324,"top":0.059856344,"width":0.0028257978,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11989","depth":15,"bounds":{"left":0.24035904,"top":0.059856344,"width":0.012965426,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All commits","depth":14,"bounds":{"left":0.12882313,"top":0.07182761,"width":0.03374335,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All commits","depth":16,"bounds":{"left":0.13181517,"top":0.07701516,"width":0.02244016,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":15,"bounds":{"left":0.1668883,"top":0.07581804,"width":0.029920213,"height":0.014365523},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":16,"bounds":{"left":0.1668883,"top":0.07701516,"width":0.029920213,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 22 commits into","depth":15,"bounds":{"left":0.1981383,"top":0.07701516,"width":0.060339097,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"bounds":{"left":0.25980717,"top":0.074221864,"width":0.018284574,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"bounds":{"left":0.26180187,"top":0.07741421,"width":0.014295213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"bounds":{"left":0.27942154,"top":0.07701516,"width":0.00880984,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20701-reschedule-HubSpot-processing","depth":16,"bounds":{"left":0.28956118,"top":0.074221864,"width":0.09507979,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701-reschedule-HubSpot-processing","depth":17,"bounds":{"left":0.29155585,"top":0.07741421,"width":0.091090426,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"bounds":{"left":0.38597074,"top":0.07182761,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":15,"bounds":{"left":0.8216423,"top":0.070231445,"width":0.0018284575,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"bounds":{"left":0.8234708,"top":0.070231445,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":15,"bounds":{"left":0.82696146,"top":0.070231445,"width":0.0038231383,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"viewed","depth":15,"bounds":{"left":0.83194816,"top":0.070231445,"width":0.013131649,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Awaiting approval","depth":14,"bounds":{"left":0.85339093,"top":0.0650439,"width":0.04654255,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Awaiting approval","depth":16,"bounds":{"left":0.8630319,"top":0.070231445,"width":0.033909574,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Submit review","depth":14,"bounds":{"left":0.9025931,"top":0.0650439,"width":0.03856383,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Submit","depth":16,"bounds":{"left":0.9055851,"top":0.070231445,"width":0.014793883,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"review","depth":16,"bounds":{"left":0.920379,"top":0.070231445,"width":0.012466756,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Open diff view settings","depth":14,"bounds":{"left":0.9438165,"top":0.0650439,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open overview panel","depth":14,"bounds":{"left":0.96143615,"top":0.0650439,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open comments panel","depth":14,"bounds":{"left":0.97207445,"top":0.0650439,"width":0.017287234,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"(","depth":16,"bounds":{"left":0.98038566,"top":0.070231445,"width":0.0026595744,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":16,"bounds":{"left":0.9830452,"top":0.070231445,"width":0.0026595744,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":16,"bounds":{"left":0.9857048,"top":0.070231445,"width":0.0014960107,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Filter files…","depth":16,"bounds":{"left":0.1015625,"top":0.11332801,"width":0.06815159,"height":0.023942538},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Filter options","depth":16,"bounds":{"left":0.17270611,"top":0.112529926,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"File tree","depth":15,"bounds":{"left":0.09059176,"top":0.15083799,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File tree","depth":16,"bounds":{"left":0.09059176,"top":0.15363128,"width":0.014295213,"height":0.0518755},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":19,"bounds":{"left":0.1065492,"top":0.15682362,"width":0.008144947,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Console","depth":21,"bounds":{"left":0.10920878,"top":0.18276137,"width":0.017453458,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands/Crm","depth":23,"bounds":{"left":0.11186835,"top":0.20830008,"width":0.03474069,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Traits","depth":25,"bounds":{"left":0.114527926,"top":0.23383878,"width":0.011968086,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncObjectsCommandTrait.php","depth":27,"bounds":{"left":0.1171875,"top":0.25977653,"width":0.068317816,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncObjectsCommandTrait.php","depth":28,"bounds":{"left":0.1171875,"top":0.25977653,"width":0.068317816,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncHubspotObjects.php","depth":25,"bounds":{"left":0.114527926,"top":0.28531525,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncHubspotObjects.php","depth":26,"bounds":{"left":0.114527926,"top":0.28531525,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncObjects.php","depth":25,"bounds":{"left":0.114527926,"top":0.31085396,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncObjects.php","depth":26,"bounds":{"left":0.114527926,"top":0.31085396,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Kernel.php","depth":23,"bounds":{"left":0.11186835,"top":0.33639267,"width":0.023271276,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Kernel.php","depth":24,"bounds":{"left":0.11186835,"top":0.33639267,"width":0.023271276,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Http/Controllers/Webhook/Hubspot","depth":21,"bounds":{"left":0.10920878,"top":0.36193135,"width":0.07579787,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ProcessesWebhooksTrait.php","depth":23,"bounds":{"left":0.11186835,"top":0.38786912,"width":0.06333112,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ProcessesWebhooksTrait.php","depth":24,"bounds":{"left":0.11186835,"top":0.38786912,"width":0.06333112,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jobs/Crm","depth":21,"bounds":{"left":0.10920878,"top":0.41340783,"width":0.020777926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncHubspotObjects.php","depth":23,"bounds":{"left":0.11186835,"top":0.43894652,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncHubspotObjects.php","depth":24,"bounds":{"left":0.11186835,"top":0.43894652,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncObjects.php","depth":23,"bounds":{"left":0.11186835,"top":0.46448523,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncObjects.php","depth":24,"bounds":{"left":0.11186835,"top":0.46448523,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Services/Crm/Hubspot/ServiceTraits","depth":21,"bounds":{"left":0.10920878,"top":0.49002394,"width":0.0774601,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"OpportunitySyncTrait.php","depth":23,"bounds":{"left":0.11186835,"top":0.51556265,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"OpportunitySyncTrait.php","depth":24,"bounds":{"left":0.11186835,"top":0.51556265,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tests/Unit","depth":19,"bounds":{"left":0.1065492,"top":0.54110134,"width":0.020777926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse file","depth":14,"bounds":{"left":0.19730718,"top":0.103751,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php","depth":15,"bounds":{"left":0.20794548,"top":0.10654429,"width":0.14162233,"height":0.016759777},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php","depth":16,"bounds":{"left":0.20794548,"top":0.10814046,"width":0.14162233,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php","depth":18,"bounds":{"left":0.20794548,"top":0.110135674,"width":0.14162233,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy file name to clipboard","depth":15,"bounds":{"left":0.3522274,"top":0.103751,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 81 additions & 0 deletions","depth":15,"bounds":{"left":0.90957445,"top":0.11612131,"width":0.019946808,"height":0.11412609},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Not Viewed","depth":14,"bounds":{"left":0.93583775,"top":0.103751,"width":0.026595745,"height":0.022346368},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Viewed","depth":16,"bounds":{"left":0.94547874,"top":0.108938545,"width":0.013962766,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Comment on this file","depth":14,"bounds":{"left":0.9650931,"top":0.103751,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"More options","depth":14,"bounds":{"left":0.97706115,"top":0.103751,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Original file line number","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Original file line","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line number","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line change","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -0,0 +1,81 @@","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"<?php","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"declare","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(strict_types=","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":");","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"namespace","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Console","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Traits","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jobs","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Job","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Models","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Team","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"trait","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncObjectsCommandTrait","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"abstract","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getStaggerDelaySeconds","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"():","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"float","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"abstract","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getLogPrefix","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"():","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"string","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"abstract","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"createSyncJob","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Team","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Job","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getMaxDelaySeconds","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(): ?","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8670212990834061733
|
3552636260308970944
|
app_switch
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Close tab
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
New Tab
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (21)
Security and quality
(
21
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
Edit title
Preview
Preview
Awaiting approval
Awaiting approval
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
Lines changed: 949 additions & 97 deletions
Conversation (5)
Conversation
(
5
)
Commits (22)
Commits
(
22
)
Checks (3)
Checks
(
3
)
Files changed (11)
Files changed
(
11
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
JY-20701 | Reschedule HubSpot Sync Objects
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
All commits
All commits
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
1
/
11
viewed
Awaiting approval
Awaiting approval
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Console
Commands/Crm
Traits
SyncObjectsCommandTrait.php
SyncObjectsCommandTrait.php
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Kernel.php
Kernel.php
Http/Controllers/Webhook/Hubspot
ProcessesWebhooksTrait.php
ProcessesWebhooksTrait.php
Jobs/Crm
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Services/Crm/Hubspot/ServiceTraits
OpportunitySyncTrait.php
OpportunitySyncTrait.php
tests/Unit
Collapse file
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
Copy file name to clipboard
Lines changed: 81 additions & 0 deletions
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -0,0 +1,81 @@
1
+
<?php
2
+
3
+
declare
(strict_types=
1
);
4
+
5
+
namespace
Jiminny
\
Console
\
Commands
\
Crm
\
Traits
;
6
+
7
+
use
Jiminny
\
Jobs
\
Job
;
8
+
use
Jiminny
\
Models
\
Team
;
9
+
10
+
trait
SyncObjectsCommandTrait
11
+
{
12
+
abstract
protected
function
getStaggerDelaySeconds
():
float
;
13
+
14
+
abstract
protected
function
getLogPrefix
():
string
;
15
+
16
+
abstract
protected
function
createSyncJob
(
Team
$
team
):
Job
;
17
+
18
+
protected
function
getMaxDelaySeconds
(): ?...
|
NULL
|
|
62033
|
1334
|
44
|
2026-04-21T07:21:00.662599+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776756060662_m1.jpg...
|
PhpStorm
|
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Find in Files
File mask:
*.php
*.php
Auto
*.php
Fi Find in Files
File mask:
*.php
*.php
Auto
*.php
Filter Search Results
Pin Window
Search History
createSyncJob
New Line
Match case
Words
Regex
Replace History
Replace
New Line
Preserve case
In Project
Module
Directory
Scope
Module
/Users/lukas/jiminny/app/app/Console/Commands/Crm
/Users/lukas/jiminny/app/app/Console/Commands/Crm
/Users/lukas/jiminny/app/app/Services/Crm
/Users/lukas/jiminny/app/app/Listeners/Activities/Coaching/UserPilot
/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot
/Users/lukas/jiminny/app/app/Events/Activities/Crm
/Users/lukas/jiminny/app/app/Listeners/Crm
/Users/lukas/jiminny/app/app/Providers
/Users/lukas/jiminny/app/app/Http/Controllers
/Users/lukas/jiminny/app/app/Console/Commands/Reports
/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook
/Users/lukas/jiminny/app/resources/views/emails/reports
/Users/lukas/jiminny/app/app/Mail/Reports
/Users/lukas/jiminny/app/app/Repositories
/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports
/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports
/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service
/Users/lukas/jiminny/app/app/Jobs/AutomatedReports
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce
/Users/lukas/jiminny/app/app/Services/Crm/Salesforce
/Users/lukas/jiminny/app/routes...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Find in Files","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"File mask:","depth":1,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"*.php","depth":1,"value":"*.php","role_description":"combo box","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"*.php","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Auto","depth":6,"role_description":"text"},{"role":"AXTextField","text":"*.php","depth":2,"value":"*.php","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":1,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pin Window","depth":1,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":1,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"createSyncJob","depth":2,"value":"createSyncJob","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":1,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match case","depth":1,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":1,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":1,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":1,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":2,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":1,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":1,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In Project","depth":2,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Module","depth":2,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Directory","depth":2,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Scope","depth":2,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Module","depth":1,"bounds":{"left":0.0,"top":0.0,"width":0.20833333,"height":0.037777778},"role_description":"pop up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"/Users/lukas/jiminny/app/app/Console/Commands/Crm","depth":1,"bounds":{"left":0.0,"top":0.0,"width":0.4125,"height":0.037777778},"value":"/Users/lukas/jiminny/app/app/Console/Commands/Crm","role_description":"combo box","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Coaching/UserPilot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Activities/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Providers","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Reports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Webhook","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/resources/views/emails/reports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Mail/Reports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Repositories","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/AutomatedReports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Salesforce","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/routes","depth":6,"role_description":"text"}]...
|
4454885434657049550
|
-6126614839637605013
|
app_switch
|
accessibility
|
NULL
|
Find in Files
File mask:
*.php
*.php
Auto
*.php
Fi Find in Files
File mask:
*.php
*.php
Auto
*.php
Filter Search Results
Pin Window
Search History
createSyncJob
New Line
Match case
Words
Regex
Replace History
Replace
New Line
Preserve case
In Project
Module
Directory
Scope
Module
/Users/lukas/jiminny/app/app/Console/Commands/Crm
/Users/lukas/jiminny/app/app/Console/Commands/Crm
/Users/lukas/jiminny/app/app/Services/Crm
/Users/lukas/jiminny/app/app/Listeners/Activities/Coaching/UserPilot
/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot
/Users/lukas/jiminny/app/app/Events/Activities/Crm
/Users/lukas/jiminny/app/app/Listeners/Crm
/Users/lukas/jiminny/app/app/Providers
/Users/lukas/jiminny/app/app/Http/Controllers
/Users/lukas/jiminny/app/app/Console/Commands/Reports
/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook
/Users/lukas/jiminny/app/resources/views/emails/reports
/Users/lukas/jiminny/app/app/Mail/Reports
/Users/lukas/jiminny/app/app/Repositories
/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports
/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports
/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service
/Users/lukas/jiminny/app/app/Jobs/AutomatedReports
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce
/Users/lukas/jiminny/app/app/Services/Crm/Salesforce
/Users/lukas/jiminny/app/routes...
|
NULL
|
|
62034
|
1335
|
65
|
2026-04-21T07:21:00.662587+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776756060662_m2.jpg...
|
PhpStorm
|
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Find in Files
File mask:
*.php
*.php
Auto
*.php
Fi Find in Files
File mask:
*.php
*.php
Auto
*.php
Filter Search Results
Pin Window
Search History
createSyncJob
New Line
Match case
Words
Regex
Replace History
Replace
New Line
Preserve case
In Project
Module
Directory
Scope
Module
/Users/lukas/jiminny/app/app/Console/Commands/Crm
/Users/lukas/jiminny/app/app/Console/Commands/Crm
/Users/lukas/jiminny/app/app/Services/Crm
/Users/lukas/jiminny/app/app/Listeners/Activities/Coaching/UserPilot
/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot
/Users/lukas/jiminny/app/app/Events/Activities/Crm
/Users/lukas/jiminny/app/app/Listeners/Crm
/Users/lukas/jiminny/app/app/Providers
/Users/lukas/jiminny/app/app/Http/Controllers
/Users/lukas/jiminny/app/app/Console/Commands/Reports
/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook
/Users/lukas/jiminny/app/resources/views/emails/reports
/Users/lukas/jiminny/app/app/Mail/Reports
/Users/lukas/jiminny/app/app/Repositories
/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports
/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports
/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service
/Users/lukas/jiminny/app/app/Jobs/AutomatedReports
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce
/Users/lukas/jiminny/app/app/Services/Crm/Salesforce
/Users/lukas/jiminny/app/routes
/Users/lukas/jiminny/app/app/Console/Commands
/Users/lukas/jiminny/app/database/migrations...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Find in Files","depth":1,"bounds":{"left":0.2992021,"top":0.12609737,"width":0.024601065,"height":0.013567438},"role_description":"text"},{"role":"AXCheckBox","text":"File mask:","depth":1,"bounds":{"left":0.5315825,"top":0.12290503,"width":0.029587766,"height":0.019952115},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"*.php","depth":1,"bounds":{"left":0.5621675,"top":0.11971269,"width":0.027925532,"height":0.027134877},"value":"*.php","role_description":"combo box","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"*.php","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Auto","depth":6,"role_description":"text"},{"role":"AXTextField","text":"*.php","depth":2,"bounds":{"left":0.5661569,"top":0.12609737,"width":0.011635638,"height":0.013567438},"value":"*.php","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":1,"bounds":{"left":0.5944149,"top":0.12290503,"width":0.00731383,"height":0.017557861},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pin Window","depth":1,"bounds":{"left":0.6037234,"top":0.12290503,"width":0.00731383,"height":0.017557861},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":1,"bounds":{"left":0.2962101,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"createSyncJob","depth":2,"bounds":{"left":0.30718085,"top":0.15403032,"width":0.26196808,"height":0.017557861},"value":"createSyncJob","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":1,"bounds":{"left":0.578125,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match case","depth":1,"bounds":{"left":0.5880984,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":1,"bounds":{"left":0.59674203,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":1,"bounds":{"left":0.60538566,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":2,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In Project","depth":2,"bounds":{"left":0.2992021,"top":0.1867518,"width":0.022938829,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Module","depth":2,"bounds":{"left":0.32214096,"top":0.1867518,"width":0.019281914,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Directory","depth":2,"bounds":{"left":0.3414229,"top":0.1867518,"width":0.022606382,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Scope","depth":2,"bounds":{"left":0.36402926,"top":0.1867518,"width":0.017287234,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Module","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.099734046,"height":0.0},"role_description":"pop up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"/Users/lukas/jiminny/app/app/Console/Commands/Crm","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.1974734,"height":0.0},"value":"/Users/lukas/jiminny/app/app/Console/Commands/Crm","role_description":"combo box","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Coaching/UserPilot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Activities/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Providers","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Reports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Webhook","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/resources/views/emails/reports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Mail/Reports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Repositories","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/AutomatedReports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Salesforce","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/routes","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/database/migrations","depth":6,"role_description":"text"}]...
|
1037028021770332620
|
-6054557520477616885
|
app_switch
|
accessibility
|
NULL
|
Find in Files
File mask:
*.php
*.php
Auto
*.php
Fi Find in Files
File mask:
*.php
*.php
Auto
*.php
Filter Search Results
Pin Window
Search History
createSyncJob
New Line
Match case
Words
Regex
Replace History
Replace
New Line
Preserve case
In Project
Module
Directory
Scope
Module
/Users/lukas/jiminny/app/app/Console/Commands/Crm
/Users/lukas/jiminny/app/app/Console/Commands/Crm
/Users/lukas/jiminny/app/app/Services/Crm
/Users/lukas/jiminny/app/app/Listeners/Activities/Coaching/UserPilot
/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot
/Users/lukas/jiminny/app/app/Events/Activities/Crm
/Users/lukas/jiminny/app/app/Listeners/Crm
/Users/lukas/jiminny/app/app/Providers
/Users/lukas/jiminny/app/app/Http/Controllers
/Users/lukas/jiminny/app/app/Console/Commands/Reports
/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook
/Users/lukas/jiminny/app/resources/views/emails/reports
/Users/lukas/jiminny/app/app/Mail/Reports
/Users/lukas/jiminny/app/app/Repositories
/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports
/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports
/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service
/Users/lukas/jiminny/app/app/Jobs/AutomatedReports
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce
/Users/lukas/jiminny/app/app/Services/Crm/Salesforce
/Users/lukas/jiminny/app/routes
/Users/lukas/jiminny/app/app/Console/Commands
/Users/lukas/jiminny/app/database/migrations...
|
NULL
|
|
62151
|
1340
|
6
|
2026-04-21T07:35:00.619965+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776756900619_m1.jpg...
|
Firefox
|
Pipelines - jiminny/app — Work
|
1
|
app.circleci.com/pipelines/github/jiminny/app
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
New Tab
New Tab
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57516
57516
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
13m 15s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20709-call-scoring-delete-old
JY-20709-call-scoring-delete-old
Open commit on version control site
d3737cf
Merge branch 'master' into JY-20709-call-scoring-delete-old
Push
Commit pushed
Copy timestamp to clipboard
8m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
873847
1m 8s
1m 8s
SUCCESS job build-frontend
build-frontend
873851
1m 54s
1m 54s
SUCCESS job test-frontend...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"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":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Go to home page","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Auto theme","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open notifications","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open support menu","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":"Open user menu","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"org avatar Current organization: jiminny","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Home","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Home","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pipelines","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Projects","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Projects","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Runners","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Runners","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Org","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Org","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Plan","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Plan","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chunk","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Chunk","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Dashboard All Pipelines","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All Pipelines","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Project Outline app","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"app","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Overview","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Overview","depth":13,"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":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lightning Manage triggers","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage triggers","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Trigger Pipeline","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pipelines All pipelines my-pipelines-filter","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All pipelines","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"app Project Filter. Selected \"app\"","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"app","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All branches Branch Filter. Selected \"All branches\"","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All branches","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start Time Cutoff date Arrow Drop Down","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Cutoff date","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"All statuses Arrow Drop Down","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"statuses","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filter Display options","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Display options","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pipeline","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Status","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Workflow","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Checkout source","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trigger event","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Start","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Actions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57516","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57516","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Running Running","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Running","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13m 15s","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"remain","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Info Outline","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"build_accept_deploy","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20709-call-scoring-delete-old","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20709-call-scoring-delete-old","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"d3737cf","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Merge branch 'master' into JY-20709-call-scoring-delete-old","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8m ago","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":11,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"873847","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 8s","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 8s","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"873851","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 54s","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 54s","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
4490618629893703753
|
1443238505100604561
|
app_switch
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
New Tab
New Tab
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57516
57516
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
13m 15s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20709-call-scoring-delete-old
JY-20709-call-scoring-delete-old
Open commit on version control site
d3737cf
Merge branch 'master' into JY-20709-call-scoring-delete-old
Push
Commit pushed
Copy timestamp to clipboard
8m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
873847
1m 8s
1m 8s
SUCCESS job build-frontend
build-frontend
873851
1m 54s
1m 54s
SUCCESS job test-frontend...
|
NULL
|
|
62152
|
1341
|
7
|
2026-04-21T07:35:00.690503+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776756900690_m2.jpg...
|
Firefox
|
Pipelines - jiminny/app — Work
|
1
|
app.circleci.com/pipelines/github/jiminny/app
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
New Tab
New Tab
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57516
57516
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
13m 15s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20709-call-scoring-delete-old
JY-20709-call-scoring-delete-old
Open commit on version control site
d3737cf
Merge branch 'master' into JY-20709-call-scoring-delete-old
Push
Commit pushed
Copy timestamp to clipboard
8m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
873847
1m 8s
1m 8s
SUCCESS job build-frontend
build-frontend
873851
1m 54s
1m 54s
SUCCESS job test-frontend
test-frontend
873854
1m 42s
1m 42s
SUCCESS job build-backend
build-backend
873848
1m 29s
1m 29s
SUCCESS job phpstan
phpstan
873850
2m 3s
2m 3s
SUCCESS job setup
setup
873852
2m 0s
2m 0s
RUNNING job test
test
873853
2m 37s
2m 37s
RUNNING job test-backend-lint
test-backend-lint
873849
5m 0s
5m 0s
sonar_cloud
873855
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20709-call-scoring-delete-old
JY-20709-call-scoring-delete-old
Open commit on version control site
d3737cf
Merge branch 'master' into JY-20709-call-scoring-delete-old...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.09524601,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.08344415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.15791224,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.02144282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.1740359,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.38946527,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.40063846,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.39664805,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.42218676,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.013297873,"top":0.43335995,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.0,"top":0.45490822,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.4660814,"width":0.10721409,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.48922586,"width":0.07413564,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Go to home page","depth":9,"bounds":{"left":0.08726729,"top":0.061452515,"width":0.044215426,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Auto theme","depth":9,"bounds":{"left":0.9375,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open notifications","depth":9,"bounds":{"left":0.95212764,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open support menu","depth":9,"bounds":{"left":0.96675533,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open user menu","depth":9,"bounds":{"left":0.98138297,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"org avatar Current organization: jiminny","depth":9,"bounds":{"left":0.08693484,"top":0.10295291,"width":0.01462766,"height":0.035115723},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Home","depth":10,"bounds":{"left":0.08494016,"top":0.15083799,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Home","depth":12,"bounds":{"left":0.087765954,"top":0.1839585,"width":0.012965426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pipelines","depth":10,"bounds":{"left":0.08494016,"top":0.21308859,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines","depth":12,"bounds":{"left":0.083942816,"top":0.2462091,"width":0.020611702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Projects","depth":10,"bounds":{"left":0.08494016,"top":0.2753392,"width":0.01861702,"height":0.04668795},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Projects","depth":12,"bounds":{"left":0.0852726,"top":0.3084597,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":10,"bounds":{"left":0.08494016,"top":0.33798882,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":12,"bounds":{"left":0.08543883,"top":0.37071028,"width":0.01761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":10,"bounds":{"left":0.08494016,"top":0.40023944,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":12,"bounds":{"left":0.085605055,"top":0.4329609,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Runners","depth":10,"bounds":{"left":0.08494016,"top":0.46249002,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Runners","depth":12,"bounds":{"left":0.0852726,"top":0.49561054,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Org","depth":10,"bounds":{"left":0.08494016,"top":0.52474064,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Org","depth":12,"bounds":{"left":0.090259306,"top":0.55786115,"width":0.007978723,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Plan","depth":10,"bounds":{"left":0.08494016,"top":0.58699125,"width":0.01861702,"height":0.04668795},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Plan","depth":12,"bounds":{"left":0.08959442,"top":0.6201117,"width":0.00930851,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chunk","depth":10,"bounds":{"left":0.08726729,"top":0.9345571,"width":0.013962766,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Chunk","depth":12,"bounds":{"left":0.08726729,"top":0.96727854,"width":0.013962766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Dashboard All Pipelines","depth":14,"bounds":{"left":0.1171875,"top":0.1245012,"width":0.042054523,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All Pipelines","depth":15,"bounds":{"left":0.1278258,"top":0.12609737,"width":0.030086435,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Project Outline app","depth":14,"bounds":{"left":0.16472739,"top":0.1245012,"width":0.021775266,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":15,"bounds":{"left":0.17536569,"top":0.12609737,"width":0.009807181,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"app","depth":12,"bounds":{"left":0.1278258,"top":0.16400638,"width":0.016954787,"height":0.029130088},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.1278258,"top":0.16480447,"width":0.016954787,"height":0.027533919},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Overview","depth":12,"bounds":{"left":0.1171875,"top":0.19952115,"width":0.024102394,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Overview","depth":13,"bounds":{"left":0.1171875,"top":0.20151636,"width":0.024102394,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"bounds":{"left":0.14660904,"top":0.19952115,"width":0.021110373,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":13,"bounds":{"left":0.14660904,"top":0.20151636,"width":0.021110373,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":12,"bounds":{"left":0.17303856,"top":0.19952115,"width":0.020611702,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":13,"bounds":{"left":0.17303856,"top":0.20151636,"width":0.020611702,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lightning Manage triggers","depth":12,"bounds":{"left":0.87017953,"top":0.16400638,"width":0.057845745,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage triggers","depth":14,"bounds":{"left":0.88613695,"top":0.17318435,"width":0.03656915,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Trigger Pipeline","depth":12,"bounds":{"left":0.9333444,"top":0.16400638,"width":0.0546875,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pipelines All pipelines my-pipelines-filter","depth":12,"bounds":{"left":0.1171875,"top":0.23782921,"width":0.053523935,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All pipelines","depth":15,"bounds":{"left":0.13081782,"top":0.24700718,"width":0.026263298,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"app Project Filter. Selected \"app\"","depth":12,"bounds":{"left":0.17337102,"top":0.23782921,"width":0.034242023,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"app","depth":15,"bounds":{"left":0.18567154,"top":0.24700718,"width":0.00831117,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All branches Branch Filter. Selected \"All branches\"","depth":12,"bounds":{"left":0.21027261,"top":0.23782921,"width":0.053025264,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All branches","depth":15,"bounds":{"left":0.22257313,"top":0.24700718,"width":0.027094414,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start Time Cutoff date Arrow Drop Down","depth":12,"bounds":{"left":0.26595744,"top":0.23782921,"width":0.051030584,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Cutoff date","depth":14,"bounds":{"left":0.27825797,"top":0.24700718,"width":0.025099734,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"All statuses Arrow Drop Down","depth":12,"bounds":{"left":0.3196476,"top":0.23782921,"width":0.043218084,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All","depth":13,"bounds":{"left":0.32396942,"top":0.24700718,"width":0.0066489363,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"statuses","depth":13,"bounds":{"left":0.33061835,"top":0.24700718,"width":0.01861702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filter Display options","depth":12,"bounds":{"left":0.9333444,"top":0.2386273,"width":0.0546875,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Display options","depth":13,"bounds":{"left":0.94830453,"top":0.24780527,"width":0.034075797,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pipeline","depth":13,"bounds":{"left":0.12250665,"top":0.3196329,"width":0.015292553,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Status","depth":13,"bounds":{"left":0.28740028,"top":0.3196329,"width":0.012632979,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Workflow","depth":13,"bounds":{"left":0.34424868,"top":0.3196329,"width":0.018450798,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Checkout source","depth":13,"bounds":{"left":0.5731383,"top":0.3196329,"width":0.03274601,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trigger event","depth":13,"bounds":{"left":0.70611703,"top":0.3196329,"width":0.025764627,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Start","depth":13,"bounds":{"left":0.8640292,"top":0.3196329,"width":0.009640957,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration","depth":13,"bounds":{"left":0.90226066,"top":0.3196329,"width":0.01662234,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Actions","depth":13,"bounds":{"left":0.92952126,"top":0.3196329,"width":0.014793883,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":12,"bounds":{"left":0.12283909,"top":0.34796488,"width":0.00831117,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57516","depth":11,"bounds":{"left":0.12283909,"top":0.3643256,"width":0.013297873,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57516","depth":12,"bounds":{"left":0.12283909,"top":0.36552274,"width":0.013297873,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.","depth":12,"bounds":{"left":0.27759308,"top":0.3499601,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Running Running","depth":11,"bounds":{"left":0.28956118,"top":0.35155627,"width":0.03274601,"height":0.023144454},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Running","depth":12,"bounds":{"left":0.30019948,"top":0.35634476,"width":0.018118352,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13m 15s","depth":12,"bounds":{"left":0.28956118,"top":0.38028732,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"remain","depth":12,"bounds":{"left":0.3075133,"top":0.38028732,"width":0.016123671,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Info Outline","depth":11,"bounds":{"left":0.32430187,"top":0.37470073,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"build_accept_deploy","depth":11,"bounds":{"left":0.3444149,"top":0.35514766,"width":0.045545213,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":12,"bounds":{"left":0.3444149,"top":0.35594574,"width":0.045545213,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20709-call-scoring-delete-old","depth":12,"bounds":{"left":0.5728058,"top":0.34836394,"width":0.075465426,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20709-call-scoring-delete-old","depth":13,"bounds":{"left":0.5728058,"top":0.349162,"width":0.075465426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":13,"bounds":{"left":0.5728058,"top":0.36711892,"width":0.12765957,"height":0.033519555},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"d3737cf","depth":15,"bounds":{"left":0.5728058,"top":0.36871508,"width":0.018284574,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Merge branch 'master' into JY-20709-call-scoring-delete-old","depth":15,"bounds":{"left":0.5728058,"top":0.36871508,"width":0.11402926,"height":0.030726258},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":12,"bounds":{"left":0.7190825,"top":0.35594574,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":13,"bounds":{"left":0.73171544,"top":0.35594574,"width":0.034574468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":12,"bounds":{"left":0.8508976,"top":0.34836394,"width":0.027759308,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8m ago","depth":14,"bounds":{"left":0.8565492,"top":0.3575419,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":12,"bounds":{"left":0.89577794,"top":0.34836394,"width":0.028091755,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":11,"bounds":{"left":0.92918885,"top":0.35155627,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":11,"bounds":{"left":0.93982714,"top":0.35155627,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":11,"bounds":{"left":0.95046544,"top":0.35155627,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":11,"bounds":{"left":0.96110374,"top":0.35155627,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":11,"bounds":{"left":0.97174203,"top":0.35155627,"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":"AXStaticText","text":"Jobs","depth":13,"bounds":{"left":0.26080453,"top":0.42657623,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":13,"bounds":{"left":0.28756648,"top":0.42418197,"width":0.41805187,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":14,"bounds":{"left":0.30285904,"top":0.42657623,"width":0.03374335,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"873847","depth":15,"bounds":{"left":0.33926198,"top":0.42657623,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 8s","depth":13,"bounds":{"left":0.90525264,"top":0.42418197,"width":0.013297873,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 8s","depth":14,"bounds":{"left":0.90525264,"top":0.42657623,"width":0.013297873,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":13,"bounds":{"left":0.28756648,"top":0.44972068,"width":0.41805187,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":14,"bounds":{"left":0.30285904,"top":0.4521149,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"873851","depth":15,"bounds":{"left":0.33776596,"top":0.4521149,"width":0.016123671,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 54s","depth":13,"bounds":{"left":0.90226066,"top":0.44972068,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 54s","depth":14,"bounds":{"left":0.90226066,"top":0.4521149,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":13,"bounds":{"left":0.28756648,"top":0.47525936,"width":0.41805187,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":14,"bounds":{"left":0.30285904,"top":0.47765362,"width":0.029753989,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"873854","depth":15,"bounds":{"left":0.3352726,"top":0.47765362,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 42s","depth":13,"bounds":{"left":0.90226066,"top":0.47525936,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 42s","depth":14,"bounds":{"left":0.90226066,"top":0.47765362,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":13,"bounds":{"left":0.28756648,"top":0.5007981,"width":0.41805187,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":14,"bounds":{"left":0.30285904,"top":0.50319237,"width":0.032081116,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"873848","depth":15,"bounds":{"left":0.33759972,"top":0.50319237,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 29s","depth":13,"bounds":{"left":0.90226066,"top":0.5007981,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 29s","depth":14,"bounds":{"left":0.90226066,"top":0.50319237,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":13,"bounds":{"left":0.28756648,"top":0.5263368,"width":0.41805187,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":14,"bounds":{"left":0.30285904,"top":0.52873105,"width":0.018118352,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"873850","depth":15,"bounds":{"left":0.32363698,"top":0.52873105,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"2m 3s","depth":13,"bounds":{"left":0.90442157,"top":0.5263368,"width":0.01412899,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2m 3s","depth":14,"bounds":{"left":0.90442157,"top":0.52873105,"width":0.01412899,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":13,"bounds":{"left":0.28756648,"top":0.5518755,"width":0.41805187,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":14,"bounds":{"left":0.30285904,"top":0.55426973,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"873852","depth":15,"bounds":{"left":0.3181516,"top":0.55426973,"width":0.016788565,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"2m 0s","depth":13,"bounds":{"left":0.90458775,"top":0.5518755,"width":0.013962766,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2m 0s","depth":14,"bounds":{"left":0.90458775,"top":0.55426973,"width":0.013962766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test","depth":13,"bounds":{"left":0.28756648,"top":0.5774142,"width":0.41805187,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":14,"bounds":{"left":0.30285904,"top":0.5798085,"width":0.008643617,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"873853","depth":15,"bounds":{"left":0.31416222,"top":0.5798085,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"2m 37s","depth":13,"bounds":{"left":0.9019282,"top":0.5774142,"width":0.01662234,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2m 37s","depth":14,"bounds":{"left":0.9019282,"top":0.5798085,"width":0.01662234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test-backend-lint","depth":13,"bounds":{"left":0.28756648,"top":0.6029529,"width":0.41805187,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":14,"bounds":{"left":0.30285904,"top":0.60534716,"width":0.03873005,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"873849","depth":15,"bounds":{"left":0.34424868,"top":0.60534716,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"5m 0s","depth":13,"bounds":{"left":0.90458775,"top":0.6029529,"width":0.013962766,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"5m 0s","depth":14,"bounds":{"left":0.90458775,"top":0.60534716,"width":0.013962766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sonar_cloud","depth":14,"bounds":{"left":0.30285904,"top":0.6308859,"width":0.02642952,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"873855","depth":15,"bounds":{"left":0.33194813,"top":0.6308859,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":12,"bounds":{"left":0.27759308,"top":0.6715882,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":11,"bounds":{"left":0.28956118,"top":0.67318434,"width":0.033410903,"height":0.022745412},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":12,"bounds":{"left":0.30019948,"top":0.6775738,"width":0.018783245,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":11,"bounds":{"left":0.3444149,"top":0.6763767,"width":0.03507314,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":12,"bounds":{"left":0.3444149,"top":0.6771748,"width":0.03507314,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":11,"bounds":{"left":0.38480717,"top":0.67917,"width":0.011136968,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20709-call-scoring-delete-old","depth":12,"bounds":{"left":0.5728058,"top":0.669992,"width":0.075465426,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20709-call-scoring-delete-old","depth":13,"bounds":{"left":0.5728058,"top":0.6707901,"width":0.075465426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":13,"bounds":{"left":0.5728058,"top":0.688747,"width":0.12765957,"height":0.033519555},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"d3737cf","depth":15,"bounds":{"left":0.5728058,"top":0.6903432,"width":0.018284574,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Merge branch 'master' into JY-20709-call-scoring-delete-old","depth":15,"bounds":{"left":0.5728058,"top":0.6903432,"width":0.11402926,"height":0.030726258},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8435212030830691813
|
1514735348209411729
|
app_switch
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
New Tab
New Tab
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57516
57516
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
13m 15s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20709-call-scoring-delete-old
JY-20709-call-scoring-delete-old
Open commit on version control site
d3737cf
Merge branch 'master' into JY-20709-call-scoring-delete-old
Push
Commit pushed
Copy timestamp to clipboard
8m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
873847
1m 8s
1m 8s
SUCCESS job build-frontend
build-frontend
873851
1m 54s
1m 54s
SUCCESS job test-frontend
test-frontend
873854
1m 42s
1m 42s
SUCCESS job build-backend
build-backend
873848
1m 29s
1m 29s
SUCCESS job phpstan
phpstan
873850
2m 3s
2m 3s
SUCCESS job setup
setup
873852
2m 0s
2m 0s
RUNNING job test
test
873853
2m 37s
2m 37s
RUNNING job test-backend-lint
test-backend-lint
873849
5m 0s
5m 0s
sonar_cloud
873855
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20709-call-scoring-delete-old
JY-20709-call-scoring-delete-old
Open commit on version control site
d3737cf
Merge branch 'master' into JY-20709-call-scoring-delete-old...
|
NULL
|
|
62310
|
1346
|
3
|
2026-04-21T07:49:33.751080+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757773751_m1.jpg...
|
PhpStorm
|
faVsco.js – SyncObjects.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
createSyncJob
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
namespace Jiminny\Console\Commands\Crm;
use Jiminny\Console\Commands\Command;
use Jiminny\Jobs\Crm\SyncObjects as SyncObjectsJob;
use Jiminny\Models\Team;
class SyncObjects extends Command
{
private const int STAGGER_DELAY_SECONDS = 2;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'crm:sync-objects {team?} {--sync}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sync remote CRM objects.';
/**
* Execute the console command.
*/
public function handle(): void
{
$teamId = $this->argument('team');
$teams = [];
if ($teamId) {
$teams[] = Team::idOrUuId($teamId);
} else {
$teams = Team::where('status', Team::STATUS_ACTIVE)->get();
}
$dispatchIndex = 0;
foreach ($teams as $team) {
$config = $team->getCrmConfiguration();
if ($config->getAttribute('sync_objects') === false) {
continue;
}
if ($team->getAttribute('owner_id') === null) {
$this->error(sprintf('Team %s (%s) is not yet assigned an owner. skipping...', $team->getName(), $team->getUuid()));
continue;
}
if ($config->getAttribute('over_quota_at') || $config->getAttribute('api_disabled_at')) {
$this->error(sprintf('Team %s (%s) API unavailable... skipping...', $team->getName(), $team->getUuid()));
continue;
}
$delay = $dispatchIndex * self::STAGGER_DELAY_SECONDS;
$lastSyncedAt = $config->getAttribute('last_synced_at');
$this->info(
sprintf(
'Syncing objects for %s (%s) since %s (delay: %ds)',
$team->getName(),
$team->getUuid(),
$lastSyncedAt?->toDateTimeString() ?? 'never',
$delay
)
);
$this->dispatch((new SyncObjectsJob($team))->delay(now()->addSeconds($delay)));
$dispatchIndex++;
}
}
}
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
27
9
23
3
105
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM team_features where team_id = 1;
SELECT * FROM teams WHERE name LIKE '%Vixio%'; # 340,270,11922
SELECT * FROM users WHERE team_id = 340; # 12015
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 340
and sa.provider = 'salesforce';
# and sa.provider = 'salesloft';
select * from crm_fields where crm_configuration_id = 270 and object_type = 'event';
# 125558 - Event Type - Event_Type__c
# 125552 - Event Status - Event_Status__c
SELECT * FROM sidekick_settings WHERE team_id = 340;
SELECT * FROM crm_field_values WHERE crm_field_id in (125552);
select * from activities where crm_configuration_id = 270
and type = 'conference' and crm_provider_id IS NOT NULL
and actual_start_time > '2024-09-16 09:00:00' order by scheduled_start_time;
SELECT * FROM activities WHERE id = 20871677;
SELECT * FROM crm_field_data WHERE activity_id = 20871677;
select * from crm_layouts where crm_configuration_id = 270;
select * from crm_layout_entities where crm_layout_id in (886,887);
SELECT * FROM crm_configurations WHERE id = 270;
select * from playbooks where team_id = 340; # 1514
select * from groups where team_id = 340;
SELECT * FROM crm_fields WHERE id IN (125393, 125401);
select g.name as 'team name', p.name as 'playbook name', f.label as 'activity type field' from groups g
join playbooks p on g.playbook_id = p.id
join crm_fields f on p.activity_field_id = f.id
where g.team_id = 340;
SELECT * FROM activities WHERE uuid_to_bin('0c180357-67d2-419e-a8c3-b832a3490770') = uuid; # 20448716
select * from crm_field_data where object_id = 20448716;
select * from activities where crm_configuration_id = 270 and provider = 'salesloft' order by id desc;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%CybSafe%'; # 343,273,12008
select * from opportunities where team_id = 343;
select * from opportunities where team_id = 343 and crm_provider_id = '18099102526';
select * from opportunities where team_id = 343 and account_id = 945217482;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 343
and sa.provider = 'hubspot';
select * from accounts where team_id = 343 order by name asc;
select * from stages where crm_configuration_id = 273 and type = 'opportunity';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Voyado%'; # 353,283,12143
SELECT * FROM activities WHERE crm_configuration_id = 283 and account_id = 3777844 order by id desc;
SELECT * FROM accounts WHERE team_id = 353 AND name LIKE '%Salesloft%';
SELECT * FROM activities WHERE id = 20717903;
select * from participants where activity_id IN (20929172,20928605,20928468,20926272,20926271,20926270,20926269,20916499,20916454,20916436,20916435,20900015,20900014,20900013,20897312,20897243,20897241,20897237,20897232,20897229,20893648,20893231,20893230,20893229,20893228,20889784,20885039,20885038,20885037,20885036,20885035,20882728,20882708,20882703,20882702,20869828,20869811,20869806,20869801,20869799,20869798,20869796,20869795,20869794,20869761,20869760,20869759,20868688,20868687,20850340,20847195,20841710,20833967,20827021,20825307,20825305,20825297,20824615,20824400,20823927,20821760,20795588,20794233,20794057,20793710,20785811,20781789,20781394,20781307,20762651,20758453,20758282,20757323,20756643,20756636,20756629,20756627,20756606,20756605,20756604,20756603,20756602,20756600,20756599,20756598,20756595,20756594,20756589,20756587,20756577,20756573,20748918,20748386,20748385,20748384,20748383,20748382,20748381,20748380,20748379,20748377,20748375,20748373,20743301,20717905,20717904,20717903,20717901,20717899);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 353
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%modern world business solutions%'; # 345,275,12016, [EMAIL]
SELECT * FROM activities WHERE uuid_to_bin('3921d399-3fef-4609-a291-b0097a166d43') = uuid;
# id: 20940638, user: 12022, contact: 5305871
SELECT * FROM activity_summary_logs WHERE activity_id = 20940638;
select * from contacts where team_id = 345 and crm_provider_id = '30891432415' order by name asc; # 5305871
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 345
and sa.provider = 'hubspot';
select * from users where team_id = 345 and id = 12022;
SELECT * FROM crm_profiles WHERE user_id = 12022;
SELECT * FROM participants WHERE activity_id = 20940638;
SELECT * FROM users u
JOIN crm_profiles cp ON u.id = cp.user_id
WHERE u.team_id = 345;
select * from contacts where team_id = 345 and crm_provider_id = '30880813535' order by name desc; # 5305871
select * from team_features where team_id = 345;
SELECT * FROM activities WHERE uuid_to_bin('11701e2d-2f82-4dab-a616-1db4fad238df') = uuid; # 21115197
SELECT * FROM participants WHERE activity_id = 20897406;
SELECT * FROM activities WHERE uuid_to_bin('63ba55cd-1abc-447d-83da-0137000005b7') = uuid; # 20953912
SELECT * FROM activities WHERE crm_configuration_id = 275 and provider = 'ringcentral' and title like '%1252629100%';
SELECT * FROM activities WHERE id = 20946641;
SELECT * FROM crm_profiles WHERE user_id = 10211;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120,97,10984, [EMAIL]
SELECT * FROM opportunities WHERE crm_configuration_id = 97 and crm_provider_id = '006N1000006c5PpIAI';
select * from stages where crm_configuration_id = 97 and type = 'opportunity';
select * from opportunities where team_id = 120;
select * from crm_configurations crm join teams t on crm.id = t.crm_id
where 1=1
AND t.current_billing_plan IS NOT NULL
AND crm.auto_sync_activity = 0
and crm.provider = 'hubspot';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Exclaimer%'; # 270,205,10053,[EMAIL]
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 270
and sa.provider = 'salesforce';
SELECT * FROM activities WHERE uuid_to_bin('b54df794-2a9a-4957-8d80-09a600ead5f8') = uuid; # 21637956
SELECT * FROM crm_profiles WHERE user_id = 11446;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Cygnetise%'; # 372,300,12554, [EMAIL]
select * from playbooks where team_id = 372;
select * from crm_fields where crm_configuration_id = 300 and object_type = 'event'; # 141340
SELECT * FROM crm_field_values WHERE crm_field_id = 141340;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 372
and sa.provider = 'salesforce';
select * from crm_profiles where crm_configuration_id = 300;
SELECT * FROM crm_configurations WHERE team_id = 372;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Planday%'; # 291,242,11501,[EMAIL]
SELECT * FROM opportunities WHERE team_id = 291 and crm_provider_id = '006bG000005DO86QAG'; # 3207756
select * from crm_field_data where object_id = 3207756;
SELECT * FROM crm_fields WHERE id = 111834;
select f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value
FROM crm_fields f
JOIN crm_field_data fd ON f.id = fd.crm_field_id
WHERE f.crm_configuration_id = 242
AND f.object_type = 'opportunity'
AND fd.object_id IN (3207756)
ORDER BY fd.object_id, fd.updated_at;
SELECT * FROM crm_configurations WHERE auto_connect = 1;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150,[EMAIL]
select * from group_deal_risk_types drgt join groups g on drgt.group_id = g.id
where g.team_id = 187;
select * from `groups` where team_id = 187;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 187
and sa.provider = 'salesforce';
# Destination - 98870 - Destination__c
# Stage - 79014 - StageName
# Land Arrangement - 98856 - Land_Arrangement__c
# Flight - 98848 - Flight__c
# Last activity date - 98812 - LastActivityDate
# Last modified date - 98809 - LastModifiedDate
# Last inbound mail timestamp - 99151 - Last_Inbound_Mail_Timestamp__c
# next call - 98864 - Next_Call__c
select * from crm_fields where crm_configuration_id = 209 and object_type = 'opportunity';
SELECT * FROM crm_layouts WHERE crm_configuration_id = 209;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;
select * from opportunities where team_id = 187 and name LIKE'%Muriel Sal%';
select * from opportunities where team_id = 187 and user_id = 9951 and is_closed = 0;
select * from activities where opportunity_id = 3538248;
SELECT * FROM crm_profiles WHERE user_id = 8150;
select * from deal_risks where opportunity_id = 3538248;
select * from teams where crm_id IS NULL;
SELECT opp.id AS opportunity_id,
u.group_id AS group_id,
MAX(
CASE
WHEN a.type IN ("sms-inbound", "sms-outbound") THEN a.created_at
ELSE a.actual_end_time
END) as last_date
FROM opportunities opp
left join activities a on a.opportunity_id = opp.id
inner join users u on opp.user_id = u.id
where opp.user_id IN (9951)
AND opp.is_closed = 0
and a.status IN ('completed', 'received', 'delivered') OR a.status IS NULL
group by opp.id;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Cybsafe%'; # 343,301,12008,[EMAIL]
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 343
and sa.provider = 'hubspot';
SELECT * FROM crm_profiles WHERE crm_configuration_id = 301;
SELECT * FROM contacts WHERE id = 6612363;
SELECT * FROM accounts WHERE id = 4235676;
SELECT * FROM opportunities WHERE crm_configuration_id = 301 and crm_provider_id = 32983784868;
select * from opportunity_stages where opportunity_id = 4503759;
# SELECT * FROM opportunities WHERE id = 4569937;
select * from activities where crm_configuration_id = 301;
SELECT * FROM activities WHERE uuid_to_bin('d3b2b28b-c3d0-4c2d-8ed0-eef42855278a') = uuid; # 26330370
SELECT * FROM participants WHERE activity_id = 26330370;
SELECT * FROM teams WHERE id = 375;
select * from playbooks where team_id = 375;
select * from stages where crm_configuration_id = 301 and type = 'opportunity';
select * from teams;
select * from contact_roles;
SELECT * FROM opportunities WHERE team_id = 343 and user_id = 12871 and close_date >= '2024-11-01';
select * from users u join crm_profiles cp on cp.user_id = u.id where u.team_id = 343;
SELECT * FROM crm_field_data WHERE object_id = 3771706;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 343
and sa.provider = 'hubspot';
SELECT * FROM crm_fields WHERE crm_configuration_id = 301 and object_type = 'opportunity'
and crm_provider_id LIKE "%traffic_light%";
SELECT * FROM crm_field_values WHERE crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531);
SELECT fd.* FROM opportunities o
JOIN crm_field_data fd ON o.id = fd.object_id
WHERE o.team_id = 343
# and o.user_id IS NOT NULL
and fd.crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531)
and fd.value != ''
order by value desc
# group by o.id
;
SELECT * FROM opportunities WHERE id = 3769843;
SELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150, [EMAIL]
SELECT * FROM crm_layouts WHERE crm_configuration_id = 209;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Funding Circle%'; # 220,177,8603,[EMAIL]
SELECT * FROM activities WHERE uuid_to_bin('7a40e99b-3b37-4bb1-b983-325b81801c01') = uuid; # 23139839
SELECT * FROM opportunities WHERE id = 3855992;
SELECT * FROM users WHERE name LIKE '%Angus Pollard%'; # 8988
SELECT * FROM teams WHERE name LIKE '%Story Terrace%'; # 379, 307, 12894
SELECT * FROM crm_fields WHERE crm_configuration_id = 307 and object_type != 'opportunity';
select * from contacts where team_id = 379 and name like '%bebro%'; # 5874411, crm: 77229348507
SELECT * FROM crm_field_data WHERE object_id = 5874411;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 379
and sa.provider = 'hubspot';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%mentio%'; # 117, 94, 6371, [EMAIL]
SELECT * FROM activities WHERE uuid_to_bin('82939311-1af0-4506-8546-21e8d1fdf2c1') = uuid;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Tourlane%'; # 187, 209, 8150, [EMAIL]
SELECT * FROM opportunities WHERE team_id = 187 and crm_provider_id = '006Se000008xfvNIAQ'; # 3537793
select * from generic_ai_prompts where subject_id = 3537793;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120, 97, 10984, [EMAIL]
SELECT * FROM crm_configurations WHERE id = 97;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 97;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 355;
SELECT * FROM crm_fields WHERE id = 32682;
select cfd.value, o.* from opportunities o
join crm_field_data cfd on o.id = cfd.object_id and cfd.crm_field_id = 32682
where team_id = 120
and cfd.value != ''
;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 120
and sa.provider = 'salesforce';
select * from opportunities where team_id = 120 and crm_provider_id = '006N1000007X8MAIA0';
SELECT * FROM crm_field_data WHERE object_id = 2313439;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE id = 410;
SELECT * FROM teams WHERE name LIKE '%Local Business Oxford%';
select * from scorecards where team_id = 410;
select * from scorecard_rules;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Funding%'; # 220, 177, 8603, [EMAIL]
select * from activities a
join opportunities o on a.opportunity_id = o.id
join users u on o.user_id = u.id
where a.crm_configuration_id = 177 and a.type LIKE '%email-out%'
# and a.actual_end_time > '2024-12-16 00:00:00'
# and o.remotely_created_at > '2024-12-01 00:00:00'
# and u.group_id = 1014
and u.id = 9021
order by a.id desc;
SELECT * FROM opportunities WHERE id in (3981384,4017346);
SELECT * FROM users WHERE team_id = 220 and id IN (8775, 11435);
select * from users where id = 9021;
select * from inboxes where user_id = 9021;
select * from inbox_emails where inbox_id = 1349 and email_date > '2024-12-18 00:00:00';
select * from email_messages where team_id = 220
and orig_date > '2024-12-16 00:00:00' and orig_date < '2024-12-19 00:00:00'
and subject LIKE '%Personal%'
# and 'from' = '[EMAIL]'
;
select * from activities a
join opportunities o on a.opportunity_id = o.id
where a.user_id = 9021 and a.type LIKE '%email-out%'
and a.actual_end_time > '2024-12-18 00:00:00'
and o.user_id IS NOT NULL
and o.remotely_created_at > '2024-12-01 00:00:00'
order by a.id desc;
SELECT * FROM opportunities WHERE team_id = 220 and name LIKE '%Right Car move Limited%' and id = 3966852;
select * from activities where crm_configuration_id = 177 and type LIKE '%email%' and opportunity_id = 3966852 order by id desc;
select * from team_settings where name IN ('useCloseDate');
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Hurree%'; # 104, 81, 6175, [EMAIL]
SELECT * FROM opportunities WHERE team_id = 104 and name = 'PropOp';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 104
and sa.provider = 'hubspot';
select * from crm_configurations where last_synced_at > '2025-01-19 01:00:00'
select * from teams where crm_id IS NULL;
select t.name as 'team', u.name as 'owner', u.email, u.phone
from teams t
join activity_providers ap on t.id = ap.team_id
join users u on t.owner_id = u.id
where 1=1
and t.status = 'active'
and ap.is_enabled = 1
# and u.status = 1
and ap.provider = 'ms-teams';
select * from crm_configurations where provider = 'bullhorn'; # 344
SELECT * FROM teams WHERE id = 442; # 14293
select * from users where team_id = 442;
select * from social_accounts sa where sa.sociable_id = 14293;
select * from invitations where team_id = 442;
# [PASSWORD_DOTS]
SELECT * FROM users WHERE email LIKE '%[EMAIL]%'; # 14022
SELECT * FROM teams WHERE id = 429;
select * from opportunities where team_id = 429 and crm_provider_id IN (16157415775, 22246219645);
select * from activities where opportunity_id in (4340436,4353519);
select * from transcription where activity_id IN (25630961,25381771);
select * from generic_ai_prompts where subject_id IN (4353519);
SELECT
a.id as activity_id,
a.opportunity_id,
a.type as activity_type,
a.language,
CONCAT(a.title, a.description) AS mail_content,
e.from AS mail_from,
e.to AS mail_to,
e.subject AS mail_subject,
e.body AS mail_body,
p.type as prompt_type,
p.status as prompt_status,
p.content AS prompt_content,
a.actual_start_time as created_at
FROM activities a
LEFT JOIN ai_prompts p ON a.transcription_id = p.transcription_id AND p.deleted_at IS NULL
LEFT JOIN email_messages e ON a.id = e.activity_id
WHERE a.actual_start_time > '2024-01-01 00:00:00'
AND a.opportunity_id IN (4353519)
AND a.status IN ('completed', 'received', 'delivered')
AND a.deleted_at IS NULL
AND a.type NOT IN ('sms-inbound', 'sms-outbound')
ORDER BY a.opportunity_id ASC, a.id ASC;
SELECT * FROM users WHERE name LIKE '%George Fierstone%'; # 14293
SELECT * FROM teams WHERE id = 442;
SELECT * FROM crm_configurations WHERE id = 344;
select * from team_features where team_id = 442;
select * from groups where team_id = 442;
select * from playbooks where team_id = 442;
select * from playbook_categories where playbook_id = 1729;
select * from crm_fields where crm_configuration_id = 344 and id = 172024;
SELECT * FROM crm_field_values WHERE crm_field_id = 172024;
select * from crm_layouts where crm_configuration_id = 344;
select * from playbook_layouts where playbook_id = 1729;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 221, 9444
select s.*
# , s.sent_at, u.name, a.*
from activity_summary_logs s
inner join activities a on a.id = s.activity_id
inner join users u on u.id = a.user_id
where a.crm_configuration_id = 356
and s.sent_at > date_sub(now(), interval 60 day)
order by a.actual_end_time desc;
select * from activities a
# inner join activity_summary_logs s on s.activity_id = a.id
where a.crm_configuration_id = 356 and a.actual_end_time > date_sub(now(), interval 60 day)
# and a.crm_provider_id is not null
# and provider <> 'ringcentral'
and status = 'completed'
order by a.actual_end_time desc;
select * from teams order by id desc; # 17328, 32, 17830, [EMAIL]
SELECT * FROM users;
SELECT * FROM users where team_id = 260 and status = 1; # 201 - 150 active
SELECT * FROM teams WHERE id = 260;
select * from team_settings where team_id = 260;
select * from crm_configurations where team_id = 260;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 356;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 1184;
select * from accounts where crm_configuration_id = 221 order by id desc; # 7000
select * from leads where crm_configuration_id = 221 order by id desc; # 0
select * from contacts where crm_configuration_id = 221 order by id desc; # 200 000
select * from opportunities where crm_configuration_id = 221 order by id desc; # 0
select * from crm_profiles where crm_configuration_id = 221 order by id desc; # 23
select * from crm_fields where crm_configuration_id = 221;
select * from crm_field_values where crm_field_id = 5302 order by id desc;
select * from crm_layouts where crm_configuration_id = 221 order by id desc;
select * from stages where crm_configuration_id = 221 order by id desc;
select * from accounts where crm_configuration_id = 356 order by id desc; # 7000
select * from leads where crm_configuration_id = 356 order by id desc; # 0
select * from contacts where crm_configuration_id = 356 order by id desc; # 200 000
select * from opportunities where crm_configuration_id = 356 order by id desc; # 0
select * from crm_profiles where crm_configuration_id = 356 order by id desc; # 23
select * from crm_fields where crm_configuration_id = 356;
select * from crm_field_values where crm_field_id = 5302 order by id desc;
select * from crm_layouts where crm_configuration_id = 356 order by id desc;
select * from stages where crm_configuration_id = 356 order by id desc;
select * from playbooks where team_id = 260 order by id desc; # 4 (2 deleted)
select * from groups where team_id = 260 order by id desc; # 27 groups, (2 deleted)
select * from playbook_layouts where playbook_id IN (1410,1409,1276,1254); # 4
select ce.* from calendars c
join users u on c.user_id = u.id
join calendar_events ce on c.id = ce.calendar_id
where u.team_id = 260
and (ce.start_time > '2025-02-21 00:00:00')
;
# calendar events 1207
#
select * from opportunities where team_id = 260;
SELECT * FROM crm_field_data WHERE object_id = 4696496;
select * from activities where crm_configuration_id = 356 and crm_provider_id IS NOT NULL;
select * from activities where crm_configuration_id IN (221) and provider NOT IN ('ms-teams', 'uploader', 'zoom-bot')
# and type = 'conference' and status = 'scheduled' and activities.is_internal = 0
and created_at > '2024-03-01 00:00:00'
order by id desc; # 880 000, ringcentral, avaya
SELECT * FROM participants WHERE activity_id = 26371744;
# all activities 942 000 +
# conference 7385 - scheduled 984 - external 343
select * from activities where id = 26321812;
select * from participants where activity_id = 26321812;
select * from participants where activity_id in (26414510,26414514,26414516,26414604,26414653,26414655);
select * from leads where id in (720428,689175,731546,645866,621037);
select * from users where id = 13841;
select * from opportunities where user_id = 9541;
select * from stages where id = 15900;
select * from accounts where
# id IN (4160055,5053725,4965303,4896434)
id in (4584518,3249934,3218025,3891133,3399450,4172999,4485161,3101785,4587203,3070816,2870343,2870341,3563940,4550846,3424464,3249963,2870342)
;
select * from activities where id = 26654935;
SELECT * FROM opportunities WHERE id = 4803458;
SELECT * FROM opportunities where team_id = 260 and user_id = 13841 AND stage_id = 15900;
SELECT id, uuid, provider, type, lead_id, account_id, contact_id, opportunity_id, stage_id, status, recording_state, title, actual_start_time, actual_end_time
FROM activities WHERE user_id = 13841 AND opportunity_id IN (4729783, 4731717, 4731726, 4732064, 4732849, 4803458, 4813213);
SELECT DISTINCT
o.id, o.stage_id, s.name, a.title,
a.*
FROM activities a
# INNER JOIN tracks t ON a.id = t.activity_id
INNER JOIN users u ON a.user_id = u.id
INNER JOIN teams team ON u.team_id = team.id
INNER JOIN groups g ON u.group_id = g.id
INNER JOIN opportunities o ON a.opportunity_id = o.id
INNER JOIN stages s ON o.stage_id = s.id
WHERE
a.crm_configuration_id = 356
AND a.status IN ('completed', 'failed')
AND a.recording_state != 'stopped'
# and a.user_id = 13841
AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')
AND team.uuid = uuid_to_bin('a607fba7-452e-4683-b2af-00d6cb52c93c')
AND g.uuid = uuid_to_bin('b5d69e40-24a0-4c16-810b-5fa462299f94')
AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
# AND t.type IN ('audio', 'video')
AND (
(a.actual_start_time BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59')
OR
(
a.actual_start_time IS NULL
AND a.type IN ('sms-outbound', 'sms-inbound')
AND a.created_at BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59'
)
)
AND (
a.is_private = 0
OR (
a.is_private = 1
AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')
)
)
AND (
# s.id = 15900
s.uuid = uuid_to_bin('04ca1c26-c666-4268-a129-419c0acffd73')
OR s.uuid IS NULL -- Include records without opportunity stage
)
ORDER BY a.actual_end_time DESC;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Lead Forensics%'; # 190, 162, 8474, [EMAIL]
SELECT * FROM users WHERE team_id = 190;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 190
and sa.provider = 'hubspot';
select * from role_user where user_id = 8474;
select * from crm_configurations where provider = 'bullhorn';
SELECT * FROM opportunities WHERE uuid_to_bin('94578249-65ec-4205-90f2-7d1a7d5ab64a') = uuid;
SELECT * FROM users WHERE uuid_to_bin('26dbadeb-926f-4150-b11b-771b9d4c2f9a') = uuid;
SELECT * FROM opportunities WHERE id = 4732493;
select * from activities where opportunity_id = 4732493;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE id = 443; # 358, 14315, [EMAIL]
SELECT * FROM opportunities WHERE team_id = 443;
SELECT a.id, a.type, a.user_id, a.status, a.deleted_at, u.name, u.email, u.team_id as activity_team_id, u.status, u.deleted_at, t.name, t.status, s.team_id as stage_team_id
FROM activities AS a
JOIN stages AS s ON a.stage_id = s.id
JOIN users AS u ON u.id = a.user_id
JOIN teams AS t ON t.id = s.team_id
WHERE u.team_id <> s.team_id and t.id > 135;
SELECT
crm_configuration_id,
crm_provider_id,
COUNT(*) as duplicate_count,
GROUP_CONCAT(id) as stage_ids,
GROUP_CONCAT(name) as stage_names
FROM stages
GROUP BY crm_configuration_id, crm_provider_id
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC;
select * from stages where id IN (14898,14907);
select * from business_processes;
SELECT *
FROM crm_configurations
WHERE team_id IN (
SELECT team_id
FROM crm_configurations
GROUP BY team_id
HAVING COUNT(*) > 1
)
ORDER BY team_id;
SELECT *
FROM teams
WHERE crm_id IN (
SELECT crm_id
FROM teams
GROUP BY crm_id
HAVING COUNT(*) > 1
)
ORDER BY crm_id;
# [PASSWORD_DOTS]
select * from crm_configurations where provider = 'integration-app';
SELECT * FROM teams WHERE id = 443; # Correre Naturale 358 14315 [EMAIL]
select * from activities where crm_configuration_id = 358 order by actual_end_time desc;
select id, uuid, actual_end_time, crm_provider_id, is_internal, playbook_category_id, type, user_id, lead_id, contact_id, account_id, opportunity_id, status, title from activities where crm_configuration_id = 358 order by actual_end_time desc;
select * from team_features where team_id = 358;
select * from activity_summary_logs;
select * from teams where id = 406;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Sportfive%'; # 267, 202, 14637, [EMAIL]
select * from activities where crm_configuration_id = 202 order by actual_end_time desc;
SELECT * FROM users where id = 14637;
SELECT * FROM teams where id = 267;
SELECT * FROM groups where id = 1118;
select g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a
inner join users u on u.id = a.user_id
inner join groups g on g.id = u.group_id
where a.crm_configuration_id = 202
and a.is_internal = 0
and (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')
and a.type = 'conference'
and a.status != 'completed'
and a.external_id is not null
order by a.scheduled_start_time desc;
SELECT * FROM activities
WHERE crm_configuration_id = 202
AND status IN ('completed', 'failed')
AND recording_state != 'stopped'
AND type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
AND (is_private = 0 OR user_id = 14637)
AND (
(
actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'
) OR (
actual_start_time IS NULL
AND type IN ('sms-outbound', 'sms-inbound')
AND created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'
)
)
AND NOT EXISTS (
SELECT 1
FROM tracks
WHERE
tracks.activity_id = activities.id
AND tracks.type IN ('audio', 'video')
)
ORDER BY actual_end_time DESC;
SELECT DISTINCT
a.*
FROM activities a
INNER JOIN tracks t ON a.id = t.activity_id
INNER JOIN users u ON a.user_id = u.id
INNER JOIN teams team ON u.team_id = team.id
WHERE
a.crm_configuration_id = 202
AND a.status IN ('completed', 'failed')
AND a.recording_state != 'stopped'
# and a.user_id = 14637
AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
# AND t.type IN ('audio', 'video')
AND (
(a.actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59')
OR
(
a.actual_start_time IS NULL
AND a.type IN ('sms-outbound', 'sms-inbound')
AND a.created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'
)
)
AND (
a.is_private = 0
OR (
a.is_private = 1
AND a.user_id = 14637
)
)
ORDER BY a.actual_end_time DESC
;
SELECT DISTINCT a.*
FROM activities a
INNER JOIN users u ON a.user_id = u.id
INNER JOIN teams t ON u.team_id = t.id
# INNER JOIN tracks tr ON a.id = tr.activity_id
# INNER JOIN groups g ON u.group_id = g.id
WHERE 1=1
AND t.id = 267
# AND t.uuid = uuid_to_bin('aed4927b-f1ea-499e-94c3-83762fd233e8')
AND a.status IN ('completed', 'failed')
AND a.recording_state != 'stopped'
AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
# AND tr.type NOT IN ('audio', 'video')
AND (
a.is_private = 0
OR a.user_id = 14637
)
AND (
(a.actual_start_time BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59')
OR (
a.actual_start_time IS NULL
AND a.type IN ('sms-outbound', 'sms-inbound')
AND a.created_at BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59'
)
)
# and NOT EXISTS (
# SELECT 1
# FROM tracks t
# WHERE t.activity_id = a.id
# AND t.type IN ('audio', 'video')
# )
ORDER BY a.actual_end_time DESC;
SELECT * FROM tracks WHERE activity_id = 26485995;
select a.is_private, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a
inner join users u on u.id = a.user_id
where a.crm_configuration_id = 202
# and a.is_internal = 0
and (a.actual_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')
and a.type IN ("softphone","softphone-inbound","conference","sms-inbound")
and a.status IN ('completed', 'failed')
# and a.external_id is not null
order by a.actual_end_time desc;
select * from activities a where a.crm_configuration_id = 202
and a.actual_start_time between '2025-03-20 00:00:00' and '2025-03-21 00:00:00'
# AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
select g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a
inner join users u on u.id = a.user_id
inner join groups g on g.id = u.group_id
where a.crm_configuration_id = 202
and a.is_internal = 0
and (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')
and a.type = 'conference'
and a.status != 'completed'
and a.external_id is not null
order by a.scheduled_start_time desc;
SELECT * FROM teams WHERE name LIKE '%Tourlane%';
SELECT * FROM crm_fields WHERE crm_configuration_id = 209 and object_type = 'opportunity';
SELECT * FROM crm_field_data WHERE crm_field_id = 98809;
select * from users where status = 1 AND timezone = 'MDT';
select * from opportunities where id = 3769814;
select * from deal_risks where opportunity_id = 3769814;
select cp.* from crm_profiles cp
join users u on cp.user_id = u.id
join crm_configurations crm on cp.crm_configuration_id = crm.id
where crm.provider = 'hubspot' AND u.status = 1 AND log_notes != 'none';
select * from crm_fields where id = 154575;
select * from team_features where feature = 'SUPPORTS_SYNC_MISSING_CALL_DISPOSITIONS';
SELECT * FROM teams WHERE id = 176; # crm 148
select * from activities where crm_configuration_id = 148 and provider = 'hubspot' order by id desc;
select * from activity_providers where provider = 'amazon-connect';
select * from crm_fields cf
join crm_configurations crm on crm.id = cf.crm_configuration_id
where crm.provider = 'hubspot' and cf.object_type IN ('account', 'contact');
# [PASSWORD_DOTS]
SELECT * FROM users WHERE id IN (15415, 15418);
SELECT * FROM groups WHERE id IN (1805,1806);
SELECT * FROM playbooks WHERE id = 1860;
SELECT * FROM playbook_categories WHERE id = 38634;
SELECT * FROM crm_fields WHERE id = 189962;
SELECT * FROM teams WHERE name = 'Pulsar Group'; # 472, 380, 15138 [EMAIL]
SELECT * FROM crm_profiles WHERE user_id = 15415;
SELECT * FROM social_accounts WHERE sociable_id = 15415 and provider = 'salesforce';
select * from sidekick_settings where team_id = 472;
SELECT * FROM activities WHERE uuid_to_bin('452c58c7-b87c-4fdd-953e-d7af185e9588') = uuid; # 28617536, user: 15418
SELECT * FROM activities WHERE uuid_to_bin('399114ee-d3a8-458c-bff5-5f654658db0a') = uuid; # 28344407, user: 15415
SELECT * FROM activities WHERE uuid_to_bin('f0aa567f-0ab1-4bbb-96aa-37dcf184676b') = uuid; # 28580288, user: 15415
SELECT * FROM activities WHERE uuid_to_bin('50c086b1-2770-4bca-b5ae-6bac22ec426b') = uuid; # 28566069, user: 15415
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%TeamTailor%'; # 109, 218, 13969, [EMAIL]
select * from crm_configurations where id = 218;
SELECT * FROM activities WHERE uuid_to_bin('e39b5857-7fdb-4f5a-951a-8d3ca69bb1b0') = uuid; # 28338765
SELECT * FROM users WHERE id IN (13232, 13230);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 109
and sa.provider = 'salesforce';
0057R00000EPL5HQAX Inez Ekblad
1091cb81-5ea1-4951-a0ed-f00b568f0140 Triman Kaur
SELECT * FROM crm_profiles WHERE user_id IN (13232, 13230);
############################################################################################
SELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939 00UVg00000FLvnSMAT
SELECT * FROM crm_field_data WHERE activity_id = 28655939;
SELECT * FROM crm_fields WHERE id IN (94491,94493,94498);
SELECT * FROM users WHERE id = 13658;
SELECT * FROM teams WHERE id = 109;
SELECT * FROM crm_configurations WHERE id = 218;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 109
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Strengthscope%'; # 481, 390, 15420, [EMAIL]
SELECT * FROM stages WHERE crm_configuration_id = 390;
select * from business_processes where team_id = 481 and crm_configuration_id = 390;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 481
and sa.provider = 'salesforce';
SELECT * FROM users WHERE id = 15780; # team 462
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 462
and sa.provider = 'hubspot';
select * from teams where id = 495;
SELECT * FROM users WHERE id = 15794;
select * from social_accounts where sociable_id = 15794;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Flight%'; # 427, 333, 13752
SELECT * FROM accounts WHERE team_id = 427 and crm_provider_id = '668731000183444517';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Group GTI%'; # 495, 407, 15794
SELECT * FROM activities WHERE crm_configuration_id = 407
and status = 'completed' and type = 'conference'
order by id desc;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from permission_role;
select * from activities where crm_configuration_id = 407 and status = 'completed' order by id desc;
SELECT * FROM activities WHERE id = 29512773;
SELECT * FROM activities WHERE id IN (29042721,28991325,29002874);
SELECT al.* from activity_summary_logs al join activities a on a.id = al.activity_id
where a.crm_configuration_id = 407
# and a.id IN (29042721,28991325,29002874);
SELECT * FROM users WHERE id = 15794;
SELECT * FROM users WHERE team_id = 495;
SELECT * FROM social_accounts WHERE sociable_id = 15794;
SELECT * FROM opportunities WHERE team_id = 495 and name like '%OC:%';
SELECT * FROM contacts WHERE team_id = 495;
SELECT * FROM leads WHERE team_id = 495;
SELECT * FROM accounts WHERE team_id = 495;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 407;
SELECT * FROM crm_fields WHERE crm_configuration_id = 407;
SELECT * FROM crm_configurations WHERE id = 407;
SELECT * FROM opportunities WHERE team_id = 495 and close_date BETWEEN '2025-06-01' AND '2025-07-01'
and user_id IS NOT NULL and is_closed = 1 and is_won = 1;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Hamilton Court FX LLP%'; # 249, 187, 10103
SELECT * FROM activities WHERE uuid_to_bin('4659c2bb-9a49-484e-9327-a3d66f1e028c') = uuid; # 28951064
SELECT * FROM crm_fields WHERE crm_configuration_id = 187 and object_type IN ('tasks', 'event');
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Checkstep%'; # 325, 256, 11753
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 325
and sa.provider = 'hubspot';
SELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid; # 28611085
SELECT * FROM activities WHERE uuid_to_bin('980f0336-840b-4185-a5a9-30cf8b0749a8') = uuid; # 28719733
SELECT * FROM activity_summary_logs where activity_id = 28719733;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 356, 9444
SELECT * FROM activity_summary_logs where sent_at BETWEEN '2025-06-09 11:38:00' AND '2025-06-09 11:40:00';
SELECT * FROM leads WHERE crm_configuration_id = 356 and crm_provider_id = '230045001502770504'; # 823630
select * from activities where crm_configuration_id = 356 and lead_id = 841732;
SELECT * from activity_summary_logs al join activities a on a.id = al.activity_id
where a.crm_configuration_id = 356;
select * from activities where crm_configuration_id = 356
and actual_end_time between '2025-06-09 11:00:00' and '2025-06-09 12:00:00'
order by id desc;
select * from accounts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;
select * from leads where crm_configuration_id = 356 and crm_provider_id = '230045001514275654' order by id desc;
select * from contacts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;
select * from opportunities where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;
select * from team_features where team_id = 260;
select * from features where id IN (1,2,4,6,18,19,20,9,10,3,23,24,25,26,27);
SELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid;
select * from crm_fields;
select * from crm_layout_entities;
SELECT * FROM teams WHERE name LIKE '%Optable%';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Teamtailor%'; # 109, 218, 13969
SELECT * FROM crm_configurations WHERE id = 218;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 109
and sa.provider = 'salesforce';
SELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939
SELECT * FROM crm_field_data WHERE activity_id = 28655939;
SELECT * FROM crm_fields WHERE id in (94491,94493,94498);
select * from teams where crm_id IS NULL;
SELECT * FROM activities WHERE uuid_to_bin('71aa8a0c-9652-4ff6-bee7-d98ae60abef6') = uuid;
# [PASSWORD_DOTS]
select * from team_domains where team_id = 399;
SELECT * FROM teams WHERE name LIKE '%Rydoo%'; # 399, 318, 13207
select * from calendar_events where id = 5163781;
SELECT * FROM activities WHERE uuid_to_bin('be2cbc52-7fda-46a0-9ae0-25d9553eafc0') = uuid; # 29443896
SELECT * FROM participants WHERE activity_id = 29443896;
select * from contacts where crm_configuration_id = 318 and email = '[EMAIL]';
select * from leads where crm_configuration_id = 318 and email = '[EMAIL]';
select * from activities where user_id = 14937 order by created_at ;
select * from users where id = 14937;
select * from contacts where crm_configuration_id = 318 and email LIKE '%@strawberry.se';
select * from opportunities where crm_configuration_id = 318 and crm_provider_id = '006Sf00000D1WOAIA3';
select * from activities a join participants p on a.id = p.activity_id
where crm_configuration_id = 318 and a.updated_at > '2025-06-23T08:18:43Z';
# [PASSWORD_DOTS]
SELECT * FROM opportunities WHERE team_id = 379 and crm_provider_id = '39334518886';
SELECT * FROM opportunities WHERE team_id = 379 order by id desc;
SELECT * FROM teams WHERE id = 379;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 379 and sociable_id = 13852
and sa.provider = 'hubspot';
SELECT * FROM crm_configurations WHERE id = 307;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 307;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 1027;
SELECT * FROM crm_fields WHERE crm_configuration_id = 307
and id IN (144750,144855,145158,155227);
SELECT * FROM activities;
select * from activities
where created_at > '2025-07-01 00:00:00'
# and created_at < '2025-08-01 00:00:00'
and type not in ('email-outbound', 'email-inbound')
and account_id is null
and contact_id is null
and lead_id is null
and opportunity_id is not null
;
SELECT * FROM activities WHERE id IN (25344155, 25344296, 25501909, 28692187);
SELECT * FROM crm_configurations WHERE id in (335,301,200);
select * from crm_fields where crm_configuration_id = 230 and crm_provider_id = 'Age2__c';
SELECT * FROM teams WHERE name LIKE '%Resights%';
select * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';
select * from crm_configurations where provider = 'bullhorn'; # 344
select * from teams where id IN (442);
select * from activities
where crm_configuration_id = 177
and provider = 'amazon-connect'
order by id desc;
# and source <> 'gong';
select * from activity_providers where provider = 'amazon-connect';
SELECT * FROM activities WHERE uuid_to_bin('cec1993b-a7e5-4164-b74d-d680ea51d2f2') = uuid;
select * from crm_configurations where store_transcript = 1;
SELECT * FROM teams WHERE id IN (80);
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Sedna%'; # 277, 213, 12594
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 277
and sa.provider = 'salesforce';
select * from activities where crm_configuration_id = 213 and account_id = 2511502;
select * from crm_configurations where id = 213;
SELECT * FROM activities WHERE uuid_to_bin('35aa790a-8569-4544-8268-66f9a4a26804') = uuid; # 33981604
SELECT * FROM participants WHERE activity_id = 33981604;
SELECT * FROM crm_fields WHERE crm_configuration_id = 337 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 431
and sa.provider = 'salesforce';
SELECT * FROM activities WHERE uuid_to_bin('b5476c7d-19a8-491b-869d-676ea1e857b6') = uuid; # 33997223
select * from activity_summary_logs where activity_id = 33997223;
select * from activity_notes where activity_id = 33997223;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Abode%';
select * from features;
select * from teams t
where t.status = 'active'
and id NOT IN (select team_id from team_features wh...
|
[{"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":"master, menu","depth":5,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"createSyncJob","depth":4,"value":"createSyncJob","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"0 results","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Console\\Commands\\Crm;\n\nuse Jiminny\\Console\\Commands\\Command;\nuse Jiminny\\Jobs\\Crm\\SyncObjects as SyncObjectsJob;\nuse Jiminny\\Models\\Team;\n\nclass SyncObjects extends Command\n{\n private const int STAGGER_DELAY_SECONDS = 2;\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'crm:sync-objects {team?} {--sync}';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Sync remote CRM objects.';\n\n /**\n * Execute the console command.\n */\n public function handle(): void\n {\n $teamId = $this->argument('team');\n $teams = [];\n\n if ($teamId) {\n $teams[] = Team::idOrUuId($teamId);\n } else {\n $teams = Team::where('status', Team::STATUS_ACTIVE)->get();\n }\n\n $dispatchIndex = 0;\n\n foreach ($teams as $team) {\n $config = $team->getCrmConfiguration();\n\n if ($config->getAttribute('sync_objects') === false) {\n continue;\n }\n\n if ($team->getAttribute('owner_id') === null) {\n $this->error(sprintf('Team %s (%s) is not yet assigned an owner. skipping...', $team->getName(), $team->getUuid()));\n\n continue;\n }\n\n if ($config->getAttribute('over_quota_at') || $config->getAttribute('api_disabled_at')) {\n $this->error(sprintf('Team %s (%s) API unavailable... skipping...', $team->getName(), $team->getUuid()));\n\n continue;\n }\n\n $delay = $dispatchIndex * self::STAGGER_DELAY_SECONDS;\n\n $lastSyncedAt = $config->getAttribute('last_synced_at');\n $this->info(\n sprintf(\n 'Syncing objects for %s (%s) since %s (delay: %ds)',\n $team->getName(),\n $team->getUuid(),\n $lastSyncedAt?->toDateTimeString() ?? 'never',\n $delay\n )\n );\n\n $this->dispatch((new SyncObjectsJob($team))->delay(now()->addSeconds($delay)));\n\n $dispatchIndex++;\n }\n }\n}","depth":4,"value":"<?php\n\nnamespace Jiminny\\Console\\Commands\\Crm;\n\nuse Jiminny\\Console\\Commands\\Command;\nuse Jiminny\\Jobs\\Crm\\SyncObjects as SyncObjectsJob;\nuse Jiminny\\Models\\Team;\n\nclass SyncObjects extends Command\n{\n private const int STAGGER_DELAY_SECONDS = 2;\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'crm:sync-objects {team?} {--sync}';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Sync remote CRM objects.';\n\n /**\n * Execute the console command.\n */\n public function handle(): void\n {\n $teamId = $this->argument('team');\n $teams = [];\n\n if ($teamId) {\n $teams[] = Team::idOrUuId($teamId);\n } else {\n $teams = Team::where('status', Team::STATUS_ACTIVE)->get();\n }\n\n $dispatchIndex = 0;\n\n foreach ($teams as $team) {\n $config = $team->getCrmConfiguration();\n\n if ($config->getAttribute('sync_objects') === false) {\n continue;\n }\n\n if ($team->getAttribute('owner_id') === null) {\n $this->error(sprintf('Team %s (%s) is not yet assigned an owner. skipping...', $team->getName(), $team->getUuid()));\n\n continue;\n }\n\n if ($config->getAttribute('over_quota_at') || $config->getAttribute('api_disabled_at')) {\n $this->error(sprintf('Team %s (%s) API unavailable... skipping...', $team->getName(), $team->getUuid()));\n\n continue;\n }\n\n $delay = $dispatchIndex * self::STAGGER_DELAY_SECONDS;\n\n $lastSyncedAt = $config->getAttribute('last_synced_at');\n $this->info(\n sprintf(\n 'Syncing objects for %s (%s) since %s (delay: %ds)',\n $team->getName(),\n $team->getUuid(),\n $lastSyncedAt?->toDateTimeString() ?? 'never',\n $delay\n )\n );\n\n $this->dispatch((new SyncObjectsJob($team))->delay(now()->addSeconds($delay)));\n\n $dispatchIndex++;\n }\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":"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":"27","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"9","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"23","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"105","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT * FROM team_features where team_id = 1;\n\nSELECT * FROM teams WHERE name LIKE '%Vixio%'; # 340,270,11922\nSELECT * FROM users WHERE team_id = 340; # 12015\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 340\nand sa.provider = 'salesforce';\n# and sa.provider = 'salesloft';\n\nselect * from crm_fields where crm_configuration_id = 270 and object_type = 'event';\n# 125558 - Event Type - Event_Type__c\n# 125552 - Event Status - Event_Status__c\n\nSELECT * FROM sidekick_settings WHERE team_id = 340;\n\nSELECT * FROM crm_field_values WHERE crm_field_id in (125552);\n\nselect * from activities where crm_configuration_id = 270\nand type = 'conference' and crm_provider_id IS NOT NULL\nand actual_start_time > '2024-09-16 09:00:00' order by scheduled_start_time;\n\nSELECT * FROM activities WHERE id = 20871677;\nSELECT * FROM crm_field_data WHERE activity_id = 20871677;\n\nselect * from crm_layouts where crm_configuration_id = 270;\nselect * from crm_layout_entities where crm_layout_id in (886,887);\n\nSELECT * FROM crm_configurations WHERE id = 270;\n\nselect * from playbooks where team_id = 340; # 1514\nselect * from groups where team_id = 340;\nSELECT * FROM crm_fields WHERE id IN (125393, 125401);\n\nselect g.name as 'team name', p.name as 'playbook name', f.label as 'activity type field' from groups g\njoin playbooks p on g.playbook_id = p.id\njoin crm_fields f on p.activity_field_id = f.id\nwhere g.team_id = 340;\n\nSELECT * FROM activities WHERE uuid_to_bin('0c180357-67d2-419e-a8c3-b832a3490770') = uuid; # 20448716\nselect * from crm_field_data where object_id = 20448716;\n\nselect * from activities where crm_configuration_id = 270 and provider = 'salesloft' order by id desc;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%CybSafe%'; # 343,273,12008\nselect * from opportunities where team_id = 343;\nselect * from opportunities where team_id = 343 and crm_provider_id = '18099102526';\nselect * from opportunities where team_id = 343 and account_id = 945217482;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from accounts where team_id = 343 order by name asc;\n\nselect * from stages where crm_configuration_id = 273 and type = 'opportunity';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Voyado%'; # 353,283,12143\nSELECT * FROM activities WHERE crm_configuration_id = 283 and account_id = 3777844 order by id desc;\nSELECT * FROM accounts WHERE team_id = 353 AND name LIKE '%Salesloft%';\nSELECT * FROM activities WHERE id = 20717903;\n\nselect * from participants where activity_id IN (20929172,20928605,20928468,20926272,20926271,20926270,20926269,20916499,20916454,20916436,20916435,20900015,20900014,20900013,20897312,20897243,20897241,20897237,20897232,20897229,20893648,20893231,20893230,20893229,20893228,20889784,20885039,20885038,20885037,20885036,20885035,20882728,20882708,20882703,20882702,20869828,20869811,20869806,20869801,20869799,20869798,20869796,20869795,20869794,20869761,20869760,20869759,20868688,20868687,20850340,20847195,20841710,20833967,20827021,20825307,20825305,20825297,20824615,20824400,20823927,20821760,20795588,20794233,20794057,20793710,20785811,20781789,20781394,20781307,20762651,20758453,20758282,20757323,20756643,20756636,20756629,20756627,20756606,20756605,20756604,20756603,20756602,20756600,20756599,20756598,20756595,20756594,20756589,20756587,20756577,20756573,20748918,20748386,20748385,20748384,20748383,20748382,20748381,20748380,20748379,20748377,20748375,20748373,20743301,20717905,20717904,20717903,20717901,20717899);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 353\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%modern world business solutions%'; # 345,275,12016, l.atkinson@mwbsolutions.co.uk\nSELECT * FROM activities WHERE uuid_to_bin('3921d399-3fef-4609-a291-b0097a166d43') = uuid;\n# id: 20940638, user: 12022, contact: 5305871\nSELECT * FROM activity_summary_logs WHERE activity_id = 20940638;\nselect * from contacts where team_id = 345 and crm_provider_id = '30891432415' order by name asc; # 5305871\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 345\nand sa.provider = 'hubspot';\n\nselect * from users where team_id = 345 and id = 12022;\nSELECT * FROM crm_profiles WHERE user_id = 12022;\nSELECT * FROM participants WHERE activity_id = 20940638;\nSELECT * FROM users u\nJOIN crm_profiles cp ON u.id = cp.user_id\nWHERE u.team_id = 345;\n\nselect * from contacts where team_id = 345 and crm_provider_id = '30880813535' order by name desc; # 5305871\n\nselect * from team_features where team_id = 345;\nSELECT * FROM activities WHERE uuid_to_bin('11701e2d-2f82-4dab-a616-1db4fad238df') = uuid; # 21115197\nSELECT * FROM participants WHERE activity_id = 20897406;\n\n\n\nSELECT * FROM activities WHERE uuid_to_bin('63ba55cd-1abc-447d-83da-0137000005b7') = uuid; # 20953912\nSELECT * FROM activities WHERE crm_configuration_id = 275 and provider = 'ringcentral' and title like '%1252629100%';\n\n\nSELECT * FROM activities WHERE id = 20946641;\nSELECT * FROM crm_profiles WHERE user_id = 10211;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120,97,10984, triger@lunio.ai\nSELECT * FROM opportunities WHERE crm_configuration_id = 97 and crm_provider_id = '006N1000006c5PpIAI';\nselect * from stages where crm_configuration_id = 97 and type = 'opportunity';\nselect * from opportunities where team_id = 120;\n\n\nselect * from crm_configurations crm join teams t on crm.id = t.crm_id\nwhere 1=1\nAND t.current_billing_plan IS NOT NULL\nAND crm.auto_sync_activity = 0\nand crm.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Exclaimer%'; # 270,205,10053,james.lewendon@exclaimer.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 270\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b54df794-2a9a-4957-8d80-09a600ead5f8') = uuid; # 21637956\nSELECT * FROM crm_profiles WHERE user_id = 11446;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cygnetise%'; # 372,300,12554, alex.chikly@cygnetise.com\nselect * from playbooks where team_id = 372;\nselect * from crm_fields where crm_configuration_id = 300 and object_type = 'event'; # 141340\nSELECT * FROM crm_field_values WHERE crm_field_id = 141340;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 372\nand sa.provider = 'salesforce';\n\nselect * from crm_profiles where crm_configuration_id = 300;\nSELECT * FROM crm_configurations WHERE team_id = 372;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Planday%'; # 291,242,11501,mfa@planday.com\nSELECT * FROM opportunities WHERE team_id = 291 and crm_provider_id = '006bG000005DO86QAG'; # 3207756\nselect * from crm_field_data where object_id = 3207756;\nSELECT * FROM crm_fields WHERE id = 111834;\n\nselect f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value\nFROM crm_fields f\nJOIN crm_field_data fd ON f.id = fd.crm_field_id\nWHERE f.crm_configuration_id = 242\nAND f.object_type = 'opportunity'\nAND fd.object_id IN (3207756)\nORDER BY fd.object_id, fd.updated_at;\n\nSELECT * FROM crm_configurations WHERE auto_connect = 1;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150,salesforce-admin@tourlane.com\nselect * from group_deal_risk_types drgt join groups g on drgt.group_id = g.id\nwhere g.team_id = 187;\n\nselect * from `groups` where team_id = 187;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 187\nand sa.provider = 'salesforce';\n\n# Destination - 98870 - Destination__c\n# Stage - 79014 - StageName\n# Land Arrangement - 98856 - Land_Arrangement__c\n# Flight - 98848 - Flight__c\n# Last activity date - 98812 - LastActivityDate\n# Last modified date - 98809 - LastModifiedDate\n# Last inbound mail timestamp - 99151 - Last_Inbound_Mail_Timestamp__c\n# next call - 98864 - Next_Call__c\n\nselect * from crm_fields where crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\nselect * from opportunities where team_id = 187 and name LIKE'%Muriel Sal%';\nselect * from opportunities where team_id = 187 and user_id = 9951 and is_closed = 0;\nselect * from activities where opportunity_id = 3538248;\n\nSELECT * FROM crm_profiles WHERE user_id = 8150;\n\nselect * from deal_risks where opportunity_id = 3538248;\n\nselect * from teams where crm_id IS NULL;\n\nSELECT opp.id AS opportunity_id,\n u.group_id AS group_id,\n MAX(\n CASE\n WHEN a.type IN (\"sms-inbound\", \"sms-outbound\") THEN a.created_at\n ELSE a.actual_end_time\n END) as last_date\nFROM opportunities opp\nleft join activities a on a.opportunity_id = opp.id\ninner join users u on opp.user_id = u.id\nwhere opp.user_id IN (9951)\n\nAND opp.is_closed = 0\nand a.status IN ('completed', 'received', 'delivered') OR a.status IS NULL\ngroup by opp.id;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cybsafe%'; # 343,301,12008,polly.morphew@cybsafe.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 301;\nSELECT * FROM contacts WHERE id = 6612363;\nSELECT * FROM accounts WHERE id = 4235676;\nSELECT * FROM opportunities WHERE crm_configuration_id = 301 and crm_provider_id = 32983784868;\nselect * from opportunity_stages where opportunity_id = 4503759;\n# SELECT * FROM opportunities WHERE id = 4569937;\n\nselect * from activities where crm_configuration_id = 301;\nSELECT * FROM activities WHERE uuid_to_bin('d3b2b28b-c3d0-4c2d-8ed0-eef42855278a') = uuid; # 26330370\nSELECT * FROM participants WHERE activity_id = 26330370;\n\nSELECT * FROM teams WHERE id = 375;\nselect * from playbooks where team_id = 375;\n\nselect * from stages where crm_configuration_id = 301 and type = 'opportunity';\n\nselect * from teams;\nselect * from contact_roles;\n\nSELECT * FROM opportunities WHERE team_id = 343 and user_id = 12871 and close_date >= '2024-11-01';\n\nselect * from users u join crm_profiles cp on cp.user_id = u.id where u.team_id = 343;\n\nSELECT * FROM crm_field_data WHERE object_id = 3771706;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 301 and object_type = 'opportunity'\nand crm_provider_id LIKE \"%traffic_light%\";\nSELECT * FROM crm_field_values WHERE crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531);\n\nSELECT fd.* FROM opportunities o\nJOIN crm_field_data fd ON o.id = fd.object_id\nWHERE o.team_id = 343\n# and o.user_id IS NOT NULL\nand fd.crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531)\nand fd.value != ''\norder by value desc\n# group by o.id\n;\n\nSELECT * FROM opportunities WHERE id = 3769843;\n\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150, salesforce-admin@tourlane.com\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding Circle%'; # 220,177,8603,aswini.mishra@fundingcircle.com\nSELECT * FROM activities WHERE uuid_to_bin('7a40e99b-3b37-4bb1-b983-325b81801c01') = uuid; # 23139839\n\n\nSELECT * FROM opportunities WHERE id = 3855992;\n\nSELECT * FROM users WHERE name LIKE '%Angus Pollard%'; # 8988\n\nSELECT * FROM teams WHERE name LIKE '%Story Terrace%'; # 379, 307, 12894\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307 and object_type != 'opportunity';\n\nselect * from contacts where team_id = 379 and name like '%bebro%'; # 5874411, crm: 77229348507\nSELECT * FROM crm_field_data WHERE object_id = 5874411;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379\nand sa.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%mentio%'; # 117, 94, 6371, nikhil.kumar@mention-me.com\nSELECT * FROM activities WHERE uuid_to_bin('82939311-1af0-4506-8546-21e8d1fdf2c1') = uuid;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tourlane%'; # 187, 209, 8150, salesforce-admin@tourlane.com\nSELECT * FROM opportunities WHERE team_id = 187 and crm_provider_id = '006Se000008xfvNIAQ'; # 3537793\nselect * from generic_ai_prompts where subject_id = 3537793;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120, 97, 10984, triger@lunio.ai\nSELECT * FROM crm_configurations WHERE id = 97;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 97;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 355;\nSELECT * FROM crm_fields WHERE id = 32682;\n\nselect cfd.value, o.* from opportunities o\njoin crm_field_data cfd on o.id = cfd.object_id and cfd.crm_field_id = 32682\nwhere team_id = 120\nand cfd.value != ''\n;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 120\nand sa.provider = 'salesforce';\n\nselect * from opportunities where team_id = 120 and crm_provider_id = '006N1000007X8MAIA0';\nSELECT * FROM crm_field_data WHERE object_id = 2313439;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 410;\nSELECT * FROM teams WHERE name LIKE '%Local Business Oxford%';\nselect * from scorecards where team_id = 410;\nselect * from scorecard_rules;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding%'; # 220, 177, 8603, aswini.mishra@fundingcircle.com\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\njoin users u on o.user_id = u.id\nwhere a.crm_configuration_id = 177 and a.type LIKE '%email-out%'\n# and a.actual_end_time > '2024-12-16 00:00:00'\n# and o.remotely_created_at > '2024-12-01 00:00:00'\n# and u.group_id = 1014\nand u.id = 9021\norder by a.id desc;\nSELECT * FROM opportunities WHERE id in (3981384,4017346);\nSELECT * FROM users WHERE team_id = 220 and id IN (8775, 11435);\n\nselect * from users where id = 9021;\nselect * from inboxes where user_id = 9021;\n\nselect * from inbox_emails where inbox_id = 1349 and email_date > '2024-12-18 00:00:00';\n\nselect * from email_messages where team_id = 220\nand orig_date > '2024-12-16 00:00:00' and orig_date < '2024-12-19 00:00:00'\nand subject LIKE '%Personal%'\n# and 'from' = 'credit@fundingcircle.com'\n;\n\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\nwhere a.user_id = 9021 and a.type LIKE '%email-out%'\nand a.actual_end_time > '2024-12-18 00:00:00'\nand o.user_id IS NOT NULL\nand o.remotely_created_at > '2024-12-01 00:00:00'\norder by a.id desc;\n\nSELECT * FROM opportunities WHERE team_id = 220 and name LIKE '%Right Car move Limited%' and id = 3966852;\nselect * from activities where crm_configuration_id = 177 and type LIKE '%email%' and opportunity_id = 3966852 order by id desc;\n\nselect * from team_settings where name IN ('useCloseDate');\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hurree%'; # 104, 81, 6175, jfarrell@hurree.co\nSELECT * FROM opportunities WHERE team_id = 104 and name = 'PropOp';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 104\nand sa.provider = 'hubspot';\n\nselect * from crm_configurations where last_synced_at > '2025-01-19 01:00:00'\nselect * from teams where crm_id IS NULL;\n\nselect t.name as 'team', u.name as 'owner', u.email, u.phone\nfrom teams t\njoin activity_providers ap on t.id = ap.team_id\njoin users u on t.owner_id = u.id\nwhere 1=1\n and t.status = 'active'\n and ap.is_enabled = 1\n# and u.status = 1\n and ap.provider = 'ms-teams';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nSELECT * FROM teams WHERE id = 442; # 14293\nselect * from users where team_id = 442;\nselect * from social_accounts sa where sa.sociable_id = 14293;\nselect * from invitations where team_id = 442;\n\n# ********************************************************************************************************\nSELECT * FROM users WHERE email LIKE '%nea.liikamaa@eletive.com%'; # 14022\nSELECT * FROM teams WHERE id = 429;\nselect * from opportunities where team_id = 429 and crm_provider_id IN (16157415775, 22246219645);\nselect * from activities where opportunity_id in (4340436,4353519);\n\nselect * from transcription where activity_id IN (25630961,25381771);\nselect * from generic_ai_prompts where subject_id IN (4353519);\n\nSELECT\n a.id as activity_id,\n a.opportunity_id,\n a.type as activity_type,\n a.language,\n CONCAT(a.title, a.description) AS mail_content,\n e.from AS mail_from,\n e.to AS mail_to,\n e.subject AS mail_subject,\n e.body AS mail_body,\n p.type as prompt_type,\n p.status as prompt_status,\n p.content AS prompt_content,\n a.actual_start_time as created_at\nFROM activities a\n LEFT JOIN ai_prompts p ON a.transcription_id = p.transcription_id AND p.deleted_at IS NULL\n LEFT JOIN email_messages e ON a.id = e.activity_id\nWHERE a.actual_start_time > '2024-01-01 00:00:00'\n AND a.opportunity_id IN (4353519)\n AND a.status IN ('completed', 'received', 'delivered')\n AND a.deleted_at IS NULL\n AND a.type NOT IN ('sms-inbound', 'sms-outbound')\nORDER BY a.opportunity_id ASC, a.id ASC;\n\nSELECT * FROM users WHERE name LIKE '%George Fierstone%'; # 14293\nSELECT * FROM teams WHERE id = 442;\nSELECT * FROM crm_configurations WHERE id = 344;\nselect * from team_features where team_id = 442;\nselect * from groups where team_id = 442;\nselect * from playbooks where team_id = 442;\nselect * from playbook_categories where playbook_id = 1729;\nselect * from crm_fields where crm_configuration_id = 344 and id = 172024;\nSELECT * FROM crm_field_values WHERE crm_field_id = 172024;\nselect * from crm_layouts where crm_configuration_id = 344;\nselect * from playbook_layouts where playbook_id = 1729;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 221, 9444\n\nselect s.*\n# , s.sent_at, u.name, a.*\nfrom activity_summary_logs s\ninner join activities a on a.id = s.activity_id\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 356\nand s.sent_at > date_sub(now(), interval 60 day)\norder by a.actual_end_time desc;\n\nselect * from activities a\n# inner join activity_summary_logs s on s.activity_id = a.id\nwhere a.crm_configuration_id = 356 and a.actual_end_time > date_sub(now(), interval 60 day)\n# and a.crm_provider_id is not null\n# and provider <> 'ringcentral'\nand status = 'completed'\norder by a.actual_end_time desc;\n\nselect * from teams order by id desc; # 17328, 32, 17830, integration-account@jiminny.com\nSELECT * FROM users;\nSELECT * FROM users where team_id = 260 and status = 1; # 201 - 150 active\nSELECT * FROM teams WHERE id = 260;\nselect * from team_settings where team_id = 260;\nselect * from crm_configurations where team_id = 260;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 356;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1184;\n\nselect * from accounts where crm_configuration_id = 221 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 221 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 221 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 221 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 221 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 221;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 221 order by id desc;\nselect * from stages where crm_configuration_id = 221 order by id desc;\n\nselect * from accounts where crm_configuration_id = 356 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 356 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 356 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 356 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 356 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 356;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 356 order by id desc;\nselect * from stages where crm_configuration_id = 356 order by id desc;\n\nselect * from playbooks where team_id = 260 order by id desc; # 4 (2 deleted)\nselect * from groups where team_id = 260 order by id desc; # 27 groups, (2 deleted)\nselect * from playbook_layouts where playbook_id IN (1410,1409,1276,1254); # 4\nselect ce.* from calendars c\njoin users u on c.user_id = u.id\njoin calendar_events ce on c.id = ce.calendar_id\nwhere u.team_id = 260\nand (ce.start_time > '2025-02-21 00:00:00')\n;\n# calendar events 1207\n#\n\nselect * from opportunities where team_id = 260;\nSELECT * FROM crm_field_data WHERE object_id = 4696496;\n\nselect * from activities where crm_configuration_id = 356 and crm_provider_id IS NOT NULL;\nselect * from activities where crm_configuration_id IN (221) and provider NOT IN ('ms-teams', 'uploader', 'zoom-bot')\n# and type = 'conference' and status = 'scheduled' and activities.is_internal = 0\nand created_at > '2024-03-01 00:00:00'\norder by id desc; # 880 000, ringcentral, avaya\nSELECT * FROM participants WHERE activity_id = 26371744;\n\n# all activities 942 000 +\n# conference 7385 - scheduled 984 - external 343\n\nselect * from activities where id = 26321812;\nselect * from participants where activity_id = 26321812;\nselect * from participants where activity_id in (26414510,26414514,26414516,26414604,26414653,26414655);\nselect * from leads where id in (720428,689175,731546,645866,621037);\n\nselect * from users where id = 13841;\nselect * from opportunities where user_id = 9541;\nselect * from stages where id = 15900;\n\nselect * from accounts where\n# id IN (4160055,5053725,4965303,4896434)\nid in (4584518,3249934,3218025,3891133,3399450,4172999,4485161,3101785,4587203,3070816,2870343,2870341,3563940,4550846,3424464,3249963,2870342)\n;\n\nselect * from activities where id = 26654935;\nSELECT * FROM opportunities WHERE id = 4803458;\n\nSELECT * FROM opportunities where team_id = 260 and user_id = 13841 AND stage_id = 15900;\nSELECT id, uuid, provider, type, lead_id, account_id, contact_id, opportunity_id, stage_id, status, recording_state, title, actual_start_time, actual_end_time\nFROM activities WHERE user_id = 13841 AND opportunity_id IN (4729783, 4731717, 4731726, 4732064, 4732849, 4803458, 4813213);\n\nSELECT DISTINCT\n o.id, o.stage_id, s.name, a.title,\n a.*\nFROM activities a\n# INNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nINNER JOIN groups g ON u.group_id = g.id\nINNER JOIN opportunities o ON a.opportunity_id = o.id\nINNER JOIN stages s ON o.stage_id = s.id\nWHERE\n a.crm_configuration_id = 356\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 13841\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n AND team.uuid = uuid_to_bin('a607fba7-452e-4683-b2af-00d6cb52c93c')\n AND g.uuid = uuid_to_bin('b5d69e40-24a0-4c16-810b-5fa462299f94')\n\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n )\n )\n AND (\n# s.id = 15900\n s.uuid = uuid_to_bin('04ca1c26-c666-4268-a129-419c0acffd73')\n OR s.uuid IS NULL -- Include records without opportunity stage\n )\n\nORDER BY a.actual_end_time DESC;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%'; # 190, 162, 8474, willsc@leadforensics.com\nSELECT * FROM users WHERE team_id = 190;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 190\nand sa.provider = 'hubspot';\n\nselect * from role_user where user_id = 8474;\n\nselect * from crm_configurations where provider = 'bullhorn';\n\nSELECT * FROM opportunities WHERE uuid_to_bin('94578249-65ec-4205-90f2-7d1a7d5ab64a') = uuid;\nSELECT * FROM users WHERE uuid_to_bin('26dbadeb-926f-4150-b11b-771b9d4c2f9a') = uuid;\n\nSELECT * FROM opportunities WHERE id = 4732493;\nselect * from activities where opportunity_id = 4732493;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 443; # 358, 14315, andrea.romano@correrenaturale.com\nSELECT * FROM opportunities WHERE team_id = 443;\n\nSELECT a.id, a.type, a.user_id, a.status, a.deleted_at, u.name, u.email, u.team_id as activity_team_id, u.status, u.deleted_at, t.name, t.status, s.team_id as stage_team_id\nFROM activities AS a\nJOIN stages AS s ON a.stage_id = s.id\nJOIN users AS u ON u.id = a.user_id\nJOIN teams AS t ON t.id = s.team_id\nWHERE u.team_id <> s.team_id and t.id > 135;\n\n\nSELECT\n crm_configuration_id,\n crm_provider_id,\n COUNT(*) as duplicate_count,\n GROUP_CONCAT(id) as stage_ids,\n GROUP_CONCAT(name) as stage_names\nFROM stages\nGROUP BY crm_configuration_id, crm_provider_id\nHAVING COUNT(*) > 1\nORDER BY duplicate_count DESC;\n\nselect * from stages where id IN (14898,14907);\n\nselect * from business_processes;\n\nSELECT *\nFROM crm_configurations\nWHERE team_id IN (\n SELECT team_id\n FROM crm_configurations\n GROUP BY team_id\n HAVING COUNT(*) > 1\n)\nORDER BY team_id;\n\nSELECT *\nFROM teams\nWHERE crm_id IN (\n SELECT crm_id\n FROM teams\n GROUP BY crm_id\n HAVING COUNT(*) > 1\n)\nORDER BY crm_id;\n\n# ***************************************************************************\nselect * from crm_configurations where provider = 'integration-app';\nSELECT * FROM teams WHERE id = 443; # Correre Naturale 358 14315 andrea.romano@correrenaturale.com\nselect * from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect id, uuid, actual_end_time, crm_provider_id, is_internal, playbook_category_id, type, user_id, lead_id, contact_id, account_id, opportunity_id, status, title from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect * from team_features where team_id = 358;\nselect * from activity_summary_logs;\n\nselect * from teams where id = 406;\n\n# ************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sportfive%'; # 267, 202, 14637, srv.salesforce@sportfive.com\nselect * from activities where crm_configuration_id = 202 order by actual_end_time desc;\n\nSELECT * FROM users where id = 14637;\nSELECT * FROM teams where id = 267;\nSELECT * FROM groups where id = 1118;\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 202\n AND status IN ('completed', 'failed')\n AND recording_state != 'stopped'\n AND type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n AND (is_private = 0 OR user_id = 14637)\n AND (\n (\n actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n ) OR (\n actual_start_time IS NULL\n AND type IN ('sms-outbound', 'sms-inbound')\n AND created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND NOT EXISTS (\n SELECT 1\n FROM tracks\n WHERE\n tracks.activity_id = activities.id\n AND tracks.type IN ('audio', 'video')\n )\nORDER BY actual_end_time DESC;\n\nSELECT DISTINCT\n a.*\nFROM activities a\nINNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nWHERE\n a.crm_configuration_id = 202\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 14637\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND a.user_id = 14637\n )\n )\n\nORDER BY a.actual_end_time DESC\n;\n\nSELECT DISTINCT a.*\nFROM activities a\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams t ON u.team_id = t.id\n# INNER JOIN tracks tr ON a.id = tr.activity_id\n# INNER JOIN groups g ON u.group_id = g.id\nWHERE 1=1\n AND t.id = 267\n# AND t.uuid = uuid_to_bin('aed4927b-f1ea-499e-94c3-83762fd233e8')\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND tr.type NOT IN ('audio', 'video')\n AND (\n a.is_private = 0\n OR a.user_id = 14637\n )\n AND (\n (a.actual_start_time BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59')\n OR (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59'\n )\n )\n# and NOT EXISTS (\n# SELECT 1\n# FROM tracks t\n# WHERE t.activity_id = a.id\n# AND t.type IN ('audio', 'video')\n# )\n\nORDER BY a.actual_end_time DESC;\n\nSELECT * FROM tracks WHERE activity_id = 26485995;\n\nselect a.is_private, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 202\n# and a.is_internal = 0\nand (a.actual_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type IN (\"softphone\",\"softphone-inbound\",\"conference\",\"sms-inbound\")\nand a.status IN ('completed', 'failed')\n# and a.external_id is not null\norder by a.actual_end_time desc;\n\nselect * from activities a where a.crm_configuration_id = 202\nand a.actual_start_time between '2025-03-20 00:00:00' and '2025-03-21 00:00:00'\n# AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM teams WHERE name LIKE '%Tourlane%';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_field_data WHERE crm_field_id = 98809;\n\nselect * from users where status = 1 AND timezone = 'MDT';\n\nselect * from opportunities where id = 3769814;\nselect * from deal_risks where opportunity_id = 3769814;\n\nselect cp.* from crm_profiles cp\njoin users u on cp.user_id = u.id\njoin crm_configurations crm on cp.crm_configuration_id = crm.id\nwhere crm.provider = 'hubspot' AND u.status = 1 AND log_notes != 'none';\n\nselect * from crm_fields where id = 154575;\n\nselect * from team_features where feature = 'SUPPORTS_SYNC_MISSING_CALL_DISPOSITIONS';\nSELECT * FROM teams WHERE id = 176; # crm 148\nselect * from activities where crm_configuration_id = 148 and provider = 'hubspot' order by id desc;\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nselect * from crm_fields cf\njoin crm_configurations crm on crm.id = cf.crm_configuration_id\nwhere crm.provider = 'hubspot' and cf.object_type IN ('account', 'contact');\n\n# *********************************************************************************************\nSELECT * FROM users WHERE id IN (15415, 15418);\nSELECT * FROM groups WHERE id IN (1805,1806);\nSELECT * FROM playbooks WHERE id = 1860;\nSELECT * FROM playbook_categories WHERE id = 38634;\nSELECT * FROM crm_fields WHERE id = 189962;\n\nSELECT * FROM teams WHERE name = 'Pulsar Group'; # 472, 380, 15138 raza.gilani@vuelio.com\n\nSELECT * FROM crm_profiles WHERE user_id = 15415;\nSELECT * FROM social_accounts WHERE sociable_id = 15415 and provider = 'salesforce';\n\nselect * from sidekick_settings where team_id = 472;\n\nSELECT * FROM activities WHERE uuid_to_bin('452c58c7-b87c-4fdd-953e-d7af185e9588') = uuid; # 28617536, user: 15418\nSELECT * FROM activities WHERE uuid_to_bin('399114ee-d3a8-458c-bff5-5f654658db0a') = uuid; # 28344407, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('f0aa567f-0ab1-4bbb-96aa-37dcf184676b') = uuid; # 28580288, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('50c086b1-2770-4bca-b5ae-6bac22ec426b') = uuid; # 28566069, user: 15415\n\n# *********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%TeamTailor%'; # 109, 218, 13969, salesforce-integrations@teamtailor.com\nselect * from crm_configurations where id = 218;\nSELECT * FROM activities WHERE uuid_to_bin('e39b5857-7fdb-4f5a-951a-8d3ca69bb1b0') = uuid; # 28338765\nSELECT * FROM users WHERE id IN (13232, 13230);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n0057R00000EPL5HQAX Inez Ekblad\n\n1091cb81-5ea1-4951-a0ed-f00b568f0140 Triman Kaur\n\nSELECT * FROM crm_profiles WHERE user_id IN (13232, 13230);\n\n############################################################################################\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939 00UVg00000FLvnSMAT\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id IN (94491,94493,94498);\nSELECT * FROM users WHERE id = 13658;\nSELECT * FROM teams WHERE id = 109;\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Strengthscope%'; # 481, 390, 15420, katy.holden@strengthscope.comk\nSELECT * FROM stages WHERE crm_configuration_id = 390;\nselect * from business_processes where team_id = 481 and crm_configuration_id = 390;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 481\nand sa.provider = 'salesforce';\n\n\nSELECT * FROM users WHERE id = 15780; # team 462\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 462\nand sa.provider = 'hubspot';\n\n\nselect * from teams where id = 495;\nSELECT * FROM users WHERE id = 15794;\nselect * from social_accounts where sociable_id = 15794;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Flight%'; # 427, 333, 13752\nSELECT * FROM accounts WHERE team_id = 427 and crm_provider_id = '668731000183444517';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Group GTI%'; # 495, 407, 15794\nSELECT * FROM activities WHERE crm_configuration_id = 407\nand status = 'completed' and type = 'conference'\norder by id desc;\n\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from permission_role;\n\nselect * from activities where crm_configuration_id = 407 and status = 'completed' order by id desc;\nSELECT * FROM activities WHERE id = 29512773;\nSELECT * FROM activities WHERE id IN (29042721,28991325,29002874);\n\nSELECT al.* from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 407\n# and a.id IN (29042721,28991325,29002874);\n\nSELECT * FROM users WHERE id = 15794;\nSELECT * FROM users WHERE team_id = 495;\nSELECT * FROM social_accounts WHERE sociable_id = 15794;\nSELECT * FROM opportunities WHERE team_id = 495 and name like '%OC:%';\nSELECT * FROM contacts WHERE team_id = 495;\nSELECT * FROM leads WHERE team_id = 495;\nSELECT * FROM accounts WHERE team_id = 495;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 407;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 407;\nSELECT * FROM crm_configurations WHERE id = 407;\nSELECT * FROM opportunities WHERE team_id = 495 and close_date BETWEEN '2025-06-01' AND '2025-07-01'\nand user_id IS NOT NULL and is_closed = 1 and is_won = 1;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hamilton Court FX LLP%'; # 249, 187, 10103\nSELECT * FROM activities WHERE uuid_to_bin('4659c2bb-9a49-484e-9327-a3d66f1e028c') = uuid; # 28951064\nSELECT * FROM crm_fields WHERE crm_configuration_id = 187 and object_type IN ('tasks', 'event');\n\n# *********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Checkstep%'; # 325, 256, 11753\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 325\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid; # 28611085\nSELECT * FROM activities WHERE uuid_to_bin('980f0336-840b-4185-a5a9-30cf8b0749a8') = uuid; # 28719733\nSELECT * FROM activity_summary_logs where activity_id = 28719733;\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 356, 9444\nSELECT * FROM activity_summary_logs where sent_at BETWEEN '2025-06-09 11:38:00' AND '2025-06-09 11:40:00';\nSELECT * FROM leads WHERE crm_configuration_id = 356 and crm_provider_id = '230045001502770504'; # 823630\nselect * from activities where crm_configuration_id = 356 and lead_id = 841732;\n\nSELECT * from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 356;\n\nselect * from activities where crm_configuration_id = 356\nand actual_end_time between '2025-06-09 11:00:00' and '2025-06-09 12:00:00'\norder by id desc;\n\nselect * from accounts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from leads where crm_configuration_id = 356 and crm_provider_id = '230045001514275654' order by id desc;\nselect * from contacts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from opportunities where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\n\nselect * from team_features where team_id = 260;\nselect * from features where id IN (1,2,4,6,18,19,20,9,10,3,23,24,25,26,27);\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid;\n\nselect * from crm_fields;\nselect * from crm_layout_entities;\n\nSELECT * FROM teams WHERE name LIKE '%Optable%';\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Teamtailor%'; # 109, 218, 13969\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id in (94491,94493,94498);\n\nselect * from teams where crm_id IS NULL;\n\nSELECT * FROM activities WHERE uuid_to_bin('71aa8a0c-9652-4ff6-bee7-d98ae60abef6') = uuid;\n\n# *************************************************************************************************\nselect * from team_domains where team_id = 399;\nSELECT * FROM teams WHERE name LIKE '%Rydoo%'; # 399, 318, 13207\n\nselect * from calendar_events where id = 5163781;\nSELECT * FROM activities WHERE uuid_to_bin('be2cbc52-7fda-46a0-9ae0-25d9553eafc0') = uuid; # 29443896\nSELECT * FROM participants WHERE activity_id = 29443896;\nselect * from contacts where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\nselect * from leads where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\n\nselect * from activities where user_id = 14937 order by created_at ;\n\nselect * from users where id = 14937;\n\nselect * from contacts where crm_configuration_id = 318 and email LIKE '%@strawberry.se';\nselect * from opportunities where crm_configuration_id = 318 and crm_provider_id = '006Sf00000D1WOAIA3';\n\nselect * from activities a join participants p on a.id = p.activity_id\nwhere crm_configuration_id = 318 and a.updated_at > '2025-06-23T08:18:43Z';\n\n# *************************************************************************************************\nSELECT * FROM opportunities WHERE team_id = 379 and crm_provider_id = '39334518886';\nSELECT * FROM opportunities WHERE team_id = 379 order by id desc;\nSELECT * FROM teams WHERE id = 379;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379 and sociable_id = 13852\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations WHERE id = 307;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 307;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1027;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307\n and id IN (144750,144855,145158,155227);\n\nSELECT * FROM activities;\n\n\nselect * from activities\nwhere created_at > '2025-07-01 00:00:00'\n# and created_at < '2025-08-01 00:00:00'\nand type not in ('email-outbound', 'email-inbound')\nand account_id is null\nand contact_id is null\nand lead_id is null\nand opportunity_id is not null\n;\nSELECT * FROM activities WHERE id IN (25344155, 25344296, 25501909, 28692187);\nSELECT * FROM crm_configurations WHERE id in (335,301,200);\n\nselect * from crm_fields where crm_configuration_id = 230 and crm_provider_id = 'Age2__c';\n\nSELECT * FROM teams WHERE name LIKE '%Resights%';\nselect * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nselect * from teams where id IN (442);\n\nselect * from activities\nwhere crm_configuration_id = 177\nand provider = 'amazon-connect'\n order by id desc;\n# and source <> 'gong';\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nSELECT * FROM activities WHERE uuid_to_bin('cec1993b-a7e5-4164-b74d-d680ea51d2f2') = uuid;\n\n\nselect * from crm_configurations where store_transcript = 1;\nSELECT * FROM teams WHERE id IN (80);\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sedna%'; # 277, 213, 12594\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 277\nand sa.provider = 'salesforce';\n\nselect * from activities where crm_configuration_id = 213 and account_id = 2511502;\n\nselect * from crm_configurations where id = 213;\n\nSELECT * FROM activities WHERE uuid_to_bin('35aa790a-8569-4544-8268-66f9a4a26804') = uuid; # 33981604\nSELECT * FROM participants WHERE activity_id = 33981604;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 337 and object_type = 'task';\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 431\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b5476c7d-19a8-491b-869d-676ea1e857b6') = uuid; # 33997223\nselect * from activity_summary_logs where activity_id = 33997223;\nselect * from activity_notes where activity_id = 33997223;\n\n# ***********************************\nSELECT * FROM teams WHERE name LIKE '%Abode%';\n\n\nselect * from features;\nselect * from teams t\nwhere t.status = 'active'\nand id NOT IN (select team_id from team_features where feature_id = 9)\n;\n\n\nselect * from playbook_layouts where playbook_id = 1725;\nSELECT * FROM activities WHERE uuid_to_bin('65cc283c-4849-49e6-927f-4c281c8fea19') = uuid; # 34297473\nselect * from teams where id = 318;\nselect * from crm_configurations where team_id = 318;\nselect * from playbooks where team_id = 318;\nSELECT * FROM crm_layouts where crm_configuration_id = 381;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1259;\nSELECT * FROM crm_fields WHERE id IN (192938,192936,192939);\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1266;\nSELECT * FROM crm_fields WHERE id IN (192980,192991,192997,192998,193064,193067);\n\nSELECT * FROM activities WHERE uuid_to_bin('a902289b-285c-48eb-9cc2-6ad6c5d938f5') = uuid; # 34297533\n\n\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nSELECT * FROM crm_fields WHERE id IN (131668,131669,131670,131671,131676,131797);\n\nSELECT * FROM teams WHERE name LIKE '%Peripass%'; # 351, 281, 12124\nselect * from crm_layouts where crm_configuration_id = 281;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nselect * from crm_fields where crm_configuration_id = 281 and id in (131668,131669,131670,131671,131676,131797);\nselect * from opportunities where crm_configuration_id = 281;\n\nSELECT * FROM activities WHERE id IN (34211315, 34130075);\nSELECT * FROM crm_field_data WHERE object_id IN (34211315, 34130075);\n\nselect cf.crm_configuration_id, cle.crm_layout_id, cle.id, cf.id from crm_field_data cfd\njoin crm_layout_entities cle on cle.id = cfd.crm_layout_entity_id\njoin crm_fields cf on cle.crm_field_id = cf.id\nwhere cf.deleted_at IS NOT NULL\nGROUP BY cle.id, cf.id;\n\nselect * from crm_layouts where id IN (355);\nselect u.email, t.crm_id, t.* from teams t\njoin users u on u.id = t.owner_id\nwhere crm_id IN (97);\n\nSELECT * FROM crm_fields WHERE id = 96492;\n\nselect * from permissions;\nselect * from permission_role where permission_id = 247;\nselect * from roles;\n\nselect * from migrations;\n# *****************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('291e3c21-11cc-4728-aee7-6e4bedf86d72') = uuid; # 34262174\nSELECT * FROM crm_configurations WHERE id = 301;\nSELECT * FROM teams WHERE id = 343;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from participants where activity_id = 34262174;\n\nselect * from contacts where crm_configuration_id = 301 and id = 6976326;\nselect * from accounts where crm_configuration_id = 301 and id IN (4647626, 4815829); # 30761335403\n\nselect * from activity_summary_logs where activity_id = 34262174;\n\nselect * from users where status = 1 AND timezone = 'EST';\n\n# ****************************************************************************\nSELECT * FROM users WHERE id = 13869;\nSELECT * FROM crm_configurations WHERE id = 320;\nSELECT * FROM teams WHERE id = 401;\n\nSELECT * FROM activities WHERE uuid_to_bin('2228c16f-10be-48d5-90d4-67385219dc01') = uuid; # 29670601\n\nSELECT * FROM accounts WHERE id = 7761483;\nSELECT * FROM opportunities WHERE id = 6051814;\n\nSELECT * FROM teams WHERE name LIKE '%Seedlegals%';\n\n;select * from opportunities where updated_at > '2025-10-11' AND crm_provider_id = '34713761166';\n\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 177;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 577;\nSELECT * FROM crm_fields WHERE id IN (68458,68459,68480,68497,68524,68530,68554,68618,68662,68781,68810,68898,68981,69049,97467);\n\nSELECT t.id, crm.id, t.name, crm.sync_objects, crm.provider, crm.last_synced_at FROM crm_configurations crm join teams t on t.crm_id = crm.id\nwhere t.status = 'active' AND crm.provider = 'hubspot' AND crm.last_synced_at < '2025-10-22 00:00:00';\n\nSELECT * FROM activities WHERE uuid_to_bin('fa09449f-cba9-496a-b8f3-865cd3c72351') = uuid;\nSELECT * FROM crm_configurations where id = 184;\nSELECT * FROM teams WHERE id = 246;\nSELECT * FROM social_accounts WHERE sociable_id = 9259 and provider = 'hubspot';\n\nSELECT * FROM users WHERE email LIKE '%rhian.old@bud.co.uk%'; # 17700\nSELECT * FROM teams WHERE id = 551;\n\nSELECT * FROM crm_configurations WHERE id = 471;\nSELECT * FROM activities WHERE crm_configuration_id = 471 and crm_provider_id IS NOT NULL;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 471;\nSELECT * FROM crm_fields WHERE id = 307260;\nSELECT * FROM crm_field_values WHERE crm_field_id = 307260;\n\nselect * from crm_layouts where crm_configuration_id = 471;\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1547;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1548;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 551 and sa.provider = 'hubspot';\n\nSELECT * FROM teams WHERE name LIKE '%$PCS%';\n\n# ********************************************************************************************************\nselect * from crm_configurations crm\njoin teams t on t.crm_id = crm.id\nwhere t.status = 'active'\nand crm.provider = 'hubspot';\n\n# $slug = 'HUBSPOT_WEBHOOK_SYNC';\n# $team = Jiminny\\Models\\Team::find(2);\n# $feature = Feature::query()->where('slug', $slug)->first();\n# TeamFeature::query()->create(['feature_id' => $feature->getId(),'team_id' => $team->getId()]);\n\n# hubspot_webhook_metrics\n\nselect * from crm_configurations where id = 331; # 416\nSELECT * FROM teams WHERE id = 416;\nSELECT * FROM opportunities WHERE team_id = 190;\n\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%';\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 190 and sa.provider = 'hubspot';\n\n\n\nSELECT * FROM teams WHERE name LIKE '%Rapaport%'; # 431, 337\nSELECT * FROM teams where id = 431;\nSELECT * FROM crm_configurations where team_id = 431;\nSELECT * FROM activity_providers where team_id = 431;\nSELECT * FROM activities where crm_configuration_id = 337 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 431 and sa.provider = 'salesforce';\n\nSELECT * FROM teams WHERE name LIKE '%BiP%'; # 401, 320\nSELECT * FROM teams where id = 401;\nSELECT * FROM crm_configurations where team_id = 401;\nSELECT * FROM activity_providers where team_id = 401;\nSELECT * FROM activities where crm_configuration_id = 320 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 401 and sa.provider = 'salesforce';\n\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 307; # 379 - Story Terrace Inc , portalId: 3921157\nSELECT * FROM contacts WHERE team_id = 379 and updated_at > '2026-01-31 11:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-01 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 379 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 485; # 563 - LATUS Group (ad94d501-5d09-44fd-878f-ca3a9f8865c3) , portalId: 3904501\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 338; # 432 - Formalize , portalId: 9214205\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 432 and sa.provider = 'hubspot';\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 436; # 519 - Moxso , portalId: 25531989\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 96; # 119 - Nourish Care , portalId: 26617984\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 331; # 416 - The National College , portalId: 7213852\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 308; # 380 - Foodles , portalId: 7723616\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 379; # 471 - imat-uve , portalId: 9177354\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 465; # 545 - Spotler , portalId: 144759271\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 455; # 537 - indevis , portalId: 25666868\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 200; # 265 - Jobadder , portalId: 6426676\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 335; # 429 - Eletive , portalId: 6110563\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 363; # 456 - Global Group , portalId: 8901981\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 297; # 369 - Unbiased , portalId: 9229005\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 353; # 449 - Fuuse , portalId: 25781745\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 487; # 566 - Nimbus , portalId: 39982590\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 487;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1630;\nselect * from crm_fields where crm_configuration_id = 487 and\n(uuid_to_bin('4c6b2971-64d4-45b8-b377-427be758b5a5') = uuid or uuid_to_bin('59e368d8-65a0-4b77-b611-db37c99fbe68') = uuid);\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 420; # 506 - voiio , portalId: 145629154\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 479; # 558 - Momice , portalId: 535962\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 59; # 80 - Storyclash GmbH , portalId: 4268479\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 175; # 203 - Team iAM , portalId: 5534732\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 368; # 460 - OneTouch Health , portalId: 5534732183355\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\n\n\nselect * from users where id = 29643;\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM teams WHERE name LIKE '%Buynomics%'; # 462, 482, 14910\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\n# and description like '%The call focused on understanding Welch%'\norder by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 462 and sa.provider = 'salesforce';\n\nselect * from contacts where crm_configuration_id = 482 and name = 'Cyndall Hill'; # 15504749\nselect * from contacts where id = 10891096; # 482\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\nand contact_id = 15504749\norder by id desc;\n\nselect * from activities where id = 36793003; # 96cc7bc1-8622-4d27-92f4-baf664fc1a56, 00UOf00000PDdOXMA1\nselect * from transcription where id = 7646782;\nselect * from ai_prompts where transcription_id = 7646782;\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7a8471a3-847e-4822-802b-ddf426bbc252') = uuid; # 37370018\nSELECT * FROM activity_summary_logs WHERE activity_id = 37370018;\nSELECT * FROM teams WHERE id = 555;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 555 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7c17b8aa-09df-4f85-a0f7-51f47afd712d') = uuid; # 37395250\nSELECT * FROM activities WHERE uuid_to_bin('14d60388-260d-494b-aa0d-63fdb1c78026') = uuid; # 37395250\n\nSELECT a.* FROM activities a JOIN crm_configurations c on c.id = a.crm_configuration_id\nwhere a.type IN ('softphone', 'softphone-outbound') and c.provider = 'hubspot'\nand a.provider NOT IN ('hubspot')\n# and a.provider IN ('salesloft')\n# and c.id NOT IN (70)\n# and a.duration > 30\n# and actual_start_time > '2026-02-05 00:00:00'\norder by a.id desc;\n\nSELECT * FROM activities WHERE id = 37549787;\nSELECT * FROM crm_profiles WHERE user_id = 17613;\n\nSELECT * FROM crm_configurations WHERE id = 70;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 93 and sa.provider = 'hubspot';\n\nSELECT asf.activity_search_id, asf.id, asf.value\nFROM activity_search_filters asf\nWHERE asf.filter = 'group_id'\nAND asf.value IN (\n SELECT CONCAT(\n HEX(SUBSTR(uuid, 5, 4)), '-',\n HEX(SUBSTR(uuid, 3, 2)), '-',\n HEX(SUBSTR(uuid, 1, 2)), '-',\n HEX(SUBSTR(uuid, 9, 2)), '-',\n HEX(SUBSTR(uuid, 11))\n )\n FROM groups\n WHERE deleted_at IS NOT NULL\n);\n\nSELECT * FROM crm_configurations WHERE id = 373; # KPSBremen.de 465 # - no social account\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 465 and sa.provider = 'hubspot';\n\nselect * from crm_configurations where id = 494;\n\nSELECT * FROM teams WHERE name LIKE '%splose%'; # 572, 495, 18708\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 572 and sa.provider = 'pipedrive';\n\nselect * from opportunities where team_id = 572\n# and name like '%Onebright%'\n# and is_closed = 1 and is_won = 0\n order by id desc;\n\n\nselect * from users where deleted_at is null and status = 2;\n\nselect * from contacts where id = 17900517;\nselect * from accounts where id = 10109838;\nselect * from opportunities where id = 6955880;\n\nselect * from opportunity_contacts where opportunity_id = 6955880;\nselect * from opportunity_contacts where contact_id = 17900517;\n\nselect * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id\nwhere crm.provider != 'salesforce';\n\nSELECT * FROM activities WHERE uuid_to_bin('adcb8331-5988-4353-834e-383a355abba2') = uuid; # 38056424, crm 104659682404\nselect * from teams where id = 456;\nSELECT * FROM crm_configurations WHERE id = 363;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 456 and sa.provider = 'hubspot';\n\nselect * from crm_layouts where crm_configuration_id = 363;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id IN (1203, 1204, 1635);\nSELECT * FROM crm_fields WHERE id IN (181536, 181538, 213455);\n\nSELECT * FROM teams WHERE name LIKE '%Electric%'; # 342, 272, 12767\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and name like 'NORTHUMBRIA POL%'; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 order by remotely_created_at asc; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and updated_at > '2026-01-01 00:00:00';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 272 and object_type = 'opportunity';\nSELECT * FROM crm_field_values WHERE crm_field_id = 127164;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\n\nSELECT * FROM teams WHERE id = 472;\nSELECT * FROM crm_configurations WHERE id = 380;\nselect * from activities where id = 38285673; # 38285673\nSELECT * FROM users WHERE id = 16942;\nSELECT * FROM groups WHERE id = 1964;\nSELECT * FROM playbooks WHERE id = 2033;\n\nselect * from teams where created_at > '2026-03-09';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 499; # 1065\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1678;\n\nSELECT * FROM teams WHERE id = 575;\nselect * from opportunities where team_id = 575;\n\nSELECT * FROM activities WHERE uuid_to_bin('96b1261f-2357-49f9-ab38-23ce12008ea0') = uuid;\n\nselect * from contacts c\nwhere c.crm_configuration_id = 370 order by c.updated_at desc;\n\nSELECT * FROM participants where activity_id = 38833541;\nSELECT * FROM participants where activity_id = 39216301;\nSELECT * FROM activity_summary_logs where activity_id = 39216301;\nSELECT * FROM activities WHERE uuid_to_bin('c7d99fbe-1fb1-41f2-8f4d-52e2bf70e1e9') = uuid; # 38833541, crm 478116564181\nSELECT * FROM activities WHERE uuid_to_bin('2e6ff4d3-9faa-447a-a8c1-9acde4d885ae') = uuid; # 39216301, crm 480171536586\nselect * from crm_profiles where crm_configuration_id = 319 and crm_provider_id = 525785080;\nselect * from opportunities where crm_configuration_id = 319 and crm_provider_id = 410150124747;\nselect * from accounts where crm_configuration_id = 319 and crm_provider_id = 47150650569;\nselect * from contacts where crm_configuration_id = 319 and crm_provider_id IN ('665587441856', '742723347700');\n# owner 13236 525785080\n# contact 1 16779180 665587441856 - activity - Alex Howes alex@supportroom.com created 2026-01-26\n# contact 2 19247563 742723347700 - ash@supportroom.com 2026-03-24\n# company 4176133 47150650569\n# deal 7100953 410150124747\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 400 and sa.provider = 'hubspot';\n\nselect * from features;\nselect * from team_features where feature_id = 40;\n\nselect * from teams where id = 556; # owner: 18101, crm: 477\nselect * from crm_configurations where id = 477;\nSELECT * FROM users WHERE id = 18101;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 556 and sa.provider = 'integration-app';\n\nselect * from opportunities where id = 7594349;\nselect * from opportunity_stages where opportunity_id = 7594349 order by created_at desc;\nselect * from business_processes where id = 6024;\nselect * from business_process_stages where stage_id = 16352;\nselect * from business_process_stages where business_process_id = 6024;\nselect * from stages where team_id = 459;\nselect * from teams where id = 459;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 459 and sa.provider = 'hubspot';\n\nSELECT os.stage_id, s.crm_provider_id, s.name, COUNT(*) as cnt\nFROM opportunity_stages os\nJOIN stages s ON s.id = os.stage_id\nWHERE os.opportunity_id = 7594349\nGROUP BY os.stage_id, s.crm_provider_id, s.name\nORDER BY cnt DESC;\n\nSELECT s.id, s.crm_provider_id, s.name, s.team_id, s.crm_configuration_id\nFROM stages s\nJOIN business_process_stages bps ON bps.stage_id = s.id\nWHERE bps.business_process_id = 6024\nAND s.crm_provider_id = 'contractsent';\n\nselect * from stages where id IN (16352,20612,18281,7344,16378,16309,5036,15223,14535,6293,12098,11607)\n\nSELECT * FROM teams WHERE name LIKE '%Pulsar Group%'; # 472, 380, 15138, raza.gilani@vuelio.com\nselect * from playbooks where team_id = 472; # event 226147\nSELECT * FROM playbook_categories WHERE playbook_id = 2288;\nSELECT * FROM crm_fields WHERE id = 226147;\nSELECT * FROM crm_field_values WHERE crm_field_id = 226147;\n\nSELECT * FROM crm_configurations WHERE id = 380;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 472 and sa.provider = 'salesforce';","depth":4,"value":"SELECT * FROM team_features where team_id = 1;\n\nSELECT * FROM teams WHERE name LIKE '%Vixio%'; # 340,270,11922\nSELECT * FROM users WHERE team_id = 340; # 12015\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 340\nand sa.provider = 'salesforce';\n# and sa.provider = 'salesloft';\n\nselect * from crm_fields where crm_configuration_id = 270 and object_type = 'event';\n# 125558 - Event Type - Event_Type__c\n# 125552 - Event Status - Event_Status__c\n\nSELECT * FROM sidekick_settings WHERE team_id = 340;\n\nSELECT * FROM crm_field_values WHERE crm_field_id in (125552);\n\nselect * from activities where crm_configuration_id = 270\nand type = 'conference' and crm_provider_id IS NOT NULL\nand actual_start_time > '2024-09-16 09:00:00' order by scheduled_start_time;\n\nSELECT * FROM activities WHERE id = 20871677;\nSELECT * FROM crm_field_data WHERE activity_id = 20871677;\n\nselect * from crm_layouts where crm_configuration_id = 270;\nselect * from crm_layout_entities where crm_layout_id in (886,887);\n\nSELECT * FROM crm_configurations WHERE id = 270;\n\nselect * from playbooks where team_id = 340; # 1514\nselect * from groups where team_id = 340;\nSELECT * FROM crm_fields WHERE id IN (125393, 125401);\n\nselect g.name as 'team name', p.name as 'playbook name', f.label as 'activity type field' from groups g\njoin playbooks p on g.playbook_id = p.id\njoin crm_fields f on p.activity_field_id = f.id\nwhere g.team_id = 340;\n\nSELECT * FROM activities WHERE uuid_to_bin('0c180357-67d2-419e-a8c3-b832a3490770') = uuid; # 20448716\nselect * from crm_field_data where object_id = 20448716;\n\nselect * from activities where crm_configuration_id = 270 and provider = 'salesloft' order by id desc;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%CybSafe%'; # 343,273,12008\nselect * from opportunities where team_id = 343;\nselect * from opportunities where team_id = 343 and crm_provider_id = '18099102526';\nselect * from opportunities where team_id = 343 and account_id = 945217482;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from accounts where team_id = 343 order by name asc;\n\nselect * from stages where crm_configuration_id = 273 and type = 'opportunity';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Voyado%'; # 353,283,12143\nSELECT * FROM activities WHERE crm_configuration_id = 283 and account_id = 3777844 order by id desc;\nSELECT * FROM accounts WHERE team_id = 353 AND name LIKE '%Salesloft%';\nSELECT * FROM activities WHERE id = 20717903;\n\nselect * from participants where activity_id IN (20929172,20928605,20928468,20926272,20926271,20926270,20926269,20916499,20916454,20916436,20916435,20900015,20900014,20900013,20897312,20897243,20897241,20897237,20897232,20897229,20893648,20893231,20893230,20893229,20893228,20889784,20885039,20885038,20885037,20885036,20885035,20882728,20882708,20882703,20882702,20869828,20869811,20869806,20869801,20869799,20869798,20869796,20869795,20869794,20869761,20869760,20869759,20868688,20868687,20850340,20847195,20841710,20833967,20827021,20825307,20825305,20825297,20824615,20824400,20823927,20821760,20795588,20794233,20794057,20793710,20785811,20781789,20781394,20781307,20762651,20758453,20758282,20757323,20756643,20756636,20756629,20756627,20756606,20756605,20756604,20756603,20756602,20756600,20756599,20756598,20756595,20756594,20756589,20756587,20756577,20756573,20748918,20748386,20748385,20748384,20748383,20748382,20748381,20748380,20748379,20748377,20748375,20748373,20743301,20717905,20717904,20717903,20717901,20717899);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 353\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%modern world business solutions%'; # 345,275,12016, l.atkinson@mwbsolutions.co.uk\nSELECT * FROM activities WHERE uuid_to_bin('3921d399-3fef-4609-a291-b0097a166d43') = uuid;\n# id: 20940638, user: 12022, contact: 5305871\nSELECT * FROM activity_summary_logs WHERE activity_id = 20940638;\nselect * from contacts where team_id = 345 and crm_provider_id = '30891432415' order by name asc; # 5305871\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 345\nand sa.provider = 'hubspot';\n\nselect * from users where team_id = 345 and id = 12022;\nSELECT * FROM crm_profiles WHERE user_id = 12022;\nSELECT * FROM participants WHERE activity_id = 20940638;\nSELECT * FROM users u\nJOIN crm_profiles cp ON u.id = cp.user_id\nWHERE u.team_id = 345;\n\nselect * from contacts where team_id = 345 and crm_provider_id = '30880813535' order by name desc; # 5305871\n\nselect * from team_features where team_id = 345;\nSELECT * FROM activities WHERE uuid_to_bin('11701e2d-2f82-4dab-a616-1db4fad238df') = uuid; # 21115197\nSELECT * FROM participants WHERE activity_id = 20897406;\n\n\n\nSELECT * FROM activities WHERE uuid_to_bin('63ba55cd-1abc-447d-83da-0137000005b7') = uuid; # 20953912\nSELECT * FROM activities WHERE crm_configuration_id = 275 and provider = 'ringcentral' and title like '%1252629100%';\n\n\nSELECT * FROM activities WHERE id = 20946641;\nSELECT * FROM crm_profiles WHERE user_id = 10211;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120,97,10984, triger@lunio.ai\nSELECT * FROM opportunities WHERE crm_configuration_id = 97 and crm_provider_id = '006N1000006c5PpIAI';\nselect * from stages where crm_configuration_id = 97 and type = 'opportunity';\nselect * from opportunities where team_id = 120;\n\n\nselect * from crm_configurations crm join teams t on crm.id = t.crm_id\nwhere 1=1\nAND t.current_billing_plan IS NOT NULL\nAND crm.auto_sync_activity = 0\nand crm.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Exclaimer%'; # 270,205,10053,james.lewendon@exclaimer.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 270\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b54df794-2a9a-4957-8d80-09a600ead5f8') = uuid; # 21637956\nSELECT * FROM crm_profiles WHERE user_id = 11446;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cygnetise%'; # 372,300,12554, alex.chikly@cygnetise.com\nselect * from playbooks where team_id = 372;\nselect * from crm_fields where crm_configuration_id = 300 and object_type = 'event'; # 141340\nSELECT * FROM crm_field_values WHERE crm_field_id = 141340;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 372\nand sa.provider = 'salesforce';\n\nselect * from crm_profiles where crm_configuration_id = 300;\nSELECT * FROM crm_configurations WHERE team_id = 372;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Planday%'; # 291,242,11501,mfa@planday.com\nSELECT * FROM opportunities WHERE team_id = 291 and crm_provider_id = '006bG000005DO86QAG'; # 3207756\nselect * from crm_field_data where object_id = 3207756;\nSELECT * FROM crm_fields WHERE id = 111834;\n\nselect f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value\nFROM crm_fields f\nJOIN crm_field_data fd ON f.id = fd.crm_field_id\nWHERE f.crm_configuration_id = 242\nAND f.object_type = 'opportunity'\nAND fd.object_id IN (3207756)\nORDER BY fd.object_id, fd.updated_at;\n\nSELECT * FROM crm_configurations WHERE auto_connect = 1;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150,salesforce-admin@tourlane.com\nselect * from group_deal_risk_types drgt join groups g on drgt.group_id = g.id\nwhere g.team_id = 187;\n\nselect * from `groups` where team_id = 187;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 187\nand sa.provider = 'salesforce';\n\n# Destination - 98870 - Destination__c\n# Stage - 79014 - StageName\n# Land Arrangement - 98856 - Land_Arrangement__c\n# Flight - 98848 - Flight__c\n# Last activity date - 98812 - LastActivityDate\n# Last modified date - 98809 - LastModifiedDate\n# Last inbound mail timestamp - 99151 - Last_Inbound_Mail_Timestamp__c\n# next call - 98864 - Next_Call__c\n\nselect * from crm_fields where crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\nselect * from opportunities where team_id = 187 and name LIKE'%Muriel Sal%';\nselect * from opportunities where team_id = 187 and user_id = 9951 and is_closed = 0;\nselect * from activities where opportunity_id = 3538248;\n\nSELECT * FROM crm_profiles WHERE user_id = 8150;\n\nselect * from deal_risks where opportunity_id = 3538248;\n\nselect * from teams where crm_id IS NULL;\n\nSELECT opp.id AS opportunity_id,\n u.group_id AS group_id,\n MAX(\n CASE\n WHEN a.type IN (\"sms-inbound\", \"sms-outbound\") THEN a.created_at\n ELSE a.actual_end_time\n END) as last_date\nFROM opportunities opp\nleft join activities a on a.opportunity_id = opp.id\ninner join users u on opp.user_id = u.id\nwhere opp.user_id IN (9951)\n\nAND opp.is_closed = 0\nand a.status IN ('completed', 'received', 'delivered') OR a.status IS NULL\ngroup by opp.id;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Cybsafe%'; # 343,301,12008,polly.morphew@cybsafe.com\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 301;\nSELECT * FROM contacts WHERE id = 6612363;\nSELECT * FROM accounts WHERE id = 4235676;\nSELECT * FROM opportunities WHERE crm_configuration_id = 301 and crm_provider_id = 32983784868;\nselect * from opportunity_stages where opportunity_id = 4503759;\n# SELECT * FROM opportunities WHERE id = 4569937;\n\nselect * from activities where crm_configuration_id = 301;\nSELECT * FROM activities WHERE uuid_to_bin('d3b2b28b-c3d0-4c2d-8ed0-eef42855278a') = uuid; # 26330370\nSELECT * FROM participants WHERE activity_id = 26330370;\n\nSELECT * FROM teams WHERE id = 375;\nselect * from playbooks where team_id = 375;\n\nselect * from stages where crm_configuration_id = 301 and type = 'opportunity';\n\nselect * from teams;\nselect * from contact_roles;\n\nSELECT * FROM opportunities WHERE team_id = 343 and user_id = 12871 and close_date >= '2024-11-01';\n\nselect * from users u join crm_profiles cp on cp.user_id = u.id where u.team_id = 343;\n\nSELECT * FROM crm_field_data WHERE object_id = 3771706;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 301 and object_type = 'opportunity'\nand crm_provider_id LIKE \"%traffic_light%\";\nSELECT * FROM crm_field_values WHERE crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531);\n\nSELECT fd.* FROM opportunities o\nJOIN crm_field_data fd ON o.id = fd.object_id\nWHERE o.team_id = 343\n# and o.user_id IS NOT NULL\nand fd.crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531)\nand fd.value != ''\norder by value desc\n# group by o.id\n;\n\nSELECT * FROM opportunities WHERE id = 3769843;\n\nSELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150, salesforce-admin@tourlane.com\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 209;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding Circle%'; # 220,177,8603,aswini.mishra@fundingcircle.com\nSELECT * FROM activities WHERE uuid_to_bin('7a40e99b-3b37-4bb1-b983-325b81801c01') = uuid; # 23139839\n\n\nSELECT * FROM opportunities WHERE id = 3855992;\n\nSELECT * FROM users WHERE name LIKE '%Angus Pollard%'; # 8988\n\nSELECT * FROM teams WHERE name LIKE '%Story Terrace%'; # 379, 307, 12894\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307 and object_type != 'opportunity';\n\nselect * from contacts where team_id = 379 and name like '%bebro%'; # 5874411, crm: 77229348507\nSELECT * FROM crm_field_data WHERE object_id = 5874411;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379\nand sa.provider = 'hubspot';\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%mentio%'; # 117, 94, 6371, nikhil.kumar@mention-me.com\nSELECT * FROM activities WHERE uuid_to_bin('82939311-1af0-4506-8546-21e8d1fdf2c1') = uuid;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Tourlane%'; # 187, 209, 8150, salesforce-admin@tourlane.com\nSELECT * FROM opportunities WHERE team_id = 187 and crm_provider_id = '006Se000008xfvNIAQ'; # 3537793\nselect * from generic_ai_prompts where subject_id = 3537793;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120, 97, 10984, triger@lunio.ai\nSELECT * FROM crm_configurations WHERE id = 97;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 97;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 355;\nSELECT * FROM crm_fields WHERE id = 32682;\n\nselect cfd.value, o.* from opportunities o\njoin crm_field_data cfd on o.id = cfd.object_id and cfd.crm_field_id = 32682\nwhere team_id = 120\nand cfd.value != ''\n;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 120\nand sa.provider = 'salesforce';\n\nselect * from opportunities where team_id = 120 and crm_provider_id = '006N1000007X8MAIA0';\nSELECT * FROM crm_field_data WHERE object_id = 2313439;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 410;\nSELECT * FROM teams WHERE name LIKE '%Local Business Oxford%';\nselect * from scorecards where team_id = 410;\nselect * from scorecard_rules;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Funding%'; # 220, 177, 8603, aswini.mishra@fundingcircle.com\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\njoin users u on o.user_id = u.id\nwhere a.crm_configuration_id = 177 and a.type LIKE '%email-out%'\n# and a.actual_end_time > '2024-12-16 00:00:00'\n# and o.remotely_created_at > '2024-12-01 00:00:00'\n# and u.group_id = 1014\nand u.id = 9021\norder by a.id desc;\nSELECT * FROM opportunities WHERE id in (3981384,4017346);\nSELECT * FROM users WHERE team_id = 220 and id IN (8775, 11435);\n\nselect * from users where id = 9021;\nselect * from inboxes where user_id = 9021;\n\nselect * from inbox_emails where inbox_id = 1349 and email_date > '2024-12-18 00:00:00';\n\nselect * from email_messages where team_id = 220\nand orig_date > '2024-12-16 00:00:00' and orig_date < '2024-12-19 00:00:00'\nand subject LIKE '%Personal%'\n# and 'from' = 'credit@fundingcircle.com'\n;\n\nselect * from activities a\njoin opportunities o on a.opportunity_id = o.id\nwhere a.user_id = 9021 and a.type LIKE '%email-out%'\nand a.actual_end_time > '2024-12-18 00:00:00'\nand o.user_id IS NOT NULL\nand o.remotely_created_at > '2024-12-01 00:00:00'\norder by a.id desc;\n\nSELECT * FROM opportunities WHERE team_id = 220 and name LIKE '%Right Car move Limited%' and id = 3966852;\nselect * from activities where crm_configuration_id = 177 and type LIKE '%email%' and opportunity_id = 3966852 order by id desc;\n\nselect * from team_settings where name IN ('useCloseDate');\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hurree%'; # 104, 81, 6175, jfarrell@hurree.co\nSELECT * FROM opportunities WHERE team_id = 104 and name = 'PropOp';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 104\nand sa.provider = 'hubspot';\n\nselect * from crm_configurations where last_synced_at > '2025-01-19 01:00:00'\nselect * from teams where crm_id IS NULL;\n\nselect t.name as 'team', u.name as 'owner', u.email, u.phone\nfrom teams t\njoin activity_providers ap on t.id = ap.team_id\njoin users u on t.owner_id = u.id\nwhere 1=1\n and t.status = 'active'\n and ap.is_enabled = 1\n# and u.status = 1\n and ap.provider = 'ms-teams';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nSELECT * FROM teams WHERE id = 442; # 14293\nselect * from users where team_id = 442;\nselect * from social_accounts sa where sa.sociable_id = 14293;\nselect * from invitations where team_id = 442;\n\n# ********************************************************************************************************\nSELECT * FROM users WHERE email LIKE '%nea.liikamaa@eletive.com%'; # 14022\nSELECT * FROM teams WHERE id = 429;\nselect * from opportunities where team_id = 429 and crm_provider_id IN (16157415775, 22246219645);\nselect * from activities where opportunity_id in (4340436,4353519);\n\nselect * from transcription where activity_id IN (25630961,25381771);\nselect * from generic_ai_prompts where subject_id IN (4353519);\n\nSELECT\n a.id as activity_id,\n a.opportunity_id,\n a.type as activity_type,\n a.language,\n CONCAT(a.title, a.description) AS mail_content,\n e.from AS mail_from,\n e.to AS mail_to,\n e.subject AS mail_subject,\n e.body AS mail_body,\n p.type as prompt_type,\n p.status as prompt_status,\n p.content AS prompt_content,\n a.actual_start_time as created_at\nFROM activities a\n LEFT JOIN ai_prompts p ON a.transcription_id = p.transcription_id AND p.deleted_at IS NULL\n LEFT JOIN email_messages e ON a.id = e.activity_id\nWHERE a.actual_start_time > '2024-01-01 00:00:00'\n AND a.opportunity_id IN (4353519)\n AND a.status IN ('completed', 'received', 'delivered')\n AND a.deleted_at IS NULL\n AND a.type NOT IN ('sms-inbound', 'sms-outbound')\nORDER BY a.opportunity_id ASC, a.id ASC;\n\nSELECT * FROM users WHERE name LIKE '%George Fierstone%'; # 14293\nSELECT * FROM teams WHERE id = 442;\nSELECT * FROM crm_configurations WHERE id = 344;\nselect * from team_features where team_id = 442;\nselect * from groups where team_id = 442;\nselect * from playbooks where team_id = 442;\nselect * from playbook_categories where playbook_id = 1729;\nselect * from crm_fields where crm_configuration_id = 344 and id = 172024;\nSELECT * FROM crm_field_values WHERE crm_field_id = 172024;\nselect * from crm_layouts where crm_configuration_id = 344;\nselect * from playbook_layouts where playbook_id = 1729;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 221, 9444\n\nselect s.*\n# , s.sent_at, u.name, a.*\nfrom activity_summary_logs s\ninner join activities a on a.id = s.activity_id\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 356\nand s.sent_at > date_sub(now(), interval 60 day)\norder by a.actual_end_time desc;\n\nselect * from activities a\n# inner join activity_summary_logs s on s.activity_id = a.id\nwhere a.crm_configuration_id = 356 and a.actual_end_time > date_sub(now(), interval 60 day)\n# and a.crm_provider_id is not null\n# and provider <> 'ringcentral'\nand status = 'completed'\norder by a.actual_end_time desc;\n\nselect * from teams order by id desc; # 17328, 32, 17830, integration-account@jiminny.com\nSELECT * FROM users;\nSELECT * FROM users where team_id = 260 and status = 1; # 201 - 150 active\nSELECT * FROM teams WHERE id = 260;\nselect * from team_settings where team_id = 260;\nselect * from crm_configurations where team_id = 260;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 356;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1184;\n\nselect * from accounts where crm_configuration_id = 221 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 221 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 221 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 221 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 221 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 221;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 221 order by id desc;\nselect * from stages where crm_configuration_id = 221 order by id desc;\n\nselect * from accounts where crm_configuration_id = 356 order by id desc; # 7000\nselect * from leads where crm_configuration_id = 356 order by id desc; # 0\nselect * from contacts where crm_configuration_id = 356 order by id desc; # 200 000\nselect * from opportunities where crm_configuration_id = 356 order by id desc; # 0\nselect * from crm_profiles where crm_configuration_id = 356 order by id desc; # 23\nselect * from crm_fields where crm_configuration_id = 356;\nselect * from crm_field_values where crm_field_id = 5302 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 356 order by id desc;\nselect * from stages where crm_configuration_id = 356 order by id desc;\n\nselect * from playbooks where team_id = 260 order by id desc; # 4 (2 deleted)\nselect * from groups where team_id = 260 order by id desc; # 27 groups, (2 deleted)\nselect * from playbook_layouts where playbook_id IN (1410,1409,1276,1254); # 4\nselect ce.* from calendars c\njoin users u on c.user_id = u.id\njoin calendar_events ce on c.id = ce.calendar_id\nwhere u.team_id = 260\nand (ce.start_time > '2025-02-21 00:00:00')\n;\n# calendar events 1207\n#\n\nselect * from opportunities where team_id = 260;\nSELECT * FROM crm_field_data WHERE object_id = 4696496;\n\nselect * from activities where crm_configuration_id = 356 and crm_provider_id IS NOT NULL;\nselect * from activities where crm_configuration_id IN (221) and provider NOT IN ('ms-teams', 'uploader', 'zoom-bot')\n# and type = 'conference' and status = 'scheduled' and activities.is_internal = 0\nand created_at > '2024-03-01 00:00:00'\norder by id desc; # 880 000, ringcentral, avaya\nSELECT * FROM participants WHERE activity_id = 26371744;\n\n# all activities 942 000 +\n# conference 7385 - scheduled 984 - external 343\n\nselect * from activities where id = 26321812;\nselect * from participants where activity_id = 26321812;\nselect * from participants where activity_id in (26414510,26414514,26414516,26414604,26414653,26414655);\nselect * from leads where id in (720428,689175,731546,645866,621037);\n\nselect * from users where id = 13841;\nselect * from opportunities where user_id = 9541;\nselect * from stages where id = 15900;\n\nselect * from accounts where\n# id IN (4160055,5053725,4965303,4896434)\nid in (4584518,3249934,3218025,3891133,3399450,4172999,4485161,3101785,4587203,3070816,2870343,2870341,3563940,4550846,3424464,3249963,2870342)\n;\n\nselect * from activities where id = 26654935;\nSELECT * FROM opportunities WHERE id = 4803458;\n\nSELECT * FROM opportunities where team_id = 260 and user_id = 13841 AND stage_id = 15900;\nSELECT id, uuid, provider, type, lead_id, account_id, contact_id, opportunity_id, stage_id, status, recording_state, title, actual_start_time, actual_end_time\nFROM activities WHERE user_id = 13841 AND opportunity_id IN (4729783, 4731717, 4731726, 4732064, 4732849, 4803458, 4813213);\n\nSELECT DISTINCT\n o.id, o.stage_id, s.name, a.title,\n a.*\nFROM activities a\n# INNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nINNER JOIN groups g ON u.group_id = g.id\nINNER JOIN opportunities o ON a.opportunity_id = o.id\nINNER JOIN stages s ON o.stage_id = s.id\nWHERE\n a.crm_configuration_id = 356\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 13841\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n AND team.uuid = uuid_to_bin('a607fba7-452e-4683-b2af-00d6cb52c93c')\n AND g.uuid = uuid_to_bin('b5d69e40-24a0-4c16-810b-5fa462299f94')\n\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')\n )\n )\n AND (\n# s.id = 15900\n s.uuid = uuid_to_bin('04ca1c26-c666-4268-a129-419c0acffd73')\n OR s.uuid IS NULL -- Include records without opportunity stage\n )\n\nORDER BY a.actual_end_time DESC;\n# ********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%'; # 190, 162, 8474, willsc@leadforensics.com\nSELECT * FROM users WHERE team_id = 190;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 190\nand sa.provider = 'hubspot';\n\nselect * from role_user where user_id = 8474;\n\nselect * from crm_configurations where provider = 'bullhorn';\n\nSELECT * FROM opportunities WHERE uuid_to_bin('94578249-65ec-4205-90f2-7d1a7d5ab64a') = uuid;\nSELECT * FROM users WHERE uuid_to_bin('26dbadeb-926f-4150-b11b-771b9d4c2f9a') = uuid;\n\nSELECT * FROM opportunities WHERE id = 4732493;\nselect * from activities where opportunity_id = 4732493;\n\n# ********************************************************************************************************\nSELECT * FROM teams WHERE id = 443; # 358, 14315, andrea.romano@correrenaturale.com\nSELECT * FROM opportunities WHERE team_id = 443;\n\nSELECT a.id, a.type, a.user_id, a.status, a.deleted_at, u.name, u.email, u.team_id as activity_team_id, u.status, u.deleted_at, t.name, t.status, s.team_id as stage_team_id\nFROM activities AS a\nJOIN stages AS s ON a.stage_id = s.id\nJOIN users AS u ON u.id = a.user_id\nJOIN teams AS t ON t.id = s.team_id\nWHERE u.team_id <> s.team_id and t.id > 135;\n\n\nSELECT\n crm_configuration_id,\n crm_provider_id,\n COUNT(*) as duplicate_count,\n GROUP_CONCAT(id) as stage_ids,\n GROUP_CONCAT(name) as stage_names\nFROM stages\nGROUP BY crm_configuration_id, crm_provider_id\nHAVING COUNT(*) > 1\nORDER BY duplicate_count DESC;\n\nselect * from stages where id IN (14898,14907);\n\nselect * from business_processes;\n\nSELECT *\nFROM crm_configurations\nWHERE team_id IN (\n SELECT team_id\n FROM crm_configurations\n GROUP BY team_id\n HAVING COUNT(*) > 1\n)\nORDER BY team_id;\n\nSELECT *\nFROM teams\nWHERE crm_id IN (\n SELECT crm_id\n FROM teams\n GROUP BY crm_id\n HAVING COUNT(*) > 1\n)\nORDER BY crm_id;\n\n# ***************************************************************************\nselect * from crm_configurations where provider = 'integration-app';\nSELECT * FROM teams WHERE id = 443; # Correre Naturale 358 14315 andrea.romano@correrenaturale.com\nselect * from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect id, uuid, actual_end_time, crm_provider_id, is_internal, playbook_category_id, type, user_id, lead_id, contact_id, account_id, opportunity_id, status, title from activities where crm_configuration_id = 358 order by actual_end_time desc;\nselect * from team_features where team_id = 358;\nselect * from activity_summary_logs;\n\nselect * from teams where id = 406;\n\n# ************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sportfive%'; # 267, 202, 14637, srv.salesforce@sportfive.com\nselect * from activities where crm_configuration_id = 202 order by actual_end_time desc;\n\nSELECT * FROM users where id = 14637;\nSELECT * FROM teams where id = 267;\nSELECT * FROM groups where id = 1118;\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 202\n AND status IN ('completed', 'failed')\n AND recording_state != 'stopped'\n AND type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n AND (is_private = 0 OR user_id = 14637)\n AND (\n (\n actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n ) OR (\n actual_start_time IS NULL\n AND type IN ('sms-outbound', 'sms-inbound')\n AND created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND NOT EXISTS (\n SELECT 1\n FROM tracks\n WHERE\n tracks.activity_id = activities.id\n AND tracks.type IN ('audio', 'video')\n )\nORDER BY actual_end_time DESC;\n\nSELECT DISTINCT\n a.*\nFROM activities a\nINNER JOIN tracks t ON a.id = t.activity_id\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams team ON u.team_id = team.id\nWHERE\n a.crm_configuration_id = 202\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n# and a.user_id = 14637\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND t.type IN ('audio', 'video')\n AND (\n (a.actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59')\n OR\n (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'\n )\n )\n AND (\n a.is_private = 0\n OR (\n a.is_private = 1\n AND a.user_id = 14637\n )\n )\n\nORDER BY a.actual_end_time DESC\n;\n\nSELECT DISTINCT a.*\nFROM activities a\nINNER JOIN users u ON a.user_id = u.id\nINNER JOIN teams t ON u.team_id = t.id\n# INNER JOIN tracks tr ON a.id = tr.activity_id\n# INNER JOIN groups g ON u.group_id = g.id\nWHERE 1=1\n AND t.id = 267\n# AND t.uuid = uuid_to_bin('aed4927b-f1ea-499e-94c3-83762fd233e8')\n AND a.status IN ('completed', 'failed')\n AND a.recording_state != 'stopped'\n AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n# AND tr.type NOT IN ('audio', 'video')\n AND (\n a.is_private = 0\n OR a.user_id = 14637\n )\n AND (\n (a.actual_start_time BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59')\n OR (\n a.actual_start_time IS NULL\n AND a.type IN ('sms-outbound', 'sms-inbound')\n AND a.created_at BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59'\n )\n )\n# and NOT EXISTS (\n# SELECT 1\n# FROM tracks t\n# WHERE t.activity_id = a.id\n# AND t.type IN ('audio', 'video')\n# )\n\nORDER BY a.actual_end_time DESC;\n\nSELECT * FROM tracks WHERE activity_id = 26485995;\n\nselect a.is_private, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\nwhere a.crm_configuration_id = 202\n# and a.is_internal = 0\nand (a.actual_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type IN (\"softphone\",\"softphone-inbound\",\"conference\",\"sms-inbound\")\nand a.status IN ('completed', 'failed')\n# and a.external_id is not null\norder by a.actual_end_time desc;\n\nselect * from activities a where a.crm_configuration_id = 202\nand a.actual_start_time between '2025-03-20 00:00:00' and '2025-03-21 00:00:00'\n# AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')\n\nselect g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a\ninner join users u on u.id = a.user_id\ninner join groups g on g.id = u.group_id\nwhere a.crm_configuration_id = 202\nand a.is_internal = 0\nand (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')\nand a.type = 'conference'\nand a.status != 'completed'\nand a.external_id is not null\norder by a.scheduled_start_time desc;\n\nSELECT * FROM teams WHERE name LIKE '%Tourlane%';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 209 and object_type = 'opportunity';\nSELECT * FROM crm_field_data WHERE crm_field_id = 98809;\n\nselect * from users where status = 1 AND timezone = 'MDT';\n\nselect * from opportunities where id = 3769814;\nselect * from deal_risks where opportunity_id = 3769814;\n\nselect cp.* from crm_profiles cp\njoin users u on cp.user_id = u.id\njoin crm_configurations crm on cp.crm_configuration_id = crm.id\nwhere crm.provider = 'hubspot' AND u.status = 1 AND log_notes != 'none';\n\nselect * from crm_fields where id = 154575;\n\nselect * from team_features where feature = 'SUPPORTS_SYNC_MISSING_CALL_DISPOSITIONS';\nSELECT * FROM teams WHERE id = 176; # crm 148\nselect * from activities where crm_configuration_id = 148 and provider = 'hubspot' order by id desc;\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nselect * from crm_fields cf\njoin crm_configurations crm on crm.id = cf.crm_configuration_id\nwhere crm.provider = 'hubspot' and cf.object_type IN ('account', 'contact');\n\n# *********************************************************************************************\nSELECT * FROM users WHERE id IN (15415, 15418);\nSELECT * FROM groups WHERE id IN (1805,1806);\nSELECT * FROM playbooks WHERE id = 1860;\nSELECT * FROM playbook_categories WHERE id = 38634;\nSELECT * FROM crm_fields WHERE id = 189962;\n\nSELECT * FROM teams WHERE name = 'Pulsar Group'; # 472, 380, 15138 raza.gilani@vuelio.com\n\nSELECT * FROM crm_profiles WHERE user_id = 15415;\nSELECT * FROM social_accounts WHERE sociable_id = 15415 and provider = 'salesforce';\n\nselect * from sidekick_settings where team_id = 472;\n\nSELECT * FROM activities WHERE uuid_to_bin('452c58c7-b87c-4fdd-953e-d7af185e9588') = uuid; # 28617536, user: 15418\nSELECT * FROM activities WHERE uuid_to_bin('399114ee-d3a8-458c-bff5-5f654658db0a') = uuid; # 28344407, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('f0aa567f-0ab1-4bbb-96aa-37dcf184676b') = uuid; # 28580288, user: 15415\nSELECT * FROM activities WHERE uuid_to_bin('50c086b1-2770-4bca-b5ae-6bac22ec426b') = uuid; # 28566069, user: 15415\n\n# *********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%TeamTailor%'; # 109, 218, 13969, salesforce-integrations@teamtailor.com\nselect * from crm_configurations where id = 218;\nSELECT * FROM activities WHERE uuid_to_bin('e39b5857-7fdb-4f5a-951a-8d3ca69bb1b0') = uuid; # 28338765\nSELECT * FROM users WHERE id IN (13232, 13230);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n0057R00000EPL5HQAX Inez Ekblad\n\n1091cb81-5ea1-4951-a0ed-f00b568f0140 Triman Kaur\n\nSELECT * FROM crm_profiles WHERE user_id IN (13232, 13230);\n\n############################################################################################\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939 00UVg00000FLvnSMAT\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id IN (94491,94493,94498);\nSELECT * FROM users WHERE id = 13658;\nSELECT * FROM teams WHERE id = 109;\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Strengthscope%'; # 481, 390, 15420, katy.holden@strengthscope.comk\nSELECT * FROM stages WHERE crm_configuration_id = 390;\nselect * from business_processes where team_id = 481 and crm_configuration_id = 390;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 481\nand sa.provider = 'salesforce';\n\n\nSELECT * FROM users WHERE id = 15780; # team 462\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 462\nand sa.provider = 'hubspot';\n\n\nselect * from teams where id = 495;\nSELECT * FROM users WHERE id = 15794;\nselect * from social_accounts where sociable_id = 15794;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Flight%'; # 427, 333, 13752\nSELECT * FROM accounts WHERE team_id = 427 and crm_provider_id = '668731000183444517';\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Group GTI%'; # 495, 407, 15794\nSELECT * FROM activities WHERE crm_configuration_id = 407\nand status = 'completed' and type = 'conference'\norder by id desc;\n\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from permission_role;\n\nselect * from activities where crm_configuration_id = 407 and status = 'completed' order by id desc;\nSELECT * FROM activities WHERE id = 29512773;\nSELECT * FROM activities WHERE id IN (29042721,28991325,29002874);\n\nSELECT al.* from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 407\n# and a.id IN (29042721,28991325,29002874);\n\nSELECT * FROM users WHERE id = 15794;\nSELECT * FROM users WHERE team_id = 495;\nSELECT * FROM social_accounts WHERE sociable_id = 15794;\nSELECT * FROM opportunities WHERE team_id = 495 and name like '%OC:%';\nSELECT * FROM contacts WHERE team_id = 495;\nSELECT * FROM leads WHERE team_id = 495;\nSELECT * FROM accounts WHERE team_id = 495;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 407;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 407;\nSELECT * FROM crm_configurations WHERE id = 407;\nSELECT * FROM opportunities WHERE team_id = 495 and close_date BETWEEN '2025-06-01' AND '2025-07-01'\nand user_id IS NOT NULL and is_closed = 1 and is_won = 1;\n\n# ********************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Hamilton Court FX LLP%'; # 249, 187, 10103\nSELECT * FROM activities WHERE uuid_to_bin('4659c2bb-9a49-484e-9327-a3d66f1e028c') = uuid; # 28951064\nSELECT * FROM crm_fields WHERE crm_configuration_id = 187 and object_type IN ('tasks', 'event');\n\n# *********************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Checkstep%'; # 325, 256, 11753\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 325\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid; # 28611085\nSELECT * FROM activities WHERE uuid_to_bin('980f0336-840b-4185-a5a9-30cf8b0749a8') = uuid; # 28719733\nSELECT * FROM activity_summary_logs where activity_id = 28719733;\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 356, 9444\nSELECT * FROM activity_summary_logs where sent_at BETWEEN '2025-06-09 11:38:00' AND '2025-06-09 11:40:00';\nSELECT * FROM leads WHERE crm_configuration_id = 356 and crm_provider_id = '230045001502770504'; # 823630\nselect * from activities where crm_configuration_id = 356 and lead_id = 841732;\n\nSELECT * from activity_summary_logs al join activities a on a.id = al.activity_id\nwhere a.crm_configuration_id = 356;\n\nselect * from activities where crm_configuration_id = 356\nand actual_end_time between '2025-06-09 11:00:00' and '2025-06-09 12:00:00'\norder by id desc;\n\nselect * from accounts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from leads where crm_configuration_id = 356 and crm_provider_id = '230045001514275654' order by id desc;\nselect * from contacts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\nselect * from opportunities where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;\n\nselect * from team_features where team_id = 260;\nselect * from features where id IN (1,2,4,6,18,19,20,9,10,3,23,24,25,26,27);\n\nSELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid;\n\nselect * from crm_fields;\nselect * from crm_layout_entities;\n\nSELECT * FROM teams WHERE name LIKE '%Optable%';\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Teamtailor%'; # 109, 218, 13969\nSELECT * FROM crm_configurations WHERE id = 218;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 109\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939\nSELECT * FROM crm_field_data WHERE activity_id = 28655939;\nSELECT * FROM crm_fields WHERE id in (94491,94493,94498);\n\nselect * from teams where crm_id IS NULL;\n\nSELECT * FROM activities WHERE uuid_to_bin('71aa8a0c-9652-4ff6-bee7-d98ae60abef6') = uuid;\n\n# *************************************************************************************************\nselect * from team_domains where team_id = 399;\nSELECT * FROM teams WHERE name LIKE '%Rydoo%'; # 399, 318, 13207\n\nselect * from calendar_events where id = 5163781;\nSELECT * FROM activities WHERE uuid_to_bin('be2cbc52-7fda-46a0-9ae0-25d9553eafc0') = uuid; # 29443896\nSELECT * FROM participants WHERE activity_id = 29443896;\nselect * from contacts where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\nselect * from leads where crm_configuration_id = 318 and email = 'marianne.westeng@strawberry.no';\n\nselect * from activities where user_id = 14937 order by created_at ;\n\nselect * from users where id = 14937;\n\nselect * from contacts where crm_configuration_id = 318 and email LIKE '%@strawberry.se';\nselect * from opportunities where crm_configuration_id = 318 and crm_provider_id = '006Sf00000D1WOAIA3';\n\nselect * from activities a join participants p on a.id = p.activity_id\nwhere crm_configuration_id = 318 and a.updated_at > '2025-06-23T08:18:43Z';\n\n# *************************************************************************************************\nSELECT * FROM opportunities WHERE team_id = 379 and crm_provider_id = '39334518886';\nSELECT * FROM opportunities WHERE team_id = 379 order by id desc;\nSELECT * FROM teams WHERE id = 379;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 379 and sociable_id = 13852\nand sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations WHERE id = 307;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 307;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1027;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 307\n and id IN (144750,144855,145158,155227);\n\nSELECT * FROM activities;\n\n\nselect * from activities\nwhere created_at > '2025-07-01 00:00:00'\n# and created_at < '2025-08-01 00:00:00'\nand type not in ('email-outbound', 'email-inbound')\nand account_id is null\nand contact_id is null\nand lead_id is null\nand opportunity_id is not null\n;\nSELECT * FROM activities WHERE id IN (25344155, 25344296, 25501909, 28692187);\nSELECT * FROM crm_configurations WHERE id in (335,301,200);\n\nselect * from crm_fields where crm_configuration_id = 230 and crm_provider_id = 'Age2__c';\n\nSELECT * FROM teams WHERE name LIKE '%Resights%';\nselect * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';\n\nselect * from crm_configurations where provider = 'bullhorn'; # 344\nselect * from teams where id IN (442);\n\nselect * from activities\nwhere crm_configuration_id = 177\nand provider = 'amazon-connect'\n order by id desc;\n# and source <> 'gong';\n\nselect * from activity_providers where provider = 'amazon-connect';\n\nSELECT * FROM activities WHERE uuid_to_bin('cec1993b-a7e5-4164-b74d-d680ea51d2f2') = uuid;\n\n\nselect * from crm_configurations where store_transcript = 1;\nSELECT * FROM teams WHERE id IN (80);\n\n# *************************************************************************************************\nSELECT * FROM teams WHERE name LIKE '%Sedna%'; # 277, 213, 12594\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 277\nand sa.provider = 'salesforce';\n\nselect * from activities where crm_configuration_id = 213 and account_id = 2511502;\n\nselect * from crm_configurations where id = 213;\n\nSELECT * FROM activities WHERE uuid_to_bin('35aa790a-8569-4544-8268-66f9a4a26804') = uuid; # 33981604\nSELECT * FROM participants WHERE activity_id = 33981604;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 337 and object_type = 'task';\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 431\nand sa.provider = 'salesforce';\nSELECT * FROM activities WHERE uuid_to_bin('b5476c7d-19a8-491b-869d-676ea1e857b6') = uuid; # 33997223\nselect * from activity_summary_logs where activity_id = 33997223;\nselect * from activity_notes where activity_id = 33997223;\n\n# ***********************************\nSELECT * FROM teams WHERE name LIKE '%Abode%';\n\n\nselect * from features;\nselect * from teams t\nwhere t.status = 'active'\nand id NOT IN (select team_id from team_features where feature_id = 9)\n;\n\n\nselect * from playbook_layouts where playbook_id = 1725;\nSELECT * FROM activities WHERE uuid_to_bin('65cc283c-4849-49e6-927f-4c281c8fea19') = uuid; # 34297473\nselect * from teams where id = 318;\nselect * from crm_configurations where team_id = 318;\nselect * from playbooks where team_id = 318;\nSELECT * FROM crm_layouts where crm_configuration_id = 381;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1259;\nSELECT * FROM crm_fields WHERE id IN (192938,192936,192939);\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1266;\nSELECT * FROM crm_fields WHERE id IN (192980,192991,192997,192998,193064,193067);\n\nSELECT * FROM activities WHERE uuid_to_bin('a902289b-285c-48eb-9cc2-6ad6c5d938f5') = uuid; # 34297533\n\n\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nSELECT * FROM crm_fields WHERE id IN (131668,131669,131670,131671,131676,131797);\n\nSELECT * FROM teams WHERE name LIKE '%Peripass%'; # 351, 281, 12124\nselect * from crm_layouts where crm_configuration_id = 281;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 927;\nselect * from crm_fields where crm_configuration_id = 281 and id in (131668,131669,131670,131671,131676,131797);\nselect * from opportunities where crm_configuration_id = 281;\n\nSELECT * FROM activities WHERE id IN (34211315, 34130075);\nSELECT * FROM crm_field_data WHERE object_id IN (34211315, 34130075);\n\nselect cf.crm_configuration_id, cle.crm_layout_id, cle.id, cf.id from crm_field_data cfd\njoin crm_layout_entities cle on cle.id = cfd.crm_layout_entity_id\njoin crm_fields cf on cle.crm_field_id = cf.id\nwhere cf.deleted_at IS NOT NULL\nGROUP BY cle.id, cf.id;\n\nselect * from crm_layouts where id IN (355);\nselect u.email, t.crm_id, t.* from teams t\njoin users u on u.id = t.owner_id\nwhere crm_id IN (97);\n\nSELECT * FROM crm_fields WHERE id = 96492;\n\nselect * from permissions;\nselect * from permission_role where permission_id = 247;\nselect * from roles;\n\nselect * from migrations;\n# *****************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('291e3c21-11cc-4728-aee7-6e4bedf86d72') = uuid; # 34262174\nSELECT * FROM crm_configurations WHERE id = 301;\nSELECT * FROM teams WHERE id = 343;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 343\nand sa.provider = 'hubspot';\n\nselect * from participants where activity_id = 34262174;\n\nselect * from contacts where crm_configuration_id = 301 and id = 6976326;\nselect * from accounts where crm_configuration_id = 301 and id IN (4647626, 4815829); # 30761335403\n\nselect * from activity_summary_logs where activity_id = 34262174;\n\nselect * from users where status = 1 AND timezone = 'EST';\n\n# ****************************************************************************\nSELECT * FROM users WHERE id = 13869;\nSELECT * FROM crm_configurations WHERE id = 320;\nSELECT * FROM teams WHERE id = 401;\n\nSELECT * FROM activities WHERE uuid_to_bin('2228c16f-10be-48d5-90d4-67385219dc01') = uuid; # 29670601\n\nSELECT * FROM accounts WHERE id = 7761483;\nSELECT * FROM opportunities WHERE id = 6051814;\n\nSELECT * FROM teams WHERE name LIKE '%Seedlegals%';\n\n;select * from opportunities where updated_at > '2025-10-11' AND crm_provider_id = '34713761166';\n\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 177;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 577;\nSELECT * FROM crm_fields WHERE id IN (68458,68459,68480,68497,68524,68530,68554,68618,68662,68781,68810,68898,68981,69049,97467);\n\nSELECT t.id, crm.id, t.name, crm.sync_objects, crm.provider, crm.last_synced_at FROM crm_configurations crm join teams t on t.crm_id = crm.id\nwhere t.status = 'active' AND crm.provider = 'hubspot' AND crm.last_synced_at < '2025-10-22 00:00:00';\n\nSELECT * FROM activities WHERE uuid_to_bin('fa09449f-cba9-496a-b8f3-865cd3c72351') = uuid;\nSELECT * FROM crm_configurations where id = 184;\nSELECT * FROM teams WHERE id = 246;\nSELECT * FROM social_accounts WHERE sociable_id = 9259 and provider = 'hubspot';\n\nSELECT * FROM users WHERE email LIKE '%rhian.old@bud.co.uk%'; # 17700\nSELECT * FROM teams WHERE id = 551;\n\nSELECT * FROM crm_configurations WHERE id = 471;\nSELECT * FROM activities WHERE crm_configuration_id = 471 and crm_provider_id IS NOT NULL;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 471;\nSELECT * FROM crm_fields WHERE id = 307260;\nSELECT * FROM crm_field_values WHERE crm_field_id = 307260;\n\nselect * from crm_layouts where crm_configuration_id = 471;\n\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1547;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1548;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 551 and sa.provider = 'hubspot';\n\nSELECT * FROM teams WHERE name LIKE '%$PCS%';\n\n# ********************************************************************************************************\nselect * from crm_configurations crm\njoin teams t on t.crm_id = crm.id\nwhere t.status = 'active'\nand crm.provider = 'hubspot';\n\n# $slug = 'HUBSPOT_WEBHOOK_SYNC';\n# $team = Jiminny\\Models\\Team::find(2);\n# $feature = Feature::query()->where('slug', $slug)->first();\n# TeamFeature::query()->create(['feature_id' => $feature->getId(),'team_id' => $team->getId()]);\n\n# hubspot_webhook_metrics\n\nselect * from crm_configurations where id = 331; # 416\nSELECT * FROM teams WHERE id = 416;\nSELECT * FROM opportunities WHERE team_id = 190;\n\nSELECT * FROM teams WHERE name LIKE '%Lead Forensics%';\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 190 and sa.provider = 'hubspot';\n\n\n\nSELECT * FROM teams WHERE name LIKE '%Rapaport%'; # 431, 337\nSELECT * FROM teams where id = 431;\nSELECT * FROM crm_configurations where team_id = 431;\nSELECT * FROM activity_providers where team_id = 431;\nSELECT * FROM activities where crm_configuration_id = 337 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 431 and sa.provider = 'salesforce';\n\nSELECT * FROM teams WHERE name LIKE '%BiP%'; # 401, 320\nSELECT * FROM teams where id = 401;\nSELECT * FROM crm_configurations where team_id = 401;\nSELECT * FROM activity_providers where team_id = 401;\nSELECT * FROM activities where crm_configuration_id = 320 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\nSELECT sa.id,\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 401 and sa.provider = 'salesforce';\n\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 307; # 379 - Story Terrace Inc , portalId: 3921157\nSELECT * FROM contacts WHERE team_id = 379 and updated_at > '2026-01-31 11:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-01 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 379 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 379 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 485; # 563 - LATUS Group (ad94d501-5d09-44fd-878f-ca3a9f8865c3) , portalId: 3904501\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 563 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 338; # 432 - Formalize , portalId: 9214205\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 432 and sa.provider = 'hubspot';\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 432 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 436; # 519 - Moxso , portalId: 25531989\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 519 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 96; # 119 - Nourish Care , portalId: 26617984\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-02 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 119 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 331; # 416 - The National College , portalId: 7213852\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 416 and updated_at > '2026-02-04 11:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 308; # 380 - Foodles , portalId: 7723616\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 380 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 379; # 471 - imat-uve , portalId: 9177354\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 471 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 465; # 545 - Spotler , portalId: 144759271\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 545 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 455; # 537 - indevis , portalId: 25666868\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 537 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 200; # 265 - Jobadder , portalId: 6426676\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 265 and updated_at > '2026-02-06 10:30:00' order by updated_at desc;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 335; # 429 - Eletive , portalId: 6110563\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 429 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 363; # 456 - Global Group , portalId: 8901981\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 456 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 297; # 369 - Unbiased , portalId: 9229005\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 369 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 353; # 449 - Fuuse , portalId: 25781745\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 449 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 487; # 566 - Nimbus , portalId: 39982590\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 566 and updated_at > '2026-02-09 10:30:00' order by updated_at desc;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 487;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1630;\nselect * from crm_fields where crm_configuration_id = 487 and\n(uuid_to_bin('4c6b2971-64d4-45b8-b377-427be758b5a5') = uuid or uuid_to_bin('59e368d8-65a0-4b77-b611-db37c99fbe68') = uuid);\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 420; # 506 - voiio , portalId: 145629154\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 506 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 479; # 558 - Momice , portalId: 535962\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 558 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 59; # 80 - Storyclash GmbH , portalId: 4268479\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 80 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 175; # 203 - Team iAM , portalId: 5534732\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 203 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 368; # 460 - OneTouch Health , portalId: 5534732183355\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 460 and updated_at > '2026-02-10 15:00:00' order by updated_at desc;\n\n\n\nselect * from users where id = 29643;\nSELECT * FROM crm_field_values WHERE crm_field_id = 375177;\n# ********************************************************************\nSELECT * FROM teams WHERE name LIKE '%Buynomics%'; # 462, 482, 14910\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\n# and description like '%The call focused on understanding Welch%'\norder by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 462 and sa.provider = 'salesforce';\n\nselect * from contacts where crm_configuration_id = 482 and name = 'Cyndall Hill'; # 15504749\nselect * from contacts where id = 10891096; # 482\nSELECT * FROM activities WHERE crm_configuration_id = 482\nand type NOT IN ('email-inbound', 'email-outbound')\nand contact_id = 15504749\norder by id desc;\n\nselect * from activities where id = 36793003; # 96cc7bc1-8622-4d27-92f4-baf664fc1a56, 00UOf00000PDdOXMA1\nselect * from transcription where id = 7646782;\nselect * from ai_prompts where transcription_id = 7646782;\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7a8471a3-847e-4822-802b-ddf426bbc252') = uuid; # 37370018\nSELECT * FROM activity_summary_logs WHERE activity_id = 37370018;\nSELECT * FROM teams WHERE id = 555;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 555 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('7c17b8aa-09df-4f85-a0f7-51f47afd712d') = uuid; # 37395250\nSELECT * FROM activities WHERE uuid_to_bin('14d60388-260d-494b-aa0d-63fdb1c78026') = uuid; # 37395250\n\nSELECT a.* FROM activities a JOIN crm_configurations c on c.id = a.crm_configuration_id\nwhere a.type IN ('softphone', 'softphone-outbound') and c.provider = 'hubspot'\nand a.provider NOT IN ('hubspot')\n# and a.provider IN ('salesloft')\n# and c.id NOT IN (70)\n# and a.duration > 30\n# and actual_start_time > '2026-02-05 00:00:00'\norder by a.id desc;\n\nSELECT * FROM activities WHERE id = 37549787;\nSELECT * FROM crm_profiles WHERE user_id = 17613;\n\nSELECT * FROM crm_configurations WHERE id = 70;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 93 and sa.provider = 'hubspot';\n\nSELECT asf.activity_search_id, asf.id, asf.value\nFROM activity_search_filters asf\nWHERE asf.filter = 'group_id'\nAND asf.value IN (\n SELECT CONCAT(\n HEX(SUBSTR(uuid, 5, 4)), '-',\n HEX(SUBSTR(uuid, 3, 2)), '-',\n HEX(SUBSTR(uuid, 1, 2)), '-',\n HEX(SUBSTR(uuid, 9, 2)), '-',\n HEX(SUBSTR(uuid, 11))\n )\n FROM groups\n WHERE deleted_at IS NOT NULL\n);\n\nSELECT * FROM crm_configurations WHERE id = 373; # KPSBremen.de 465 # - no social account\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 465 and sa.provider = 'hubspot';\n\nselect * from crm_configurations where id = 494;\n\nSELECT * FROM teams WHERE name LIKE '%splose%'; # 572, 495, 18708\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 572 and sa.provider = 'pipedrive';\n\nselect * from opportunities where team_id = 572\n# and name like '%Onebright%'\n# and is_closed = 1 and is_won = 0\n order by id desc;\n\n\nselect * from users where deleted_at is null and status = 2;\n\nselect * from contacts where id = 17900517;\nselect * from accounts where id = 10109838;\nselect * from opportunities where id = 6955880;\n\nselect * from opportunity_contacts where opportunity_id = 6955880;\nselect * from opportunity_contacts where contact_id = 17900517;\n\nselect * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id\nwhere crm.provider != 'salesforce';\n\nSELECT * FROM activities WHERE uuid_to_bin('adcb8331-5988-4353-834e-383a355abba2') = uuid; # 38056424, crm 104659682404\nselect * from teams where id = 456;\nSELECT * FROM crm_configurations WHERE id = 363;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 456 and sa.provider = 'hubspot';\n\nselect * from crm_layouts where crm_configuration_id = 363;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id IN (1203, 1204, 1635);\nSELECT * FROM crm_fields WHERE id IN (181536, 181538, 213455);\n\nSELECT * FROM teams WHERE name LIKE '%Electric%'; # 342, 272, 12767\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and name like 'NORTHUMBRIA POL%'; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 order by remotely_created_at asc; # and updated_at > '2025-07-01 00:00:00';\nSELECT * FROM opportunities WHERE crm_configuration_id = 272 and updated_at > '2026-01-01 00:00:00';\nSELECT * FROM crm_fields WHERE crm_configuration_id = 272 and object_type = 'opportunity';\nSELECT * FROM crm_field_values WHERE crm_field_id = 127164;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 342 and sa.provider = 'pipedrive';\n\nSELECT * FROM teams WHERE id = 472;\nSELECT * FROM crm_configurations WHERE id = 380;\nselect * from activities where id = 38285673; # 38285673\nSELECT * FROM users WHERE id = 16942;\nSELECT * FROM groups WHERE id = 1964;\nSELECT * FROM playbooks WHERE id = 2033;\n\nselect * from teams where created_at > '2026-03-09';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 499; # 1065\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1678;\n\nSELECT * FROM teams WHERE id = 575;\nselect * from opportunities where team_id = 575;\n\nSELECT * FROM activities WHERE uuid_to_bin('96b1261f-2357-49f9-ab38-23ce12008ea0') = uuid;\n\nselect * from contacts c\nwhere c.crm_configuration_id = 370 order by c.updated_at desc;\n\nSELECT * FROM participants where activity_id = 38833541;\nSELECT * FROM participants where activity_id = 39216301;\nSELECT * FROM activity_summary_logs where activity_id = 39216301;\nSELECT * FROM activities WHERE uuid_to_bin('c7d99fbe-1fb1-41f2-8f4d-52e2bf70e1e9') = uuid; # 38833541, crm 478116564181\nSELECT * FROM activities WHERE uuid_to_bin('2e6ff4d3-9faa-447a-a8c1-9acde4d885ae') = uuid; # 39216301, crm 480171536586\nselect * from crm_profiles where crm_configuration_id = 319 and crm_provider_id = 525785080;\nselect * from opportunities where crm_configuration_id = 319 and crm_provider_id = 410150124747;\nselect * from accounts where crm_configuration_id = 319 and crm_provider_id = 47150650569;\nselect * from contacts where crm_configuration_id = 319 and crm_provider_id IN ('665587441856', '742723347700');\n# owner 13236 525785080\n# contact 1 16779180 665587441856 - activity - Alex Howes alex@supportroom.com created 2026-01-26\n# contact 2 19247563 742723347700 - ash@supportroom.com 2026-03-24\n# company 4176133 47150650569\n# deal 7100953 410150124747\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 400 and sa.provider = 'hubspot';\n\nselect * from features;\nselect * from team_features where feature_id = 40;\n\nselect * from teams where id = 556; # owner: 18101, crm: 477\nselect * from crm_configurations where id = 477;\nSELECT * FROM users WHERE id = 18101;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 556 and sa.provider = 'integration-app';\n\nselect * from opportunities where id = 7594349;\nselect * from opportunity_stages where opportunity_id = 7594349 order by created_at desc;\nselect * from business_processes where id = 6024;\nselect * from business_process_stages where stage_id = 16352;\nselect * from business_process_stages where business_process_id = 6024;\nselect * from stages where team_id = 459;\nselect * from teams where id = 459;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 459 and sa.provider = 'hubspot';\n\nSELECT os.stage_id, s.crm_provider_id, s.name, COUNT(*) as cnt\nFROM opportunity_stages os\nJOIN stages s ON s.id = os.stage_id\nWHERE os.opportunity_id = 7594349\nGROUP BY os.stage_id, s.crm_provider_id, s.name\nORDER BY cnt DESC;\n\nSELECT s.id, s.crm_provider_id, s.name, s.team_id, s.crm_configuration_id\nFROM stages s\nJOIN business_process_stages bps ON bps.stage_id = s.id\nWHERE bps.business_process_id = 6024\nAND s.crm_provider_id = 'contractsent';\n\nselect * from stages where id IN (16352,20612,18281,7344,16378,16309,5036,15223,14535,6293,12098,11607)\n\nSELECT * FROM teams WHERE name LIKE '%Pulsar Group%'; # 472, 380, 15138, raza.gilani@vuelio.com\nselect * from playbooks where team_id = 472; # event 226147\nSELECT * FROM playbook_categories WHERE playbook_id = 2288;\nSELECT * FROM crm_fields WHERE id = 226147;\nSELECT * FROM crm_field_values WHERE crm_field_id = 226147;\n\nSELECT * FROM crm_configurations WHERE id = 380;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 472 and sa.provider = 'salesforce';","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}]...
|
-5085639135241113326
|
2146738311620114029
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
createSyncJob
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
namespace Jiminny\Console\Commands\Crm;
use Jiminny\Console\Commands\Command;
use Jiminny\Jobs\Crm\SyncObjects as SyncObjectsJob;
use Jiminny\Models\Team;
class SyncObjects extends Command
{
private const int STAGGER_DELAY_SECONDS = 2;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'crm:sync-objects {team?} {--sync}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sync remote CRM objects.';
/**
* Execute the console command.
*/
public function handle(): void
{
$teamId = $this->argument('team');
$teams = [];
if ($teamId) {
$teams[] = Team::idOrUuId($teamId);
} else {
$teams = Team::where('status', Team::STATUS_ACTIVE)->get();
}
$dispatchIndex = 0;
foreach ($teams as $team) {
$config = $team->getCrmConfiguration();
if ($config->getAttribute('sync_objects') === false) {
continue;
}
if ($team->getAttribute('owner_id') === null) {
$this->error(sprintf('Team %s (%s) is not yet assigned an owner. skipping...', $team->getName(), $team->getUuid()));
continue;
}
if ($config->getAttribute('over_quota_at') || $config->getAttribute('api_disabled_at')) {
$this->error(sprintf('Team %s (%s) API unavailable... skipping...', $team->getName(), $team->getUuid()));
continue;
}
$delay = $dispatchIndex * self::STAGGER_DELAY_SECONDS;
$lastSyncedAt = $config->getAttribute('last_synced_at');
$this->info(
sprintf(
'Syncing objects for %s (%s) since %s (delay: %ds)',
$team->getName(),
$team->getUuid(),
$lastSyncedAt?->toDateTimeString() ?? 'never',
$delay
)
);
$this->dispatch((new SyncObjectsJob($team))->delay(now()->addSeconds($delay)));
$dispatchIndex++;
}
}
}
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
27
9
23
3
105
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM team_features where team_id = 1;
SELECT * FROM teams WHERE name LIKE '%Vixio%'; # 340,270,11922
SELECT * FROM users WHERE team_id = 340; # 12015
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 340
and sa.provider = 'salesforce';
# and sa.provider = 'salesloft';
select * from crm_fields where crm_configuration_id = 270 and object_type = 'event';
# 125558 - Event Type - Event_Type__c
# 125552 - Event Status - Event_Status__c
SELECT * FROM sidekick_settings WHERE team_id = 340;
SELECT * FROM crm_field_values WHERE crm_field_id in (125552);
select * from activities where crm_configuration_id = 270
and type = 'conference' and crm_provider_id IS NOT NULL
and actual_start_time > '2024-09-16 09:00:00' order by scheduled_start_time;
SELECT * FROM activities WHERE id = 20871677;
SELECT * FROM crm_field_data WHERE activity_id = 20871677;
select * from crm_layouts where crm_configuration_id = 270;
select * from crm_layout_entities where crm_layout_id in (886,887);
SELECT * FROM crm_configurations WHERE id = 270;
select * from playbooks where team_id = 340; # 1514
select * from groups where team_id = 340;
SELECT * FROM crm_fields WHERE id IN (125393, 125401);
select g.name as 'team name', p.name as 'playbook name', f.label as 'activity type field' from groups g
join playbooks p on g.playbook_id = p.id
join crm_fields f on p.activity_field_id = f.id
where g.team_id = 340;
SELECT * FROM activities WHERE uuid_to_bin('0c180357-67d2-419e-a8c3-b832a3490770') = uuid; # 20448716
select * from crm_field_data where object_id = 20448716;
select * from activities where crm_configuration_id = 270 and provider = 'salesloft' order by id desc;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%CybSafe%'; # 343,273,12008
select * from opportunities where team_id = 343;
select * from opportunities where team_id = 343 and crm_provider_id = '18099102526';
select * from opportunities where team_id = 343 and account_id = 945217482;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 343
and sa.provider = 'hubspot';
select * from accounts where team_id = 343 order by name asc;
select * from stages where crm_configuration_id = 273 and type = 'opportunity';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Voyado%'; # 353,283,12143
SELECT * FROM activities WHERE crm_configuration_id = 283 and account_id = 3777844 order by id desc;
SELECT * FROM accounts WHERE team_id = 353 AND name LIKE '%Salesloft%';
SELECT * FROM activities WHERE id = 20717903;
select * from participants where activity_id IN (20929172,20928605,20928468,20926272,20926271,20926270,20926269,20916499,20916454,20916436,20916435,20900015,20900014,20900013,20897312,20897243,20897241,20897237,20897232,20897229,20893648,20893231,20893230,20893229,20893228,20889784,20885039,20885038,20885037,20885036,20885035,20882728,20882708,20882703,20882702,20869828,20869811,20869806,20869801,20869799,20869798,20869796,20869795,20869794,20869761,20869760,20869759,20868688,20868687,20850340,20847195,20841710,20833967,20827021,20825307,20825305,20825297,20824615,20824400,20823927,20821760,20795588,20794233,20794057,20793710,20785811,20781789,20781394,20781307,20762651,20758453,20758282,20757323,20756643,20756636,20756629,20756627,20756606,20756605,20756604,20756603,20756602,20756600,20756599,20756598,20756595,20756594,20756589,20756587,20756577,20756573,20748918,20748386,20748385,20748384,20748383,20748382,20748381,20748380,20748379,20748377,20748375,20748373,20743301,20717905,20717904,20717903,20717901,20717899);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 353
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%modern world business solutions%'; # 345,275,12016, [EMAIL]
SELECT * FROM activities WHERE uuid_to_bin('3921d399-3fef-4609-a291-b0097a166d43') = uuid;
# id: 20940638, user: 12022, contact: 5305871
SELECT * FROM activity_summary_logs WHERE activity_id = 20940638;
select * from contacts where team_id = 345 and crm_provider_id = '30891432415' order by name asc; # 5305871
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 345
and sa.provider = 'hubspot';
select * from users where team_id = 345 and id = 12022;
SELECT * FROM crm_profiles WHERE user_id = 12022;
SELECT * FROM participants WHERE activity_id = 20940638;
SELECT * FROM users u
JOIN crm_profiles cp ON u.id = cp.user_id
WHERE u.team_id = 345;
select * from contacts where team_id = 345 and crm_provider_id = '30880813535' order by name desc; # 5305871
select * from team_features where team_id = 345;
SELECT * FROM activities WHERE uuid_to_bin('11701e2d-2f82-4dab-a616-1db4fad238df') = uuid; # 21115197
SELECT * FROM participants WHERE activity_id = 20897406;
SELECT * FROM activities WHERE uuid_to_bin('63ba55cd-1abc-447d-83da-0137000005b7') = uuid; # 20953912
SELECT * FROM activities WHERE crm_configuration_id = 275 and provider = 'ringcentral' and title like '%1252629100%';
SELECT * FROM activities WHERE id = 20946641;
SELECT * FROM crm_profiles WHERE user_id = 10211;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120,97,10984, [EMAIL]
SELECT * FROM opportunities WHERE crm_configuration_id = 97 and crm_provider_id = '006N1000006c5PpIAI';
select * from stages where crm_configuration_id = 97 and type = 'opportunity';
select * from opportunities where team_id = 120;
select * from crm_configurations crm join teams t on crm.id = t.crm_id
where 1=1
AND t.current_billing_plan IS NOT NULL
AND crm.auto_sync_activity = 0
and crm.provider = 'hubspot';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Exclaimer%'; # 270,205,10053,[EMAIL]
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 270
and sa.provider = 'salesforce';
SELECT * FROM activities WHERE uuid_to_bin('b54df794-2a9a-4957-8d80-09a600ead5f8') = uuid; # 21637956
SELECT * FROM crm_profiles WHERE user_id = 11446;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Cygnetise%'; # 372,300,12554, [EMAIL]
select * from playbooks where team_id = 372;
select * from crm_fields where crm_configuration_id = 300 and object_type = 'event'; # 141340
SELECT * FROM crm_field_values WHERE crm_field_id = 141340;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 372
and sa.provider = 'salesforce';
select * from crm_profiles where crm_configuration_id = 300;
SELECT * FROM crm_configurations WHERE team_id = 372;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Planday%'; # 291,242,11501,[EMAIL]
SELECT * FROM opportunities WHERE team_id = 291 and crm_provider_id = '006bG000005DO86QAG'; # 3207756
select * from crm_field_data where object_id = 3207756;
SELECT * FROM crm_fields WHERE id = 111834;
select f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value
FROM crm_fields f
JOIN crm_field_data fd ON f.id = fd.crm_field_id
WHERE f.crm_configuration_id = 242
AND f.object_type = 'opportunity'
AND fd.object_id IN (3207756)
ORDER BY fd.object_id, fd.updated_at;
SELECT * FROM crm_configurations WHERE auto_connect = 1;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150,[EMAIL]
select * from group_deal_risk_types drgt join groups g on drgt.group_id = g.id
where g.team_id = 187;
select * from `groups` where team_id = 187;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 187
and sa.provider = 'salesforce';
# Destination - 98870 - Destination__c
# Stage - 79014 - StageName
# Land Arrangement - 98856 - Land_Arrangement__c
# Flight - 98848 - Flight__c
# Last activity date - 98812 - LastActivityDate
# Last modified date - 98809 - LastModifiedDate
# Last inbound mail timestamp - 99151 - Last_Inbound_Mail_Timestamp__c
# next call - 98864 - Next_Call__c
select * from crm_fields where crm_configuration_id = 209 and object_type = 'opportunity';
SELECT * FROM crm_layouts WHERE crm_configuration_id = 209;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;
select * from opportunities where team_id = 187 and name LIKE'%Muriel Sal%';
select * from opportunities where team_id = 187 and user_id = 9951 and is_closed = 0;
select * from activities where opportunity_id = 3538248;
SELECT * FROM crm_profiles WHERE user_id = 8150;
select * from deal_risks where opportunity_id = 3538248;
select * from teams where crm_id IS NULL;
SELECT opp.id AS opportunity_id,
u.group_id AS group_id,
MAX(
CASE
WHEN a.type IN ("sms-inbound", "sms-outbound") THEN a.created_at
ELSE a.actual_end_time
END) as last_date
FROM opportunities opp
left join activities a on a.opportunity_id = opp.id
inner join users u on opp.user_id = u.id
where opp.user_id IN (9951)
AND opp.is_closed = 0
and a.status IN ('completed', 'received', 'delivered') OR a.status IS NULL
group by opp.id;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Cybsafe%'; # 343,301,12008,[EMAIL]
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 343
and sa.provider = 'hubspot';
SELECT * FROM crm_profiles WHERE crm_configuration_id = 301;
SELECT * FROM contacts WHERE id = 6612363;
SELECT * FROM accounts WHERE id = 4235676;
SELECT * FROM opportunities WHERE crm_configuration_id = 301 and crm_provider_id = 32983784868;
select * from opportunity_stages where opportunity_id = 4503759;
# SELECT * FROM opportunities WHERE id = 4569937;
select * from activities where crm_configuration_id = 301;
SELECT * FROM activities WHERE uuid_to_bin('d3b2b28b-c3d0-4c2d-8ed0-eef42855278a') = uuid; # 26330370
SELECT * FROM participants WHERE activity_id = 26330370;
SELECT * FROM teams WHERE id = 375;
select * from playbooks where team_id = 375;
select * from stages where crm_configuration_id = 301 and type = 'opportunity';
select * from teams;
select * from contact_roles;
SELECT * FROM opportunities WHERE team_id = 343 and user_id = 12871 and close_date >= '2024-11-01';
select * from users u join crm_profiles cp on cp.user_id = u.id where u.team_id = 343;
SELECT * FROM crm_field_data WHERE object_id = 3771706;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 343
and sa.provider = 'hubspot';
SELECT * FROM crm_fields WHERE crm_configuration_id = 301 and object_type = 'opportunity'
and crm_provider_id LIKE "%traffic_light%";
SELECT * FROM crm_field_values WHERE crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531);
SELECT fd.* FROM opportunities o
JOIN crm_field_data fd ON o.id = fd.object_id
WHERE o.team_id = 343
# and o.user_id IS NOT NULL
and fd.crm_field_id IN (144020,144048,144111,144113,144126,144481,144508,144531)
and fd.value != ''
order by value desc
# group by o.id
;
SELECT * FROM opportunities WHERE id = 3769843;
SELECT * FROM teams WHERE name LIKE '%Tour%'; # 187,209,8150, [EMAIL]
SELECT * FROM crm_layouts WHERE crm_configuration_id = 209;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 682;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Funding Circle%'; # 220,177,8603,[EMAIL]
SELECT * FROM activities WHERE uuid_to_bin('7a40e99b-3b37-4bb1-b983-325b81801c01') = uuid; # 23139839
SELECT * FROM opportunities WHERE id = 3855992;
SELECT * FROM users WHERE name LIKE '%Angus Pollard%'; # 8988
SELECT * FROM teams WHERE name LIKE '%Story Terrace%'; # 379, 307, 12894
SELECT * FROM crm_fields WHERE crm_configuration_id = 307 and object_type != 'opportunity';
select * from contacts where team_id = 379 and name like '%bebro%'; # 5874411, crm: 77229348507
SELECT * FROM crm_field_data WHERE object_id = 5874411;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 379
and sa.provider = 'hubspot';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%mentio%'; # 117, 94, 6371, [EMAIL]
SELECT * FROM activities WHERE uuid_to_bin('82939311-1af0-4506-8546-21e8d1fdf2c1') = uuid;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Tourlane%'; # 187, 209, 8150, [EMAIL]
SELECT * FROM opportunities WHERE team_id = 187 and crm_provider_id = '006Se000008xfvNIAQ'; # 3537793
select * from generic_ai_prompts where subject_id = 3537793;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Lunio%'; # 120, 97, 10984, [EMAIL]
SELECT * FROM crm_configurations WHERE id = 97;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 97;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 355;
SELECT * FROM crm_fields WHERE id = 32682;
select cfd.value, o.* from opportunities o
join crm_field_data cfd on o.id = cfd.object_id and cfd.crm_field_id = 32682
where team_id = 120
and cfd.value != ''
;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 120
and sa.provider = 'salesforce';
select * from opportunities where team_id = 120 and crm_provider_id = '006N1000007X8MAIA0';
SELECT * FROM crm_field_data WHERE object_id = 2313439;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE id = 410;
SELECT * FROM teams WHERE name LIKE '%Local Business Oxford%';
select * from scorecards where team_id = 410;
select * from scorecard_rules;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Funding%'; # 220, 177, 8603, [EMAIL]
select * from activities a
join opportunities o on a.opportunity_id = o.id
join users u on o.user_id = u.id
where a.crm_configuration_id = 177 and a.type LIKE '%email-out%'
# and a.actual_end_time > '2024-12-16 00:00:00'
# and o.remotely_created_at > '2024-12-01 00:00:00'
# and u.group_id = 1014
and u.id = 9021
order by a.id desc;
SELECT * FROM opportunities WHERE id in (3981384,4017346);
SELECT * FROM users WHERE team_id = 220 and id IN (8775, 11435);
select * from users where id = 9021;
select * from inboxes where user_id = 9021;
select * from inbox_emails where inbox_id = 1349 and email_date > '2024-12-18 00:00:00';
select * from email_messages where team_id = 220
and orig_date > '2024-12-16 00:00:00' and orig_date < '2024-12-19 00:00:00'
and subject LIKE '%Personal%'
# and 'from' = '[EMAIL]'
;
select * from activities a
join opportunities o on a.opportunity_id = o.id
where a.user_id = 9021 and a.type LIKE '%email-out%'
and a.actual_end_time > '2024-12-18 00:00:00'
and o.user_id IS NOT NULL
and o.remotely_created_at > '2024-12-01 00:00:00'
order by a.id desc;
SELECT * FROM opportunities WHERE team_id = 220 and name LIKE '%Right Car move Limited%' and id = 3966852;
select * from activities where crm_configuration_id = 177 and type LIKE '%email%' and opportunity_id = 3966852 order by id desc;
select * from team_settings where name IN ('useCloseDate');
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Hurree%'; # 104, 81, 6175, [EMAIL]
SELECT * FROM opportunities WHERE team_id = 104 and name = 'PropOp';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 104
and sa.provider = 'hubspot';
select * from crm_configurations where last_synced_at > '2025-01-19 01:00:00'
select * from teams where crm_id IS NULL;
select t.name as 'team', u.name as 'owner', u.email, u.phone
from teams t
join activity_providers ap on t.id = ap.team_id
join users u on t.owner_id = u.id
where 1=1
and t.status = 'active'
and ap.is_enabled = 1
# and u.status = 1
and ap.provider = 'ms-teams';
select * from crm_configurations where provider = 'bullhorn'; # 344
SELECT * FROM teams WHERE id = 442; # 14293
select * from users where team_id = 442;
select * from social_accounts sa where sa.sociable_id = 14293;
select * from invitations where team_id = 442;
# [PASSWORD_DOTS]
SELECT * FROM users WHERE email LIKE '%[EMAIL]%'; # 14022
SELECT * FROM teams WHERE id = 429;
select * from opportunities where team_id = 429 and crm_provider_id IN (16157415775, 22246219645);
select * from activities where opportunity_id in (4340436,4353519);
select * from transcription where activity_id IN (25630961,25381771);
select * from generic_ai_prompts where subject_id IN (4353519);
SELECT
a.id as activity_id,
a.opportunity_id,
a.type as activity_type,
a.language,
CONCAT(a.title, a.description) AS mail_content,
e.from AS mail_from,
e.to AS mail_to,
e.subject AS mail_subject,
e.body AS mail_body,
p.type as prompt_type,
p.status as prompt_status,
p.content AS prompt_content,
a.actual_start_time as created_at
FROM activities a
LEFT JOIN ai_prompts p ON a.transcription_id = p.transcription_id AND p.deleted_at IS NULL
LEFT JOIN email_messages e ON a.id = e.activity_id
WHERE a.actual_start_time > '2024-01-01 00:00:00'
AND a.opportunity_id IN (4353519)
AND a.status IN ('completed', 'received', 'delivered')
AND a.deleted_at IS NULL
AND a.type NOT IN ('sms-inbound', 'sms-outbound')
ORDER BY a.opportunity_id ASC, a.id ASC;
SELECT * FROM users WHERE name LIKE '%George Fierstone%'; # 14293
SELECT * FROM teams WHERE id = 442;
SELECT * FROM crm_configurations WHERE id = 344;
select * from team_features where team_id = 442;
select * from groups where team_id = 442;
select * from playbooks where team_id = 442;
select * from playbook_categories where playbook_id = 1729;
select * from crm_fields where crm_configuration_id = 344 and id = 172024;
SELECT * FROM crm_field_values WHERE crm_field_id = 172024;
select * from crm_layouts where crm_configuration_id = 344;
select * from playbook_layouts where playbook_id = 1729;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 221, 9444
select s.*
# , s.sent_at, u.name, a.*
from activity_summary_logs s
inner join activities a on a.id = s.activity_id
inner join users u on u.id = a.user_id
where a.crm_configuration_id = 356
and s.sent_at > date_sub(now(), interval 60 day)
order by a.actual_end_time desc;
select * from activities a
# inner join activity_summary_logs s on s.activity_id = a.id
where a.crm_configuration_id = 356 and a.actual_end_time > date_sub(now(), interval 60 day)
# and a.crm_provider_id is not null
# and provider <> 'ringcentral'
and status = 'completed'
order by a.actual_end_time desc;
select * from teams order by id desc; # 17328, 32, 17830, [EMAIL]
SELECT * FROM users;
SELECT * FROM users where team_id = 260 and status = 1; # 201 - 150 active
SELECT * FROM teams WHERE id = 260;
select * from team_settings where team_id = 260;
select * from crm_configurations where team_id = 260;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 356;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 1184;
select * from accounts where crm_configuration_id = 221 order by id desc; # 7000
select * from leads where crm_configuration_id = 221 order by id desc; # 0
select * from contacts where crm_configuration_id = 221 order by id desc; # 200 000
select * from opportunities where crm_configuration_id = 221 order by id desc; # 0
select * from crm_profiles where crm_configuration_id = 221 order by id desc; # 23
select * from crm_fields where crm_configuration_id = 221;
select * from crm_field_values where crm_field_id = 5302 order by id desc;
select * from crm_layouts where crm_configuration_id = 221 order by id desc;
select * from stages where crm_configuration_id = 221 order by id desc;
select * from accounts where crm_configuration_id = 356 order by id desc; # 7000
select * from leads where crm_configuration_id = 356 order by id desc; # 0
select * from contacts where crm_configuration_id = 356 order by id desc; # 200 000
select * from opportunities where crm_configuration_id = 356 order by id desc; # 0
select * from crm_profiles where crm_configuration_id = 356 order by id desc; # 23
select * from crm_fields where crm_configuration_id = 356;
select * from crm_field_values where crm_field_id = 5302 order by id desc;
select * from crm_layouts where crm_configuration_id = 356 order by id desc;
select * from stages where crm_configuration_id = 356 order by id desc;
select * from playbooks where team_id = 260 order by id desc; # 4 (2 deleted)
select * from groups where team_id = 260 order by id desc; # 27 groups, (2 deleted)
select * from playbook_layouts where playbook_id IN (1410,1409,1276,1254); # 4
select ce.* from calendars c
join users u on c.user_id = u.id
join calendar_events ce on c.id = ce.calendar_id
where u.team_id = 260
and (ce.start_time > '2025-02-21 00:00:00')
;
# calendar events 1207
#
select * from opportunities where team_id = 260;
SELECT * FROM crm_field_data WHERE object_id = 4696496;
select * from activities where crm_configuration_id = 356 and crm_provider_id IS NOT NULL;
select * from activities where crm_configuration_id IN (221) and provider NOT IN ('ms-teams', 'uploader', 'zoom-bot')
# and type = 'conference' and status = 'scheduled' and activities.is_internal = 0
and created_at > '2024-03-01 00:00:00'
order by id desc; # 880 000, ringcentral, avaya
SELECT * FROM participants WHERE activity_id = 26371744;
# all activities 942 000 +
# conference 7385 - scheduled 984 - external 343
select * from activities where id = 26321812;
select * from participants where activity_id = 26321812;
select * from participants where activity_id in (26414510,26414514,26414516,26414604,26414653,26414655);
select * from leads where id in (720428,689175,731546,645866,621037);
select * from users where id = 13841;
select * from opportunities where user_id = 9541;
select * from stages where id = 15900;
select * from accounts where
# id IN (4160055,5053725,4965303,4896434)
id in (4584518,3249934,3218025,3891133,3399450,4172999,4485161,3101785,4587203,3070816,2870343,2870341,3563940,4550846,3424464,3249963,2870342)
;
select * from activities where id = 26654935;
SELECT * FROM opportunities WHERE id = 4803458;
SELECT * FROM opportunities where team_id = 260 and user_id = 13841 AND stage_id = 15900;
SELECT id, uuid, provider, type, lead_id, account_id, contact_id, opportunity_id, stage_id, status, recording_state, title, actual_start_time, actual_end_time
FROM activities WHERE user_id = 13841 AND opportunity_id IN (4729783, 4731717, 4731726, 4732064, 4732849, 4803458, 4813213);
SELECT DISTINCT
o.id, o.stage_id, s.name, a.title,
a.*
FROM activities a
# INNER JOIN tracks t ON a.id = t.activity_id
INNER JOIN users u ON a.user_id = u.id
INNER JOIN teams team ON u.team_id = team.id
INNER JOIN groups g ON u.group_id = g.id
INNER JOIN opportunities o ON a.opportunity_id = o.id
INNER JOIN stages s ON o.stage_id = s.id
WHERE
a.crm_configuration_id = 356
AND a.status IN ('completed', 'failed')
AND a.recording_state != 'stopped'
# and a.user_id = 13841
AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')
AND team.uuid = uuid_to_bin('a607fba7-452e-4683-b2af-00d6cb52c93c')
AND g.uuid = uuid_to_bin('b5d69e40-24a0-4c16-810b-5fa462299f94')
AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
# AND t.type IN ('audio', 'video')
AND (
(a.actual_start_time BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59')
OR
(
a.actual_start_time IS NULL
AND a.type IN ('sms-outbound', 'sms-inbound')
AND a.created_at BETWEEN '2025-03-13 00:00:00' AND '2025-03-18 07:59:59'
)
)
AND (
a.is_private = 0
OR (
a.is_private = 1
AND u.uuid = uuid_to_bin('6f40e4b8-c340-4059-b4ac-1728e87ea99e')
)
)
AND (
# s.id = 15900
s.uuid = uuid_to_bin('04ca1c26-c666-4268-a129-419c0acffd73')
OR s.uuid IS NULL -- Include records without opportunity stage
)
ORDER BY a.actual_end_time DESC;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Lead Forensics%'; # 190, 162, 8474, [EMAIL]
SELECT * FROM users WHERE team_id = 190;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 190
and sa.provider = 'hubspot';
select * from role_user where user_id = 8474;
select * from crm_configurations where provider = 'bullhorn';
SELECT * FROM opportunities WHERE uuid_to_bin('94578249-65ec-4205-90f2-7d1a7d5ab64a') = uuid;
SELECT * FROM users WHERE uuid_to_bin('26dbadeb-926f-4150-b11b-771b9d4c2f9a') = uuid;
SELECT * FROM opportunities WHERE id = 4732493;
select * from activities where opportunity_id = 4732493;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE id = 443; # 358, 14315, [EMAIL]
SELECT * FROM opportunities WHERE team_id = 443;
SELECT a.id, a.type, a.user_id, a.status, a.deleted_at, u.name, u.email, u.team_id as activity_team_id, u.status, u.deleted_at, t.name, t.status, s.team_id as stage_team_id
FROM activities AS a
JOIN stages AS s ON a.stage_id = s.id
JOIN users AS u ON u.id = a.user_id
JOIN teams AS t ON t.id = s.team_id
WHERE u.team_id <> s.team_id and t.id > 135;
SELECT
crm_configuration_id,
crm_provider_id,
COUNT(*) as duplicate_count,
GROUP_CONCAT(id) as stage_ids,
GROUP_CONCAT(name) as stage_names
FROM stages
GROUP BY crm_configuration_id, crm_provider_id
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC;
select * from stages where id IN (14898,14907);
select * from business_processes;
SELECT *
FROM crm_configurations
WHERE team_id IN (
SELECT team_id
FROM crm_configurations
GROUP BY team_id
HAVING COUNT(*) > 1
)
ORDER BY team_id;
SELECT *
FROM teams
WHERE crm_id IN (
SELECT crm_id
FROM teams
GROUP BY crm_id
HAVING COUNT(*) > 1
)
ORDER BY crm_id;
# [PASSWORD_DOTS]
select * from crm_configurations where provider = 'integration-app';
SELECT * FROM teams WHERE id = 443; # Correre Naturale 358 14315 [EMAIL]
select * from activities where crm_configuration_id = 358 order by actual_end_time desc;
select id, uuid, actual_end_time, crm_provider_id, is_internal, playbook_category_id, type, user_id, lead_id, contact_id, account_id, opportunity_id, status, title from activities where crm_configuration_id = 358 order by actual_end_time desc;
select * from team_features where team_id = 358;
select * from activity_summary_logs;
select * from teams where id = 406;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Sportfive%'; # 267, 202, 14637, [EMAIL]
select * from activities where crm_configuration_id = 202 order by actual_end_time desc;
SELECT * FROM users where id = 14637;
SELECT * FROM teams where id = 267;
SELECT * FROM groups where id = 1118;
select g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a
inner join users u on u.id = a.user_id
inner join groups g on g.id = u.group_id
where a.crm_configuration_id = 202
and a.is_internal = 0
and (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')
and a.type = 'conference'
and a.status != 'completed'
and a.external_id is not null
order by a.scheduled_start_time desc;
SELECT * FROM activities
WHERE crm_configuration_id = 202
AND status IN ('completed', 'failed')
AND recording_state != 'stopped'
AND type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
AND (is_private = 0 OR user_id = 14637)
AND (
(
actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'
) OR (
actual_start_time IS NULL
AND type IN ('sms-outbound', 'sms-inbound')
AND created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'
)
)
AND NOT EXISTS (
SELECT 1
FROM tracks
WHERE
tracks.activity_id = activities.id
AND tracks.type IN ('audio', 'video')
)
ORDER BY actual_end_time DESC;
SELECT DISTINCT
a.*
FROM activities a
INNER JOIN tracks t ON a.id = t.activity_id
INNER JOIN users u ON a.user_id = u.id
INNER JOIN teams team ON u.team_id = team.id
WHERE
a.crm_configuration_id = 202
AND a.status IN ('completed', 'failed')
AND a.recording_state != 'stopped'
# and a.user_id = 14637
AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
# AND t.type IN ('audio', 'video')
AND (
(a.actual_start_time BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59')
OR
(
a.actual_start_time IS NULL
AND a.type IN ('sms-outbound', 'sms-inbound')
AND a.created_at BETWEEN '2025-03-12 12:00:00' AND '2025-03-24 11:59:59'
)
)
AND (
a.is_private = 0
OR (
a.is_private = 1
AND a.user_id = 14637
)
)
ORDER BY a.actual_end_time DESC
;
SELECT DISTINCT a.*
FROM activities a
INNER JOIN users u ON a.user_id = u.id
INNER JOIN teams t ON u.team_id = t.id
# INNER JOIN tracks tr ON a.id = tr.activity_id
# INNER JOIN groups g ON u.group_id = g.id
WHERE 1=1
AND t.id = 267
# AND t.uuid = uuid_to_bin('aed4927b-f1ea-499e-94c3-83762fd233e8')
AND a.status IN ('completed', 'failed')
AND a.recording_state != 'stopped'
AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
# AND tr.type NOT IN ('audio', 'video')
AND (
a.is_private = 0
OR a.user_id = 14637
)
AND (
(a.actual_start_time BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59')
OR (
a.actual_start_time IS NULL
AND a.type IN ('sms-outbound', 'sms-inbound')
AND a.created_at BETWEEN '2025-03-19 00:00:00' AND '2025-03-21 23:59:59'
)
)
# and NOT EXISTS (
# SELECT 1
# FROM tracks t
# WHERE t.activity_id = a.id
# AND t.type IN ('audio', 'video')
# )
ORDER BY a.actual_end_time DESC;
SELECT * FROM tracks WHERE activity_id = 26485995;
select a.is_private, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a
inner join users u on u.id = a.user_id
where a.crm_configuration_id = 202
# and a.is_internal = 0
and (a.actual_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')
and a.type IN ("softphone","softphone-inbound","conference","sms-inbound")
and a.status IN ('completed', 'failed')
# and a.external_id is not null
order by a.actual_end_time desc;
select * from activities a where a.crm_configuration_id = 202
and a.actual_start_time between '2025-03-20 00:00:00' and '2025-03-21 00:00:00'
# AND a.type IN ('softphone', 'softphone-inbound', 'conference', 'sms-inbound', 'sms-outbound')
select g.name, a.title, uuid_from_bin(a.uuid), a.external_id, a.status, a.recording_state, a.recording_reason_code, a.scheduled_start_time, a.scheduled_end_time, a.actual_start_time, a.actual_end_time from activities a
inner join users u on u.id = a.user_id
inner join groups g on g.id = u.group_id
where a.crm_configuration_id = 202
and a.is_internal = 0
and (a.scheduled_start_time between '2025-03-19 00:00:00' and '2025-03-21 00:00:00')
and a.type = 'conference'
and a.status != 'completed'
and a.external_id is not null
order by a.scheduled_start_time desc;
SELECT * FROM teams WHERE name LIKE '%Tourlane%';
SELECT * FROM crm_fields WHERE crm_configuration_id = 209 and object_type = 'opportunity';
SELECT * FROM crm_field_data WHERE crm_field_id = 98809;
select * from users where status = 1 AND timezone = 'MDT';
select * from opportunities where id = 3769814;
select * from deal_risks where opportunity_id = 3769814;
select cp.* from crm_profiles cp
join users u on cp.user_id = u.id
join crm_configurations crm on cp.crm_configuration_id = crm.id
where crm.provider = 'hubspot' AND u.status = 1 AND log_notes != 'none';
select * from crm_fields where id = 154575;
select * from team_features where feature = 'SUPPORTS_SYNC_MISSING_CALL_DISPOSITIONS';
SELECT * FROM teams WHERE id = 176; # crm 148
select * from activities where crm_configuration_id = 148 and provider = 'hubspot' order by id desc;
select * from activity_providers where provider = 'amazon-connect';
select * from crm_fields cf
join crm_configurations crm on crm.id = cf.crm_configuration_id
where crm.provider = 'hubspot' and cf.object_type IN ('account', 'contact');
# [PASSWORD_DOTS]
SELECT * FROM users WHERE id IN (15415, 15418);
SELECT * FROM groups WHERE id IN (1805,1806);
SELECT * FROM playbooks WHERE id = 1860;
SELECT * FROM playbook_categories WHERE id = 38634;
SELECT * FROM crm_fields WHERE id = 189962;
SELECT * FROM teams WHERE name = 'Pulsar Group'; # 472, 380, 15138 [EMAIL]
SELECT * FROM crm_profiles WHERE user_id = 15415;
SELECT * FROM social_accounts WHERE sociable_id = 15415 and provider = 'salesforce';
select * from sidekick_settings where team_id = 472;
SELECT * FROM activities WHERE uuid_to_bin('452c58c7-b87c-4fdd-953e-d7af185e9588') = uuid; # 28617536, user: 15418
SELECT * FROM activities WHERE uuid_to_bin('399114ee-d3a8-458c-bff5-5f654658db0a') = uuid; # 28344407, user: 15415
SELECT * FROM activities WHERE uuid_to_bin('f0aa567f-0ab1-4bbb-96aa-37dcf184676b') = uuid; # 28580288, user: 15415
SELECT * FROM activities WHERE uuid_to_bin('50c086b1-2770-4bca-b5ae-6bac22ec426b') = uuid; # 28566069, user: 15415
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%TeamTailor%'; # 109, 218, 13969, [EMAIL]
select * from crm_configurations where id = 218;
SELECT * FROM activities WHERE uuid_to_bin('e39b5857-7fdb-4f5a-951a-8d3ca69bb1b0') = uuid; # 28338765
SELECT * FROM users WHERE id IN (13232, 13230);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 109
and sa.provider = 'salesforce';
0057R00000EPL5HQAX Inez Ekblad
1091cb81-5ea1-4951-a0ed-f00b568f0140 Triman Kaur
SELECT * FROM crm_profiles WHERE user_id IN (13232, 13230);
############################################################################################
SELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939 00UVg00000FLvnSMAT
SELECT * FROM crm_field_data WHERE activity_id = 28655939;
SELECT * FROM crm_fields WHERE id IN (94491,94493,94498);
SELECT * FROM users WHERE id = 13658;
SELECT * FROM teams WHERE id = 109;
SELECT * FROM crm_configurations WHERE id = 218;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 109
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Strengthscope%'; # 481, 390, 15420, [EMAIL]
SELECT * FROM stages WHERE crm_configuration_id = 390;
select * from business_processes where team_id = 481 and crm_configuration_id = 390;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 481
and sa.provider = 'salesforce';
SELECT * FROM users WHERE id = 15780; # team 462
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 462
and sa.provider = 'hubspot';
select * from teams where id = 495;
SELECT * FROM users WHERE id = 15794;
select * from social_accounts where sociable_id = 15794;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Flight%'; # 427, 333, 13752
SELECT * FROM accounts WHERE team_id = 427 and crm_provider_id = '668731000183444517';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Group GTI%'; # 495, 407, 15794
SELECT * FROM activities WHERE crm_configuration_id = 407
and status = 'completed' and type = 'conference'
order by id desc;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from permission_role;
select * from activities where crm_configuration_id = 407 and status = 'completed' order by id desc;
SELECT * FROM activities WHERE id = 29512773;
SELECT * FROM activities WHERE id IN (29042721,28991325,29002874);
SELECT al.* from activity_summary_logs al join activities a on a.id = al.activity_id
where a.crm_configuration_id = 407
# and a.id IN (29042721,28991325,29002874);
SELECT * FROM users WHERE id = 15794;
SELECT * FROM users WHERE team_id = 495;
SELECT * FROM social_accounts WHERE sociable_id = 15794;
SELECT * FROM opportunities WHERE team_id = 495 and name like '%OC:%';
SELECT * FROM contacts WHERE team_id = 495;
SELECT * FROM leads WHERE team_id = 495;
SELECT * FROM accounts WHERE team_id = 495;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 407;
SELECT * FROM crm_fields WHERE crm_configuration_id = 407;
SELECT * FROM crm_configurations WHERE id = 407;
SELECT * FROM opportunities WHERE team_id = 495 and close_date BETWEEN '2025-06-01' AND '2025-07-01'
and user_id IS NOT NULL and is_closed = 1 and is_won = 1;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Hamilton Court FX LLP%'; # 249, 187, 10103
SELECT * FROM activities WHERE uuid_to_bin('4659c2bb-9a49-484e-9327-a3d66f1e028c') = uuid; # 28951064
SELECT * FROM crm_fields WHERE crm_configuration_id = 187 and object_type IN ('tasks', 'event');
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Checkstep%'; # 325, 256, 11753
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 325
and sa.provider = 'hubspot';
SELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid; # 28611085
SELECT * FROM activities WHERE uuid_to_bin('980f0336-840b-4185-a5a9-30cf8b0749a8') = uuid; # 28719733
SELECT * FROM activity_summary_logs where activity_id = 28719733;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Learning%'; # 260, 356, 9444
SELECT * FROM activity_summary_logs where sent_at BETWEEN '2025-06-09 11:38:00' AND '2025-06-09 11:40:00';
SELECT * FROM leads WHERE crm_configuration_id = 356 and crm_provider_id = '230045001502770504'; # 823630
select * from activities where crm_configuration_id = 356 and lead_id = 841732;
SELECT * from activity_summary_logs al join activities a on a.id = al.activity_id
where a.crm_configuration_id = 356;
select * from activities where crm_configuration_id = 356
and actual_end_time between '2025-06-09 11:00:00' and '2025-06-09 12:00:00'
order by id desc;
select * from accounts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;
select * from leads where crm_configuration_id = 356 and crm_provider_id = '230045001514275654' order by id desc;
select * from contacts where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;
select * from opportunities where crm_configuration_id = 356 and crm_provider_id = '230045001514403366' order by id desc;
select * from team_features where team_id = 260;
select * from features where id IN (1,2,4,6,18,19,20,9,10,3,23,24,25,26,27);
SELECT * FROM activities WHERE uuid_to_bin('7be372e2-1916-4d79-a2f3-ca3db1346db3') = uuid;
select * from crm_fields;
select * from crm_layout_entities;
SELECT * FROM teams WHERE name LIKE '%Optable%';
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Teamtailor%'; # 109, 218, 13969
SELECT * FROM crm_configurations WHERE id = 218;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 109
and sa.provider = 'salesforce';
SELECT * FROM activities WHERE uuid_to_bin('675eeaeb-5681-42db-90bc-54c07a604408') = uuid; # 28655939
SELECT * FROM crm_field_data WHERE activity_id = 28655939;
SELECT * FROM crm_fields WHERE id in (94491,94493,94498);
select * from teams where crm_id IS NULL;
SELECT * FROM activities WHERE uuid_to_bin('71aa8a0c-9652-4ff6-bee7-d98ae60abef6') = uuid;
# [PASSWORD_DOTS]
select * from team_domains where team_id = 399;
SELECT * FROM teams WHERE name LIKE '%Rydoo%'; # 399, 318, 13207
select * from calendar_events where id = 5163781;
SELECT * FROM activities WHERE uuid_to_bin('be2cbc52-7fda-46a0-9ae0-25d9553eafc0') = uuid; # 29443896
SELECT * FROM participants WHERE activity_id = 29443896;
select * from contacts where crm_configuration_id = 318 and email = '[EMAIL]';
select * from leads where crm_configuration_id = 318 and email = '[EMAIL]';
select * from activities where user_id = 14937 order by created_at ;
select * from users where id = 14937;
select * from contacts where crm_configuration_id = 318 and email LIKE '%@strawberry.se';
select * from opportunities where crm_configuration_id = 318 and crm_provider_id = '006Sf00000D1WOAIA3';
select * from activities a join participants p on a.id = p.activity_id
where crm_configuration_id = 318 and a.updated_at > '2025-06-23T08:18:43Z';
# [PASSWORD_DOTS]
SELECT * FROM opportunities WHERE team_id = 379 and crm_provider_id = '39334518886';
SELECT * FROM opportunities WHERE team_id = 379 order by id desc;
SELECT * FROM teams WHERE id = 379;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 379 and sociable_id = 13852
and sa.provider = 'hubspot';
SELECT * FROM crm_configurations WHERE id = 307;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 307;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 1027;
SELECT * FROM crm_fields WHERE crm_configuration_id = 307
and id IN (144750,144855,145158,155227);
SELECT * FROM activities;
select * from activities
where created_at > '2025-07-01 00:00:00'
# and created_at < '2025-08-01 00:00:00'
and type not in ('email-outbound', 'email-inbound')
and account_id is null
and contact_id is null
and lead_id is null
and opportunity_id is not null
;
SELECT * FROM activities WHERE id IN (25344155, 25344296, 25501909, 28692187);
SELECT * FROM crm_configurations WHERE id in (335,301,200);
select * from crm_fields where crm_configuration_id = 230 and crm_provider_id = 'Age2__c';
SELECT * FROM teams WHERE name LIKE '%Resights%';
select * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';
select * from crm_configurations where provider = 'bullhorn'; # 344
select * from teams where id IN (442);
select * from activities
where crm_configuration_id = 177
and provider = 'amazon-connect'
order by id desc;
# and source <> 'gong';
select * from activity_providers where provider = 'amazon-connect';
SELECT * FROM activities WHERE uuid_to_bin('cec1993b-a7e5-4164-b74d-d680ea51d2f2') = uuid;
select * from crm_configurations where store_transcript = 1;
SELECT * FROM teams WHERE id IN (80);
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Sedna%'; # 277, 213, 12594
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 277
and sa.provider = 'salesforce';
select * from activities where crm_configuration_id = 213 and account_id = 2511502;
select * from crm_configurations where id = 213;
SELECT * FROM activities WHERE uuid_to_bin('35aa790a-8569-4544-8268-66f9a4a26804') = uuid; # 33981604
SELECT * FROM participants WHERE activity_id = 33981604;
SELECT * FROM crm_fields WHERE crm_configuration_id = 337 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 431
and sa.provider = 'salesforce';
SELECT * FROM activities WHERE uuid_to_bin('b5476c7d-19a8-491b-869d-676ea1e857b6') = uuid; # 33997223
select * from activity_summary_logs where activity_id = 33997223;
select * from activity_notes where activity_id = 33997223;
# [PASSWORD_DOTS]
SELECT * FROM teams WHERE name LIKE '%Abode%';
select * from features;
select * from teams t
where t.status = 'active'
and id NOT IN (select team_id from team_features wh...
|
NULL
|