|
99
|
rewind
play/pause
fast forward
More Controls
toggl rewind
play/pause
fast forward
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:21
toggle elapsed time, timecode and framecount
02:10
toggle duration and remaining time
document actions
compact_monitor_1_1778089220643.mp4
DMSAC.MILVAll 4DMsloastApp[no preview availablel11 | 10:00 AMIMonday. May 4th-7 Jira Cloud@ 15 Monday@Nikolay Ivanov transitioned aBug you are watching from Code...Wednesday, April 29thAneliva AngelovaWednesdayStoyan Tanev6 DMWednesdavнаша стоананTuesday. April 28th?1 Stefka StoyanovaApr 28thтия тикети е добре да влезнат вдругия спринт ли? сложете някакви...Ves@ Thread in DM: исках да те...смени го в Circle Cl env на новиятокен който си напларилApr 28thStefka Stoyano… Replied Apr 28thAOMIпnuaтна oтлуска СStetka Stovanova and …... Aor 28thl•• 0‹→ сN& Adelina Petrova "Pull requests • screenpipe/screenpipe • GitHubMessagesLo Add canvasUr Files# Hostinger login | Sign in to Hostinger accountне, само стр се тракватLogin - Nginx Proxy ManagerLukas Kovalik IN 1:15 PM* Screenpipe - ArchiveAdelina Petrova "T 1:42 PMpagesLukas Kovalik "T 1:43 PMЯСНО@ SQLite Web: archive.db©SQLite Web: db.sqliteAdelina Petrova 5:06 PMда не ои проолема да е заради това кю: QUEUE,DELAYANew TabLukas Kovalik * 5:06 PMscreenpipe/,claude/skills at main • screenpipe/screenpза това искам да дооавя логовеAdelina Petrova 5:07 PMUAVDA MO CTAUG SUA rA MaVUOLI?има ли риск за нещоLukas Kovalik " 5:08 PMвсишност нама опашка тукаAdelina Petrova " 5:12 PM• сега, няма ли ла сложи евента в това кю и ла цака изпьл.Lukas Kovalik *T 5:21 PMла, ше оставя detault изпь лнениеLukas Kovalik 1K 5-26 PMпо поинцип го направих като nudge-created че те не са о!•и глелам че и този event няма никойAdelina Petrova" 5:33PMспорел мен пробвай без това кюLukas Kovalik * 5:33 PMhttps://run.userpilot.io/events/tracked_event/10run.userpilot.ioUserpilotUserpilot helos product teams deliver personalized in-appgrowth metrics at every stage of the user lournev.не е това обаче, гледам че всички си минават през сьщиAdelina Petrova * 5:40 PMами эко можеш сложи тогава лог да го видимAdelina Petrova has paused their notificationsMessage Adelina Petrova " VacationingAaO Not Secure http:/[IP_ADDRESS]:8768/audio_transcriptions_fts_idx/audio_tagsaualo transcriptionsaudio_transcriptions_fts (v)audio_transcriptions_audio_transcriptions_.audio_transcriptions_...elementselements_fts (v)elements_fts_configelements_fts_dataelements_fts_idxframesframes_fts (")frames_fts_configframes_fts_dataframes_fts_idxmeetingsmemoriesmemories_fts (v)memories_fts_configmemories_fts_datamemories_fts_idxocr_textpipe_executionspipe_scheduler_statesecretsspeaker_embeddingsspeakerssqlite_sequencesqlite_statlsalite_statatagsui_eventsui_events_fts (v)ui_events_fts_configui_events_fts_dataui_events_fts_idxvideo_chunksvision_tagsCREATE TABLE 'audio_transcriptions_fts_idx' (segid,term,PRIMARY KEY(segid, term)ColumnsColumnData typesegidpgnoIndexesNameColumnsSQLite database browser v0.7.2, powered by Flask and Peewee. © 2026 Charles LeiferToggle helper tablesAllow nullUniquePrimary keySOLActionsread-onlyread-onlyread-onlyDrop?...
|
QuickTime Player
|
compact_monitor_1_1778089220643.mp4
|
NULL
|
99
|
|
97
|
rewind
play/pause
fast forward
More Controls
toggl rewind
play/pause
fast forward
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:03
toggle elapsed time, timecode and framecount
02:10
toggle duration and remaining time
document actions
compact_monitor_1_1778089220643.mp4
DMSAC.MILVAll 4DMsloastApp[no preview availablel11 | 10:00 AMIMonday. May 4th-7 Jira Cloud@ 15 Monday@Nikolay Ivanov transitioned aBug you are watching from Code...Wednesday, April 29thAneliva AngelovaWednesdayStoyan Tanev6 DMWednesdavнаша стоананTuesday. April 28th?1 Stefka StoyanovaApr 28thтия тикети е добре да влезнат вдругия спринт ли? сложете някакви...Ves@ Thread in DM: исках да те...смени го в Circle Cl env на новиятокен който си напларилApr 28thStefka Stoyano… Replied Apr 28thAOMIпnuaтна oтлуска СStetka Stovanova and …... Aor 28thl•• 0‹→ сN& Adelina Petrova "Pull requests • screenpipe/screenpipe • GitHubMessagesLo Add canvasUr Files# Hostinger login | Sign in to Hostinger accountне, само стр се тракватLogin - Nginx Proxy ManagerLukas Kovalik IN 1:15 PM* Screenpipe - ArchiveAdelina Petrova "T 1:42 PMpagesLukas Kovalik "T 1:43 PMЯСНО@ SQLite Web: archive.db©SQLite Web: db.sqliteAdelina Petrova 5:06 PMда не ои проолема да е заради това кю: QUEUE,DELAYANew TabLukas Kovalik * 5:06 PMscreenpipe/,claude/skills at main • screenpipe/screenpза това искам да дооавя логовеAdelina Petrova 5:07 PMUAVDA MO CTAUG SUA rA MaVUOLI?има ли риск за нещоLukas Kovalik " 5:08 PMвсишност нама опашка тукаAdelina Petrova " 5:12 PM• сега, няма ли ла сложи евента в това кю и ла цака изпьл.Lukas Kovalik *T 5:21 PMла, ше оставя detault изпь лнениеLukas Kovalik 1K 5-26 PMпо поинцип го направих като nudge-created че те не са о!•и глелам че и този event няма никойAdelina Petrova" 5:33PMспорел мен пробвай без това кюLukas Kovalik * 5:33 PMhttps://run.userpilot.io/events/tracked_event/10run.userpilot.ioUserpilotUserpilot helos product teams deliver personalized in-appgrowth metrics at every stage of the user lournev.не е това обаче, гледам че всички си минават през сьщиAdelina Petrova * 5:40 PMами эко можеш сложи тогава лог да го видимAdelina Petrova has paused their notificationsMessage Adelina Petrova " VacationingAaO Not Secure http:/[IP_ADDRESS]:8768/audio_transcriptions_fts_idx/audio_tagsaualo transcriptionsaudio_transcriptions_fts (v)audio_transcriptions_audio_transcriptions_.audio_transcriptions_...elementselements_fts (v)elements_fts_configelements_fts_dataelements_fts_idxframesframes_fts (")frames_fts_configframes_fts_dataframes_fts_idxmeetingsmemoriesmemories_fts (v)memories_fts_configmemories_fts_datamemories_fts_idxocr_textpipe_executionspipe_scheduler_statesecretsspeaker_embeddingsspeakerssqlite_sequencesqlite_statlsalite_statatagsui_eventsui_events_fts (v)ui_events_fts_configui_events_fts_dataui_events_fts_idxvideo_chunksvision_tagsCREATE TABLE 'audio_transcriptions_fts_idx' (segid,term,PRIMARY KEY(segid, term)ColumnsColumnData typesegidpgnoIndexesNameColumnsSQLite database browser v0.7.2, powered by Flask and Peewee. © 2026 Charles LeiferToggle helper tablesAllow nullUniquePrimary keySOL432OSOEOEActionsread-onlyread-onlyread-onlyDrop?...
|
QuickTime Player
|
compact_monitor_1_1778089220643.mp4
|
NULL
|
97
|
|
96
|
rewind
play/pause
fast forward
More Controls
toggl rewind
play/pause
fast forward
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:02
toggle elapsed time, timecode and framecount
02:10
toggle duration and remaining time
document actions
compact_monitor_1_1778089220643.mp4
QuickTime PlayerFileEditViewWindowHelpG97% <4Wed 6 May 20:43:32compact_monitor_1_1778089220643.mp4 vscreenpipe"1X1-rw--ГW--rw-i-rw-1-rw-i-rw-!-rW-I-rw-i-rw-i-rw--rw-l-rW--rw-!-rw-1DOCKERapi authencrypt secretsretention daysretention modeDEV (docker)X2APP (-zsh)X3-zshX4screenpipe*X5-zshX6enableddisabled7Qu you‹ › xmedia-only (keep transcripts)languagesall languagesmonitorsid: 1id: 2audio devicesMacBook Pro Microphone (input)System Audio (output)-rw--rw--rw-are using local processing. alldata staysyoucomputer.-rw-1-rw-i-rw-lwarning: telemetry is enabled.only error-leveldata will be sent.to disable, use the --disable-telemetry flag.-rW--rw-check latest changes here: https://github.com/screenpipe/screenpipe/releases-rw-I2026-05-06T20:27:34.638384ZINFOscreenpipe:starting UI event capture2026-05-06T20:27:34.6376792INFO-rw-iscreenpipe_core::pipes: pipe scheduler started (generation 2)2026-05-06T20:27:34.649154ZINFOscreenpipe_engine::power::manager:-rw-t2026-05-06T20:27:34.6527942WARN-rW-screenpipe: piinitial power profile: Performance (on_ac=true, battery=Some(94))agentinstall failed: bun not found - install from https://bun.sh2026-05-06T20:27:34.655839ZINFO-rw-iscreenpipe_engine::ui_recorder: Starting UI event capture2026-05-06T20:27:34.6738772-rw-IINFO2026-05-06T20:27:34673910ZINFOscreenpipe_engine::ui_recorder: UI recording session started: 54869993-7b4b-491f-b717-2a583517f9c5screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)-rw-2026-05-06T20:27:346740572-rw-iINFOscreenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-05-05 17:27:34.674056 UTC to 2026-05-06 17:27:34.674056 UTC)-ГW-2026-05-06T20:27:34.674892ZINFOscreenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval-5s, profiles=12)2026-05-06T20:27:34..6757882INFO2026-05-06T20:27:34686546ZINFOscreenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 0 frame entries, coverage from 2026-05-05 17:27:34.674056 UTC-rw-i2026-05-06T20:27:34691371ZINFOscreenpipe_engine::server:Server listening on [IP_ADDRESS]:3030-rw-1screenpipe_connect: :mdns:mdns: advertisina screenpipe onDort 30302026-05-06T20:27:36-rw-!:270608ZINFOscreenpipe_engine::viston_1440x900)2026-05-06T20:27:36.270669Zscreenpipe_engine::viston• 1 (device: monitor_1)-ГW-2026-05-06120:27:36.2707142-rw-iscreenpipe_engine::event_d(device: monitor_1)2026-05-06T20:27:36.932583Zscreenpipe_engine::viston_(3008x1253)-rw-| 2026-05-06T20:27:36.932852Zscreenpipe_engine::vision_manager::managf: Starting event-driven capture for monitor 2 (device: monitor_2)- rw-i2026-05-06T20:27:36.932882Zscreenpipe_engine::vision_manager::manager: VisionManager started with 2/2 monitor(s)-rw-l2026-05-06T20:27:36.932899Zscreenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s bac-ГW-kstop poll)-rw-!2026-05-06T20:27:36.932901Zluka: 2026-05-06T20:27:39.158281ZINFOscreenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 3 excluded)luka...
|
QuickTime Player
|
compact_monitor_1_1778089220643.mp4
|
NULL
|
96
|
|
93
|
rewind
play/pause
fast forward
More Controls
toggl rewind
play/pause
fast forward
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:02
toggle elapsed time, timecode and framecount
02:10
toggle duration and remaining time
document actions
compact_monitor_1_1778089220643.mp4
DMSAC.MILVAll 4DMsloastApp[no preview availablel11 | 10:00 AMIMonday. May 4th-7 Jira Cloud@ 15 Monday@Nikolay Ivanov transitioned aBug you are watching from Code...Wednesday, April 29thAneliva AngelovaWednesdayStoyan Tanev6 DMWednesdavнаша стоананTuesday. April 28th?1 Stefka StoyanovaApr 28thтия тикети е добре да влезнат вдругия спринт ли? сложете някакви...Ves@ Thread in DM: исках да те...смени го в Circle Cl env на новиятокен който си напларилApr 28thStefka Stoyano… Replied Apr 28thAOMIпnuaтна oтлуска СStetka Stovanova and …... Aor 28thl•• 0‹→ сN& Adelina Petrova "Pull requests • screenpipe/screenpipe • GitHubMessagesLo Add canvasUr Files# Hostinger login | Sign in to Hostinger accountне, само стр се тракватLogin - Nginx Proxy ManagerLukas Kovalik IN 1:15 PM* Screenpipe - ArchiveAdelina Petrova "T 1:42 PMpagesLukas Kovalik "T 1:43 PMЯСНО@ SQLite Web: archive.db©SQLite Web: db.sqliteAdelina Petrova 5:06 PMда не ои проолема да е заради това кю: QUEUE,DELAYANew TabLukas Kovalik * 5:06 PMscreenpipe/,claude/skills at main • screenpipe/screenpза това искам да дооавя логовеAdelina Petrova 5:07 PMUAVDA MO CTAUG SUA rA MaVUOLI?има ли риск за нещоLukas Kovalik " 5:08 PMвсишност нама опашка тукаAdelina Petrova " 5:12 PM• сега, няма ли ла сложи евента в това кю и ла цака изпьл.Lukas Kovalik *T 5:21 PMла, ше оставя detault изпь лнениеLukas Kovalik 1K 5-26 PMпо поинцип го направих като nudge-created че те не са о!•и глелам че и този event няма никойAdelina Petrova" 5:33PMспорел мен пробвай без това кюLukas Kovalik * 5:33 PMhttps://run.userpilot.io/events/tracked_event/10run.userpilot.ioUserpilotUserpilot helos product teams deliver personalized in-appgrowth metrics at every stage of the user lournev.не е това обаче, гледам че всички си минават през сьщиAdelina Petrova * 5:40 PMами эко можеш сложи тогава лог да го видимAdelina Petrova has paused their notificationsMessage Adelina Petrova " VacationingAaO Not Secure http:/[IP_ADDRESS]:8768/audio_transcriptions_fts_idx/audio_tagsaualo transcriptionsaudio_transcriptions_fts (v)audio_transcriptions_audio_transcriptions_.audio_transcriptions_...elementselements_fts (v)elements_fts_configelements_fts_dataelements_fts_idxframesframes_fts (")frames_fts_configframes_fts_dataframes_fts_idxmeetingsmemoriesmemories_fts (v)memories_fts_configmemories_fts_datamemories_fts_idxocr_textpipe_executionspipe_scheduler_statesecretsspeaker_embeddingsspeakerssqlite_sequencesqlite_statlsalite_statatagsui_eventsui_events_fts (v)ui_events_fts_configui_events_fts_dataui_events_fts_idxvideo_chunksvision_tagsCREATE TABLE 'audio_transcriptions_fts_idx' (segid,term,PRIMARY KEY(segid, term)ColumnsColumnData typesegidpgnoIndexesNameColumnsSQLite database browser v0.7.2, powered by Flask and Peewee. © 2026 Charles LeiferToggle helper tablesAllow nullUniquePrimary keySOLW6MaY 20:43:27OSOEOEActionsread-onlyread-onlyread-onlyDrop?...
|
QuickTime Player
|
compact_monitor_1_1778089220643.mp4
|
NULL
|
93
|
|
94
|
rewind
play/pause
fast forward
More Controls
toggl rewind
play/pause
fast forward
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:00
toggle elapsed time, timecode and framecount
02:10
toggle duration and remaining time
document actions
compact_monitor_1_1778089220643.mp4
QuickTime PlayerFileEditViewWindowHelpA97% <4Wed 6 May 20:43:29compact_monitor_1_1778089220643.mp4 vscreenpipe"1X1-rw--ГW--rw-i-rw-1-rw-i-rw-!-rW-I-rw-i-rw-i-rw--rw-l-rW--rw-!-rw-1DOCKERapi authencrypt secretsretention daysretention modeDEV (docker)X2APP (-zsh)X3-zshX4screenpipe*X5-zshX6enableddisabled7Q- you‹ › xmedia-only (keep transcripts)languagesall languagesmonitorsid: 1id: 2audio devicesMacBook Pro Microphone (input)System Audio (output)-rw--rw--rw-are using local processing. alldata stayscomputer.-rw-1-rw-i-rw-lwarning: telemetry is enabled.only error-leveldata will be sent.to disable, use the --disable-telemetry flag.-rW--rw-check latest changes here: https://github.com/screenpipe/screenpipe/releases-rw-I2026-05-06T20:27:34.638384ZINFOscreenpipe:starting UI event capture2026-05-06T20:27:34.6376792INFO-rw-iscreenpipe_core::pipes: pipe scheduler started (generation 2)2026-05-06T20:27:34.649154ZINFOscreenpipe_engine::power::manager:-rw-t2026-05-06T20:27:34.6527942WARN-ГW-screenpipe: piinitial power profile: Performance (on_ac=true, battery=Some(94))install failed: bun not found - install from https://bun.sh2026-05-06T20:27:34.655839ZINFO-rw-iscreenpipe_engine::ui_recorder: Starting UI event capture2026-05-06T20:27:34.6738772-rw-IINFO2026-05-06T20:27:34673910ZINFOscreenpipe_engine::ui_recorder: UI recording session started: 54869993-7b4b-491f-b717-2a583517f9c5screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)-rw-2026-05-06T20:27:346740572-rw-iINFOscreenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-05-05 17:27:34.674056 UTC to 2026-05-06 17:27:34.674056 UTC)-ГW-2026-05-06T20:27:34.674892ZINFOscreenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval-5s, profiles=12)2026-05-06T20:27:34.6757882INFO2026-05-06T20:27:34686546ZINFOscreenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 0 frame entries, coverage from 2026-05-05 17:27:34.674056 UTC-rw-i2026-05-06T20:27:34691371ZINFOscreenpipe_engine::server:Server listening on [IP_ADDRESS]:3030-rw-1screenpipe_connect: :mdns:mdns: advertisina screenpipe on port 30302026-05-06T20:27:36-rw-!:270608ZINFOscreenpipe_engine::viston_1440x900)2026-05-06T20:27:36.270669ZINFOscreenpipe_engine::viston-ГW-2026-05-06120:27:36.2707142INFO-rw-iscreenpipe_engine::event_d00:002026-05-06T20:27:36.932583ZINFOscreenpipe_engine::viston_-rw-| 2026-05-06T20:27:36.932852ZINFOscreenpipe_engine::vision_manager::managf: Starting event-driven capture for monitor 2 (device: monitor_2)- rw-i2026-05-06T20:27:36.932882Zscreenpipe_engine::vision_manager::manager: VisionManager started with 2/2 monitor(s)-rw-l2026-05-06T20:27:36.932899Zscreenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s bac-ГW-kstop poll)-rw-!2026-05-06T20:27:36.932901Zluka: 2026-05-06T20:27:39.158281ZINFOscreenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 3 excluded)luka...
|
QuickTime Player
|
compact_monitor_1_1778089220643.mp4
|
NULL
|
94
|
|
95
|
rewind
play/pause
fast forward
More Controls
toggl rewind
play/pause
fast forward
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:00
toggle elapsed time, timecode and framecount
02:10
toggle duration and remaining time
document actions
compact_monitor_1_1778089220643.mp4
DMSAC.MILVAll 4DMsloastApp[no preview availablel11 | 10:00 AMIMonday. May 4th-7 Jira Cloud@ 15 Monday@Nikolay Ivanov transitioned aBug you are watching from Code...Wednesday, April 29thAneliva AngelovaWednesdayStoyan Tanev6 DMWednesdavнаша стоананTuesday. April 28th?1 Stefka StoyanovaApr 28thтия тикети е добре да влезнат вдругия спринт ли? сложете някакви...Ves@ Thread in DM: исках да те...смени го в Circle Cl env на новиятокен който си напларилApr 28thStefka Stoyano… Replied Apr 28thAOMIпnuaтна oтлуска СStetka Stovanova and …... Aor 28thl•• 0‹→ сN& Adelina Petrova "Pull requests • screenpipe/screenpipe • GitHubMessagesLo Add canvasUr Files# Hostinger login | Sign in to Hostinger accountне, само стр се тракватLogin - Nginx Proxy ManagerLukas Kovalik IN 1:15 PM* Screenpipe - ArchiveAdelina Petrova "T 1:42 PMpagesLukas Kovalik "T 1:43 PMЯСНО@ SQLite Web: archive.db©SQLite Web: db.sqliteAdelina Petrova 5:06 PMда не ои проолема да е заради това кю: QUEUE,DELAYANew TabLukas Kovalik * 5:06 PMscreenpipe/,claude/skills at main • screenpipe/screenpза това искам да дооавя логовеAdelina Petrova 5:07 PMUAVDA MO CTAUG SUA rA MaVUOLI?има ли риск за нещоLukas Kovalik " 5:08 PMвсишност нама опашка тукаAdelina Petrova " 5:12 PM• сега, няма ли ла сложи евента в това кю и ла цака изпьл.Lukas Kovalik *T 5:21 PMла, ше оставя detault изпь лнениеLukas Kovalik 1K 5-26 PMпо поинцип го направих като nudge-created че те не са о!•и глелам че и този event няма никойAdelina Petrova" 5:33PMспорел мен пробвай без това кюLukas Kovalik * 5:33 PMhttps://run.userpilot.io/events/tracked_event/10run.userpilot.ioUserpilotUserpilot helos product teams deliver personalized in-appgrowth metrics at every stage of the user lournev.не е това обаче, гледам че всички си минават през сьщиAdelina Petrova * 5:40 PMами эко можеш сложи тогава лог да го видимAdelina Petrova has paused their notificationsMessage Adelina Petrova " VacationingAaO Not Secure http:/[IP_ADDRESS]:8768/audio_transcriptions_fts_idx/audio_tagsaualo transcriptionsaudio_transcriptions_fts (v)audio_transcriptions_audio_transcriptions_.audio_transcriptions_...elementselements_fts (v)elements_fts_configelements_fts_dataelements_fts_idxframesframes_fts (")frames_fts_configframes_fts_dataframes_fts_idxmeetingsmemoriesmemories_fts (v)memories_fts_configmemories_fts_datamemories_fts_idxocr_textpipe_executionspipe_scheduler_statesecretsspeaker_embeddingsspeakerssqlite_sequencesqlite_statlsalite_statatagsui_eventsui_events_fts (v)ui_events_fts_configui_events_fts_dataui_events_fts_idxvideo_chunksvision_tagsCREATE TABLE 'audio_transcriptions_fts_idx' (segid,term,PRIMARY KEY(segid, term)ColumnsColumnData typesegidpgnoIndexesNameColumnsSQLite database browser v0.7.2, powered by Flask and Peewee. © 2026 Charles LeiferToggle helper tablesAllow nullUniquePrimary keySOLW6MaY 20:43:30Actionsread-onlyread-onlyread-onlyDrop?...
|
QuickTime Player
|
compact_monitor_1_1778089220643.mp4
|
NULL
|
95
|
|
23163
|
rewind
QuickTime PlayerFileEditViewWindowHelp>0 rewind
QuickTime PlayerFileEditViewWindowHelp>0 lhl• PLanhat Petko interest event 2026-05-11.mp4j Support Daily - in 4h 24 mБГ100% ( 8• Tue 12 May 10:36:13•*II|04:0304:55ve...
|
QuickTime Player
|
PLanhat Petko interest event 2026-05-11.mp4
|
NULL
|
23163
|
|
59203
|
remote: Resolving deltas: 100% (8/8), completed wi remote: Resolving deltas: 100% (8/8), completed with 8 local objects.
2 files committed
JY-20915 fix env recognization
text/html
text/html
text/html...
|
PhpStorm
|
faVsco.js – TextRelayService.php
|
NULL
|
59203
|
|
20108
|
remote: Resolving deltas: 100% (7/7), completed wi remote: Resolving deltas: 100% (7/7), completed with 7 local objects.
1 file committed
JY-20725 add more tests
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
ClientTest
Run 'ClientTest'
Debug 'ClientTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide...
|
PhpStorm
|
faVsco.js – ClientTest.php
|
NULL
|
20108
|
|
34801
|
remote: Resolving deltas: 100% (5/5), completed wi remote: Resolving deltas: 100% (5/5), completed with 5 local objects.
1 file committed
JY-20891 add support for secondary email
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
JY-20891-improve-sms-text-relays, 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
TextRelayException
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/12
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
29
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Jobs\Mailbox;
use Illuminate\Support\Str;
use Carbon\Carbon;
use Google\Service\Gmail as GoogleGmail;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\Acl\PermissionEnum;
use Jiminny\Exceptions\TextRelayException;
use Jiminny\Jobs\Job;
use EmailReplyParser\Parser\EmailParser;
use Jiminny\Mail\Activities\SmsRelayFailed;
use Jiminny\Models\Activity;
use Jiminny\Models\TextRelay;
use Jiminny\Repositories\UserRepository;
use Jiminny\Rules\SmsMessage;
use Jiminny\Services\Mail\TextRelayService;
use Jiminny\Services\Telephony\TextMessagingService;
use Vinkla\Hashids\Facades\Hashids;
use Validator;
class EmailTextRelay extends Job implements ShouldQueue
{
use InteractsWithQueue;
use SerializesModels;
private const REASON_CODE_MAILBOX_MISMATCH = 1000;
private const REASON_CODE_SENDER_UNKNOWN = 2000;
private const REASON_CODE_SENDER_MISMATCH = 2100;
private const REASON_CODE_SENDER_FORBIDDEN = 2200;
private const REASON_CODE_RECIPIENT_ORIGIN_INVALID = 3000;
private const REASON_CODE_RECIPIENT_DESTINATION_INVALID = 3100;
private const REASON_CODE_RECIPIENT_MISSING_INVALID = 3200;
private const REASON_CODE_MESSAGE_BODY_TOO_LARGE = 4000;
private const REASON_CODE_MESSAGE_BODY_EMPTY = 4100;
private const REASON_CODE_INVALID_HASH = 5000;
private const REASON_CODE_UNKNOWN = 10000;
private $textRelay;
private $messageId;
private $to;
private $text;
/**
* @var Activity
*/
private $activityOrigin;
/**
* Create a new job instance.
*/
public function __construct(string $messageId, TextRelay $textRelay)
{
$this->messageId = $messageId;
$this->textRelay = $textRelay;
}
/**
* Execute the job.
*/
public function handle(
TextMessagingService $messagingService,
TextRelayService $relayService,
UserRepository $userRepository
): void {
if (config('jiminny.google_text_host') === null) {
return;
}
$mailService = $relayService->getService(config('jiminny.google_text_user'));
try {
// Retrieve the message from the email server.
$message = $this->getMessage($mailService, $this->messageId);
$payload = $message->getPayload();
$headers = $this->getHeaders($payload->getHeaders());
$date = Carbon::createFromFormat(Carbon::RFC2822, $headers['Date']);
$this->textRelay->update([
'email_sent_at' => $date,
'sender' => Str::limit($headers['From'], 191, ''),
'recipient' => Str::limit($headers['To'], 191, ''),
]);
$this->checkIntegrity($payload, $userRepository);
$user = $this->activityOrigin->user;
// Create the activity and send the SMS.
$messagingService->setTeam($user->team);
$message = $messagingService->send(
$user,
$this->to,
$this->text
);
$activity = $messagingService->buildActivity(
$message->sid,
Activity::TYPE_SMS_OUTBOUND,
$user,
$user->softphone_number,
$this->to,
$this->text,
$this->activityOrigin->prospect ? $this->activityOrigin->prospect->crm_provider_id : null,
strtolower($this->activityOrigin->prospect_type),
null
);
$this->textRelay->update([
'origin_activity_id' => $this->activityOrigin->id,
'activity_id' => $activity->id,
'status' => TextRelay::STATUS_PROCESSED,
]);
} catch (TextRelayException $e) {
$this->textRelay->update([
'status' => TextRelay::STATUS_FAILED,
'code' => $e->getCode(),
]);
$sender = $this->parseSender($headers['From']);
// If we can pull the sender, tell them that it failed.
if ($sender) {
$responder = (new SmsRelayFailed($this->textRelay, $e->getMessage(), $e->getCode()))
->onQueue(Constants::QUEUE_EMAILS);
\Mail::to($sender)->queue($responder);
}
} catch (\Exception $e) {
$this->textRelay->update([
'status' => TextRelay::STATUS_FAILED,
'code' => self::REASON_CODE_UNKNOWN,
]);
\Sentry::captureException($e);
} finally {
// Delete the message from the email server (it lives for 30 days).
$this->trashMessage($mailService, $this->messageId);
}
}
/**
* @param GoogleGmail\MessagePartHeader[] $rawHeaders
*/
private function getHeaders(array $rawHeaders): array
{
$headers = [];
foreach ($rawHeaders as $header) {
if (\in_array($header->name, ['To', 'From', 'X-Gm-Original-To', 'Date'])) {
$headers[$header->name] = $header->value;
}
}
return $headers;
}
/**
* @param GoogleGmail\MessagePart[] $rawBodyParts
*/
private function getBody(array $rawBodyParts): ?string
{
$body = null;
foreach ($rawBodyParts as $bodyPart) {
/* @var $bodyPart GoogleGmail\MessagePart */
if ($bodyPart->mimeType === 'text/plain') {
$body = $this->base64UrlDecode($bodyPart->getBody()->getData());
}
}
return $body;
}
private function parseSender(string $sender): ?string
{
preg_match_all(
'/\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}\b/i',
$sender,
$matches,
PREG_PATTERN_ORDER
);
return $matches[0][0];
}
/**
* @throws \Exception
*/
private function parseRecipient(string $recipient): string
{
preg_match(
'/\d+\.\d+\.[a-zA-Z0-9]{10}@txt\.(?:staging\.)?jiminny\.com/i',
$recipient,
$matches
);
if ($matches == false) {
// This should not happen. If it does, the mailbox allowed an invalid catch-all.
throw new TextRelayException(
'Recipient is missing or invalid.',
self::REASON_CODE_RECIPIENT_MISSING_INVALID
);
}
// Reply-To consists of digits.digits.string@mailbox
return $matches[0];
}
/**
* @throws \Exception
*/
private function parseRecipientIntoEntities(string $recipient): array
{
// Convert From/To/Activity into their usable types.
[$from, $to, $encodedActivityId] = explode('.', $recipient);
$from = '+' . $from;
$to = '+' . $to;
$activityId = Hashids::decode($encodedActivityId);
return [$from, $to, $activityId];
}
/**
* @throws \Exception
*/
private function checkIntegrity(GoogleGmail\MessagePart $payload, UserRepository $userRepository)
{
$headers = $this->getHeaders($payload->getHeaders());
$body = $this->getBody($payload->getParts());
// Parse the email body and check it can actually be sent.
$email = (new EmailParser())->parse($body);
$text = $email->getVisibleText();
if ($text === '') {
throw new TextRelayException(
'Message body is un-readable or empty.',
self::REASON_CODE_MESSAGE_BODY_EMPTY
);
}
$validator = Validator::make(['data' => $text], ['data' => new SmsMessage()]);
if ($validator->fails()) {
throw new TextRelayException(
'Message body is too large to send as an SMS.',
self::REASON_CODE_MESSAGE_BODY_TOO_LARGE
);
}
$this->text = $text;
$sender = $this->parseSender($headers['From']);
// Extract the Jiminny recipient.
$recipient = explode('@', $this->parseRecipient($headers['To']));
// Check this message is intended for us.
if ($recipient[1] !== config('jiminny.google_text_host')) {
throw new TextRelayException(
'Destination Mailbox does not match.',
self::REASON_CODE_MAILBOX_MISMATCH
);
}
[$from, $to, $activityId] = $this->parseRecipientIntoEntities($recipient[0]);
$validator = Validator::make(['data' => $from], ['data' => 'phone:INTERNATIONAL']);
if ($validator->fails()) {
throw new TextRelayException(
'Recipient origin number is not valid.',
self::REASON_CODE_RECIPIENT_ORIGIN_INVALID
);
}
$validator = Validator::make(['data' => $to], ['data' => 'phone:INTERNATIONAL']);
if ($validator->fails()) {
throw new TextRelayException(
'Recipient destination number is not valid.',
self::REASON_CODE_RECIPIENT_DESTINATION_INVALID
);
}
$user = $userRepository->findByEmail($sender);
if ($user === null) {
throw new TextRelayException(
'Sender does not exist.',
self::REASON_CODE_SENDER_UNKNOWN
);
}
if ($user->softphone_number === null || ! $user->hasPermission(PermissionEnum::SMS)) {
throw new TextRelayException(
'Messaging is not enabled for this account.',
self::REASON_CODE_SENDER_FORBIDDEN
);
}
if ($activityId === null) {
throw new TextRelayException(
'Origin activity has an invalid hash.',
self::REASON_CODE_INVALID_HASH
);
}
$activity = Activity::where('id', $activityId)->first();
if ($activity && $activity->user_id !== $user->id) {
throw new TextRelayException(
'Sender does not match the origin activity.',
self::REASON_CODE_SENDER_MISMATCH
);
}
$this->activityOrigin = $activity;
$this->to = $to;
}
/**
* Returns a base64 decoded web safe string
*
* @param string $string The string to be decoded
*
* @return string Decoded string
*/
private function base64UrlDecode(string $string): string
{
return base64_decode(str_replace(['-', '_'], ['+', '/'], $string));
}
public function getMessage($service, $messageId): GoogleGmail\Message
{
return $service->users_messages->get(config('jiminny.google_text_user'), $messageId);
}
public function trashMessage($service, $messageId)
{
return $service->users_messages->trash(config('jiminny.google_text_user'), $messageId);
}
}
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
40
1
40
65
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM teams WHERE name LIKE '%litify%'; # 1069, 994, 24993
SELECT * FROM users WHERE id = 25061;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 994;
SELECT * FROM crm_profiles WHERE user_id = 25061;
select * from crm_configurations where id = 834;
SELECT * FROM teams WHERE id = 882;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 882 and sa.provider = 'hubspot';
SELECT * FROM crm_configurations where id = 882; # 933 - GoGlobal
SELECT * FROM opportunities WHERE team_id = 933 order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 933 and sa.provider = 'hubspot';
SELECT * FROM crm_configurations WHERE provider = 'hubspot' and crm_provider_id = 7270388;
SELECT * FROM contacts where crm_configuration_id = 834;
SELECT * FROM opportunities WHERE team_id = 933
# AND crm_provider_id IN ('20131586060','46017317898','52543911090','53451356564','54101251892','54323768459');
AND id IN (8482561,18352941,19042734,19232139,19445140,19472541);
SELECT * FROM opportunity_contacts
WHERE opportunity_id IN (8482561,18352941,19042734,19232139,19445140,19472541);
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 485; #
SELECT * FROM opportunities WHERE team_id = 933 order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 933 and sa.provider = 'hubspot';
select crm.provider, l.* from leads l join crm_configurations crm on l.crm_configuration_id = crm.id
where crm.provider NOT IN ('salesforce', 'integration-app', 'bullhorn', 'copper')
# and l.converted_at IS NOT NULL
;
# [PASSWORD_DOTS]
SELECT * FROM activities a WHERE type IN ('email-inbound', 'email-outbound')
and opportunity_id IS NULL
order by id desc;
SELECT * FROM teams WHERE id = 604; # 598
SELECT * FROM activities WHERE id = 74410828; # [EMAIL]
SELECT * FROM accounts WHERE id = 20068382;
SELECT * FROM accounts WHERE id = 35186038;
SELECT * FROM contacts WHERE team_id = 852 and updated_at > '2026-01-23 12:30:00' order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 559 and sa.provider = 'hubspot';
SELECT * FROM activities WHERE uuid_to_bin('cb6342b6-a183-401c-b0af-ede92b2ae763') = uuid;
select * from sidekick_settings where team_id = 781;
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 26651871; # Teya
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 7562435;
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 8420347; # opflit 2100
SELECT * FROM crm_layouts WHERE crm_configuration_id = 711;
SELECT * FROM activities where crm_configuration_id = 711 and crm_provider_id IS NULL
and is_internal = 0 and status = 'completed'
order by id desc;
SELECT * FROM crm_layout_entities
WHERE crm_layout_id IN (2352, 2353);
;
SELECT * FROM crm_configurations where provider = 'hubspot' and id = 530;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 556 and sa.provider = 'hubspot';
SELECT * FROM activities WHERE uuid_to_bin('c6ca4b22-7738-4563-a95d-b8a9598924ae') = uuid;
SELECT * FROM activities WHERE uuid_to_bin('442abb2b-28bd-4be8-9c25-19e9bf02766d') = uuid;
select * from contacts
where crm_configuration_id = 530
and crm_provider_id = 872252;
select * from activities where crm_configuration_id = 530
and user_id = 14343 and type like '%softphone%'
and created_at between '2026-01-28 15:00:00' and '2026-01-28 15:10:00';
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 25666868; # Teya
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 8646335; # Teya
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id IN (5933397);
SELECT t.name, t.id, t.owner_id, c.id, c.provider, c.crm_base_url FROM teams t
JOIN crm_configurations c ON t.id = c.team_id
WHERE t.status = 'active';
SELECT * FROM teams where id = 1091;
SELECT * FROM crm_configurations where team_id = 1091;
SELECT * FROM activity_providers where team_id = 1091;
SELECT * FROM activities where crm_configuration_id = 1024 and type IN ('softphone', 'softphone-outbound')
and provider NOT IN ('hubspot', 'aircall')
# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'
order by id desc;
SELECT * FROM teams WHERE name LIKE '%Leadventure%';
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1091 and sa.provider = 'salesforce';
SELECT * FROM teams WHERE name LIKE '%Wilson%'; # 862, 812
SELECT * FROM teams where id = 862;
SELECT * FROM crm_configurations where team_id = 862;
SELECT * FROM activity_providers where team_id = 862;
SELECT * FROM activities where crm_configuration_id = 812 and type IN ('softphone', 'softphone-outbound')
and provider NOT IN ('hubspot', 'aircall')
# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'
order by id desc;
SELECT t.id, crm.id, crm.provider, ap.* FROM teams t
join crm_configurations crm on t.id = crm.team_id
join activity_providers ap on t.id = ap.team_id
where t.status = 'active' and ap.is_enabled = 1
and crm.provider = 'hubspot'
and ap.provider NOT IN ('hubspot', 'aircall', 'uploader', 'gong', 'twilio', 'zoom-bot', 'google-meet', 'ms-teams',
'outreach', 'close', 'ringcentral', 'dialpad', 'zoom-phone');
SELECT * FROM teams where id = 1068;
SELECT * FROM crm_configurations where team_id = 1068;
SELECT * FROM activity_providers where team_id = 1068;
SELECT * FROM activities a
where crm_configuration_id = 993 and type IN ('softphone', 'softphone-outbound')
and a.provider NOT IN ('hubspot', 'uploader', 'gong', 'twilio', 'google-meet', 'ms-teams','close'
)
# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'
order by a.id desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1068 and sa.provider = 'hubspot';
# [PASSWORD_DOTS]
# [PASSWORD_DOTS]
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 882; # 933 - GoGlobal , portalId: 6017093
SELECT * FROM opportunities WHERE team_id = 933 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 933 and updated_at > '2026-02-06 00:00:00' order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 933 and sa.provider = 'hubspot';
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 834; # 882 - AnyVan , portalId: 5468262
SELECT * FROM contacts WHERE crm_configuration_id = 834 and updated_at > '2026-03-30 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE crm_configuration_id = 834 and updated_at > '2026-03-04 08:00:00' order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 882 and sa.provider = 'hubspot';
select * from crm_layouts where crm_configuration_id = 834;
select * from crm_layout_entities where crm_layout_id = 2780;
select * from crm_fields where id IN (321153,321192,321193,321194);
SELECT * FROM opportunities WHERE crm_configuration_id = 834 and id = 10993426;
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 988; # 1057 - Teya (543ce4f4-168c-4571-91ea-5b35c253f06f) , portalId: 26651871
SELECT * FROM opportunities WHERE team_id = 1057 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1057 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1057 and sa.provider = 'hubspot';
SELECT * FROM crm_configurations where id = 533; # 559 - Connectd , portalId: 6710988
SELECT * FROM opportunities WHERE team_id = 559 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 559 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;
SELECT * FROM crm_configurations where id = 801; # 852 - Rise Vision , portalId: 2700250
SELECT * FROM opportunities WHERE team_id = 852 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 852 and updated_at > '2026-02-04 00:00:00' order by updated_at desc; # 6th last
SELECT * FROM crm_configurations where id = 962; # 1034 - evergrowth.io , portalId: 143180990
SELECT * FROM opportunities WHERE team_id = 1034 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1034 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 1037; # 1102 - Jibble , portalId: 6649755
SELECT * FROM opportunities WHERE team_id = 1102 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1102 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 8
SELECT * FROM crm_configurations where id = 1015; # 1049 - Travefy , portalId: 48904401
SELECT * FROM opportunities WHERE team_id = 1049 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1049 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 20
SELECT * FROM crm_configurations where id = 64; # 70 - SalaryFinance , portalId: 3404115
SELECT * FROM opportunities WHERE team_id = 70 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 70 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 6th last
SELECT * FROM crm_configurations where id = 802; # 853 - Street Group , portalId: 7658438
SELECT * FROM opportunities WHERE team_id = 853 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 853 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 10
SELECT * FROM crm_configurations where id = 872; # 921 - In Professional Development , portalId: 9238273
SELECT * FROM opportunities WHERE team_id = 921 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 921 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 2
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 550; # 576 - SeedLegals , portalId: 3028661
SELECT * FROM opportunities WHERE team_id = 576 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 576 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;
SELECT * FROM crm_configurations where id = 989; # 1058 - rtaoutdoor.com , portalId: 22371204
SELECT * FROM opportunities WHERE team_id = 1058 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1058 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;
SELECT * FROM crm_configurations where id = 896; # 946 - Mintago , portalId: 6621281
SELECT * FROM opportunities WHERE team_id = 946 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 946 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;
SELECT * FROM crm_configurations where id = 617; # 641 - PCS , portalId: 5244937
SELECT * FROM opportunities WHERE team_id = 641 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 641 and updated_at > '2026-02-05 14:00:00' order by updated_at desc; # 7th
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 649; # 670 - Eventeny , portalId: 4492849
SELECT * FROM opportunities WHERE team_id = 670 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 670 and updated_at > '2026-02-09 08:00:00' order by updated_at desc; #
SELECT * FROM crm_configurations where id = 48; # 51 - CleanCloud , portalId: 4373137
SELECT * FROM opportunities WHERE team_id = 51 and updated_at > '2026-03-04 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 51 and updated_at > '2026-02-09 08:00:00' order by updated_at desc;
select * from users where team_id = 51; # 7783
SELECT * FROM groups WHERE uuid_to_bin('8a8d2cb6-8b55-4fa3-8b5c-5f0e3d8de59a') = uuid; # 1130
select * from activity_searches where user_id = 7783;
select * from activity_search_filters where activity_search_id IN (32291, 32292);
SELECT asf.activity_search_id, asf.id, asf.value
FROM activity_search_filters asf
WHERE asf.filter = 'group_id'
AND asf.value IN (
SELECT CONCAT(
HEX(SUBSTR(uuid, 5, 4)), '-',
HEX(SUBSTR(uuid, 3, 2)), '-',
HEX(SUBSTR(uuid, 1, 2)), '-',
HEX(SUBSTR(uuid, 9, 2)), '-',
HEX(SUBSTR(uuid, 11))
)
FROM groups
WHERE deleted_at IS NOT NULL
);
SELECT * FROM crm_configurations where id = 272; # 290 - Bonham & Brook , portalId: 5705856
SELECT * FROM opportunities WHERE team_id = 290 and updated_at > '2026-02-05 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 290 and updated_at > '2026-02-09 08:00:00' order by updated_at desc; # 6th
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where provider = 'hubspot';
SELECT * FROM crm_configurations where id = 1056; # 1119 - Chromatic , portalId: 45602133
SELECT * FROM opportunities WHERE team_id = 1119 and remotely_created_at > '2026-02-01 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1119 and updated_at > '2026-02-09 09:00:00' order by updated_at desc; # null
# [PASSWORD_DOTS]
select * from contacts where crm_provider_id = '003Uu00000ojD4NIAU';
select
cp.*
# DISTINCT t.id
# cp.id, cp.user_id, t.id, cp.crm_configuration_id, cp.contact_fields
FROM crm_profiles cp
JOIN crm_configurations crm on crm.id = cp.crm_configuration_id
JOIN users u on u.id = cp.user_id
JOIN teams t ON t.id = crm.team_id
WHERE crm.provider = 'salesforce' and t.status = 'active'
and cp.archived_at IS NULL and u.deleted_at IS NULL
and t.id NOT IN (1093)
and t.id = 2
and cp.contact_fields IS NULL;
# and c.crm_provider_id = '003Uu00000ojD4NIAU';
SELECT * FROM users WHERE id = 26484;
SELECT * FROM crm_profiles WHERE user_id = 26484;
SELECT * FROM social_accounts WHERE sociable_id = 26484;
SELECT * FROM crm_configurations where provider = 'salesforce';
select * from users where id IN (10022, 10403);
select * from users where team_id IN (526);
select * from teams where id IN (526, 532);
select * from crm_configurations where id IN (500, 516);
select * from crm_profiles where crm_configuration_id IN (500, 516) and user_id IN (10022, 10403);
select * from contacts where crm_configuration_id IN (500, 516) and crm_provider_id = '003Uu00000ojD4NIAU';
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 526 and sa.provider = 'salesforce';
select * from team_settings where team_id IN (526, 532);
select * from users where id IN (22824);
select * from crm_profiles where crm_configuration_id IN (1026);
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1093 and sa.provider = 'salesforce';
select * from teams where id = 1099;
select * from users where id = 29643
select * from activity_processing_states;
SELECT * FROM teams where name LIKE '%Fare%'; # 233
SELECT * FROM opportunities where crm_configuration_id = 215
# and crm_provider_id = 'oppo_ogESZf2P50nDrd1nGPvKDXeA6sSaTN5v51Lp4ayVzKR'
;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1088 and sa.provider = 'hubspot';
SELECT * FROM teams order by updated_at DESC
SELECT * FROM crm_configurations WHERE id = 1019; # SimpleConsign 1088 - no social account
select * from crm_configurations where provider = 'pipedrive';
select * from teams where id = 957;
select * from crm_configurations where id = 957;
SELECT * FROM teams WHERE name LIKE '%Prolific%'; # 544, 518, 10743
SELECT * FROM opportunities where crm_configuration_id = 518 order by id desc;
select * from users where team_id = 1; # 26726 - Gabriela Dureva
SELECT * FROM opportunities where user_id = 26726; # 16834447 - Prolific
select * from activities where user_id = 26726 order by id desc;
select * from contacts where crm_configuration_id = 1
and email IN ('[EMAIL]', '[EMAIL]'); # 2094416, 2093620
SELECT * FROM contacts WHERE id = 6284931;
SELECT p.* FROM activities a JOIN participants p ON a.id = p.activity_id
WHERE a.user_id = 26726 and p.lead_id IN (2094416, 2093620) and a.created_at > '2026-01-01 00:00:00' order by p.email;
select * from activities where id IN (75509259,75509261,75509261,75511034,75026464,75517602,75517605);
select * from crm_configurations where id = 1;
43801692-1aeb-32ce-acba-5b80a479701a
44c3c9cf-6f5e-75f3-8179-bc9f75dd2b1b
405975c0-b3d0-7aaa-821f-09d59cae6dd1
4caf848d-4bed-2299-b248-7788d41f9fca
49bedc3f-f196-eef3-89c3-dea6a3b4aa63
43420989-a09d-b8f8-9806-c8bbf7a02aac
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1 and sa.provider = 'salesforce';
SELECT * FROM activities WHERE id = 75461988;
SELECT * FROM activities WHERE uuid_to_bin('d6c5052e-e972-49e9-8912-26f2f7d6c5f6') = uuid;
select * from contacts where id = 17900517;
select * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id
where crm.provider != 'salesforce';
select * from users where id = 21047;
SELECT * FROM crm_configurations WHERE id = 892;
SELECT * FROM teams WHERE id = 942;
select * from opportunities where team_id = 942 order by updated_at desc;
select * from contacts where team_id = 942 order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 942 and sa.provider = 'hubspot';
SELECT * FROM opportunities where team_id = 1 and crm_provider_id IN ('006Pq00000NeH6XIAV', '006Pq000007z8kdIAA'); # 10697889, 6621430
SELECT * FROM crm_configurations WHERE id = 1;
SELECT * FROM teams WHERE crm_id = 1;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1 and sa.provider = 'salesforce';
select id, user_id, opportunity_fields from crm_profiles where crm_configuration_id = 1
SELECT * FROM opportunities where team_id = 1 order by updated_at desc; # 10697889, 6621430
select * from teams where id = 852;
select * from groups where id = 2286;
select * from sidekick_settings where team_id = 852;
select * from default_activity_types where team_id = 852;
SELECT cc.provider, cc.id, p.id, u.*
FROM users u
LEFT JOIN crm_profiles p ON u.id = p.user_id AND p.id IS NULL -- no profile
INNER JOIN teams t ON u.team_id = t.id AND t.status = 'active' -- team is active
INNER JOIN crm_configurations cc ON t.crm_id = cc.id
WHERE u.status = 1 AND u.deleted_at IS NULL
AND u.crm_required = 1
AND u.team_id = 1
ORDER BY u.team_id;
SELECT * FROM crm_profiles cp where cp.crm_configuration_id = 1 and cp.user_id IN (
18481
);
SELECT cc.provider, cc.id, p.id, u.*
FROM users u
LEFT JOIN crm_profiles p ON u.id = p.user_id
INNER JOIN teams t ON u.team_id = t.id AND t.status = 'active'
INNER JOIN crm_configurations cc ON t.crm_id = cc.id
WHERE u.status = 1
AND u.deleted_at IS NULL
AND u.crm_required = 1
# AND u.team_id = 1
AND p.id IS NULL -- Move this condition to WHERE clause
ORDER BY u.team_id;
SELECT * FROM opportunities WHERE id = 20002609;
select * from teams where id = 1122; # Velatir, 29953 - [EMAIL]
select * from crm_configurations where id = 1060;
select * from crm_layouts where crm_configuration_id = 1060;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 3596;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1122 and sa.provider = 'hubspot';
select * from opportunities where team_id = 1122 order by updated_at desc;
select * from crm_field_data where object_type = 'contact';
SELECT * FROM activities WHERE uuid_to_bin('374fc8ed-3315-4c9f-9b25-318b7fd2928f') = uuid; # 76584262
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 248 and sa.provider = 'salesforce';
SELECT * FROM crm_profiles where user_id = 24115; # 005QF000002CswMYAS
SELECT * FROM users where id = 24115;
SELECT * FROM accounts where id = 4002896;
SELECT * FROM teams WHERE name LIKE '%adswerve%';
SELECT * FROM opportunities where crm_configuration_id = 230 AND crm_provider_id IN ("0069N000003GIQ9QAO","0061r000019yGP9AAM","0066900001S2KWlAAN","0066900001TDpj2AAD","0066900001b8uEwAAI","0069N000001rQi0QAE","006QF00000KD40mYAD","006QF00000LzpRJYAZ","0069N000002uomtQAA","0069N000002xlMLQAY","0066900001NV6ubAAD","0061r00001HJp45AAD","006QF00000uTlUoYAK","006QF00000v0bZqYAI");
SELECT * FROM opportunities WHERE crm_configuration_id = 230 AND crm_provider_id = '0069N000003GIQ9QAO'; # 6272203
SELECT u.id, u.email, ac.name, a.* FROM activities a
JOIN users u ON a.user_id = u.id
JOIN accounts ac ON a.account_id = ac.id
WHERE
uuid_to_bin('e3269598-b562-44fb-b5e9-9d2694dc63e0') = a.uuid or
uuid_to_bin('66ddc3ab-4e15-45aa-af0c-248c1eece593') = a.uuid or
uuid_to_bin('826bd328-e1cc-4213-b8d8-572454cacc07') = a.uuid;
select * from users where id = 5825;
SELECT * FROM activities WHERE uuid_to_bin('e56aa2e8-231a-421b-ab1f-cb38ed2bf573') = uuid;
select * from activities where uuid_to_bin('91e13b2f-2d1b-45f8-b1fd-1141b6563782') = uuid;
19594, 862
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 862 and sa.provider = 'salesforce';
select * from automated_reports where id = 36;
select ar.frequency, r.*, ar.* from automated_report_results r
join automated_reports ar on r.report_id = ar.id
where ar.frequency != 'one_off';
select s.* from activity_searches s join users u ON s.user_id = u.id where u.team_id = 882;
select * from nudges n where n.activity_search_id
select * from teams where created_at > '2026-03-09';
SELECT * FROM crm_layouts WHERE crm_configuration_id = 1065; # 1065
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 3617;
select * from users where team_id = 1 and name like '%Lukas%'; # 7160
SELECT * FROM teams WHERE id = 575;
select * from opportunities where team_id = 575;
SELECT * FROM teams WHERE name LIKE '%Integrum ESG%'; # 1126, 1065,
select * from opportunities where team_id = 1126;
SELECT * FROM teams WHERE name LIKE '%Base%'; # 1125, 1063,
select * from opportunities where team_id = 1125;
select * from contacts c
where c.team_id = 882;
SELECT * FROM activities WHERE id = 76822967;
SELECT * FROM crm_profiles WHERE user_id = 15440;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 555;
SELECT * FROM crm_configurations WHERE id = 555;
SELECT * FROM users WHERE id = 15440; # team. 581, gr. 15440, pl. 3911, act. field 162182
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 581 and sa.provider = 'salesforce';
SELECT * FROM automated_report_results order by id desc;
select * from features;
select * from team_features where feature_id = 40;
select * from teams where id = 556;
select * from automated_reports;
where id = 54; # 4fdd41f6-dcf0-30d0-b339-7345381b6044 , ["pdf","podcast"]
SELECT * FROM automated_report_results WHERE uuid_to_bin('822fa41b-afd3-43a9-a248-86b0e36f3131') = uuid;
select * from automated_report_results order by id desc;
SELECT * FROM automated_report_results WHERE id = 1919;
select * 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]
select * from playbooks where team_id = 711; # event 226147
SELECT * FROM playbook_categories WHERE playbook_id = 5515;
SELECT * FROM crm_fields WHERE crm_configuration_id = 692 and object_type = 'event';
SELECT * FROM crm_fields WHERE id = 226147;
SELECT * FROM crm_field_values WHERE crm_field_id = 226147;
SELECT * FROM crm_configurations WHERE id = 692;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 711 and sa.provider = 'salesforce';
SELECT * FROM crm_profiles cp JOIN users u on u.id = cp.user_id WHERE u.team_id = 711;
select * from leads;
select * from calendars;
SELECT
t.id AS team_id,
t.name,
LOWER(SUBSTRING_INDEX(c.calendar_provider_id, '@', -1)) AS calendar_domain
FROM teams t
JOIN users u ON u.team_id = t.id
JOIN calendars c ON c.user_id = u.id AND c.status = 'active' AND c.calendar_provider_id LIKE '%@%'
LEFT JOIN team_domains td
ON td.team_id = t.id
AND td.deleted_at IS NULL
AND td.domain = LOWER(SUBSTRING_INDEX(c.calendar_provider_id, '@', -1))
GROUP BY t.id, t.name, calendar_domain
ORDER BY t.name, calendar_domain;
select * from users u join calendars c on c.user_id = u.id
where u.team_id = 882;
select * from activities where id = 74049485; # team 563 crm 537
select * from activities where id = 73272382; # team 563 crm 537
select * from activities where id = 64400389; # team 563 crm 537
select * from activities where id = 58081273; # team 563 crm 537
select * from activities where id = 54520297; # team 563 crm 537
select * from participants where activity_id = 58081273;
select * from activities where crm_configuration_id = 537 and provider = 'aircall'
and account_id = 19003658 order by updated_at desc;
select * from contacts where crm_configuration_id = 537 and id = 35957759;
select * from accounts where crm_configuration_id = 537 and id = 19003658;
select * from automated_report_results where id = 1976;
select * from automated_reports where id = 583;
select * from activity_searches where id = 87714;
select * from activity_search_filters where activity_search_id = 87714;
SELECT * FROM activities WHERE uuid_to_bin('8827f672-202d-4162-9d04-73ff5f0566a9') = uuid
or uuid_to_bin('47842446-af51-4bcb-854f-cc6560290101') = uuid;
SELECT * FROM crm_configurations WHERE provider = 'hubspot';
select * from rate_limits;
select * from automated_report_results where media_type = 'pdf' and status = 2
and id IN (18, 1872);
select * from automated_reports where id = 54;
SELECT * FROM users WHERE id IN (24623,29443,29613);
SELECT * FROM automated_report_results WHERE uuid_to_bin('822fa41b-afd3-43a9-a248-86b0e36f3131') = uuid;
select * from text_relays where created_at > '2026-05-01'
# and id IN (32415, 32416);
and id = 32412;
select * from users where team_id = 2 and email like '%scott%' and id = 29510;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – EmailTextRelay.php
|
NULL
|
34801
|
|
7603
|
remote: Resolving deltas: 100% (11/11), completed remote: Resolving deltas: 100% (11/11), completed with 11 local objects.
3 files committed
JY-20818 move ask jiminny reports to its own datadog metric
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
JY-20818-move-AJ-reports-to-separated-datadog-metric, menu
Start Listening for PHP Debug Connections
AutomatedReportsCallbackServiceTest
Run 'AutomatedReportsCallbackServiceTest'
Debug 'AutomatedReportsCallbackServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
20
18
13
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM teams WHERE id = 1;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;
SELECT * FROM crm_fields WHERE id = 2234;
SELECT * FROM crm_field_values WHERE crm_field_id = 2234;
select * from crm_profiles where user_id = 143;
select * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO
select * from business_processes where crm_configuration_id = 39;
# 01941000000H669AAC, 01941000000H66JAAS
select * from record_type_field_values
where record_type_id IN (24);
select * from crm_field_values where id IN (2730);
select * from crm_configurations where id = 39;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce'; #1035
select * from users where team_id = 1; # 222 group 3
SELECT * FROM activities WHERE user_id = 222 order by id desc;
select * from sidekick_settings where team_id = 1;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from activities where crm_configuration_id = 2
and provider = 'ms-teams' and id = 608765;
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';
select * from sidekick_settings where team_id = 2;
SELECT * FROM activities WHERE id = 608660;
select * from activity_summary_logs where activity_id = 608660;
select * from ai_prompts where transcription_id = 11214;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;
# id: 608818, crm: 59628809737
SELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;
# id: 608821, crm: 59632069252
SELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,
playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,
scheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at
FROM activities a
join calendar_events ce on a.calendar_event_id = ce.id
WHERE a.id IN (608818, 608821);
select * from users where team_id = 1;
select * from team_settings where team_id = 1;
select * from crm_profiles where crm_configuration_id = 39 order by user_id;
select * from team_features where team_id = 1;
select * from users where team_id = 2;
SELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639
# Preslava N. Ivanova, grou id 3
SELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;
select * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';
select
a.id,
a.type,
a.scheduled_start_time,
a.actual_start_time,
a.created_at,
a.opportunity_id,
a.status
FROM activities a
WHERE opportunity_id = 344
and status IN ('completed', 'received', 'delivered')
and (
(a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))
;
SELECT * FROM users WHERE id = 222;
SELECT * FROM crm_profiles WHERE user_id = 222;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;
select * from group_deal_risk_types;
select * from opportunities where team_id = 1;
SELECT * FROM opportunities WHERE id = 315;
SELECT * FROM crm_field_data WHERE object_id = 315;
select * from crm_field_data where object_id = 260;
select * from generic_ai_prompts where subject_id = 315;
select * from teams; # 36, 21, 121, [EMAIL]
SELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';
# [PASSWORD_DOTS]
select * from teams where id = 1;
select * from crm_configurations where id = 39;
select * from users where team_id = 1;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 1;
# 1 - 00541000004281rAAA
# 204 - 0052g000003freeAAA
# 429 - 0052g000003qGOiAAM
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
select * from activities where type = 'softphone'
and created_at > '2024-12-11 15:24:36' order by id desc;
select * from activity_providers where team_id = 1;
select * from activity_provider_users where activity_provider_id = 328;
select * from opportunities where crm_configuration_id = 39
AND account_id = 178 AND is_closed = false
order by created_at DESC;
select * from contacts where id = 3952;
select * from accounts where id = 178;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations where id = 21;
select * from users where team_id = 36;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 36
and sa.provider = 'bullhorn';
select * from social_accounts where id = 348;
UPDATE social_accounts SET
provider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',
provider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',
expires = 1733998131,
state = 'connected'
WHERE id = 348;
# [PASSWORD_DOTS]
select * from teams where id = 31;
select * from crm_configurations where id = 18;
select * from users where team_id = 31; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 31;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 31
and sa.provider = 'close';
select * from contacts where crm_configuration_id = 18;
# [PASSWORD_DOTS] NEPTUNE [PASSWORD_DOTS]
select * from teams;
select * from users where id IN (1030, 1035, 1052);
select * from crm_configurations;
select * from users where team_id = 65; # 257
select * from team_settings where team_id = 65; # 257
select * from invitations where team_id = 65; # 257
select * from users where email = '[EMAIL]'; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 65;
select * from crm_configurations where id = 53;
select * from accounts where crm_configuration_id = 53 order by id desc;
select * from leads where crm_configuration_id = 53 order by id desc;
select * from contacts where crm_configuration_id = 53 order by id desc;
select * from opportunities where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 53 order by id desc;
select * from crm_fields where crm_configuration_id = 53 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 53 order by id desc;
select * from stages where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 13;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
and sa.provider = 'integration-app';
select * from contacts where crm_configuration_id = 13;
select * from social_accounts where sociable_id = 283;
SELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';
select * from activity_providers where team_id = 65;
SELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
;
# [PASSWORD_DOTS] STAGING [PASSWORD_DOTS]
SELECT * FROM teams;
SELECT * FROM teams WHERE id = 88;
SELECT * FROM teams WHERE id = 89;
select * from team_settings where team_id = 89;
SELECT * FROM users WHERE team_id = 89;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 89;
select * from users;
SELECT * FROM social_accounts WHERE sociable_id = 1761;
SELECT * FROM crm_configurations WHERE id = 70;
select * from accounts where crm_configuration_id = 70 order by id desc;
select * from leads where crm_configuration_id = 70 order by id desc;
select * from contacts where crm_configuration_id = 70 order by id desc;
select * from opportunities where crm_configuration_id = 70 order by id desc;
select * from crm_profiles where crm_configuration_id = 70 order by id desc;
select * from crm_fields where crm_configuration_id = 70 order by id desc;
select * from crm_field_values where crm_field_id = 3536 order by id desc;
select * from crm_layouts where crm_configuration_id = 70 order by id desc;
select * from stages where crm_configuration_id = 70 order by id desc;
select * from business_processes where crm_configuration_id = 70 order by id desc;
select * from business_process_stages where business_process_id = 34;
select * from contacts where id = 10468;
select * from crm_layouts where crm_configuration_id = 70;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;
SELECT * FROM crm_fields WHERE id IN (3533,3534,3535);
select * from activities where crm_configuration_id = 70
and (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;
SELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;
SELECT * FROM activities where crm_configuration_id = 69 ;
SELECT * FROM users WHERE email LIKE '%[EMAIL]%';
SELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;
SELECT * FROM opportunities WHERE id = 385;
select * from participants p
join activities a on p.activity_id = a.id
where a.crm_configuration_id = 70
and (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);
SELECT * FROM participants WHERE id = 1013638;
select * from teams where id = 90;
select * from users where team_id = 90;
select * from social_accounts where social_accounts.sociable_id IN (1960,1760);
SELECT * FROM crm_profiles WHERE crm_configuration_id = 71;
select * from invitations where team_id = 90;
select * from crm_configurations where id = 71;
select * from accounts where crm_configuration_id = 71 order by id desc;
select * from leads where crm_configuration_id = 71 order by id desc;
select * from contacts where crm_configuration_id = 71 order by id desc;
select * from opportunities where crm_configuration_id = 71 order by id desc;
select * from crm_profiles where crm_configuration_id = 71 order by id desc;
select * from crm_fields where crm_configuration_id = 71 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 71 order by id desc;
select * from stages where crm_configuration_id = 71 order by id desc;
select * from users order by secondary_email desc;
select u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa
join users u on sa.sociable_id = u.id
where sa.provider = 'google' and u.email LIKE 'aneliya%';
select * from failed_jobs order by id desc;
select * from users where email = '[EMAIL]' or secondary_email = '[EMAIL]';
select * from teams;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 39;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;
SELECT * FROM crm_configurations WHERE id = 70;
select * from teams where id = 1;
select * from groups where team_id = 1;
select * from users where team_id = 1;
select o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o
join users u on o.user_id = u.id
join groups g on u.group_id = g.id
join role_user ru on u.id = ru.user_id
join roles r on ru.role_id = r.id
where o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';
select * from role_user where user_id = 143;
select * from roles;
select * from role_user;
select * from groups where id = 9;
select * from scope_groups where group_id = 9;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations;
SELECT * FROM social_accounts WHERE sociable_id = 121;
https://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105
https://crmsandbox.zoho.com/crm/
https://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080
https://crm.zoho.com/crm/
org3469620
SELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;
select * from users where email LIKE "%mobile_automation_%";
select * from social_accounts where sociable_id IN (2228);
select * from crm_profiles where user_id IN (2222,2223,2226,2227);
select * from teams order by id desc;
SELECT * FROM users WHERE id = 2229;
SELECT * FROM crm_profiles WHERE user_id = 2229;
select * from opportunities where crm_configuration_id = 88;
select * from crm_fields where crm_configuration_id = 88;
select * from crm_profiles where crm_configuration_id = 88;
SELECT * FROM teams WHERE id = 1;
SELECT * FROM users WHERE id = 143;
SELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;
https://app.staging.jiminny.com/ondemand?
min_duration=1
&
only_recorded=1
&
user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e
&
sequence_number=2
select * from users where team_id = 1 and email like '%stoyan%'
select * from coaching_feedbacks;
select * from teams;
SELECT * FROM users WHERE team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from users where id = 143;
SELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
select * from users where team_id = 2;
select * from activities where crm_configuration_id = 39
and activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'
AND user_id = 143
order by id desc;
# [PASSWORD_DOTS]
select * from teams where id = 142; # 2312, 126
select * from team_settings;
select * from users where team_id = 142; # 21642
SELECT * FROM social_accounts WHERE sociable_id = 21642;
SELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;
select * from crm_profiles where id IN (93);
select * from invitations;
select * from team_features where team_id = 1;
SELECT * FROM crm_configurations WHERE id = 126;
select * from accounts where crm_configuration_id = 126 order by id desc;
select * from leads where crm_configuration_id = 126 order by id desc;
select * from contacts where crm_configuration_id = 126 order by id desc;
select * from opportunities where crm_configuration_id = 126 order by id desc;
select * from crm_profiles where crm_configuration_id = 126 order by id desc;
select * from crm_fields where crm_configuration_id = 126 # 11060
# and type IN ('picklist', 'status')
# and object_type = 'task'
order by id desc;
# 5731,5732,5733
select DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;
select * from crm_layouts where crm_configuration_id = 126 order by id desc;
SELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);
select * from stages where crm_configuration_id = 126 order by id desc;
select * from business_processes where crm_configuration_id = 126 order by id desc;
select * from business_process_stages where business_process_id IN (76,75,74,73);
select * from playbooks where team_id = 142;
select * from playbook_layouts where playbook_id IN (108);
SELECT * FROM playbook_categories WHERE playbook_id IN (108);
select * from teams where id = 130;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 2
and sa.provider = 'hubspot';
SELECT * FROM activities
WHERE crm_configuration_id = 110;
select * from teams;
select * from crm_configurations;
SELECT * FROM activities WHERE id = 628773;
SELECT * FROM crm_profiles WHERE user_id = 1460;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from teams;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from teams where id = 145;
select * from crm_configurations where id = 129;
select * from social_accounts where sociable_id = 2317;
SELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;
select * from teams where id = 1;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;
SELECT * FROM crm_layout_entities WHERE id = 5507;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');
select * from teams;
select * from activities where crm_configuration_id = 14;
SELECT * FROM social_accounts where provider = 'copper';
select * from activities where id = 628467;
select * from participants where activity_id = 628467;
SELECT * FROM contacts WHERE id = 3969;
SELECT * FROM accounts WHERE id = 177;
SELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;
# [PASSWORD_DOTS] BH
select * from teams where id = 36;
SELECT * FROM crm_configurations WHERE id = 21;
select * from activities where crm_configuration_id = 21 and id = 607901;
select * from activities where crm_configuration_id = 21;
select * roles;
select * from permissions;
select * from permission_role where permission_id = 226;
select * from migrations order by id desc;
# mercury
# neptune
# earth
select * from teams;
select * from teams where id = 19;
select * from teams where id = 27;
select * from users where team_id = 27;
SELECT * FROM crm_configurations WHERE id = 42;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from activities where id = 631461;
SELECT * FROM crm_field_values WHERE crm_field_id = 180;
select * from teams where id = 2;
SELECT * FROM social_accounts WHERE sociable_id = 89;
SELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273
select * from activity_summary_logs where activity_id = 634273;
select * from sidekick_settings where team_id = 2;
select * from teams; # 2, 2
SELECT * FROM crm_configurations WHERE team_id = 2; # 2
select * from team_features where team_id = 2;
select * from features;
SELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';
SELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from users where team_id = 1 and id IN (7160, 3248);
select * from migrations order by id desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1052 and sa.provider = 'hubspot';
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 565;
select * from playbooks where team_id = 1;
select * from playbooks where id = 175;
select * from playbook_categories where playbook_id = 175;
select * from users where team_id = 1052;
select * from users where id = 7160;
select * from crm_profiles where user_id = 7160;
select * from features;
select
*
# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,
# crm_configuration_id, crm_provider_id, transcription_id, status
from activities where crm_configuration_id = 1 and type = 'conference'
# and crm_provider_id IS NOT NULL
and provider != 'uploader' and actual_start_time IS NOT NULL
ORDER by id desc;
select * from activities where id = 54747783; # 00UO400000pCzojMAC
select p.id, p.activity_type, pc.id, pc.name
FROM playbooks p
join playbook_categories pc on p.id = pc.playbook_id
where p.team_id = 1 and p.activity_type = 'event';
SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';
SELECT * FROM crm_field_values WHERE crm_field_id = 4;
select * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id
where crm_configuration_id = 1 and pl.playbook_id = 175;
select * from teams;
SELECT r.* FROM automated_reports r
join teams t on r.team_id = t.id
WHERE r.frequency = 'daily'
and r.status = 1
AND t.status = 'active'
AND (r.expires_at >= now() OR r.expires_at IS NULL);
select * from automated_report_results where report_id IN (18, 33);
select * from activity_searches where id = 10932;
select * from activity_search_filters where activity_search_id = 10932;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from automated_reports where id IN (55);
select * from automated_report_results where id IN (81);
select * from users where id IN (10633, 13987, 11985);
select * from users where group_id IN (3710);
SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;
SELECT * FROM automated_report_results WHERE uuid_to_bin('582d4b50-8cd3-42a9-9819-d676ff8f3b43') = uuid;
Code changed:
Hide
Sync Changes
Hide This Notification
4
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Jiminny\Component\Datadog\Constants as DatadogConstants;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsCallbackService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Mockery;
use Tests\TestCase;
class AutomatedReportsCallbackServiceTest extends TestCase
{
private AutomatedReportsCallbackService $service;
protected function setUp(): void
{
parent::setUp();
$this->service = new AutomatedReportsCallbackService();
}
public function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
public function testGetResultUuid(): void
{
$this->assertEquals('test-uuid', $this->service->getResultUuid(['request_id' => 'test-uuid']));
$this->assertNull($this->service->getResultUuid([]));
}
public function testGetStatus(): void
{
$this->assertEquals('completed', $this->service->getStatus(['status' => 'completed']));
$this->assertNull($this->service->getStatus([]));
}
public function testGetPodcastAudioUrl(): void
{
$this->assertEquals('http://example.com/audio.mp3', $this->service->getPodcastAudioUrl(['podcast_audio_url' => 'http://example.com/audio.mp3']));
$this->assertNull($this->service->getPodcastAudioUrl([]));
}
public function testIsSuccess(): void
{
$this->assertTrue($this->service->isSuccess(['status' => 'completed']));
$this->assertFalse($this->service->isSuccess(['status' => 'failed']));
$this->assertFalse($this->service->isSuccess([]));
}
public function testGetResultStatus(): void
{
$this->assertEquals(AutomatedReportResult::STATUS_GENERATED, $this->service->getResultStatus(true));
$this->assertEquals(AutomatedReportResult::STATUS_FAILED, $this->service->getResultStatus(false));
}
public function testGetPrimaryStatus(): void
{
$pdfResult = Mockery::mock(AutomatedReportResult::class);
$pdfResult->shouldReceive('getMediaType')->andReturn(AutomatedReportsService::MEDIA_TYPE_PDF);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult->shouldReceive('getMediaType')->andReturn(AutomatedReportsService::MEDIA_TYPE_PODCAST);
$otherResult = Mockery::mock(AutomatedReportResult::class);
$otherResult->shouldReceive('getMediaType')->andReturn('other');
$successPayload = ['status' => 'completed', 'podcast_audio_url' => 'http://example.com/audio.mp3'];
$failPayload = ['status' => 'failed'];
$this->assertEquals(AutomatedReportResult::STATUS_GENERATED, $this->service->getPrimaryStatus($pdfResult, $successPayload));
$this->assertEquals(AutomatedReportResult::STATUS_FAILED, $this->service->getPrimaryStatus($pdfResult, $failPayload));
$this->assertEquals(AutomatedReportResult::STATUS_GENERATED, $this->service->getPrimaryStatus($podcastResult, $successPayload));
$this->assertEquals(AutomatedReportResult::STATUS_FAILED, $this->service->getPrimaryStatus($podcastResult, $failPayload));
$this->assertEquals(AutomatedReportResult::STATUS_FAILED, $this->service->getPrimaryStatus($otherResult, $successPayload));
}
public function testGetPodcastStatus(): void
{
$successPayload = ['status' => 'completed', 'podcast_audio_url' => 'http://example.com/audio.mp3'];
$successPayloadNoUrl = ['status' => 'completed'];
$failPayload = ['status' => 'failed'];
$this->assertEquals(AutomatedReportResult::STATUS_GENERATED, $this->service->getPodcastStatus($successPayload));
$this->assertEquals(AutomatedReportResult::STATUS_FAILED, $this->service->getPodcastStatus($successPayloadNoUrl));
$this->assertEquals(AutomatedReportResult::STATUS_FAILED, $this->service->getPodcastStatus($failPayload));
}
public function testIsProcessed(): void
{
$generatedResult = Mockery::mock(AutomatedReportResult::class);
$generatedResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$sentResult = Mockery::mock(AutomatedReportResult::class);
$sentResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_SENT);
$requestedResult = Mockery::mock(AutomatedReportResult::class);
$requestedResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_REQUESTED);
$this->assertTrue($this->service->isProcessed($generatedResult));
$this->assertTrue($this->service->isProcessed($sentResult));
$this->assertFalse($this->service->isProcessed($requestedResult));
}
public function testPushToDatadog(): void
{
$automatedReport = Mockery::mock(AutomatedReport::class);
$result = Mockery::mock(AutomatedReportResult::class);
$team = Mockery::mock(Team::class);
$automatedReport->shouldReceive('isAskJiminnyReport')->andReturn(false);
$automatedReport->shouldReceive('getType')->once()->andReturn('exec_summary');
$automatedReport->shouldReceive('getTeam')->once()->andReturn($team);
$team->shouldReceive('getSlug')->once()->andReturn('test-team');
$automatedReport->shouldReceive('getFrequency')->once()->andReturn('weekly');
$result->shouldReceive('getMediaType')->once()->andReturn('pdf');
Datadog::shouldReceive('increment')
->once()
->with(
DatadogConstants::AUTOMATED_REPORTS,
DatadogConstants::FULL_SAMPLE_RATE,
[
'report_type' => 'exec_summary',
'organization' => 'test-team',
'frequency' => 'weekly',
'media_type' => 'pdf',
]
);
$this->service->pushToDatadog($automatedReport, $result);
$this->addToAssertionCount(1);
}
public function testPushToDatadogWithAskJiminnyReport(): void
{
$automatedReport = Mockery::mock(AutomatedReport::class);
$result = Mockery::mock(AutomatedReportResult::class);
$team = Mockery::mock(Team::class);
$automatedReport->shouldReceive('isAskJiminnyReport')->andReturn(true);
$automatedReport->shouldReceive('getTeam')->once()->andReturn($team);
$team->shouldReceive('getSlug')->once()->andReturn('test-team');
$automatedReport->shouldReceive('getFrequency')->once()->andReturn('daily');
Datadog::shouldReceive('increment')
->once()
->with(
DatadogConstants::ASK_JIMINNY_REPORTS,
DatadogConstants::FULL_SAMPLE_RATE,
[
'organization' => 'test-team',
'frequency' => 'daily',
]
);
$this->service->pushToDatadog($automatedReport, $result);
$this->addToAssertionCount(1);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – AutomatedReportsCallbackServiceTest.ph faVsco.js – AutomatedReportsCallbackServiceTest.php...
|
NULL
|
7603
|
|
19651
|
remote: Resolving deltas: 100% (11/11), completed remote: Resolving deltas: 100% (11/11), completed with 11 local objects.
2 files committed
JY-20725 add tests
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
MatchActivityCrmDataTest
Run 'MatchActivityCrmDataTest'
Debug 'MatchActivityCrmDataTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
20
8
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Jobs\Crm;
use Illuminate\Database\Connection;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Jobs\Crm\MatchActivityCrmData;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Configuration;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\ActivityRepository;
use Jiminny\Services\Crm\CrmActivityService;
use PHPUnit\Framework\MockObject\Exception;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class MatchActivityCrmDataTest extends TestCase
{
private ActivityRepository|MockObject $activityRepository;
private CrmActivityService|MockObject $crmActivityService;
private Connection|MockObject $connection;
protected function setUp(): void
{
parent::setUp();
$this->activityRepository = $this->createMock(ActivityRepository::class);
$this->crmActivityService = $this->createMock(CrmActivityService::class);
$this->connection = $this->createMock(Connection::class);
}
/**
* @throws \Exception|Exception
*/
public function testHandle(): void
{
$fromConfiguration = $this->createMock(Configuration::class);
$fromConfiguration->method('getId')->willReturn(5);
$team = $this->createMock(Team::class);
$user = $this->createMock(User::class);
$user->method('getTeam')->willReturn($team);
$activityConfiguration = $this->createMock(Configuration::class);
$activityConfiguration->method('getId')->willReturn(10);
$participants = $this->createMock(HasMany::class);
$activity = $this->createMock(Activity::class);
$activity->method('getUuid')->willReturn('test');
$activity->method('getProvider')->willReturn('provider');
$activity->method('getUser')->willReturn($user);
$activity->method('getCrm')->willReturn($activityConfiguration);
$activity->method('participants')->willReturn($participants);
$activity->expects($this->exactly(2))->method('update');
$this->activityRepository->expects(($this->once()))
->method('findById')
->with(1)
->willReturn($activity);
$this->activityRepository->expects($this->once())
->method('getActivityParticipants')
->with($activity)
->willReturn(collect([]));
$this->crmActivityService->expects($this->once())
->method('updateCrmData')
->with($activity, false);
$this->connection->expects($this->once())
->method('transaction')
->willReturnCallback(function ($callback) {
return $callback();
});
$job = new MatchActivityCrmData(
activityId: 1,
fromConfiguration: $fromConfiguration,
);
$job->handle(
activityRepository: $this->activityRepository,
crmActivityService: $this->crmActivityService,
connection: $this->connection,
);
}
/**
* @throws \Exception|Exception
*/
public function testHandleNoActivity(): void
{
$this->activityRepository->expects(($this->once()))
->method('findById')
->with(1)
->willReturn(null);
$job = new MatchActivityCrmData(
activityId: 1,
fromConfiguration: null,
);
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('[MatchActivityCrmData] Cannot find activity.');
$job->handle(
activityRepository: $this->activityRepository,
crmActivityService: $this->crmActivityService,
connection: $this->connection,
);
}
public function testSkipsCrmConfigurationSwitchWhenAlreadyMatches(): void
{
$fromConfiguration = $this->createMock(Configuration::class);
$fromConfiguration->method('getId')->willReturn(5);
$activityConfiguration = $this->createMock(Configuration::class);
$activityConfiguration->method('getId')->willReturn(5);
$participants = $this->createMock(HasMany::class);
$activity = $this->createMock(Activity::class);
$activity->method('getCrm')->willReturn($activityConfiguration);
$activity->method('participants')->willReturn($participants);
$activity->expects($this->once())->method('update');
$this->activityRepository->expects($this->once())
->method('findById')
->with(123)
->willReturn($activity);
$this->activityRepository->expects($this->once())
->method('getActivityParticipants')
->with($activity)
->willReturn(collect([]));
$this->crmActivityService->expects($this->once())
->method('updateCrmData')
->with($activity, false);
$this->connection->expects($this->once())
->method('transaction')
->willReturnCallback(function ($callback) {
return $callback();
});
$job = new MatchActivityCrmData(
activityId: 123,
fromConfiguration: $fromConfiguration,
);
$job->handle(
activityRepository: $this->activityRepository,
crmActivityService: $this->crmActivityService,
connection: $this->connection,
);
}
public function testJobConfiguration(): void
{
$job = new MatchActivityCrmData(
activityId: 1,
fromConfiguration: null,
remoteSearch: false,
);
$this->assertSame(3, $job->maxExceptions);
$this->assertSame(300, $job->timeout());
$this->assertSame(7260, $job->uniqueFor());
$this->assertSame([30, 90, 180], $job->backoff());
}
public function testUniqueId(): void
{
$configuration = $this->createMock(Configuration::class);
$configuration->method('getId')->willReturn(5);
$job1 = new MatchActivityCrmData(
activityId: 123,
fromConfiguration: null,
remoteSearch: false,
);
$this->assertSame('123:0:local', $job1->uniqueId());
$job2 = new MatchActivityCrmData(
activityId: 123,
fromConfiguration: null,
remoteSearch: true,
);
$this->assertSame('123:0:remote', $job2->uniqueId());
$job3 = new MatchActivityCrmData(
activityId: 123,
fromConfiguration: $configuration,
remoteSearch: false,
);
$this->assertSame('123:5:local', $job3->uniqueId());
}
public function testTransactionRollbackOnException(): void
{
$activity = $this->createMock(Activity::class);
$this->activityRepository->expects($this->once())
->method('findById')
->with(1)
->willReturn($activity);
$exception = new \RuntimeException('Test exception');
$this->connection->expects($this->once())
->method('transaction')
->willReturnCallback(function ($callback) use ($exception) {
throw $exception;
});
$job = new MatchActivityCrmData(
activityId: 1,
fromConfiguration: null,
);
$this->expectException(\RuntimeException::class);
$this->expectExceptionMessage('Test exception');
$job->handle(
activityRepository: $this->activityRepository,
crmActivityService: $this->crmActivityService,
connection: $this->connection,
);
}
public function testFailedMethodLogsError(): void
{
$exception = new \RuntimeException('Test failure');
\Sentry::shouldReceive('captureException')->once()->with($exception);
$job = new MatchActivityCrmData(
activityId: 123,
fromConfiguration: null,
remoteSearch: true,
);
$job->failed($exception);
}
public function testLogsSuccessWhenMatchFound(): void
{
$participants = $this->createMock(HasMany::class);
$lead = $this->createMock(Lead::class);
$lead->method('getId')->willReturn(456);
$activity = $this->createMock(Activity::class);
$activity->method('participants')->willReturn($participants);
$activity->method('getLead')->willReturn($lead);
$activity->method('getContact')->willReturn(null);
$activity->method('getAccount')->willReturn(null);
$activity->method('getOpportunity')->willReturn(null);
$this->activityRepository->expects($this->once())
->method('findById')
->with(123)
->willReturn($activity);
$this->activityRepository->expects($this->once())
->method('getActivityParticipants')
->with($activity)
->willReturn(collect([]));
$this->crmActivityService->expects($this->once())
->method('updateCrmData')
->with($activity, false);
$this->connection->expects($this->once())
->method('transaction')
->willReturnCallback(function ($callback) {
return $callback();
});
$job = new MatchActivityCrmData(
activityId: 123,
fromConfiguration: null,
remoteSearch: false,
);
$job->handle(
activityRepository: $this->activityRepository,
crmActivityService: $this->crmActivityService,
connection: $this->connection,
);
}
public function testLogsNoMatchWhenNoMatchFound(): void
{
$participants = $this->createMock(HasMany::class);
$activity = $this->createMock(Activity::class);
$activity->method('participants')->willReturn($participants);
$activity->method('getLead')->willReturn(null);
$activity->method('getContact')->willReturn(null);
$activity->method('getAccount')->willReturn(null);
$activity->method('getOpportunity')->willReturn(null);
$this->activityRepository->expects($this->once())
->method('findById')
->with(123)
->willReturn($activity);
$this->activityRepository->expects($this->once())
->method('getActivityParticipants')
->with($activity)
->willReturn(collect([]));
$this->crmActivityService->expects($this->once())
->method('updateCrmData')
->with($activity, true);
$this->connection->expects($this->once())
->method('transaction')
->willReturnCallback(function ($callback) {
return $callback();
});
$job = new MatchActivityCrmData(
activityId: 123,
fromConfiguration: null,
remoteSearch: true,
);
$job->handle(
activityRepository: $this->activityRepository,
crmActivityService: $this->crmActivityService,
connection: $this->connection,
);
}
public function testLogsOldStateBeforeClearing(): void
{
$participant1 = new \stdClass();
$participant1->id = 10;
$participant1->user_id = 100;
$participant1->contact_id = 200;
$participant1->lead_id = null;
$participant2 = new \stdClass();
$participant2->id = 20;
$participant2->user_id = null;
$participant2->contact_id = null;
$participant2->lead_id = 300;
$participantsCollection = collect([$participant1, $participant2]);
$participantsRelation = $this->createMock(HasMany::class);
$lead = $this->createMock(Lead::class);
$lead->method('getId')->willReturn(111);
$contact = $this->createMock(Contact::class);
$contact->method('getId')->willReturn(222);
$account = $this->createMock(Account::class);
$account->method('getId')->willReturn(333);
$opportunity = $this->createMock(Opportunity::class);
$opportunity->method('getId')->willReturn(444);
$stage = $this->createMock(Stage::class);
$stage->method('getId')->willReturn(555);
$activity = $this->createMock(Activity::class);
$activity->method('participants')->willReturn($participantsRelation);
$activity->method('getLead')->willReturn($lead);
$activity->method('getContact')->willReturn($contact);
$activity->method('getAccount')->willReturn($account);
$activity->method('getOpportunity')->willReturn($opportunity);
$activity->method('getStage')->willReturn($stage);
$this->activityRepository->expects($this->once())
->method('findById')
->with(999)
->willReturn($activity);
$this->activityRepository->expects($this->once())
->method('getActivityParticipants')
->with($activity)
->willReturn($participantsCollection);
$this->crmActivityService->expects($this->once())
->method('updateCrmData')
->with($activity, false);
$this->connection->expects($this->once())
->method('transaction')
->willReturnCallback(function ($callback) {
return $callback();
});
$job = new MatchActivityCrmData(
activityId: 999,
fromConfiguration: null,
remoteSearch: false,
);
$job->handle(
activityRepository: $this->activityRepository,
crmActivityService: $this->crmActivityService,
connection: $this->connection,
);
}
}...
|
PhpStorm
|
faVsco.js – MatchActivityCrmDataTest.php
|
NULL
|
19651
|
|
51414
|
remote: Resolving deltas: 100% (10/10), completed remote: Resolving deltas: 100% (10/10), completed with 9 local objects.
3 files committed
JY-20613 support owner role on setup team
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
JY-20613-allow-owner-role-on-team-setup, 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\Http\Requests\Settings\Teams;
use Jiminny\Http\Requests\ValidatesBillingAddresses;
use Jiminny\Models\Feature\FeatureEnum;
use Illuminate\Foundation\Http\FormRequest;
use Jiminny\Utils\DomainResolver;
final class CreateTeamRequest extends FormRequest
{
use ValidatesBillingAddresses;
public function authorize(): bool
{
return true;
}
public function rules(): array
{
$existingFeatures = implode(',', FeatureEnum::names());
$rules = [
'name' => ['required', 'string', 'max:150'],
'owner_email' => ['required', 'email'],
'owner_role' => ['required', 'in:recorder,recorder_and_voice,analyst'],
'account_id' => ['required', 'uuid:accounts'],
'calendar' => ['required', 'string', 'max:150'],
'crm' => ['required', 'string', 'max:150'],
'features' => ['array'],
'features.*' => ['in:' . $existingFeatures],
'domain' => ['sometimes', 'nullable', 'max:150'],
'tier_id' => ['required', 'uuid:tiers'],
'partner_id' => ['sometimes', 'nullable', 'uuid:partners'],
];
$features = $this->input('features');
if (in_array(FeatureEnum::DIALER->name, $features)) {
// Add Billing address rules
$rules += $this->getBillingAddressRules();
}
return $rules;
}
public function getOwnerEmail(): string
{
return $this->input('owner_email');
}
public function getOwnerRole(): string
{
return $this->input('owner_role');
}
public function getDomain(): ?string
{
$domain = $this->input('domain');
if ($domain === null) {
$domain = DomainResolver::fromEmail($this->getOwnerEmail());
} else {
$domain = DomainResolver::fromUrl($domain);
}
return $domain;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
17
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Console;
use Illuminate\Console\ConfirmableTrait;
use Illuminate\Console\Scheduling\Event;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Jiminny\Component\Acl\RemoveExpiredRoleChangeEventsCommand;
use Jiminny\Component\ActionItems\Commands\SendActionItemsCommand;
use Jiminny\Component\AiActivityType\Commands\AutodetectAiActivityTypeCommand;
use Jiminny\Component\AskJiminnyAi\Commands\ProphetAnalyzeClosedDealsCommand;
use Jiminny\Component\Cache\Constants;
use Jiminny\Component\DealInsights\Commands\SendDealsUpdateCommand;
use Jiminny\Component\MediaPipeline\Command\MediaPipelineRestartCommand;
use Jiminny\Component\MediaPipeline\Command\ReportActivityProcessingTimeToDatadogCommand;
use Jiminny\Component\MediaPipeline\Command\ReportProcessingStatesToDatadogCommand;
use Jiminny\Component\Transcription\Commands\OverrideTranscriptionLocaleCommand;
use Jiminny\Component\Transcription\Commands\RetryFailedTranscriptionsCommand;
use Jiminny\Component\Transcription\Commands\RetryStuckTranscriptionsCommand;
use Jiminny\Console\Commands\Activities\ActivitiesMatchCrmCommand;
use Jiminny\Console\Commands\Activities\AutologOldActivitiesCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForRetentionTeamsCommand;
use Jiminny\Console\Commands\Activities\DownloadMissingTrackCommand;
use Jiminny\Console\Commands\Activities\FixActivitiesOpportunity;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesTeamsCommand;
use Jiminny\Console\Commands\Activities\ReassignTranscriptCommand;
use Jiminny\Console\Commands\Activities\ReindexRecentActivitiesCommand;
use Jiminny\Console\Commands\Activities\RetryProspectSummaryCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeleteCancelledCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeletePastCommand;
use Jiminny\Console\Commands\Crm\BackfillOpportunityUserFromAccountCommand;
use Jiminny\Console\Commands\Crm\CleanDuplicateFieldDataCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ProcessMergedObjectsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\RestoreDealAssociationsCommand;
use Jiminny\Console\Commands\Crm\ProcessHubspotObjectsSyncBatches;
use Jiminny\Console\Commands\Crm\PurgeDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ListJournalWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\SetupJournalDealWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\SyncHubspotActiveDeals;
use Jiminny\Console\Commands\Crm\SyncOpportunitiesMissingFieldDataCommand;
use Jiminny\Console\Commands\DeleteOldAiCrmNotesCommand;
use Jiminny\Console\Commands\DeleteS3LeftoversCommand;
use Jiminny\Console\Commands\DiarizeViaAiParticipantIdentificationCommand;
use Jiminny\Console\Commands\Elasticsearch\DeleteEmailDocumentsCommand;
use Jiminny\Console\Commands\Elasticsearch\RemoveGhostParticipantsCommand;
use Jiminny\Console\Commands\FlushRolesPermissionsCache;
use Jiminny\Console\Commands\GenerateInternalWebhookToken;
use Jiminny\Console\Commands\IssueMcpTokenCommand;
use Jiminny\Console\Commands\HubspotJournalPollingCommand;
use Jiminny\Console\Commands\HubspotWebhookServiceCommand;
use Jiminny\Console\Commands\Livestream\StopHangingLivestreamsCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteEmailMessagesWithoutActivityCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteInboxEmailsCommand;
use Jiminny\Console\Commands\PurgeSoftDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\PurgeSyncBatchesCommand;
use Jiminny\Console\Commands\RemoveDeleteMarkersCommand;
use Jiminny\Console\Commands\RemoveExpiredNudgesCommand;
use Jiminny\Console\Commands\RemoveUnusedParticipantSpeechesCommand;
use Jiminny\Console\Commands\Reports\AutomatedReportsRetentionPolicyCommand;
use Jiminny\Console\Commands\Reports\DeleteReportCommand;
use Jiminny\Console\Commands\RestoreActivityCrmProviderIdCommand;
use Jiminny\Console\Commands\RestoreActivityTypeCommand;
use Jiminny\Console\Commands\SendNudgeExpirationWarningsCommand;
use Jiminny\Console\Commands\Slack\SyncSlackUserCommand;
use Jiminny\Console\Commands\Teams\SyncTeamUsersCommand;
use Jiminny\Console\Commands\Teams\TeamDeleteCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteDeactivatedCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteRetentionCommand;
use Jiminny\Console\Commands\Teams\TeamSettingPutCommand;
use Jiminny\Console\Commands\Teams\UpdateTeamsCommand;
use Jiminny\Console\Commands\Tracks\CleanupActivityTracksCommand;
use Jiminny\Console\Commands\Tracks\DeleteUnusedTracksCommand;
use Jiminny\Console\Commands\Tracks\RestoreTracksCommand;
use Jiminny\Console\Commands\Transcription\DeleteOldTranscriptionsCommand;
use Jiminny\Console\Commands\Transcription\UpdateOldTranscriptionModelLocalesCommand;
use Jiminny\Console\Commands\Twilio\DeleteChurnedSubAccounts;
use Jiminny\Console\Commands\Twilio\DeletePredefinedSubAccounts;
use Jiminny\Console\Commands\Twilio\ReleaseNumbersCommand;
use Jiminny\Jobs\Activity\SyncActivity;
use Jiminny\Models\Activity;
use Jiminny\Models\InboxEmail;
use Jiminny\Services\RecallAI\Commands\ImportRegionMeetingCommand;
use Jiminny\Services\RecallAI\Commands\ScheduleBotCommand;
class Kernel extends ConsoleKernel
{
use ConfirmableTrait;
/**
* The Artisan commands provided by your application.
*
* @var string[]
*/
protected $commands = [
Commands\GeckoExport\GeckoExportTranscriptCommand::class,
Commands\GeckoExport\GeckoExportTranscriptionCommand::class,
Commands\GeckoExport\GeckoExportParticipantSpeechesCommand::class,
Commands\Activities\DeleteForCoachesCommand::class,
ReindexRecentActivitiesCommand::class,
Commands\Crm\BullhornPingCommand::class,
Commands\Crm\BullhornSessionCommand::class,
Commands\Crm\BullhornSearchCommand::class,
Commands\PlaybackThemes\TopicsConsolidateCommand::class,
Commands\PlaybackThemes\PlaybackThemesCopyCommand::class,
Commands\PlaybackThemes\AssignTopicsUsedBySingleTeamCommand::class,
Commands\PlaybackThemes\PlaybackThemesMigrateToVersionsCommand::class,
Commands\Vocabulary\VocabularyCopyCommand::class,
Commands\Transcription\TranscriptionPrintRaw::class,
Commands\Migrate\JiminnyMigratePopulateActivitySourceCommand::class,
Commands\EngagementStats\JiminnyEngagementStatsExplainCommand::class,
Commands\EngagementStatsRegenerateCommand::class,
Commands\Analytics\NumberOfActivitiesPerActivityTypeCommand::class,
Commands\Elasticsearch\MappingRunCommand::class,
Commands\Elasticsearch\MappingInstallCommand::class,
Commands\Elasticsearch\UpdateEsMappingSettingsCommand::class,
Commands\Analytics\TranscriptionWordMatchCommand::class,
Commands\JiminnyCacheClearCommand::class,
Commands\Transcription\TranscriptionSearchCommand::class,
RetryStuckTranscriptionsCommand::class,
RetryFailedTranscriptionsCommand::class,
Commands\JiminnyDebugCommand::class,
Commands\RunAiCallScoringForUntypedActivitiesCommand::class,
Commands\Calendars\SyncCalendars::class,
Commands\Calendars\SyncDeletedEvents::class,
Commands\Twilio\FetchMetrics::class,
Commands\Twilio\FetchEvents::class,
Commands\Twilio\FetchSummary::class,
Commands\Twilio\SyncZoneAccess::class,
Commands\DatabaseTableCount::class,
Commands\PurgeConferences::class,
Commands\ResetElasticSearch::class,
Commands\CreateDatabaseUsers::class,
Commands\Activities\NotifyNotLogged::class,
Commands\Crm\SyncTeamMetadata::class,
Commands\Crm\SyncProfileMetadata::class,
Commands\Crm\SyncContact::class,
Commands\Crm\SyncObjects::class,
Commands\Crm\SyncHubspotObjects::class,
Commands\Crm\SyncAccount::class,
Commands\Crm\ResetGovernorLimits::class,
Commands\Crm\ManageSyncStrategyCommand::class,
Commands\ImportRecording::class,
Commands\TrackImported::class,
Commands\Twilio\RecoverTwilioTracksCommand::class,
Commands\Crm\SetupLayouts::class,
Commands\Tracks\SyncTwilioTracks::class,
Commands\Activities\StatusCount::class,
Commands\Mailboxes\TextRelay\WatchMailboxEvents::class,
Commands\Mailboxes\InboxCreate::class,
Commands\Mailboxes\InboxSync::class,
Commands\Mailboxes\BatchCreate::class,
Commands\Mailboxes\BatchProcess::class,
Commands\Mailboxes\InboxPurge::class,
Commands\Mailboxes\BatchRetryFailed::class,
Commands\Mailboxes\BatchFailStalled::class,
Commands\Mailboxes\SkipListsRefresh::class,
Commands\Mailboxes\SkipListsDump::class,
Commands\Mailboxes\TextRelay\SyncMailbox::class,
Commands\Mailboxes\DeleteInboxEmailsCommand::class,
Commands\Mailboxes\DeleteEmailMessagesCommand::class,
DeleteEmailMessagesWithoutActivityCommand::class,
Commands\Tracks\CheckIntegrity::class,
Commands\Twilio\RemoteLifecycle::class,
Commands\Twilio\SyncNumbers::class,
Commands\Crm\SetupActivityTypeForFollowUp::class,
Commands\Activities\CheckPlayable::class,
Commands\Activities\ActivityDeleteCommand::class,
Commands\Activities\Copy::class,
Commands\Activities\ActivityHardDeleteCommand::class,
Commands\Reports\Team::class,
Commands\Reports\GenerateMarketingReport::class,
Commands\Reports\AutomatedReportsCommand::class,
Commands\Reports\AutomatedReportsSendCommand::class,
Commands\MuteOrganizerChannel::class,
Commands\Tracks\DeleteTracks::class,
Commands\Tracks\RetryDownload::class,
Commands\Tracks\RetryFailedDownloads::class,
Commands\Twilio\SyncAddresses::class,
Commands\Activities\UpdateElasticSearch::class,
Commands\MakeSlackLiveCoachingChatNotesOn::class,
Commands\Activities\PreMeetingNotification::class,
ScheduleBotCommand::class,
ImportRegionMeetingCommand::class,
Commands\Activities\MonitorMeetingCountCommand::class,
Commands\Activities\MonitorMeetingStartCommand::class,
Commands\Activities\MonitorMeetingEndCommand::class,
Commands\SyncActivity::class,
Commands\PhpApm::class,
Commands\Crm\SyncOpportunity::class,
Commands\Crm\SyncLead::class,
Commands\Users\SyncLicenceDataToSalesforce::class,
Commands\Crm\UpdateOpportunitySpecifications::class,
Commands\Users\SyncToIntercom::class,
Commands\Users\SyncToUserPilot::class,
Commands\Teams\SyncToPlanhat::class,
Commands\Twilio\SetZoneAccess::class,
Commands\Users\CreateDefaultSavedSearchesCommand::class,
Commands\Crm\SendNotLogged::class,
Commands\Teams\DeactivateTeamCommand::class,
Commands\Crm\SyncFieldMetadata::class,
Commands\Postmark\SyncEmailTemplatesCommand::class,
Commands\PlaybackThemes\ImportTriggersFromTranslatedCsvCommand::class,
Commands\Activities\PreMeetingReminder::class,
Commands\Activities\CustomerActivitiesExport::class,
Commands\Users\RefreshAccessToken::class,
Commands\Calendars\SetupCalendarSubscription::class,
Commands\Activities\InviteMeetingBot::class,
Commands\Activities\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,
Commands\Crm\MigrateProvider::class,
Commands\Activities\MigrateLocationFromCalendarEventToActivities::class,
Commands\HelperTruncateCoachingTables::class,
Commands\FixCrossTenantIssues::class,
Commands\Activities\CloudCall\SetupIntegration::class,
Commands\Activities\CloudTalk\FixTimeZone::class,
Commands\Activities\Orum\SetupIntegration::class,
Commands\Activities\JustCall\SetupIntegration::class,
Commands\Activities\RingCentral\AddInboundPromptSupport::class,
Commands\Dialers\Dialpad\SubscribeToWebhooks::class,
Commands\RecalculateDealRisksCommand::class,
SendDealsUpdateCommand::class,
Commands\Activities\SetProviderCapabilitiesField::class,
Commands\Teams\InitiallySetNotificationProviderTeamsTable::class,
Commands\Crm\AddLayoutEntities::class,
Commands\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,
Commands\JiminnyTokenInfoCommand::class,
Commands\JiminnySetEncryptedTokenManagerModeCommand::class,
Commands\EncryptTokensCommand::class,
Commands\Dialers\Aircall\CheckAndRenewWebhooks::class,
Commands\Migrate\MigrateTeamRegionCommand::class,
Commands\ManageScimForTeam::class,
Commands\Dialers\SyncUsersCommand::class,
Commands\WhichWorkerIsWorkingOnWhichJob::class,
Commands\GroupSetDefaultLanguageCommand::class,
Commands\Dev\AddRateLimitCommand::class,
Commands\Dev\ImportCallsCommand::class,
Commands\DealInsights\BuildDealInsightsLayoutCommand::class,
Commands\DealInsights\DeleteAskJiminnyDealPrompts::class,
Commands\Crm\MatchCrmObjectsCommand::class,
Commands\Activities\SetupIntegration\EightByEight::class,
Commands\Calendars\RemoveCalendarEventActivitiesCommand::class,
Commands\Activities\Migrator\MigrateFromGongCommand::class,
Commands\Activities\Migrator\MigrateFromChorusCommand::class,
Commands\Activities\Migrator\MigrateFromLeexiCommand::class,
Commands\Activities\Migrator\MigrateFromAvomaCommand::class,
Commands\Activities\Migrator\MigrateFromClariCommand::class,
Commands\Activities\SetupIntegration\ConnectAndSell::class,
Commands\Activities\SetupIntegration\CloudTalk::class,
Commands\Users\CreateConferenceSlug::class,
Commands\Elasticsearch\AsyncUpdateEsEntities::class,
Commands\Elasticsearch\ResetAsyncElasticSearchCommand::class,
Commands\Playlists\PlaylistSharesUpdateCommand::class,
Commands\Crm\AutologDelayedCommand::class,
Commands\Activities\HydrateDefaultActivityTypeCommand::class,
Commands\Crm\CheckActivityLoggableCommand::class,
Commands\Activities\MonitorDialerActivitiesCommand::class,
Commands\Activities\SetupIntegration\Xant::class,
Commands\ImportUsersFromCsvFile::class,
Commands\DevPostmanCommand::class,
Commands\Playlists\FixTreeStructureCommand::class,
Commands\Zoom\ResolvePmiLinksCommand::class,
Commands\MarkBranchForEnvironmentPipelineCommand::class,
Commands\Activities\ProbeMediaSegmentsCommand::class,
Commands\Activities\SetupIntegration\AmazonConnect::class,
Commands\Playbooks\ChangePlaybookActivityFieldCommand::class,
MediaPipelineRestartCommand::class,
Commands\Dev\FixHubSpotTokens::class,
Commands\Dev\MonitorSocialAccountsState::class,
Commands\Activities\SetupIntegration\Vonage::class,
Commands\Activities\SetupIntegration\TwilioFlex::class,
Commands\Activities\SetupIntegration\TwilioFlexDirect::class,
Commands\Activities\SetupIntegration\TwilioFlexSetDialerAuthCredentialsCommand::class,
Commands\Activities\SetupIntegration\TwilioSetS3RecordingCredentialsCommand::class,
SendActionItemsCommand::class,
Commands\Users\ChangeEmail::class,
Commands\Calendars\ListUserGoogleCalendars::class,
Commands\Activities\JustCall\SyncPlaybackLinkToCrmCommand::class,
Commands\Activities\HydrateCallWithCrmDataCommand::class,
Commands\Activities\UpdateActivityElasticSearchDocumentCommand::class,
Commands\Activities\SetupIntegration\Talkdesk::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookListCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookShow::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,
Commands\Activities\SetupIntegration\TwilioVideo::class,
Commands\Crm\SetupCloseCrm::class,
Commands\Crm\SetupCopperCrm::class,
Commands\Crm\FullSyncOpportunityCommand::class,
Commands\Crm\IntegrationApp\CrmEntitiesFullSyncCommand::class,
Commands\Crm\IntegrationApp\ValidateConnectionCommand::class,
Commands\Activities\Workflow\RefreshCrmData::class,
Commands\Activities\Migrator\AnalyseGongCalls::class,
Commands\Users\AddVoiceRoleToRecorderCommand::class,
Commands\Activities\SyncMissingCallDispositions::class,
Commands\Calendars\RemoveFutureCalendarEvents::class,
FlushRolesPermissionsCache::class,
Commands\Activities\SetupIntegration\FiveNine::class,
CalendarEventDeleteCancelledCommand::class,
CalendarEventDeletePastCommand::class,
ReportActivityProcessingTimeToDatadogCommand::class,
ReportProcessingStatesToDatadogCommand::class,
ReleaseNumbersCommand::class,
BackfillOpportunityUserFromAccountCommand::class,
RemoveExpiredRoleChangeEventsCommand::class,
RemoveExpiredNudgesCommand::class,
SendNudgeExpirationWarningsCommand::class,
AutologOldActivitiesCommand::class,
RemoveUnusedParticipantSpeechesCommand::class,
DeleteActivitiesForChurnedTeamsCommand::class,
HardDeleteActivitiesForChurnedTeamsCommand::class,
TeamDeleteCommand::class,
TeamsDeleteDeactivatedCommand::class,
UpdateTeamsCommand::class,
OverrideTranscriptionLocaleCommand::class,
SyncSlackUserCommand::class,
PurgeSoftDeletedOpportunitiesCommand::class,
PurgeSyncBatchesCommand::class,
ProphetAnalyzeClosedDealsCommand::class,
DeleteChurnedSubAccounts::class,
Commands\ProphetAi\DumpContext::class,
DeletePredefinedSubAccounts::class,
DeleteActivitiesForRetentionTeamsCommand::class,
HardDeleteActivitiesTeamsCommand::class,
TeamsDeleteRetentionCommand::class,
TeamSettingPutCommand::class,
StopHangingLivestreamsCommand::class,
FixActivitiesOpportunity::class,
Commands\Activities\SetupIntegration\Salesforce\SetupSalesforceIntegrationCommand::class,
UpdateOldTranscriptionModelLocalesCommand::class,
Commands\Dev\FixMissMatchedCrmActivitiesCommand::class,
DownloadMissingTrackCommand::class,
ActivitiesMatchCrmCommand::class,
DeleteEmailDocumentsCommand::class,
DeleteOldTranscriptionsCommand::class,
DeleteS3LeftoversCommand::class,
RemoveDeleteMarkersCommand::class,
SyncTeamUsersCommand::class,
ReassignTranscriptCommand::class,
DiarizeViaAiParticipantIdentificationCommand::class,
RestoreActivityTypeCommand::class,
DeleteOldAiCrmNotesCommand::class,
DeleteReportCommand::class,
AutomatedReportsRetentionPolicyCommand::class,
SyncHubspotActiveDeals::class,
GenerateInternalWebhookToken::class,
IssueMcpTokenCommand::class,
RestoreActivityCrmProviderIdCommand::class,
CleanupActivityTracksCommand::class,
DeleteUnusedTracksCommand::class,
RestoreTracksCommand::class,
HubspotWebhookServiceCommand::class,
ProcessMergedObjectsCommand::class,
HubspotJournalPollingCommand::class,
SetupJournalDealWebhookSubscriptionsCommand::class,
ListJournalWebhookSubscriptionsCommand::class,
RemoveGhostParticipantsCommand::class,
AutodetectAiActivityTypeCommand::class,
Commands\Crm\LogActivitiesCommand::class,
Commands\Crm\MatchOpportunityActivitiesCommand::class,
PurgeDeletedOpportunitiesCommand::class,
CleanDuplicateFieldDataCommand::class,
RetryProspectSummaryCommand::class,
ProcessHubspotObjectsSyncBatches::class,
SyncOpportunitiesMissingFieldDataCommand::class,
RestoreDealAssociationsCommand::class,
];
private Schedule $schedule;
private string $output;
protected function schedule(Schedule $schedule): void
{
$this->schedule = $schedule;
$this->output = config('jiminny.scheduler_log');
$schedule->useCache('redis');
$currentMinute = (int) date('i');
$currentDay = (int) date('w');
$this->scheduleEveryMinute();
$this->scheduleEveryTwoMinutes();
$this->scheduleEveryFiveMinutes();
$this->scheduleEveryTenMinutes();
$this->scheduleEveryFifteenMinutes();
$this->scheduleEveryThirtyMinutes();
$this->scheduleHourly();
$this->scheduleDaily();
$this->scheduleWeekly($currentDay);
$this->scheduleSpecificTimes();
$this->scheduleDynamic($currentMinute);
}
protected function scheduleEveryMinute(): void
{
$this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();
$this->scheduleCommand('dialers:monitor-activities')->everyMinute();
$this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();
$this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();
$this->schedule->command('mailbox:batch:process', ['--max-batches=15'])
->everyMinute()
->sendOutputTo($this->output);
}
protected function scheduleEveryTwoMinutes(): void
{
$this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();
}
protected function scheduleEveryFiveMinutes(): void
{
$this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();
// Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)
$this->scheduleCommand('crm:sync-hubspot-objects', [], 4)
->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');
$this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();
$this->schedule->command('mailbox:batch:create')
->cron('2-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output);
$this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])
->cron('3-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output)
->runInBackground();
$this->schedule->command('hubspot:journal-poll', ['--start'])
->everyFiveMinutes()
->sendOutputTo($this->output)
->runInBackground();
}
protected function scheduleEveryTenMinutes(): void
{
$this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();
$this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('crm:reset-governor')->everyTenMinutes();
}
protected function scheduleEveryFifteenMinutes(): void
{
$this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();
$this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');
$this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
],
])->everyFifteenMinutes();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->cron('7,22,37,52 * * * *');
}
protected function scheduleEveryThirtyMinutes(): void
{
$this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');
$this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();
$this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)
->between('02:58', '05:29')
->everyThirtyMinutes()
->runInBackground();
$this->scheduleActivitiesHardDelete();
}
protected function scheduleHourly(): void
{
$this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();
$this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');
$this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');
$this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');
$this->scheduleCommand('automated-reports:send')->hourly();
$this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);
$this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);
}
protected function scheduleDaily(): void
{
$this->scheduleCommand('teams:sync-planhat')->daily();
$this->scheduleCommand('twilio:sync-addresses')->daily();
$this->scheduleCommand('twilio:sync-zone-access')->daily();
$this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();
$this->scheduleCommand('users:sync-licence-data')->daily();
$this->scheduleCommand('users:sync-intercom-data')->daily();
$this->scheduleCommand('nudges:send-expiration-warnings')->daily();
$this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();
}
protected function scheduleWeekly(int $currentDay): void
{
if ($currentDay === 0) {
$this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);
}
if ($currentDay === 6) {
$this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_AMAZON_CONNECT,
'--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->saturdays()->at('01:00')->runInBackground();
$this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)
->saturdays()->at('01:07')->runInBackground();
$this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)
->saturdays()->at('05:08')->runInBackground();
$this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')
->weeklyOn(6, '6:00');
$this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')
->weeklyOn(6, '7:00');
}
}
protected function scheduleSpecificTimes(): void
{
$this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_DISCARDED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:20')->runInBackground();
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_PROCESSED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:30')->runInBackground();
$this->scheduleCommand('automated-reports')->dailyAt('01:00');
$this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');
$this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');
$this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');
$this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');
$this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');
$this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('03:05');
$this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');
$this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');
$this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');
$this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');
$this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');
if (! $this->app->environment('production')) {
$this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)
->dailyAt('04:02')->runInBackground();
}
$this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
],
])->dailyAt('05:05');
if (! $this->app->environment('qa')) {
$this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');
}
$this->scheduleCommand('activity:sync-dispositions', [
Activity::PROVIDER_HUBSPOT,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('07:05');
}
protected function scheduleDynamic(int $currentMinute): void
{
$this->scheduleHourlyFallbackActivitySyncs($currentMinute);
$this->scheduleBullhornHeartbeat($currentMinute);
}
private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void
{
if ($offsetMinute === 0) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);
} elseif ($offsetMinute === 1) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);
} elseif ($offsetMinute === 2) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);
}
}
private function scheduleBullhornHeartbeat(int $currentMinute): void
{
$bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);
if ($bhHeartbeatInterval > 0) {
$minutes = max((int) floor($bhHeartbeatInterval / 60), 1);
if ($currentMinute % $minutes === 0) {
$bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);
if ($minutes > 30) {
$bhEvent->hourly();
} else {
$bhEvent->cron(sprintf('*/%d * * * *', $minutes));
}
}
}
}
private function scheduleActivitiesHardDelete(): void
{
if (config(key: 'jiminny.deploy_region') === 'eu') {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 1000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
} elseif ($this->app->environment('production')) {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 2000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
}
}
private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void
{
$this->scheduleCommand('activity:sync', [
$provider,
'--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->hourlyAt($offsetMinute);
}
/**
* Register the Closure based commands for the application.
*/
protected function commands(): void
{
require_once base_path('routes/console.php');
}
private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event
{
return $this->schedule
->command($name, $options)
->withoutOverlapping($expiresAt)
->onOneServer()
->sendOutputTo($this->output)
;
}
}...
|
PhpStorm
|
faVsco.js – CreateTeamRequest.php
|
NULL
|
51414
|
|
51415
|
remote: Resolving deltas: 100% (10/10), completed remote: Resolving deltas: 100% (10/10), completed with 9 local objects.
3 files committed
JY-20613 support owner role on setup team
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
JY-20613-allow-owner-role-on-team-setup, 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\Http\Requests\Settings\Teams;
use Jiminny\Http\Requests\ValidatesBillingAddresses;
use Jiminny\Models\Feature\FeatureEnum;
use Illuminate\Foundation\Http\FormRequest;
use Jiminny\Utils\DomainResolver;
final class CreateTeamRequest extends FormRequest
{
use ValidatesBillingAddresses;
public function authorize(): bool
{
return true;
}
public function rules(): array
{
$existingFeatures = implode(',', FeatureEnum::names());
$rules = [
'name' => ['required', 'string', 'max:150'],
'owner_email' => ['required', 'email'],
'owner_role' => ['required', 'in:recorder,recorder_and_voice,analyst'],
'account_id' => ['required', 'uuid:accounts'],
'calendar' => ['required', 'string', 'max:150'],
'crm' => ['required', 'string', 'max:150'],
'features' => ['array'],
'features.*' => ['in:' . $existingFeatures],
'domain' => ['sometimes', 'nullable', 'max:150'],
'tier_id' => ['required', 'uuid:tiers'],
'partner_id' => ['sometimes', 'nullable', 'uuid:partners'],
];
$features = $this->input('features');
if (in_array(FeatureEnum::DIALER->name, $features)) {
// Add Billing address rules
$rules += $this->getBillingAddressRules();
}
return $rules;
}
public function getOwnerEmail(): string
{
return $this->input('owner_email');
}
public function getOwnerRole(): string
{
return $this->input('owner_role');
}
public function getDomain(): ?string
{
$domain = $this->input('domain');
if ($domain === null) {
$domain = DomainResolver::fromEmail($this->getOwnerEmail());
} else {
$domain = DomainResolver::fromUrl($domain);
}
return $domain;
}
}...
|
PhpStorm
|
faVsco.js – CreateTeamRequest.php
|
NULL
|
51415
|
|
81617
|
remote: Resolving deltas: 100% (10/10), completed remote: Resolving deltas: 100% (10/10), completed with 10 local objects.
2 files committed
JY-20915 fix missing header
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
15
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
$originalTo = null;
$to = null;
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$originalTo = $header->value;
} elseif ($header->name === 'To') {
$to = $header->value;
}
}
$recipient = $originalTo ?? $to;
if ($recipient !== null) {
$matches = $this->matchesExpectedRecipient($recipient, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedRecipient = explode('+', $recipient)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedRecipient,
]);
}
return $matches;
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To and To headers', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
103
Previous Highlighted Error
Next Highlighted Error
[2026-05-28 08:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"73199e23-a066-42ba-b189-2802e0869a44","trace_id":"e53672c2-0f50-409d-af25-84ab485c505d"}
[2026-05-28 08:28:04] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"73199e23-a066-42ba-b189-2802e0869a44","trace_id":"e53672c2-0f50-409d-af25-84ab485c505d"}
[2026-05-28 08:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"73199e23-a066-42ba-b189-2802e0869a44","trace_id":"e53672c2-0f50-409d-af25-84ab485c505d"}
[2026-05-28 08:28:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"741b2c4e-6a44-4c46-b9fb-fce017aef225","trace_id":"804dc547-eb25-4b32-8d0f-c87019773085"}
[2026-05-28 08:28:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"741b2c4e-6a44-4c46-b9fb-fce017aef225","trace_id":"804dc547-eb25-4b32-8d0f-c87019773085"}
[2026-05-28 08:28:09] local.NOTICE: Monitoring start {"correlation_id":"8ae5c131-edd9-463d-8161-875f4d34320f","trace_id":"1b6420c8-ef4e-4566-81b2-688696064648"}
[2026-05-28 08:28:09] local.NOTICE: Monitoring end {"correlation_id":"8ae5c131-edd9-463d-8161-875f4d34320f","trace_id":"1b6420c8-ef4e-4566-81b2-688696064648"}
[2026-05-28 08:28:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"6f5390d3-abe7-4e56-a662-aeed1098941b","trace_id":"b57dc2df-2f4d-4d3b-b09a-aa6e61205d5e"}
[2026-05-28 08:28:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"6f5390d3-abe7-4e56-a662-aeed1098941b","trace_id":"b57dc2df-2f4d-4d3b-b09a-aa6e61205d5e"}
[2026-05-28 08:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"ba694158-ea28-4ac1-b134-83ac485146e0","trace_id":"83a26b74-baa5-407e-9fc2-2b49d65b1c77"}
[2026-05-28 08:28:12] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"ba694158-ea28-4ac1-b134-83ac485146e0","trace_id":"83a26b74-baa5-407e-9fc2-2b49d65b1c77"}
[2026-05-28 08:28:12] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"ba694158-ea28-4ac1-b134-83ac485146e0","trace_id":"83a26b74-baa5-407e-9fc2-2b49d65b1c77"}
[2026-05-28 08:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"ba694158-ea28-4ac1-b134-83ac485146e0","trace_id":"83a26b74-baa5-407e-9fc2-2b49d65b1c77"}
[2026-05-28 08:28:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"b79833c7-3eab-4eb7-98bb-42359039b8fb","trace_id":"a8e159bc-867d-40af-bf7d-1228cf6d4f16"}
[2026-05-28 08:28:14] local.INFO: Running conference:monitor:count command for activities in (2026-05-28 08:26:00, 2026-05-28 08:28:00] {"correlation_id":"b79833c7-3eab-4eb7-98bb-42359039b8fb","trace_id":"a8e159bc-867d-40af-bf7d-1228cf6d4f16"}
[2026-05-28 08:28:14] local.INFO: [conference:monitor:count] No activities found in (2026-05-28 08:26:00, 2026-05-28 08:28:00] {"correlation_id":"b79833c7-3eab-4eb7-98bb-42359039b8fb","trace_id":"a8e159bc-867d-40af-bf7d-1228cf6d4f16"}
[2026-05-28 08:28:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"b79833c7-3eab-4eb7-98bb-42359039b8fb","trace_id":"a8e159bc-867d-40af-bf7d-1228cf6d4f16"}
[2026-05-28 08:28:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"d51071d5-ead0-45f0-a07e-e3234074f884","trace_id":"77173d9f-596f-405f-ae55-ba117b66455d"}
[2026-05-28 08:28:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:16] local.NOTICE: Calendar sync start {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"d51071d5-ead0-45f0-a07e-e3234074f884","trace_id":"77173d9f-596f-405f-ae55-ba117b66455d"}
[2026-05-28 08:28:16] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:16] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:16] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:16] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1368,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:17] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1368,"provider":"google","refreshToken":"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1368,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1368,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1365,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1365,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1365,"provider":"google","refreshToken":"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1365,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1365,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1364,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1364,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1364,"provider":"google","refreshToken":"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1364,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1364,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1370,"provider":"office"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1370,"provider":"office"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1370,"provider":"office","refreshToken":"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1370,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 41d8db5c-a91f-41a6-9b5c-22a6c99b9100 Correlation ID: 70bc0a6f-1565-4e74-94dc-419d94108fa9 Timestamp: 2026-05-28 08:28:18Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-28 08:28:18Z\",\"trace_id\":\"41d8db5c-a91f-41a6-9b5c-22a6c99b9100\",\"correlation_id\":\"70bc0a6f-1565-4e74-94dc-419d94108fa9\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1370,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1202,"provider":"office"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1202,"provider":"office"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:18] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1202,"provider":"office","refreshToken":"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1202,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: d3d14dfc-1b70-40c4-b9db-fab12f748300 Correlation ID: 4c5f746c-8366-44c1-8733-6877607826db Timestamp: 2026-05-28 08:28:19Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-28 08:28:19Z\",\"trace_id\":\"d3d14dfc-1b70-40c4-b9db-fab12f748300\",\"correlation_id\":\"4c5f746c-8366-44c1-8733-6877607826db\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1202,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1502,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: Calendar sync job dispatched {"calendar_id":501} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1300,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1300,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1300,"provider":"google","refreshToken":"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1300,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1300,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1409,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1409,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1409,"provider":"google","refreshToken":"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1409,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1409,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1352,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1352,"provider":"google"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1352,"provider":"google","refreshToken":"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1352,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1352,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1296,"provider":"office"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1296,"provider":"office"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:19] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1296,"provider":"office","refreshToken":"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"45e201e4-60d2-407c-ae71-13e4739c0875","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1502,"provider":"google"} {"correlation_id":"45e201e4-60d2-407c-ae71-13e4739c0875","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"45e201e4-60d2-407c-ae71-13e4739c0875","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.INFO: [Calendar] Processing sync {"calendarId":"a33076c1-8d97-431a-99f0-85c9524e118b","from":null,"to":null,"delta":"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=","last_sync":"2024-12-09 07:12:53","dateMode":"daily"} {"correlation_id":"45e201e4-60d2-407c-ae71-13e4739c0875","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"integration-app","crm_owner":1695,"team_id":3143} {"correlation_id":"45e201e4-60d2-407c-ae71-13e4739c0875","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"45e201e4-60d2-407c-ae71-13e4739c0875","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1502,"provider":"google"} {"correlation_id":"45e201e4-60d2-407c-ae71-13e4739c0875","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"45e201e4-60d2-407c-ae71-13e4739c0875","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1296,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: dd83a147-95bc-407c-8c9b-3c14e7cb7d00 Correlation ID: bb16bae3-b3c4-467e-bd95-4e7ab85364c9 Timestamp: 2026-05-28 08:28:20Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-28 08:28:20Z\",\"trace_id\":\"dd83a147-95bc-407c-8c9b-3c14e7cb7d00\",\"correlation_id\":\"bb16bae3-b3c4-467e-bd95-4e7ab85364c9\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1296,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":391,"provider":"office"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":391,"provider":"office"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":391,"provider":"office","refreshToken":"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881","state":"full-refresh"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.INFO: [Google Calendar] Failed to watch channel for calendar {"calendarId":"a33076c1-8d97-431a-99f0-85c9524e118b","code":400,"reason":"{
\"error\": {
\"errors\": [
{
\"domain\": \"global\",
\"reason\": \"push.webhookUrlNotHttps\",
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
],
\"code\": 400,
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
}"} {"correlation_id":"45e201e4-60d2-407c-ae71-13e4739c0875","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:20] local.WARNING: [Calendar] Sync failed {"calendarId":"a33076c1-8d97-431a-99f0-85c9524e118b","code":400,"reason":"{
\"error\": {
\"errors\": [
{
\"domain\": \"global\",
\"reason\": \"push.webhookUrlNotHttps\",
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
],
\"code\": 400,
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
}"} {"correlation_id":"45e201e4-60d2-407c-ae71-13e4739c0875","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:21] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":391,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 587224ad-f597-4371-b2ba-00fcd2da1b00 Correlation ID: 4e752610-95b1-4606-847f-68e00f90be0a Timestamp: 2026-05-28 08:28:21Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-28 08:28:21Z\",\"trace_id\":\"587224ad-f597-4371-b2ba-00fcd2da1b00\",\"correlation_id\":\"4e752610-95b1-4606-847f-68e00f90be0a\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:21] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:21] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":391,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:21] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1271,"provider":"office"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:21] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1271,"provider":"office"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:21] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"498bfcf1-b82c-466d-8f91-2f3f1cdf980f","trace_id":"19e20da3-a204-446a-a01e-568f25ddd9fd"}
[2026-05-28 08:28:21] local.INFO: [SocialAccountService] Re...
|
PhpStorm
|
faVsco.js – TextRelayService.php
|
NULL
|
81617
|
|
58581
|
remote: Enumerating objects: 1047, done.
remote: C remote: Enumerating objects: 1047, done.
remote: Counting objects: 100% (832/832), done.
remote: Compressing objects: 100% (298/298), done.
remote: Total 1047 (delta 634), reused 596 (delta 534), pack-reused 215 (from 3)
Receiving objects: 100% (1047/1047), 353.16 KiB | 1.56 MiB/s, done.
Resolving deltas: 100% (687/687), completed with 107 local objects.
From github.com:jiminny/app
907c54896c..34656c53ed pipedrive-sdk-poc -> origin/pipedrive-sdk-poc
03325ec50f..4e7078fd8b JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5
e7d231e163..bc6a3fce6b JY-20725-handle-HS-search-rate-limit -> origin/JY-20725-handle-HS-search-rate-limit
* [new branch] JY-20749-user-can-view-recorded-meetings -> origin/JY-20749-user-can-view-recorded-meetings
98ca281a04..e0351be069 JY-20808-low-priority-indexing-queue -> origin/JY-20808-low-priority-indexing-queue
569abb5149..3906a9238a JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
ad6c2a86e8..50eb6afba9 JY-20846-mcp-enable-the-ai-to-know-details-about-the-user -> origin/JY-20846-mcp-enable-the-ai-to-know-details-about-the-user
* [new branch] JY-20893-chunk-control-per-update-target -> origin/JY-20893-chunk-control-per-update-target
31c62924a5..cb4ebf0c36 master -> origin/master
Updating 907c54896c..34656c53ed
Fast-forward
PIPEDRIVE_V2_MIGRATION_TICKETS.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (pipedrive-sdk-poc) $ co master
M .env.local
M config/logging.php
Switched to branch 'master'
Your branch is behind 'origin/master' by 31 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
Updating 31c62924a5..cb4ebf0c36
Fast-forward
app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 20 ------
app/Services/Calendar/CalendarActivityService.php | 46 +++++++++++++
app/Services/Calendar/Command/MapActivityData.php | 106 +++-------------------------
docs/mcp/explorer/explorer.html | 104 +++++++++++++++++++++++++---
docs/mcp/explorer/explorer.template.html | 102 ++++++++++++++++++++++++---
docs/mcp/tools-list.json | 373 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
docs/mcp/tools.md | 117 +++++++++++++++++++++++--------
tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 16 +----
tests/Unit/Component/ES/Listeners/UpdateMultipleTargetsListenerTest.php | 10 ---
tests/Unit/Component/ES/Listeners/UpdateSingleTargetListenerTest.php | 6 --
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 ---
tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 15 ++--
tests/Unit/Component/ES/UpdateProcessManagerTest.php | 2 -
tests/Unit/Services/Calendar/CalendarActivityServiceTest.php | 150 ++++++++++++++++++++++++++++++++++++++--
tests/Unit/Services/Calendar/Command/MapActivityDataTest.php | 78 ++-------------------
15 files changed, 832 insertions(+), 322 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20613-allow-owner-role-on-team-setup
Switched to a new branch 'JY-20613-allow-owner-role-on-team-setup'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5682/5682 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5682 files in 56.978 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5682/5682 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5682 files in 49.910 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git pull
remote: Enumerating objects: 248, done.
remote: Counting objects: 100% (128/128), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 59 (delta 43), reused 44 (delta 33), pack-reused 0 (from 0)
Unpacking objects: 100% (59/59), 10.48 KiB | 228.00 KiB/s, done.
From github.com:jiminny/app
b7df560451..190239dfd4 JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup
e0351be069..d94a285ae7 JY-20808-low-priority-indexing-queue -> origin/JY-20808-low-priority-indexing-queue
* [new branch] JY-20920-fix-participant-matcher -> origin/JY-20920-fix-participant-matcher
cb4ebf0c36..90bca4e4b2 master -> origin/master
Merge made by the 'ort' strategy.
app/Component/ES/ChunkSize.php | 54 +++++++++++++++++++++++++++
app/Component/ES/Processor/DTOs/SelectionList.php | 4 +-
app/Component/ES/Processor/TargetEntitiesSelector.php | 19 ++++++----
app/Http/Middleware/McpTierMiddleware.php | 27 +++-----------
app/Mcp/Servers/JiminnyServer.php | 2 +
app/Mcp/Tools/GetMeTool.php | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/Models/Feature/FeatureEnum.php | 1 +
database/migrations/2026_05_13_124153_create_mcp_feature_flag.php | 25 +++++++++++++
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue | 52 ++++++++++++++++++--------
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/__tests__/EditTeamModal.spec.js | 14 +++++++
tests/Feature/Mcp/GetMeToolFeatureTest.php | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Feature/Mcp/ListCallsToolFeatureTest.php | 2 +-
tests/Feature/Mcp/McpTestHelpersTrait.php | 19 +++++++++-
tests/Unit/Component/ES/ChunkSizeTest.php | 50 +++++++++++++++++++++++++
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 27 ++++++++++----
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 39 +++++++++++---------
16 files changed, 557 insertions(+), 75 deletions(-)
create mode 100644 app/Component/ES/ChunkSize.php
create mode 100644 app/Mcp/Tools/GetMeTool.php
create mode 100644 database/migrations/2026_05_13_124153_create_mcp_feature_flag.php
create mode 100644 tests/Feature/Mcp/GetMeToolFeatureTest.php
create mode 100644 tests/Unit/Component/ES/ChunkSizeTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git push
Enumerating objects: 40, done.
Counting objects: 100% (34/34), done.
Delta compression using up to 8 threads
Compressing objects: 100% (18/18), done.
Writing objects: 100% (18/18), 1.58 KiB | 1.58 MiB/s, done.
Total 18 (delta 15), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (15/15), completed with 13 local objects.
To github.com:jiminny/app.git
190239dfd4..ec1b261264 JY-20613-allow-owner-role-on-team-setup -> JY-20613-allow-owner-role-on-team-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ gbr
* JY-20613-allow-owner-role-on-team-setup
pipedrive-sdk-poc
master
JY-20903-update_activity-stage-on-opportunity-change
JY-20904-fix-update-es-on-activity-command
JY-20891-improve-sms-text-relays
JY-20725-handle-HS-search-rate-limit
JY-20818-move-AJ-reports-to-separated-datadog-metric
JY-20773-fix-automated-reports-user-pilot-tracking
JY-20157-AJ-report-not-send-notification
JY-20508-notify-before-AJ-report-expiration
JY-20372-ai-reports-promotion-pages
JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null
JY-20738-debug-AJ-tracking-UP
a
JY-18909-automated-reports-ask-jiminny
JY-20692-fix-integration-app-[API_KEY]
JY-20553-debug-crm-sync-delays
JY-20698-fix-SF-activity-types-on-new-playbook
JY-20543-AJ-report-tracking
JY-20384-handle-auto-sync-with-no-access-to-event-type
JY-20458-ask-jiminny-user-definitions
JY-19666-fix-import-contacts-account-association
JY-19666-HS-import-contacts-and-accounts-batch-job
JY-20458-Ask-Jiminny-Reports
JY-20200-batch-update-CRM-objects-Salesforce
JY-19666-HS-webhooks-add-contact-and-company
JY-20348-trigger-setup-DI-layout-on-team-creation
JY-20326-refactor-info-message-in-command
JY-20317-fix-auto-log-delay-issue-on-all-channels-disabled
JY-20312-remove-on-update-change-last-synced-at-crm-configurations
JY-20306-SF-skip-auto-sync-for-task-based-playbook
JY-20192-remove-deleted-team-from-saved-search-filters
JY-20197-import-opportunity-batch-job
JY-20293-enable-status-field-for-pipedrive-deals
JY-20191-remove-commands-interactive-prompts
JY-20118-change-default-sync-strategy
JY-20183-add-cache-on-auto-log-delay
JY-20197-add-import-opportunity-batch-job
20118-hs-opportunity-make-webhook-strategy-default
JY-20118-make-default-hs-opportunity-sync-strategy-webhook-based
JY-20196-handle-opportunity-without-note
JY-20118-improve-opportunity-import
JY-20189-handle-activity-search-on-deleted-groups
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ co JY-20725-handle-HS-search-rate-limit
M .env.local
M config/logging.php
Switched to branch 'JY-20725-handle-HS-search-rate-limit'
Your branch is behind 'origin/JY-20725-handle-HS-search-rate-limit' by 439 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ git pull
Updating 0f3e438941..bc6a3fce6b
Fast-forward
.gitignore | 3 +-
.windsurfrules | 168 ++---
CLAUDE.md | 1 +
app/Component/ActivityAnalytics/Service/CalculateTalkTimeOffsetsFromTranscription.php | 24 +-
app/Component/AiActivityType/Services/AiActivityTypeEligibilityChecker.php | 28 +-
app/Component/AiAutomation/Actions/PrepareUpdateDtoAction.php | 32 +-
app/Component/AiAutomation/Services/CrmFillingEligibilityChecker.php | 47 ++
app/Component/AiAutomation/TestCrmAiPromptService.php | 14 +
app/Component/AiCallScoring/Services/AiCallScoringEligibilityChecker.php | 9 +
app/Component/ES/ElasticSearchDocumentPartialUpdater.php | 13 +-
app/Component/ES/ElasticSearchWorkerManager.php | 86 ---
app/Component/ES/Processor/Actions/LoadDocumentsAction.php | 80 +--
app/Component/ES/Processor/EntityQueryBuilder.php | 12 +-
app/Component/ES/Processor/TargetEntitiesSelector.php | 2 +-
app/Component/ES/Processor/Traits/SkipActivityTrait.php | 25 -
app/Component/ES/Repositories/EsResetActivityRepository.php | 11 +-
app/Component/ES/Worker/ActivityWorker.php | 73 --
app/Component/ES/Worker/EntityWorker.php | 44 --
app/Component/ES/Worker/WorkerAmount.php | 60 --
app/Component/ES/Worker/WorkerInterface.php | 15 -
app/Component/ElasticSearch/Contract/Searchable.php | 4 +
app/Component/Encoding/Job/AnalyzeTrackChannelsJob.php | 20 +-
app/Component/Encoding/Service/GenerateSpeechFromSilenceService.php | 85 ++-
app/Component/FFMpeg/Services/GetSpeechIntervalsService.php | 18 +-
app/Component/LanguageDetection/Services/FindSpeechTimeService.php | 22 +-
app/Component/Nudge/Job/ProcessOrganisationImmediateNudgesJob.php | 218 +++++-
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 +
app/Component/ParticipantSpeech/Services/ParticipantSpeechesCreator.php | 33 +
app/Component/ParticipantSpeech/Services/ParticipantSpeechesDeleter.php | 15 +
app/Component/ParticipantSpeech/Services/ParticipantSpeechesProvider.php | 51 +-
app/Component/ParticipantSpeech/Services/ParticipantSpeechesUploader.php | 36 +
app/Component/ProphetAi/Exceptions/InsufficientTranscriptException.php | 11 +
app/Component/Transcription/DTO/Http/Transcription/AssemblyAI/AssemblyAI/NoAssemblyIdException.php | 11 +
app/Component/Transcription/DTO/Http/Transcription/AssemblyAI/AssemblyAI/SuccessfulResponse.php | 6 +
app/Component/Transcription/DTO/Http/Transcription/TranscriptionIsNotCorrectFormatException.php | 11 +
app/Component/Transcription/Diarization/Services/GetNormalizedParticipantSpeechesService.php | 23 +-
app/Component/Transcription/Diarization/Source/MeetingBotSource.php | 16 +-
app/Component/Transcription/TranscriptionProcessor/TranscriptionProcessor.php | 3 +
app/Console/Commands/Activities/ActivityHardDeleteCommand.php | 4 +-
app/Console/Commands/Activities/Copy.php | 2 +
app/Console/Commands/Activities/SetupIntegration/TwilioSetS3RecordingCredentialsCommand.php | 119 ++++
app/Console/Commands/Activities/UpdateActivityElasticSearchDocumentCommand.php | 10 +-
app/Console/Commands/Crm/BackfillOpportunityUserFromAccountCommand.php | 126 ++++
app/Console/Commands/Elasticsearch/AsyncUpdateEsActivities.php | 19 -
app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 50 +-
app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 30 +-
app/Console/Commands/GeckoExport/GeckoExportParticipantSpeechesCommand.php | 14 +-
app/Console/Commands/IssueMcpTokenCommand.php | 84 +++
app/Console/Commands/JiminnyDebugCommand.php | 7 +-
app/Console/Commands/Tracks/CleanupActivityTracksCommand.php | 2 +-
app/Console/Kernel.php | 6 +-
app/Contracts/Services/Calendar/CalendarTrait.php | 80 ++-
app/Events/AutomatedReports/AutomatedReportGenerated.php | 3 +
app/Http/Controllers/API/AiCallScoring/AiScorecardController.php | 7 +-
app/Http/Controllers/API/TeamAiAutomationController.php | 8 +
app/Http/Controllers/CustomerApi/CustomerApiController.php | 4 +-
app/Http/Controllers/Kiosk/ActivityController.php | 58 +-
app/Http/Controllers/Settings/PlaybookController.php | 15 +-
app/Http/Kernel.php | 23 +
app/Http/Middleware/McpAuditMiddleware.php | 156 ++++
app/Http/Middleware/McpTierMiddleware.php | 54 ++
app/Http/Requests/API/V2/ZapierUploadActivityRequest.php | 28 +-
app/Jobs/Activity/Import/ImportTwilioVideoSpeechesJob.php | 25 +-
app/Jobs/Activity/Import/IsActivityReadyForProcessingJob.php | 10 +-
app/Jobs/Calendar/SetupCalendarSync.php | 21 +-
app/Jobs/ImportRemoteTrackJob.php | 96 ++-
app/Jobs/Mailbox/EmailTextRelay.php | 15 +-
app/Mcp/Contracts/McpCallRepositoryInterface.php | 30 +
app/Mcp/DTO/ListCallsFilters.php | 29 +
app/Mcp/Errors/McpError.php | 123 ++++
app/Mcp/Repositories/McpActivityHydrator.php | 145 ++++
app/Mcp/Repositories/McpCallRepository.php | 84 +++
app/Mcp/Repositories/McpElasticCallRepository.php | 171 +++++
app/Mcp/Servers/JiminnyServer.php | 38 +
app/Mcp/Tools/ListCallsTool.php | 205 ++++++
app/Models/Activity.php | 10 +-
app/Models/Activity/Transcription.php | 17 +-
app/Models/ElasticSearch/OpportunityElasticSearchTrait.php | 5 +
app/Models/Participant.php | 1 +
app/Providers/AppServiceProvider.php | 22 +
app/Repositories/Crm/ContactRepository.php | 69 +-
app/Repositories/ParticipantSpeechRepository.php | 13 +-
app/Services/Activity/ParticipantsService.php | 19 +-
app/Services/Activity/Twilio/S3RecordingCredentialsService.php | 82 +++
app/Services/ActivityService.php | 21 +-
app/Services/Calendar/CalendarActivityService.php | 46 ++
app/Services/Calendar/Command/ImportParticipants.php | 1 +
app/Services/Calendar/Command/MapActivityData.php | 106 +--
app/Services/Calendar/GoogleCalendarService.php | 12 +-
app/Services/Crm/Close/Processor/OpportunityProcessor.php | 2 +-
app/Services/Crm/Close/Service.php | 22 +-
app/Services/Crm/Copper/Service.php | 12 +-
app/Services/Crm/Hubspot/Service.php | 154 +++-
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 88 ++-
app/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmEntitiesTrait.php | 22 +-
app/Services/Crm/Pipedrive/Service.php | 17 +-
app/Services/Crm/Salesforce/Service.php | 42 +-
app/Services/Mail/Office/EmailApiClient.php | 129 +---
app/Services/RecallAI/Commands/ScheduleBotCommand.php | 39 +-
app/Services/RecallAI/RecallAIService.php | 22 +-
composer.json | 3 +-
composer.lock | 87 ++-
config/mcp.php | 23 +
database/migrations/2026_04_30_120000_create_mcp_audit_log_table.php | 36 +
docs/mcp/explorer/explorer.html | 697 ++++++++++++++++++
docs/mcp/explorer/explorer.template.html | 697 ++++++++++++++++++
docs/mcp/explorer/generate.js | 215 ++++++
docs/mcp/explorer/tool-explorer-meta.json | 11 +
docs/mcp/tools-list.json | 2536 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
docs/mcp/tools.md | 621 ++++++++++++++++
front-end/package.json | 4 +-
front-end/src/components/Settings/OrgSettings/AiAutomation/CrmFilling/TemplateFieldForm.vue | 28 +-
front-end/src/components/Settings/OrgSettings/Playbooks/AddEditPlaybook.vue | 10 +
front-end/src/components/playback/comments/ActivityComment.less | 10 +-
front-end/src/components/shared/PromptTester/PromptTester.vue | 12 +-
front-end/src/components/shared/__tests__/PromptTester.spec.js | 35 +
front-end/src/components/shared/modals/EntityPickerModal/__tests__/useEntitiesCache.spec.ts | 37 +
front-end/src/components/shared/modals/EntityPickerModal/useEntitiesCache.ts | 9 +
front-end/yarn.lock | 16 +-
phpstan-baseline.neon | 50 --
routes/api.php | 11 +
sonar-project.properties | 91 ++-
tests/Feature/Component/Nudge/ProcessOrganisationImmediateNudgesJobTest.php | 534 ++++++++++++++
tests/Feature/Jobs/ImportRemoteTrackJobTest.php | 283 +++++++-
tests/Feature/Mcp/IssueMcpTokenCommandTest.php | 53 ++
tests/Feature/Mcp/ListCallsToolElasticFeatureTest.php | 155 ++++
tests/Feature/Mcp/ListCallsToolFeatureTest.php | 352 ++++++++++
tests/Feature/Mcp/McpTestHelpersTrait.php | 77 ++
tests/Feature/Services/Team/TeamDeleteHandlers/Retention/RetentionRepositoryHandlerTest.php | 1 +
tests/Stubs/SentryStub.php | 18 +
tests/Unit/Component/ActivityAnalytics/Service/CalculateTalkTimeOffsetFromTranscriptionTest.php | 28 +-
tests/Unit/Component/AiActivityType/Services/AiActivityTypeEligibilityCheckerTest.php | 103 ++-
tests/Unit/Component/AiAutomation/Actions/PrepareUpdateDtoActionTest.php | 91 +++
tests/Unit/Component/AiAutomation/Services/CrmFillingEligibilityCheckerTest.php | 124 ++++
tests/Unit/Component/AiAutomation/TestCrmAiPromptServiceTest.php | 67 +-
tests/Unit/Component/AiCallScoring/Services/AiCallScoringEligibilityCheckerTest.php | 55 ++
tests/Unit/Component/ES/ElasticSearchWorkerManagerTest.php | 135 ----
tests/Unit/Component/ES/Processor/Actions/LoadDocumentsActionTest.php | 220 ++++++
tests/Unit/Component/ES/Processor/EntityQueryBuilderTest.php | 21 +-
tests/Unit/Component/ES/Processor/Traits/SkipActivityTraitTest.php | 51 --
tests/Unit/Component/ES/Worker/ActivityWorkerTest.php | 174 -----
tests/Unit/Component/ES/Worker/EntityWorkerTest.php | 97 ---
tests/Unit/Component/ES/Worker/WorkerAmountTest.php | 116 ---
tests/Unit/Component/Encoding/Job/AnalyzeTrackChannelsJobTest.php | 52 +-
tests/Unit/Component/Encoding/Service/GenerateSpeechFromSilenceServiceTest.php | 171 ++---
tests/Unit/Component/FFMpeg/Services/GetSpeechIntervalsTest.php | 36 +-
tests/Unit/Component/LanguageDetection/Services/FindSpeechTimeServiceTest.php | 20 +-
tests/Unit/Component/MobileSettings/MobileSettingsControllerTest.php | 5 +-
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesCreatorTest.php | 75 ++
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesDeleterTest.php | 63 ++
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesProviderTest.php | 134 ++++
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesUploaderTest.php | 57 ++
tests/Unit/Component/Transcription/Diarization/Services/GetNormalizedParticipantSpeechesServiceTest.php | 51 +-
tests/Unit/Component/Transcription/Diarization/Source/MeetingBotSourceTest.php | 29 +-
tests/Unit/Contracts/Services/Calendar/CalendarTraitTest.php | 58 +-
tests/Unit/Http/Controllers/Kiosk/ActivityControllerTest.php | 159 +++++
tests/Unit/Jobs/Activity/Import/ImportTwilioVideoSpeechesJobTest.php | 22 +-
tests/Unit/Jobs/Activity/Import/IsActivityReadyForProcessingJobTest.php | 26 +-
tests/Unit/Jobs/Calendar/SetupCalendarSyncTest.php | 25 -
tests/Unit/Services/Activity/ParticipantsServiceTest.php | 12 +-
tests/Unit/Services/Activity/Twilio/S3RecordingCredentialsServiceTest.php | 180 +++++
tests/Unit/Services/ActivityServiceTest.php | 132 ++++
tests/Unit/Services/Calendar/CalendarActivityServiceTest.php | 150 +++-
tests/Unit/Services/Calendar/Command/ImportParticipantsTest.php | 6 +-
tests/Unit/Services/Calendar/Command/MapActivityDataTest.php | 78 +-
tests/Unit/Services/Calendar/GoogleCalendarServiceTest.php | 116 +++
tests/Unit/Services/Crm/Close/ServiceTest.php | 165 +++++
tests/Unit/Services/Crm/Hubspot/ServiceTest.php | 272 ++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 25 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitMatchActivitiesTest.php | 3 +-
tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmEntitiesTraitOpportunitiesTest.php | 40 ++
tests/Unit/Services/Crm/Pipedrive/ImportOpportunityMatchActivitiesTest.php | 2 +
tests/Unit/Services/Crm/Salesforce/ServiceTest.php | 139 ++++
tests/Unit/Services/Mail/Office/EmailApiClientTest.php | 195 ++---
tests/Unit/Services/RecallAI/RecallAIServiceTest.php | 24 +-
175 files changed, 12562 insertions(+), 2162 deletions(-)
create mode 120000 CLAUDE.md
create mode 100644 app/Component/AiAutomation/Services/CrmFillingEligibilityChecker.php
delete mode 100644 app/Component/ES/ElasticSearchWorkerManager.php
delete mode 100644 app/Component/ES/Processor/Traits/SkipActivityTrait.php
delete mode 100644 app/Component/ES/Worker/ActivityWorker.php
delete mode 100644 app/Component/ES/Worker/EntityWorker.php
delete mode 100644 app/Component/ES/Worker/WorkerAmount.php
delete mode 100644 app/Component/ES/Worker/WorkerInterface.php
create mode 100644 app/Component/ProphetAi/Exceptions/InsufficientTranscriptException.php
create mode 100644 app/Component/Transcription/DTO/Http/Transcription/AssemblyAI/AssemblyAI/NoAssemblyIdException.php
create mode 100644 app/Component/Transcription/DTO/Http/Transcription/TranscriptionIsNotCorrectFormatException.php
create mode 100644 app/Console/Commands/Activities/SetupIntegration/TwilioSetS3RecordingCredentialsCommand.php
create mode 100644 app/Console/Commands/Crm/BackfillOpportunityUserFromAccountCommand.php
delete mode 100644 app/Console/Commands/Elasticsearch/AsyncUpdateEsActivities.php
create mode 100644 app/Console/Commands/IssueMcpTokenCommand.php
create mode 100644 app/Http/Middleware/McpAuditMiddleware.php
create mode 100644 app/Http/Middleware/McpTierMiddleware.php
create mode 100644 app/Mcp/Contracts/McpCallRepositoryInterface.php
create mode 100644 app/Mcp/DTO/ListCallsFilters.php
create mode 100644 app/Mcp/Errors/McpError.php
create mode 100644 app/Mcp/Repositories/McpActivityHydrator.php
create mode 100644 app/Mcp/Repositories/McpCallRepository.php
create mode 100644 app/Mcp/Repositories/McpElasticCallRepository.php
create mode 100644 app/Mcp/Servers/JiminnyServer.php
create mode 100644 app/Mcp/Tools/ListCallsTool.php
create mode 100644 app/Services/Activity/Twilio/S3RecordingCredentialsService.php
create mode 100644 config/mcp.php
create mode 100644 database/migrations/2026_04_30_120000_create_mcp_audit_log_table.php
create mode 100644 docs/mcp/explorer/explorer.html
create mode 100644 docs/mcp/explorer/explorer.template.html
create mode 100644 docs/mcp/explorer/generate.js
create mode 100644 docs/mcp/explorer/tool-explorer-meta.json
create mode 100644 docs/mcp/tools-list.json
create mode 100644 docs/mcp/tools.md
create mode 100644 front-end/src/components/shared/modals/EntityPickerModal/__tests__/useEntitiesCache.spec.ts
create mode 100644 tests/Feature/Component/Nudge/ProcessOrganisationImmediateNudgesJobTest.php
create mode 100644 tests/Feature/Mcp/IssueMcpTokenCommandTest.php
create mode 100644 tests/Feature/Mcp/ListCallsToolElasticFeatureTest.php
create mode 100644 tests/Feature/Mcp/ListCallsToolFeatureTest.php
create mode 100644 tests/Feature/Mcp/McpTestHelpersTrait.php
create mode 100644 tests/Stubs/SentryStub.php
create mode 100644 tests/Unit/Component/AiAutomation/Services/CrmFillingEligibilityCheckerTest.php
delete mode 100644 tests/Unit/Component/ES/ElasticSearchWorkerManagerTest.php
create mode 100644 tests/Unit/Component/ES/Processor/Actions/LoadDocumentsActionTest.php
delete mode 100644 tests/Unit/Component/ES/Processor/Traits/SkipActivityTraitTest.php
delete mode 100644 tests/Unit/Component/ES/Worker/ActivityWorkerTest.php
delete mode 100644 tests/Unit/Component/ES/Worker/EntityWorkerTest.php
delete mode 100644 tests/Unit/Component/ES/Worker/WorkerAmountTest.php
create mode 100644 tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesCreatorTest.php
create mode 100644 tests/Unit/Http/Controllers/Kiosk/ActivityControllerTest.php
create mode 100644 tests/Unit/Services/Activity/Twilio/S3RecordingCredentialsServiceTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ git status
On branch master
Your branch is behind 'origin/master' by 114 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Component/SCIM/Constants.php
modified: app/Component/SCIM/ScimProvisioning.php
modified: app/Component/Twilio/Conference/ConferenceManager/SoftPhoneManager.php
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/DTO/SCIM/AAD/Request/CoreUserRequest.php
modified: app/DTO/SCIM/AAD/Response/CoreUser.php
modified: app/Services/Telephony/TextMessagingService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Component/SCIM/Mutators/Attributes/User/RoleAttr.php
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Rules/ListenerRoleCannotHaveAdminOrManagerPermissionRule.php
ids.txt
public/favicon.ico
raw_sql_query.sql
tests/Unit/Component/SCIM/Mutators/Attributes/User/RoleAttrTest.php
tests/Unit/Policies/CanAccessAiReportsTest.php
tests/Unit/Rules/ListenerRoleCannotHaveAdminOrManagerPermissionRuleTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 306, done.
remote: Counting objects: 100% (299/299), done.
remote: Compressing objects: 100% (183/183), done.
remote: Total 306 (delta 213), reused 171 (delta 116), pack-reused 7 (from 1)
Receiving objects: 100% (306/306), 80.12 KiB | 1000.00 KiB/s, done.
Resolving deltas: 100% (213/213), completed with 53 local objects.
From github.com:jiminny/app
90bca4e4b2..5604af40cf master -> origin/master
4e7078fd8b..0b8343d179 JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5
098eeaa087..d5a447e492 JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup
c3a76ace91..af65249d0f JY-20749-user-can-view-recorded-meetings -> origin/JY-20749-user-can-view-recorded-meetings
d94a285ae7..7ce96cb5fe JY-20808-low-priority-indexing-queue -> origin/JY-20808-low-priority-indexing-queue
* [new branch] JY-20842-remove-partial-updater -> origin/JY-20842-remove-partial-updater
* [new branch] JY-20920-fix-participant-flip -> origin/JY-20920-fix-participant-flip
* [new branch] secfix/npm-20260519 -> origin/secfix/npm-20260519
Updating cb4ebf0c36..5604af40cf
Fast-forward
app/Component/ES/ChunkSize.php | 54 +++++++++++++++++++
app/Component/ES/Processor/DTOs/SelectionList.php | 4 +-
app/Component/ES/Processor/TargetEntitiesSelector.php | 19 ++++---
app/Component/MeetingBot/Service/ParticipantMatcher.php | 46 ++++++++++++----
app/Exceptions/RateLimitException.php | 19 ++++++-
app/Http/Middleware/McpTierMiddleware.php | 27 ++--------
app/Jobs/Crm/MatchActivityCrmData.php | 47 ++++++++++++----
app/Jobs/Middleware/HandleHubspotRateLimit.php | 42 +++++++++++++++
app/Mcp/Servers/JiminnyServer.php | 2 +
app/Mcp/Tools/GetMeTool.php | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++++
app/Models/Feature/FeatureEnum.php | 1 +
app/Services/Activity/HubSpot/ProviderResolver.php | 4 +-
app/Services/Activity/HubSpot/ProviderResolverInterface.php | 2 +-
app/Services/Activity/HubSpot/Providers/Provider.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderKixie.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderOrum.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderTwilio.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderTwilioFlex.php | 5 +-
app/Services/Activity/HubSpot/Service.php | 97 +++++++++++++++++++++++++++------
app/Services/Crm/Hubspot/Client.php | 132 +++++++++++++++++++++++++++++++++++++++++++++
app/Services/Crm/Hubspot/HubspotClientInterface.php | 15 ++++++
app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php | 21 ++++----
app/Services/Crm/Hubspot/Pagination/PaginationState.php | 2 +-
database/migrations/2026_05_13_124153_create_mcp_feature_flag.php | 25 +++++++++
tests/Feature/Mcp/GetMeToolFeatureTest.php | 140 +++++++++++++++++++++++++++++++++++++++++++++++
tests/Feature/Mcp/ListCallsToolFeatureTest.php | 2 +-
tests/Feature/Mcp/McpTestHelpersTrait.php | 19 ++++++-
tests/Unit/Component/ES/ChunkSizeTest.php | 50 +++++++++++++++++
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 27 +++++++---
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 39 ++++++++------
tests/Unit/Component/MeetingBot/Service/ParticipantMatcherTest.php | 68 ++++++++++++++++++++++-
tests/Unit/Exceptions/RateLimitExceptionTest.php | 56 +++++++++++++++++++
tests/Unit/Jobs/Crm/MatchActivityCrmDataTest.php | 8 +--
tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Activity/HubSpot/ServiceTest.php | 109 +++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ClientTest.php | 250 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/Pagination/HubspotPaginationServiceTest.php | 283 +++++++++++++++++++++---------------------------------------------------------------------------
37 files changed, 1587 insertions(+), 344 deletions(-)
create mode 100644 app/Component/ES/ChunkSize.php
create mode 100644 app/Jobs/Middleware/HandleHubspotRateLimit.php
create mode 100644 app/Mcp/Tools/GetMeTool.php
create mode 100644 database/migrations/2026_05_13_124153_create_mcp_feature_flag.php
create mode 100644 tests/Feature/Mcp/GetMeToolFeatureTest.php
create mode 100644 tests/Unit/Component/ES/ChunkSizeTest.php
create mode 100644 tests/Unit/Exceptions/RateLimitExceptionTest.php
create mode 100644 tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20676-delete-report-related-objects
Switched to a new branch 'JY-20676-delete-report-related-objects'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5690/5690 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) app/Console/Commands/JiminnyDebugCommand.php (statement_indentation, blank_line_before_statement)
---------- begin diff ----------
--- /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
+++ /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
@@ -23,6 +23,7 @@
if ($action === 'redis-set') {
$this->testRedisSet();
+
return;
}
@@ -45,7 +46,7 @@
$ttl = 60;
try {
-// $result = Redis::set($testKey, $testValue, 'EX', $ttl, 'NX');
+ // $result = Redis::set($testKey, $testValue, 'EX', $ttl, 'NX');
$result = Redis::set($testKey, $testValue, ['nx', 'ex' => $ttl]);
if ($result) {
----------- end diff -----------
Fixed 1 of 5690 files in 50.673 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at https://docs.docker.com/go/debug-cli/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at https://docs.docker.c...
|
iTerm2
|
APP (-zsh)
|
NULL
|
58581
|
|
58582
|
remote: Enumerating objects: 1047, done.
remote: C remote: Enumerating objects: 1047, done.
remote: Counting objects: 100% (832/832), done.
remote: Compressing objects: 100% (298/298), done.
remote: Total 1047 (delta 634), reused 596 (delta 534), pack-reused 215 (from 3)
Receiving objects: 100% (1047/1047), 353.16 KiB | 1.56 MiB/s, done.
Resolving deltas: 100% (687/687), completed with 107 local objects.
From github.com:jiminny/app
907c54896c..34656c53ed pipedrive-sdk-poc -> origin/pipedrive-sdk-poc
03325ec50f..4e7078fd8b JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5
e7d231e163..bc6a3fce6b JY-20725-handle-HS-search-rate-limit -> origin/JY-20725-handle-HS-search-rate-limit
* [new branch] JY-20749-user-can-view-recorded-meetings -> origin/JY-20749-user-can-view-recorded-meetings
98ca281a04..e0351be069 JY-20808-low-priority-indexing-queue -> origin/JY-20808-low-priority-indexing-queue
569abb5149..3906a9238a JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
ad6c2a86e8..50eb6afba9 JY-20846-mcp-enable-the-ai-to-know-details-about-the-user -> origin/JY-20846-mcp-enable-the-ai-to-know-details-about-the-user
* [new branch] JY-20893-chunk-control-per-update-target -> origin/JY-20893-chunk-control-per-update-target
31c62924a5..cb4ebf0c36 master -> origin/master
Updating 907c54896c..34656c53ed
Fast-forward
PIPEDRIVE_V2_MIGRATION_TICKETS.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (pipedrive-sdk-poc) $ co master
M .env.local
M config/logging.php
Switched to branch 'master'
Your branch is behind 'origin/master' by 31 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
Updating 31c62924a5..cb4ebf0c36
Fast-forward
app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 20 ------
app/Services/Calendar/CalendarActivityService.php | 46 +++++++++++++
app/Services/Calendar/Command/MapActivityData.php | 106 +++-------------------------
docs/mcp/explorer/explorer.html | 104 +++++++++++++++++++++++++---
docs/mcp/explorer/explorer.template.html | 102 ++++++++++++++++++++++++---
docs/mcp/tools-list.json | 373 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
docs/mcp/tools.md | 117 +++++++++++++++++++++++--------
tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 16 +----
tests/Unit/Component/ES/Listeners/UpdateMultipleTargetsListenerTest.php | 10 ---
tests/Unit/Component/ES/Listeners/UpdateSingleTargetListenerTest.php | 6 --
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 ---
tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 15 ++--
tests/Unit/Component/ES/UpdateProcessManagerTest.php | 2 -
tests/Unit/Services/Calendar/CalendarActivityServiceTest.php | 150 ++++++++++++++++++++++++++++++++++++++--
tests/Unit/Services/Calendar/Command/MapActivityDataTest.php | 78 ++-------------------
15 files changed, 832 insertions(+), 322 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20613-allow-owner-role-on-team-setup
Switched to a new branch 'JY-20613-allow-owner-role-on-team-setup'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5682/5682 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5682 files in 56.978 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5682/5682 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5682 files in 49.910 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git pull
remote: Enumerating objects: 248, done.
remote: Counting objects: 100% (128/128), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 59 (delta 43), reused 44 (delta 33), pack-reused 0 (from 0)
Unpacking objects: 100% (59/59), 10.48 KiB | 228.00 KiB/s, done.
From github.com:jiminny/app
b7df560451..190239dfd4 JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup
e0351be069..d94a285ae7 JY-20808-low-priority-indexing-queue -> origin/JY-20808-low-priority-indexing-queue
* [new branch] JY-20920-fix-participant-matcher -> origin/JY-20920-fix-participant-matcher
cb4ebf0c36..90bca4e4b2 master -> origin/master
Merge made by the 'ort' strategy.
app/Component/ES/ChunkSize.php | 54 +++++++++++++++++++++++++++
app/Component/ES/Processor/DTOs/SelectionList.php | 4 +-
app/Component/ES/Processor/TargetEntitiesSelector.php | 19 ++++++----
app/Http/Middleware/McpTierMiddleware.php | 27 +++-----------
app/Mcp/Servers/JiminnyServer.php | 2 +
app/Mcp/Tools/GetMeTool.php | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/Models/Feature/FeatureEnum.php | 1 +
database/migrations/2026_05_13_124153_create_mcp_feature_flag.php | 25 +++++++++++++
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue | 52 ++++++++++++++++++--------
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/__tests__/EditTeamModal.spec.js | 14 +++++++
tests/Feature/Mcp/GetMeToolFeatureTest.php | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Feature/Mcp/ListCallsToolFeatureTest.php | 2 +-
tests/Feature/Mcp/McpTestHelpersTrait.php | 19 +++++++++-
tests/Unit/Component/ES/ChunkSizeTest.php | 50 +++++++++++++++++++++++++
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 27 ++++++++++----
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 39 +++++++++++---------
16 files changed, 557 insertions(+), 75 deletions(-)
create mode 100644 app/Component/ES/ChunkSize.php
create mode 100644 app/Mcp/Tools/GetMeTool.php
create mode 100644 database/migrations/2026_05_13_124153_create_mcp_feature_flag.php
create mode 100644 tests/Feature/Mcp/GetMeToolFeatureTest.php
create mode 100644 tests/Unit/Component/ES/ChunkSizeTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git push
Enumerating objects: 40, done.
Counting objects: 100% (34/34), done.
Delta compression using up to 8 threads
Compressing objects: 100% (18/18), done.
Writing objects: 100% (18/18), 1.58 KiB | 1.58 MiB/s, done.
Total 18 (delta 15), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (15/15), completed with 13 local objects.
To github.com:jiminny/app.git
190239dfd4..ec1b261264 JY-20613-allow-owner-role-on-team-setup -> JY-20613-allow-owner-role-on-team-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ gbr
* JY-20613-allow-owner-role-on-team-setup
pipedrive-sdk-poc
master
JY-20903-update_activity-stage-on-opportunity-change
JY-20904-fix-update-es-on-activity-command
JY-20891-improve-sms-text-relays
JY-20725-handle-HS-search-rate-limit
JY-20818-move-AJ-reports-to-separated-datadog-metric
JY-20773-fix-automated-reports-user-pilot-tracking
JY-20157-AJ-report-not-send-notification
JY-20508-notify-before-AJ-report-expiration
JY-20372-ai-reports-promotion-pages
JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null
JY-20738-debug-AJ-tracking-UP
a
JY-18909-automated-reports-ask-jiminny
JY-20692-fix-integration-app-[API_KEY]
JY-20553-debug-crm-sync-delays
JY-20698-fix-SF-activity-types-on-new-playbook
JY-20543-AJ-report-tracking
JY-20384-handle-auto-sync-with-no-access-to-event-type
JY-20458-ask-jiminny-user-definitions
JY-19666-fix-import-contacts-account-association
JY-19666-HS-import-contacts-and-accounts-batch-job
JY-20458-Ask-Jiminny-Reports
JY-20200-batch-update-CRM-objects-Salesforce
JY-19666-HS-webhooks-add-contact-and-company
JY-20348-trigger-setup-DI-layout-on-team-creation
JY-20326-refactor-info-message-in-command
JY-20317-fix-auto-log-delay-issue-on-all-channels-disabled
JY-20312-remove-on-update-change-last-synced-at-crm-configurations
JY-20306-SF-skip-auto-sync-for-task-based-playbook
JY-20192-remove-deleted-team-from-saved-search-filters
JY-20197-import-opportunity-batch-job
JY-20293-enable-status-field-for-pipedrive-deals
JY-20191-remove-commands-interactive-prompts
JY-20118-change-default-sync-strategy
JY-20183-add-cache-on-auto-log-delay
JY-20197-add-import-opportunity-batch-job
20118-hs-opportunity-make-webhook-strategy-default
JY-20118-make-default-hs-opportunity-sync-strategy-webhook-based
JY-20196-handle-opportunity-without-note
JY-20118-improve-opportunity-import
JY-20189-handle-activity-search-on-deleted-groups
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ co JY-20725-handle-HS-search-rate-limit
M .env.local
M config/logging.php
Switched to branch 'JY-20725-handle-HS-search-rate-limit'
Your branch is behind 'origin/JY-20725-handle-HS-search-rate-limit' by 439 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ git pull
Updating 0f3e438941..bc6a3fce6b
Fast-forward
.gitignore | 3 +-
.windsurfrules | 168 ++---
CLAUDE.md | 1 +
app/Component/ActivityAnalytics/Service/CalculateTalkTimeOffsetsFromTranscription.php | 24 +-
app/Component/AiActivityType/Services/AiActivityTypeEligibilityChecker.php | 28 +-
app/Component/AiAutomation/Actions/PrepareUpdateDtoAction.php | 32 +-
app/Component/AiAutomation/Services/CrmFillingEligibilityChecker.php | 47 ++
app/Component/AiAutomation/TestCrmAiPromptService.php | 14 +
app/Component/AiCallScoring/Services/AiCallScoringEligibilityChecker.php | 9 +
app/Component/ES/ElasticSearchDocumentPartialUpdater.php | 13 +-
app/Component/ES/ElasticSearchWorkerManager.php | 86 ---
app/Component/ES/Processor/Actions/LoadDocumentsAction.php | 80 +--
app/Component/ES/Processor/EntityQueryBuilder.php | 12 +-
app/Component/ES/Processor/TargetEntitiesSelector.php | 2 +-
app/Component/ES/Processor/Traits/SkipActivityTrait.php | 25 -
app/Component/ES/Repositories/EsResetActivityRepository.php | 11 +-
app/Component/ES/Worker/ActivityWorker.php | 73 --
app/Component/ES/Worker/EntityWorker.php | 44 --
app/Component/ES/Worker/WorkerAmount.php | 60 --
app/Component/ES/Worker/WorkerInterface.php | 15 -
app/Component/ElasticSearch/Contract/Searchable.php | 4 +
app/Component/Encoding/Job/AnalyzeTrackChannelsJob.php | 20 +-
app/Component/Encoding/Service/GenerateSpeechFromSilenceService.php | 85 ++-
app/Component/FFMpeg/Services/GetSpeechIntervalsService.php | 18 +-
app/Component/LanguageDetection/Services/FindSpeechTimeService.php | 22 +-
app/Component/Nudge/Job/ProcessOrganisationImmediateNudgesJob.php | 218 +++++-
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 +
app/Component/ParticipantSpeech/Services/ParticipantSpeechesCreator.php | 33 +
app/Component/ParticipantSpeech/Services/ParticipantSpeechesDeleter.php | 15 +
app/Component/ParticipantSpeech/Services/ParticipantSpeechesProvider.php | 51 +-
app/Component/ParticipantSpeech/Services/ParticipantSpeechesUploader.php | 36 +
app/Component/ProphetAi/Exceptions/InsufficientTranscriptException.php | 11 +
app/Component/Transcription/DTO/Http/Transcription/AssemblyAI/AssemblyAI/NoAssemblyIdException.php | 11 +
app/Component/Transcription/DTO/Http/Transcription/AssemblyAI/AssemblyAI/SuccessfulResponse.php | 6 +
app/Component/Transcription/DTO/Http/Transcription/TranscriptionIsNotCorrectFormatException.php | 11 +
app/Component/Transcription/Diarization/Services/GetNormalizedParticipantSpeechesService.php | 23 +-
app/Component/Transcription/Diarization/Source/MeetingBotSource.php | 16 +-
app/Component/Transcription/TranscriptionProcessor/TranscriptionProcessor.php | 3 +
app/Console/Commands/Activities/ActivityHardDeleteCommand.php | 4 +-
app/Console/Commands/Activities/Copy.php | 2 +
app/Console/Commands/Activities/SetupIntegration/TwilioSetS3RecordingCredentialsCommand.php | 119 ++++
app/Console/Commands/Activities/UpdateActivityElasticSearchDocumentCommand.php | 10 +-
app/Console/Commands/Crm/BackfillOpportunityUserFromAccountCommand.php | 126 ++++
app/Console/Commands/Elasticsearch/AsyncUpdateEsActivities.php | 19 -
app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 50 +-
app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 30 +-
app/Console/Commands/GeckoExport/GeckoExportParticipantSpeechesCommand.php | 14 +-
app/Console/Commands/IssueMcpTokenCommand.php | 84 +++
app/Console/Commands/JiminnyDebugCommand.php | 7 +-
app/Console/Commands/Tracks/CleanupActivityTracksCommand.php | 2 +-
app/Console/Kernel.php | 6 +-
app/Contracts/Services/Calendar/CalendarTrait.php | 80 ++-
app/Events/AutomatedReports/AutomatedReportGenerated.php | 3 +
app/Http/Controllers/API/AiCallScoring/AiScorecardController.php | 7 +-
app/Http/Controllers/API/TeamAiAutomationController.php | 8 +
app/Http/Controllers/CustomerApi/CustomerApiController.php | 4 +-
app/Http/Controllers/Kiosk/ActivityController.php | 58 +-
app/Http/Controllers/Settings/PlaybookController.php | 15 +-
app/Http/Kernel.php | 23 +
app/Http/Middleware/McpAuditMiddleware.php | 156 ++++
app/Http/Middleware/McpTierMiddleware.php | 54 ++
app/Http/Requests/API/V2/ZapierUploadActivityRequest.php | 28 +-
app/Jobs/Activity/Import/ImportTwilioVideoSpeechesJob.php | 25 +-
app/Jobs/Activity/Import/IsActivityReadyForProcessingJob.php | 10 +-
app/Jobs/Calendar/SetupCalendarSync.php | 21 +-
app/Jobs/ImportRemoteTrackJob.php | 96 ++-
app/Jobs/Mailbox/EmailTextRelay.php | 15 +-
app/Mcp/Contracts/McpCallRepositoryInterface.php | 30 +
app/Mcp/DTO/ListCallsFilters.php | 29 +
app/Mcp/Errors/McpError.php | 123 ++++
app/Mcp/Repositories/McpActivityHydrator.php | 145 ++++
app/Mcp/Repositories/McpCallRepository.php | 84 +++
app/Mcp/Repositories/McpElasticCallRepository.php | 171 +++++
app/Mcp/Servers/JiminnyServer.php | 38 +
app/Mcp/Tools/ListCallsTool.php | 205 ++++++
app/Models/Activity.php | 10 +-
app/Models/Activity/Transcription.php | 17 +-
app/Models/ElasticSearch/OpportunityElasticSearchTrait.php | 5 +
app/Models/Participant.php | 1 +
app/Providers/AppServiceProvider.php | 22 +
app/Repositories/Crm/ContactRepository.php | 69 +-
app/Repositories/ParticipantSpeechRepository.php | 13 +-
app/Services/Activity/ParticipantsService.php | 19 +-
app/Services/Activity/Twilio/S3RecordingCredentialsService.php | 82 +++
app/Services/ActivityService.php | 21 +-
app/Services/Calendar/CalendarActivityService.php | 46 ++
app/Services/Calendar/Command/ImportParticipants.php | 1 +
app/Services/Calendar/Command/MapActivityData.php | 106 +--
app/Services/Calendar/GoogleCalendarService.php | 12 +-
app/Services/Crm/Close/Processor/OpportunityProcessor.php | 2 +-
app/Services/Crm/Close/Service.php | 22 +-
app/Services/Crm/Copper/Service.php | 12 +-
app/Services/Crm/Hubspot/Service.php | 154 +++-
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 88 ++-
app/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmEntitiesTrait.php | 22 +-
app/Services/Crm/Pipedrive/Service.php | 17 +-
app/Services/Crm/Salesforce/Service.php | 42 +-
app/Services/Mail/Office/EmailApiClient.php | 129 +---
app/Services/RecallAI/Commands/ScheduleBotCommand.php | 39 +-
app/Services/RecallAI/RecallAIService.php | 22 +-
composer.json | 3 +-
composer.lock | 87 ++-
config/mcp.php | 23 +
database/migrations/2026_04_30_120000_create_mcp_audit_log_table.php | 36 +
docs/mcp/explorer/explorer.html | 697 ++++++++++++++++++
docs/mcp/explorer/explorer.template.html | 697 ++++++++++++++++++
docs/mcp/explorer/generate.js | 215 ++++++
docs/mcp/explorer/tool-explorer-meta.json | 11 +
docs/mcp/tools-list.json | 2536 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
docs/mcp/tools.md | 621 ++++++++++++++++
front-end/package.json | 4 +-
front-end/src/components/Settings/OrgSettings/AiAutomation/CrmFilling/TemplateFieldForm.vue | 28 +-
front-end/src/components/Settings/OrgSettings/Playbooks/AddEditPlaybook.vue | 10 +
front-end/src/components/playback/comments/ActivityComment.less | 10 +-
front-end/src/components/shared/PromptTester/PromptTester.vue | 12 +-
front-end/src/components/shared/__tests__/PromptTester.spec.js | 35 +
front-end/src/components/shared/modals/EntityPickerModal/__tests__/useEntitiesCache.spec.ts | 37 +
front-end/src/components/shared/modals/EntityPickerModal/useEntitiesCache.ts | 9 +
front-end/yarn.lock | 16 +-
phpstan-baseline.neon | 50 --
routes/api.php | 11 +
sonar-project.properties | 91 ++-
tests/Feature/Component/Nudge/ProcessOrganisationImmediateNudgesJobTest.php | 534 ++++++++++++++
tests/Feature/Jobs/ImportRemoteTrackJobTest.php | 283 +++++++-
tests/Feature/Mcp/IssueMcpTokenCommandTest.php | 53 ++
tests/Feature/Mcp/ListCallsToolElasticFeatureTest.php | 155 ++++
tests/Feature/Mcp/ListCallsToolFeatureTest.php | 352 ++++++++++
tests/Feature/Mcp/McpTestHelpersTrait.php | 77 ++
tests/Feature/Services/Team/TeamDeleteHandlers/Retention/RetentionRepositoryHandlerTest.php | 1 +
tests/Stubs/SentryStub.php | 18 +
tests/Unit/Component/ActivityAnalytics/Service/CalculateTalkTimeOffsetFromTranscriptionTest.php | 28 +-
tests/Unit/Component/AiActivityType/Services/AiActivityTypeEligibilityCheckerTest.php | 103 ++-
tests/Unit/Component/AiAutomation/Actions/PrepareUpdateDtoActionTest.php | 91 +++
tests/Unit/Component/AiAutomation/Services/CrmFillingEligibilityCheckerTest.php | 124 ++++
tests/Unit/Component/AiAutomation/TestCrmAiPromptServiceTest.php | 67 +-
tests/Unit/Component/AiCallScoring/Services/AiCallScoringEligibilityCheckerTest.php | 55 ++
tests/Unit/Component/ES/ElasticSearchWorkerManagerTest.php | 135 ----
tests/Unit/Component/ES/Processor/Actions/LoadDocumentsActionTest.php | 220 ++++++
tests/Unit/Component/ES/Processor/EntityQueryBuilderTest.php | 21 +-
tests/Unit/Component/ES/Processor/Traits/SkipActivityTraitTest.php | 51 --
tests/Unit/Component/ES/Worker/ActivityWorkerTest.php | 174 -----
tests/Unit/Component/ES/Worker/EntityWorkerTest.php | 97 ---
tests/Unit/Component/ES/Worker/WorkerAmountTest.php | 116 ---
tests/Unit/Component/Encoding/Job/AnalyzeTrackChannelsJobTest.php | 52 +-
tests/Unit/Component/Encoding/Service/GenerateSpeechFromSilenceServiceTest.php | 171 ++---
tests/Unit/Component/FFMpeg/Services/GetSpeechIntervalsTest.php | 36 +-
tests/Unit/Component/LanguageDetection/Services/FindSpeechTimeServiceTest.php | 20 +-
tests/Unit/Component/MobileSettings/MobileSettingsControllerTest.php | 5 +-
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesCreatorTest.php | 75 ++
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesDeleterTest.php | 63 ++
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesProviderTest.php | 134 ++++
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesUploaderTest.php | 57 ++
tests/Unit/Component/Transcription/Diarization/Services/GetNormalizedParticipantSpeechesServiceTest.php | 51 +-
tests/Unit/Component/Transcription/Diarization/Source/MeetingBotSourceTest.php | 29 +-
tests/Unit/Contracts/Services/Calendar/CalendarTraitTest.php | 58 +-
tests/Unit/Http/Controllers/Kiosk/ActivityControllerTest.php | 159 +++++
tests/Unit/Jobs/Activity/Import/ImportTwilioVideoSpeechesJobTest.php | 22 +-
tests/Unit/Jobs/Activity/Import/IsActivityReadyForProcessingJobTest.php | 26 +-
tests/Unit/Jobs/Calendar/SetupCalendarSyncTest.php | 25 -
tests/Unit/Services/Activity/ParticipantsServiceTest.php | 12 +-
tests/Unit/Services/Activity/Twilio/S3RecordingCredentialsServiceTest.php | 180 +++++
tests/Unit/Services/ActivityServiceTest.php | 132 ++++
tests/Unit/Services/Calendar/CalendarActivityServiceTest.php | 150 +++-
tests/Unit/Services/Calendar/Command/ImportParticipantsTest.php | 6 +-
tests/Unit/Services/Calendar/Command/MapActivityDataTest.php | 78 +-
tests/Unit/Services/Calendar/GoogleCalendarServiceTest.php | 116 +++
tests/Unit/Services/Crm/Close/ServiceTest.php | 165 +++++
tests/Unit/Services/Crm/Hubspot/ServiceTest.php | 272 ++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 25 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitMatchActivitiesTest.php | 3 +-
tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmEntitiesTraitOpportunitiesTest.php | 40 ++
tests/Unit/Services/Crm/Pipedrive/ImportOpportunityMatchActivitiesTest.php | 2 +
tests/Unit/Services/Crm/Salesforce/ServiceTest.php | 139 ++++
tests/Unit/Services/Mail/Office/EmailApiClientTest.php | 195 ++---
tests/Unit/Services/RecallAI/RecallAIServiceTest.php | 24 +-
175 files changed, 12562 insertions(+), 2162 deletions(-)
create mode 120000 CLAUDE.md
create mode 100644 app/Component/AiAutomation/Services/CrmFillingEligibilityChecker.php
delete mode 100644 app/Component/ES/ElasticSearchWorkerManager.php
delete mode 100644 app/Component/ES/Processor/Traits/SkipActivityTrait.php
delete mode 100644 app/Component/ES/Worker/ActivityWorker.php
delete mode 100644 app/Component/ES/Worker/EntityWorker.php
delete mode 100644 app/Component/ES/Worker/WorkerAmount.php
delete mode 100644 app/Component/ES/Worker/WorkerInterface.php
create mode 100644 app/Component/ProphetAi/Exceptions/InsufficientTranscriptException.php
create mode 100644 app/Component/Transcription/DTO/Http/Transcription/AssemblyAI/AssemblyAI/NoAssemblyIdException.php
create mode 100644 app/Component/Transcription/DTO/Http/Transcription/TranscriptionIsNotCorrectFormatException.php
create mode 100644 app/Console/Commands/Activities/SetupIntegration/TwilioSetS3RecordingCredentialsCommand.php
create mode 100644 app/Console/Commands/Crm/BackfillOpportunityUserFromAccountCommand.php
delete mode 100644 app/Console/Commands/Elasticsearch/AsyncUpdateEsActivities.php
create mode 100644 app/Console/Commands/IssueMcpTokenCommand.php
create mode 100644 app/Http/Middleware/McpAuditMiddleware.php
create mode 100644 app/Http/Middleware/McpTierMiddleware.php
create mode 100644 app/Mcp/Contracts/McpCallRepositoryInterface.php
create mode 100644 app/Mcp/DTO/ListCallsFilters.php
create mode 100644 app/Mcp/Errors/McpError.php
create mode 100644 app/Mcp/Repositories/McpActivityHydrator.php
create mode 100644 app/Mcp/Repositories/McpCallRepository.php
create mode 100644 app/Mcp/Repositories/McpElasticCallRepository.php
create mode 100644 app/Mcp/Servers/JiminnyServer.php
create mode 100644 app/Mcp/Tools/ListCallsTool.php
create mode 100644 app/Services/Activity/Twilio/S3RecordingCredentialsService.php
create mode 100644 config/mcp.php
create mode 100644 database/migrations/2026_04_30_120000_create_mcp_audit_log_table.php
create mode 100644 docs/mcp/explorer/explorer.html
create mode 100644 docs/mcp/explorer/explorer.template.html
create mode 100644 docs/mcp/explorer/generate.js
create mode 100644 docs/mcp/explorer/tool-explorer-meta.json
create mode 100644 docs/mcp/tools-list.json
create mode 100644 docs/mcp/tools.md
create mode 100644 front-end/src/components/shared/modals/EntityPickerModal/__tests__/useEntitiesCache.spec.ts
create mode 100644 tests/Feature/Component/Nudge/ProcessOrganisationImmediateNudgesJobTest.php
create mode 100644 tests/Feature/Mcp/IssueMcpTokenCommandTest.php
create mode 100644 tests/Feature/Mcp/ListCallsToolElasticFeatureTest.php
create mode 100644 tests/Feature/Mcp/ListCallsToolFeatureTest.php
create mode 100644 tests/Feature/Mcp/McpTestHelpersTrait.php
create mode 100644 tests/Stubs/SentryStub.php
create mode 100644 tests/Unit/Component/AiAutomation/Services/CrmFillingEligibilityCheckerTest.php
delete mode 100644 tests/Unit/Component/ES/ElasticSearchWorkerManagerTest.php
create mode 100644 tests/Unit/Component/ES/Processor/Actions/LoadDocumentsActionTest.php
delete mode 100644 tests/Unit/Component/ES/Processor/Traits/SkipActivityTraitTest.php
delete mode 100644 tests/Unit/Component/ES/Worker/ActivityWorkerTest.php
delete mode 100644 tests/Unit/Component/ES/Worker/EntityWorkerTest.php
delete mode 100644 tests/Unit/Component/ES/Worker/WorkerAmountTest.php
create mode 100644 tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesCreatorTest.php
create mode 100644 tests/Unit/Http/Controllers/Kiosk/ActivityControllerTest.php
create mode 100644 tests/Unit/Services/Activity/Twilio/S3RecordingCredentialsServiceTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ git status
On branch master
Your branch is behind 'origin/master' by 114 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Component/SCIM/Constants.php
modified: app/Component/SCIM/ScimProvisioning.php
modified: app/Component/Twilio/Conference/ConferenceManager/SoftPhoneManager.php
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/DTO/SCIM/AAD/Request/CoreUserRequest.php
modified: app/DTO/SCIM/AAD/Response/CoreUser.php
modified: app/Services/Telephony/TextMessagingService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Component/SCIM/Mutators/Attributes/User/RoleAttr.php
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Rules/ListenerRoleCannotHaveAdminOrManagerPermissionRule.php
ids.txt
public/favicon.ico
raw_sql_query.sql
tests/Unit/Component/SCIM/Mutators/Attributes/User/RoleAttrTest.php
tests/Unit/Policies/CanAccessAiReportsTest.php
tests/Unit/Rules/ListenerRoleCannotHaveAdminOrManagerPermissionRuleTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 306, done.
remote: Counting objects: 100% (299/299), done.
remote: Compressing objects: 100% (183/183), done.
remote: Total 306 (delta 213), reused 171 (delta 116), pack-reused 7 (from 1)
Receiving objects: 100% (306/306), 80.12 KiB | 1000.00 KiB/s, done.
Resolving deltas: 100% (213/213), completed with 53 local objects.
From github.com:jiminny/app
90bca4e4b2..5604af40cf master -> origin/master
4e7078fd8b..0b8343d179 JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5
098eeaa087..d5a447e492 JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup
c3a76ace91..af65249d0f JY-20749-user-can-view-recorded-meetings -> origin/JY-20749-user-can-view-recorded-meetings
d94a285ae7..7ce96cb5fe JY-20808-low-priority-indexing-queue -> origin/JY-20808-low-priority-indexing-queue
* [new branch] JY-20842-remove-partial-updater -> origin/JY-20842-remove-partial-updater
* [new branch] JY-20920-fix-participant-flip -> origin/JY-20920-fix-participant-flip
* [new branch] secfix/npm-20260519 -> origin/secfix/npm-20260519
Updating cb4ebf0c36..5604af40cf
Fast-forward
app/Component/ES/ChunkSize.php | 54 +++++++++++++++++++
app/Component/ES/Processor/DTOs/SelectionList.php | 4 +-
app/Component/ES/Processor/TargetEntitiesSelector.php | 19 ++++---
app/Component/MeetingBot/Service/ParticipantMatcher.php | 46 ++++++++++++----
app/Exceptions/RateLimitException.php | 19 ++++++-
app/Http/Middleware/McpTierMiddleware.php | 27 ++--------
app/Jobs/Crm/MatchActivityCrmData.php | 47 ++++++++++++----
app/Jobs/Middleware/HandleHubspotRateLimit.php | 42 +++++++++++++++
app/Mcp/Servers/JiminnyServer.php | 2 +
app/Mcp/Tools/GetMeTool.php | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++++
app/Models/Feature/FeatureEnum.php | 1 +
app/Services/Activity/HubSpot/ProviderResolver.php | 4 +-
app/Services/Activity/HubSpot/ProviderResolverInterface.php | 2 +-
app/Services/Activity/HubSpot/Providers/Provider.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderKixie.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderOrum.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderTwilio.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderTwilioFlex.php | 5 +-
app/Services/Activity/HubSpot/Service.php | 97 +++++++++++++++++++++++++++------
app/Services/Crm/Hubspot/Client.php | 132 +++++++++++++++++++++++++++++++++++++++++++++
app/Services/Crm/Hubspot/HubspotClientInterface.php | 15 ++++++
app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php | 21 ++++----
app/Services/Crm/Hubspot/Pagination/PaginationState.php | 2 +-
database/migrations/2026_05_13_124153_create_mcp_feature_flag.php | 25 +++++++++
tests/Feature/Mcp/GetMeToolFeatureTest.php | 140 +++++++++++++++++++++++++++++++++++++++++++++++
tests/Feature/Mcp/ListCallsToolFeatureTest.php | 2 +-
tests/Feature/Mcp/McpTestHelpersTrait.php | 19 ++++++-
tests/Unit/Component/ES/ChunkSizeTest.php | 50 +++++++++++++++++
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 27 +++++++---
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 39 ++++++++------
tests/Unit/Component/MeetingBot/Service/ParticipantMatcherTest.php | 68 ++++++++++++++++++++++-
tests/Unit/Exceptions/RateLimitExceptionTest.php | 56 +++++++++++++++++++
tests/Unit/Jobs/Crm/MatchActivityCrmDataTest.php | 8 +--
tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Activity/HubSpot/ServiceTest.php | 109 +++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ClientTest.php | 250 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/Pagination/HubspotPaginationServiceTest.php | 283 +++++++++++++++++++++---------------------------------------------------------------------------
37 files changed, 1587 insertions(+), 344 deletions(-)
create mode 100644 app/Component/ES/ChunkSize.php
create mode 100644 app/Jobs/Middleware/HandleHubspotRateLimit.php
create mode 100644 app/Mcp/Tools/GetMeTool.php
create mode 100644 database/migrations/2026_05_13_124153_create_mcp_feature_flag.php
create mode 100644 tests/Feature/Mcp/GetMeToolFeatureTest.php
create mode 100644 tests/Unit/Component/ES/ChunkSizeTest.php
create mode 100644 tests/Unit/Exceptions/RateLimitExceptionTest.php
create mode 100644 tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20676-delete-report-related-objects
Switched to a new branch 'JY-20676-delete-report-related-objects'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5690/5690 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) app/Console/Commands/JiminnyDebugCommand.php (statement_indentation, blank_line_before_statement)
---------- begin diff ----------
--- /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
+++ /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
@@ -23,6 +23,7 @@
if ($action === 'redis-set') {
$this->testRedisSet();
+
return;
}
@@ -45,7 +46,7 @@
$ttl = 60;
try {
-// $result = Redis::set($testKey, $testValue, 'EX', $ttl, 'NX');
+ // $result = Redis::set($testKey, $testValue, 'EX', $ttl, 'NX');
$result = Redis::set($testKey, $testValue, ['nx', 'ex' => $ttl]);
if ($result) {
----------- end diff -----------
Fixed 1 of 5690 files in 50.673 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at https://docs.docker.com/go/debug-cli/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at https://docs.docker.c...
|
iTerm2
|
APP (-zsh)
|
NULL
|
58582
|
|
59022
|
remote: Enumerating objects: 1047, done.
remote: C remote: Enumerating objects: 1047, done.
remote: Counting objects: 100% (832/832), done.
remote: Compressing objects: 100% (298/298), done.
remote: Total 1047 (delta 634), reused 596 (delta 534), pack-reused 215 (from 3)
Receiving objects: 100% (1047/1047), 353.16 KiB | 1.56 MiB/s, done.
Resolving deltas: 100% (687/687), completed with 107 local objects.
From github.com:jiminny/app
907c54896c..34656c53ed pipedrive-sdk-poc -> origin/pipedrive-sdk-poc
03325ec50f..4e7078fd8b JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5
e7d231e163..bc6a3fce6b JY-20725-handle-HS-search-rate-limit -> origin/JY-20725-handle-HS-search-rate-limit
* [new branch] JY-20749-user-can-view-recorded-meetings -> origin/JY-20749-user-can-view-recorded-meetings
98ca281a04..e0351be069 JY-20808-low-priority-indexing-queue -> origin/JY-20808-low-priority-indexing-queue
569abb5149..3906a9238a JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
ad6c2a86e8..50eb6afba9 JY-20846-mcp-enable-the-ai-to-know-details-about-the-user -> origin/JY-20846-mcp-enable-the-ai-to-know-details-about-the-user
* [new branch] JY-20893-chunk-control-per-update-target -> origin/JY-20893-chunk-control-per-update-target
31c62924a5..cb4ebf0c36 master -> origin/master
Updating 907c54896c..34656c53ed
Fast-forward
PIPEDRIVE_V2_MIGRATION_TICKETS.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (pipedrive-sdk-poc) $ co master
M .env.local
M config/logging.php
Switched to branch 'master'
Your branch is behind 'origin/master' by 31 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
Updating 31c62924a5..cb4ebf0c36
Fast-forward
app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 20 ------
app/Services/Calendar/CalendarActivityService.php | 46 +++++++++++++
app/Services/Calendar/Command/MapActivityData.php | 106 +++-------------------------
docs/mcp/explorer/explorer.html | 104 +++++++++++++++++++++++++---
docs/mcp/explorer/explorer.template.html | 102 ++++++++++++++++++++++++---
docs/mcp/tools-list.json | 373 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
docs/mcp/tools.md | 117 +++++++++++++++++++++++--------
tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 16 +----
tests/Unit/Component/ES/Listeners/UpdateMultipleTargetsListenerTest.php | 10 ---
tests/Unit/Component/ES/Listeners/UpdateSingleTargetListenerTest.php | 6 --
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 ---
tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 15 ++--
tests/Unit/Component/ES/UpdateProcessManagerTest.php | 2 -
tests/Unit/Services/Calendar/CalendarActivityServiceTest.php | 150 ++++++++++++++++++++++++++++++++++++++--
tests/Unit/Services/Calendar/Command/MapActivityDataTest.php | 78 ++-------------------
15 files changed, 832 insertions(+), 322 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20613-allow-owner-role-on-team-setup
Switched to a new branch 'JY-20613-allow-owner-role-on-team-setup'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5682/5682 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5682 files in 56.978 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5682/5682 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5682 files in 49.910 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git pull
remote: Enumerating objects: 248, done.
remote: Counting objects: 100% (128/128), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 59 (delta 43), reused 44 (delta 33), pack-reused 0 (from 0)
Unpacking objects: 100% (59/59), 10.48 KiB | 228.00 KiB/s, done.
From github.com:jiminny/app
b7df560451..190239dfd4 JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup
e0351be069..d94a285ae7 JY-20808-low-priority-indexing-queue -> origin/JY-20808-low-priority-indexing-queue
* [new branch] JY-20920-fix-participant-matcher -> origin/JY-20920-fix-participant-matcher
cb4ebf0c36..90bca4e4b2 master -> origin/master
Merge made by the 'ort' strategy.
app/Component/ES/ChunkSize.php | 54 +++++++++++++++++++++++++++
app/Component/ES/Processor/DTOs/SelectionList.php | 4 +-
app/Component/ES/Processor/TargetEntitiesSelector.php | 19 ++++++----
app/Http/Middleware/McpTierMiddleware.php | 27 +++-----------
app/Mcp/Servers/JiminnyServer.php | 2 +
app/Mcp/Tools/GetMeTool.php | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/Models/Feature/FeatureEnum.php | 1 +
database/migrations/2026_05_13_124153_create_mcp_feature_flag.php | 25 +++++++++++++
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue | 52 ++++++++++++++++++--------
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/__tests__/EditTeamModal.spec.js | 14 +++++++
tests/Feature/Mcp/GetMeToolFeatureTest.php | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Feature/Mcp/ListCallsToolFeatureTest.php | 2 +-
tests/Feature/Mcp/McpTestHelpersTrait.php | 19 +++++++++-
tests/Unit/Component/ES/ChunkSizeTest.php | 50 +++++++++++++++++++++++++
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 27 ++++++++++----
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 39 +++++++++++---------
16 files changed, 557 insertions(+), 75 deletions(-)
create mode 100644 app/Component/ES/ChunkSize.php
create mode 100644 app/Mcp/Tools/GetMeTool.php
create mode 100644 database/migrations/2026_05_13_124153_create_mcp_feature_flag.php
create mode 100644 tests/Feature/Mcp/GetMeToolFeatureTest.php
create mode 100644 tests/Unit/Component/ES/ChunkSizeTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git push
Enumerating objects: 40, done.
Counting objects: 100% (34/34), done.
Delta compression using up to 8 threads
Compressing objects: 100% (18/18), done.
Writing objects: 100% (18/18), 1.58 KiB | 1.58 MiB/s, done.
Total 18 (delta 15), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (15/15), completed with 13 local objects.
To github.com:jiminny/app.git
190239dfd4..ec1b261264 JY-20613-allow-owner-role-on-team-setup -> JY-20613-allow-owner-role-on-team-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ gbr
* JY-20613-allow-owner-role-on-team-setup
pipedrive-sdk-poc
master
JY-20903-update_activity-stage-on-opportunity-change
JY-20904-fix-update-es-on-activity-command
JY-20891-improve-sms-text-relays
JY-20725-handle-HS-search-rate-limit
JY-20818-move-AJ-reports-to-separated-datadog-metric
JY-20773-fix-automated-reports-user-pilot-tracking
JY-20157-AJ-report-not-send-notification
JY-20508-notify-before-AJ-report-expiration
JY-20372-ai-reports-promotion-pages
JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null
JY-20738-debug-AJ-tracking-UP
a
JY-18909-automated-reports-ask-jiminny
JY-20692-fix-integration-app-[API_KEY]
JY-20553-debug-crm-sync-delays
JY-20698-fix-SF-activity-types-on-new-playbook
JY-20543-AJ-report-tracking
JY-20384-handle-auto-sync-with-no-access-to-event-type
JY-20458-ask-jiminny-user-definitions
JY-19666-fix-import-contacts-account-association
JY-19666-HS-import-contacts-and-accounts-batch-job
JY-20458-Ask-Jiminny-Reports
JY-20200-batch-update-CRM-objects-Salesforce
JY-19666-HS-webhooks-add-contact-and-company
JY-20348-trigger-setup-DI-layout-on-team-creation
JY-20326-refactor-info-message-in-command
JY-20317-fix-auto-log-delay-issue-on-all-channels-disabled
JY-20312-remove-on-update-change-last-synced-at-crm-configurations
JY-20306-SF-skip-auto-sync-for-task-based-playbook
JY-20192-remove-deleted-team-from-saved-search-filters
JY-20197-import-opportunity-batch-job
JY-20293-enable-status-field-for-pipedrive-deals
JY-20191-remove-commands-interactive-prompts
JY-20118-change-default-sync-strategy
JY-20183-add-cache-on-auto-log-delay
JY-20197-add-import-opportunity-batch-job
20118-hs-opportunity-make-webhook-strategy-default
JY-20118-make-default-hs-opportunity-sync-strategy-webhook-based
JY-20196-handle-opportunity-without-note
JY-20118-improve-opportunity-import
JY-20189-handle-activity-search-on-deleted-groups
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ co JY-20725-handle-HS-search-rate-limit
M .env.local
M config/logging.php
Switched to branch 'JY-20725-handle-HS-search-rate-limit'
Your branch is behind 'origin/JY-20725-handle-HS-search-rate-limit' by 439 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ git pull
Updating 0f3e438941..bc6a3fce6b
Fast-forward
.gitignore | 3 +-
.windsurfrules | 168 ++---
CLAUDE.md | 1 +
app/Component/ActivityAnalytics/Service/CalculateTalkTimeOffsetsFromTranscription.php | 24 +-
app/Component/AiActivityType/Services/AiActivityTypeEligibilityChecker.php | 28 +-
app/Component/AiAutomation/Actions/PrepareUpdateDtoAction.php | 32 +-
app/Component/AiAutomation/Services/CrmFillingEligibilityChecker.php | 47 ++
app/Component/AiAutomation/TestCrmAiPromptService.php | 14 +
app/Component/AiCallScoring/Services/AiCallScoringEligibilityChecker.php | 9 +
app/Component/ES/ElasticSearchDocumentPartialUpdater.php | 13 +-
app/Component/ES/ElasticSearchWorkerManager.php | 86 ---
app/Component/ES/Processor/Actions/LoadDocumentsAction.php | 80 +--
app/Component/ES/Processor/EntityQueryBuilder.php | 12 +-
app/Component/ES/Processor/TargetEntitiesSelector.php | 2 +-
app/Component/ES/Processor/Traits/SkipActivityTrait.php | 25 -
app/Component/ES/Repositories/EsResetActivityRepository.php | 11 +-
app/Component/ES/Worker/ActivityWorker.php | 73 --
app/Component/ES/Worker/EntityWorker.php | 44 --
app/Component/ES/Worker/WorkerAmount.php | 60 --
app/Component/ES/Worker/WorkerInterface.php | 15 -
app/Component/ElasticSearch/Contract/Searchable.php | 4 +
app/Component/Encoding/Job/AnalyzeTrackChannelsJob.php | 20 +-
app/Component/Encoding/Service/GenerateSpeechFromSilenceService.php | 85 ++-
app/Component/FFMpeg/Services/GetSpeechIntervalsService.php | 18 +-
app/Component/LanguageDetection/Services/FindSpeechTimeService.php | 22 +-
app/Component/Nudge/Job/ProcessOrganisationImmediateNudgesJob.php | 218 +++++-
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 +
app/Component/ParticipantSpeech/Services/ParticipantSpeechesCreator.php | 33 +
app/Component/ParticipantSpeech/Services/ParticipantSpeechesDeleter.php | 15 +
app/Component/ParticipantSpeech/Services/ParticipantSpeechesProvider.php | 51 +-
app/Component/ParticipantSpeech/Services/ParticipantSpeechesUploader.php | 36 +
app/Component/ProphetAi/Exceptions/InsufficientTranscriptException.php | 11 +
app/Component/Transcription/DTO/Http/Transcription/AssemblyAI/AssemblyAI/NoAssemblyIdException.php | 11 +
app/Component/Transcription/DTO/Http/Transcription/AssemblyAI/AssemblyAI/SuccessfulResponse.php | 6 +
app/Component/Transcription/DTO/Http/Transcription/TranscriptionIsNotCorrectFormatException.php | 11 +
app/Component/Transcription/Diarization/Services/GetNormalizedParticipantSpeechesService.php | 23 +-
app/Component/Transcription/Diarization/Source/MeetingBotSource.php | 16 +-
app/Component/Transcription/TranscriptionProcessor/TranscriptionProcessor.php | 3 +
app/Console/Commands/Activities/ActivityHardDeleteCommand.php | 4 +-
app/Console/Commands/Activities/Copy.php | 2 +
app/Console/Commands/Activities/SetupIntegration/TwilioSetS3RecordingCredentialsCommand.php | 119 ++++
app/Console/Commands/Activities/UpdateActivityElasticSearchDocumentCommand.php | 10 +-
app/Console/Commands/Crm/BackfillOpportunityUserFromAccountCommand.php | 126 ++++
app/Console/Commands/Elasticsearch/AsyncUpdateEsActivities.php | 19 -
app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 50 +-
app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 30 +-
app/Console/Commands/GeckoExport/GeckoExportParticipantSpeechesCommand.php | 14 +-
app/Console/Commands/IssueMcpTokenCommand.php | 84 +++
app/Console/Commands/JiminnyDebugCommand.php | 7 +-
app/Console/Commands/Tracks/CleanupActivityTracksCommand.php | 2 +-
app/Console/Kernel.php | 6 +-
app/Contracts/Services/Calendar/CalendarTrait.php | 80 ++-
app/Events/AutomatedReports/AutomatedReportGenerated.php | 3 +
app/Http/Controllers/API/AiCallScoring/AiScorecardController.php | 7 +-
app/Http/Controllers/API/TeamAiAutomationController.php | 8 +
app/Http/Controllers/CustomerApi/CustomerApiController.php | 4 +-
app/Http/Controllers/Kiosk/ActivityController.php | 58 +-
app/Http/Controllers/Settings/PlaybookController.php | 15 +-
app/Http/Kernel.php | 23 +
app/Http/Middleware/McpAuditMiddleware.php | 156 ++++
app/Http/Middleware/McpTierMiddleware.php | 54 ++
app/Http/Requests/API/V2/ZapierUploadActivityRequest.php | 28 +-
app/Jobs/Activity/Import/ImportTwilioVideoSpeechesJob.php | 25 +-
app/Jobs/Activity/Import/IsActivityReadyForProcessingJob.php | 10 +-
app/Jobs/Calendar/SetupCalendarSync.php | 21 +-
app/Jobs/ImportRemoteTrackJob.php | 96 ++-
app/Jobs/Mailbox/EmailTextRelay.php | 15 +-
app/Mcp/Contracts/McpCallRepositoryInterface.php | 30 +
app/Mcp/DTO/ListCallsFilters.php | 29 +
app/Mcp/Errors/McpError.php | 123 ++++
app/Mcp/Repositories/McpActivityHydrator.php | 145 ++++
app/Mcp/Repositories/McpCallRepository.php | 84 +++
app/Mcp/Repositories/McpElasticCallRepository.php | 171 +++++
app/Mcp/Servers/JiminnyServer.php | 38 +
app/Mcp/Tools/ListCallsTool.php | 205 ++++++
app/Models/Activity.php | 10 +-
app/Models/Activity/Transcription.php | 17 +-
app/Models/ElasticSearch/OpportunityElasticSearchTrait.php | 5 +
app/Models/Participant.php | 1 +
app/Providers/AppServiceProvider.php | 22 +
app/Repositories/Crm/ContactRepository.php | 69 +-
app/Repositories/ParticipantSpeechRepository.php | 13 +-
app/Services/Activity/ParticipantsService.php | 19 +-
app/Services/Activity/Twilio/S3RecordingCredentialsService.php | 82 +++
app/Services/ActivityService.php | 21 +-
app/Services/Calendar/CalendarActivityService.php | 46 ++
app/Services/Calendar/Command/ImportParticipants.php | 1 +
app/Services/Calendar/Command/MapActivityData.php | 106 +--
app/Services/Calendar/GoogleCalendarService.php | 12 +-
app/Services/Crm/Close/Processor/OpportunityProcessor.php | 2 +-
app/Services/Crm/Close/Service.php | 22 +-
app/Services/Crm/Copper/Service.php | 12 +-
app/Services/Crm/Hubspot/Service.php | 154 +++-
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 88 ++-
app/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmEntitiesTrait.php | 22 +-
app/Services/Crm/Pipedrive/Service.php | 17 +-
app/Services/Crm/Salesforce/Service.php | 42 +-
app/Services/Mail/Office/EmailApiClient.php | 129 +---
app/Services/RecallAI/Commands/ScheduleBotCommand.php | 39 +-
app/Services/RecallAI/RecallAIService.php | 22 +-
composer.json | 3 +-
composer.lock | 87 ++-
config/mcp.php | 23 +
database/migrations/2026_04_30_120000_create_mcp_audit_log_table.php | 36 +
docs/mcp/explorer/explorer.html | 697 ++++++++++++++++++
docs/mcp/explorer/explorer.template.html | 697 ++++++++++++++++++
docs/mcp/explorer/generate.js | 215 ++++++
docs/mcp/explorer/tool-explorer-meta.json | 11 +
docs/mcp/tools-list.json | 2536 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
docs/mcp/tools.md | 621 ++++++++++++++++
front-end/package.json | 4 +-
front-end/src/components/Settings/OrgSettings/AiAutomation/CrmFilling/TemplateFieldForm.vue | 28 +-
front-end/src/components/Settings/OrgSettings/Playbooks/AddEditPlaybook.vue | 10 +
front-end/src/components/playback/comments/ActivityComment.less | 10 +-
front-end/src/components/shared/PromptTester/PromptTester.vue | 12 +-
front-end/src/components/shared/__tests__/PromptTester.spec.js | 35 +
front-end/src/components/shared/modals/EntityPickerModal/__tests__/useEntitiesCache.spec.ts | 37 +
front-end/src/components/shared/modals/EntityPickerModal/useEntitiesCache.ts | 9 +
front-end/yarn.lock | 16 +-
phpstan-baseline.neon | 50 --
routes/api.php | 11 +
sonar-project.properties | 91 ++-
tests/Feature/Component/Nudge/ProcessOrganisationImmediateNudgesJobTest.php | 534 ++++++++++++++
tests/Feature/Jobs/ImportRemoteTrackJobTest.php | 283 +++++++-
tests/Feature/Mcp/IssueMcpTokenCommandTest.php | 53 ++
tests/Feature/Mcp/ListCallsToolElasticFeatureTest.php | 155 ++++
tests/Feature/Mcp/ListCallsToolFeatureTest.php | 352 ++++++++++
tests/Feature/Mcp/McpTestHelpersTrait.php | 77 ++
tests/Feature/Services/Team/TeamDeleteHandlers/Retention/RetentionRepositoryHandlerTest.php | 1 +
tests/Stubs/SentryStub.php | 18 +
tests/Unit/Component/ActivityAnalytics/Service/CalculateTalkTimeOffsetFromTranscriptionTest.php | 28 +-
tests/Unit/Component/AiActivityType/Services/AiActivityTypeEligibilityCheckerTest.php | 103 ++-
tests/Unit/Component/AiAutomation/Actions/PrepareUpdateDtoActionTest.php | 91 +++
tests/Unit/Component/AiAutomation/Services/CrmFillingEligibilityCheckerTest.php | 124 ++++
tests/Unit/Component/AiAutomation/TestCrmAiPromptServiceTest.php | 67 +-
tests/Unit/Component/AiCallScoring/Services/AiCallScoringEligibilityCheckerTest.php | 55 ++
tests/Unit/Component/ES/ElasticSearchWorkerManagerTest.php | 135 ----
tests/Unit/Component/ES/Processor/Actions/LoadDocumentsActionTest.php | 220 ++++++
tests/Unit/Component/ES/Processor/EntityQueryBuilderTest.php | 21 +-
tests/Unit/Component/ES/Processor/Traits/SkipActivityTraitTest.php | 51 --
tests/Unit/Component/ES/Worker/ActivityWorkerTest.php | 174 -----
tests/Unit/Component/ES/Worker/EntityWorkerTest.php | 97 ---
tests/Unit/Component/ES/Worker/WorkerAmountTest.php | 116 ---
tests/Unit/Component/Encoding/Job/AnalyzeTrackChannelsJobTest.php | 52 +-
tests/Unit/Component/Encoding/Service/GenerateSpeechFromSilenceServiceTest.php | 171 ++---
tests/Unit/Component/FFMpeg/Services/GetSpeechIntervalsTest.php | 36 +-
tests/Unit/Component/LanguageDetection/Services/FindSpeechTimeServiceTest.php | 20 +-
tests/Unit/Component/MobileSettings/MobileSettingsControllerTest.php | 5 +-
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesCreatorTest.php | 75 ++
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesDeleterTest.php | 63 ++
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesProviderTest.php | 134 ++++
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesUploaderTest.php | 57 ++
tests/Unit/Component/Transcription/Diarization/Services/GetNormalizedParticipantSpeechesServiceTest.php | 51 +-
tests/Unit/Component/Transcription/Diarization/Source/MeetingBotSourceTest.php | 29 +-
tests/Unit/Contracts/Services/Calendar/CalendarTraitTest.php | 58 +-
tests/Unit/Http/Controllers/Kiosk/ActivityControllerTest.php | 159 +++++
tests/Unit/Jobs/Activity/Import/ImportTwilioVideoSpeechesJobTest.php | 22 +-
tests/Unit/Jobs/Activity/Import/IsActivityReadyForProcessingJobTest.php | 26 +-
tests/Unit/Jobs/Calendar/SetupCalendarSyncTest.php | 25 -
tests/Unit/Services/Activity/ParticipantsServiceTest.php | 12 +-
tests/Unit/Services/Activity/Twilio/S3RecordingCredentialsServiceTest.php | 180 +++++
tests/Unit/Services/ActivityServiceTest.php | 132 ++++
tests/Unit/Services/Calendar/CalendarActivityServiceTest.php | 150 +++-
tests/Unit/Services/Calendar/Command/ImportParticipantsTest.php | 6 +-
tests/Unit/Services/Calendar/Command/MapActivityDataTest.php | 78 +-
tests/Unit/Services/Calendar/GoogleCalendarServiceTest.php | 116 +++
tests/Unit/Services/Crm/Close/ServiceTest.php | 165 +++++
tests/Unit/Services/Crm/Hubspot/ServiceTest.php | 272 ++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 25 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitMatchActivitiesTest.php | 3 +-
tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmEntitiesTraitOpportunitiesTest.php | 40 ++
tests/Unit/Services/Crm/Pipedrive/ImportOpportunityMatchActivitiesTest.php | 2 +
tests/Unit/Services/Crm/Salesforce/ServiceTest.php | 139 ++++
tests/Unit/Services/Mail/Office/EmailApiClientTest.php | 195 ++---
tests/Unit/Services/RecallAI/RecallAIServiceTest.php | 24 +-
175 files changed, 12562 insertions(+), 2162 deletions(-)
create mode 120000 CLAUDE.md
create mode 100644 app/Component/AiAutomation/Services/CrmFillingEligibilityChecker.php
delete mode 100644 app/Component/ES/ElasticSearchWorkerManager.php
delete mode 100644 app/Component/ES/Processor/Traits/SkipActivityTrait.php
delete mode 100644 app/Component/ES/Worker/ActivityWorker.php
delete mode 100644 app/Component/ES/Worker/EntityWorker.php
delete mode 100644 app/Component/ES/Worker/WorkerAmount.php
delete mode 100644 app/Component/ES/Worker/WorkerInterface.php
create mode 100644 app/Component/ProphetAi/Exceptions/InsufficientTranscriptException.php
create mode 100644 app/Component/Transcription/DTO/Http/Transcription/AssemblyAI/AssemblyAI/NoAssemblyIdException.php
create mode 100644 app/Component/Transcription/DTO/Http/Transcription/TranscriptionIsNotCorrectFormatException.php
create mode 100644 app/Console/Commands/Activities/SetupIntegration/TwilioSetS3RecordingCredentialsCommand.php
create mode 100644 app/Console/Commands/Crm/BackfillOpportunityUserFromAccountCommand.php
delete mode 100644 app/Console/Commands/Elasticsearch/AsyncUpdateEsActivities.php
create mode 100644 app/Console/Commands/IssueMcpTokenCommand.php
create mode 100644 app/Http/Middleware/McpAuditMiddleware.php
create mode 100644 app/Http/Middleware/McpTierMiddleware.php
create mode 100644 app/Mcp/Contracts/McpCallRepositoryInterface.php
create mode 100644 app/Mcp/DTO/ListCallsFilters.php
create mode 100644 app/Mcp/Errors/McpError.php
create mode 100644 app/Mcp/Repositories/McpActivityHydrator.php
create mode 100644 app/Mcp/Repositories/McpCallRepository.php
create mode 100644 app/Mcp/Repositories/McpElasticCallRepository.php
create mode 100644 app/Mcp/Servers/JiminnyServer.php
create mode 100644 app/Mcp/Tools/ListCallsTool.php
create mode 100644 app/Services/Activity/Twilio/S3RecordingCredentialsService.php
create mode 100644 config/mcp.php
create mode 100644 database/migrations/2026_04_30_120000_create_mcp_audit_log_table.php
create mode 100644 docs/mcp/explorer/explorer.html
create mode 100644 docs/mcp/explorer/explorer.template.html
create mode 100644 docs/mcp/explorer/generate.js
create mode 100644 docs/mcp/explorer/tool-explorer-meta.json
create mode 100644 docs/mcp/tools-list.json
create mode 100644 docs/mcp/tools.md
create mode 100644 front-end/src/components/shared/modals/EntityPickerModal/__tests__/useEntitiesCache.spec.ts
create mode 100644 tests/Feature/Component/Nudge/ProcessOrganisationImmediateNudgesJobTest.php
create mode 100644 tests/Feature/Mcp/IssueMcpTokenCommandTest.php
create mode 100644 tests/Feature/Mcp/ListCallsToolElasticFeatureTest.php
create mode 100644 tests/Feature/Mcp/ListCallsToolFeatureTest.php
create mode 100644 tests/Feature/Mcp/McpTestHelpersTrait.php
create mode 100644 tests/Stubs/SentryStub.php
create mode 100644 tests/Unit/Component/AiAutomation/Services/CrmFillingEligibilityCheckerTest.php
delete mode 100644 tests/Unit/Component/ES/ElasticSearchWorkerManagerTest.php
create mode 100644 tests/Unit/Component/ES/Processor/Actions/LoadDocumentsActionTest.php
delete mode 100644 tests/Unit/Component/ES/Processor/Traits/SkipActivityTraitTest.php
delete mode 100644 tests/Unit/Component/ES/Worker/ActivityWorkerTest.php
delete mode 100644 tests/Unit/Component/ES/Worker/EntityWorkerTest.php
delete mode 100644 tests/Unit/Component/ES/Worker/WorkerAmountTest.php
create mode 100644 tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesCreatorTest.php
create mode 100644 tests/Unit/Http/Controllers/Kiosk/ActivityControllerTest.php
create mode 100644 tests/Unit/Services/Activity/Twilio/S3RecordingCredentialsServiceTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ git status
On branch master
Your branch is behind 'origin/master' by 114 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Component/SCIM/Constants.php
modified: app/Component/SCIM/ScimProvisioning.php
modified: app/Component/Twilio/Conference/ConferenceManager/SoftPhoneManager.php
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/DTO/SCIM/AAD/Request/CoreUserRequest.php
modified: app/DTO/SCIM/AAD/Response/CoreUser.php
modified: app/Services/Telephony/TextMessagingService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Component/SCIM/Mutators/Attributes/User/RoleAttr.php
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Rules/ListenerRoleCannotHaveAdminOrManagerPermissionRule.php
ids.txt
public/favicon.ico
raw_sql_query.sql
tests/Unit/Component/SCIM/Mutators/Attributes/User/RoleAttrTest.php
tests/Unit/Policies/CanAccessAiReportsTest.php
tests/Unit/Rules/ListenerRoleCannotHaveAdminOrManagerPermissionRuleTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 306, done.
remote: Counting objects: 100% (299/299), done.
remote: Compressing objects: 100% (183/183), done.
remote: Total 306 (delta 213), reused 171 (delta 116), pack-reused 7 (from 1)
Receiving objects: 100% (306/306), 80.12 KiB | 1000.00 KiB/s, done.
Resolving deltas: 100% (213/213), completed with 53 local objects.
From github.com:jiminny/app
90bca4e4b2..5604af40cf master -> origin/master
4e7078fd8b..0b8343d179 JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5
098eeaa087..d5a447e492 JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup
c3a76ace91..af65249d0f JY-20749-user-can-view-recorded-meetings -> origin/JY-20749-user-can-view-recorded-meetings
d94a285ae7..7ce96cb5fe JY-20808-low-priority-indexing-queue -> origin/JY-20808-low-priority-indexing-queue
* [new branch] JY-20842-remove-partial-updater -> origin/JY-20842-remove-partial-updater
* [new branch] JY-20920-fix-participant-flip -> origin/JY-20920-fix-participant-flip
* [new branch] secfix/npm-20260519 -> origin/secfix/npm-20260519
Updating cb4ebf0c36..5604af40cf
Fast-forward
app/Component/ES/ChunkSize.php | 54 +++++++++++++++++++
app/Component/ES/Processor/DTOs/SelectionList.php | 4 +-
app/Component/ES/Processor/TargetEntitiesSelector.php | 19 ++++---
app/Component/MeetingBot/Service/ParticipantMatcher.php | 46 ++++++++++++----
app/Exceptions/RateLimitException.php | 19 ++++++-
app/Http/Middleware/McpTierMiddleware.php | 27 ++--------
app/Jobs/Crm/MatchActivityCrmData.php | 47 ++++++++++++----
app/Jobs/Middleware/HandleHubspotRateLimit.php | 42 +++++++++++++++
app/Mcp/Servers/JiminnyServer.php | 2 +
app/Mcp/Tools/GetMeTool.php | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++++
app/Models/Feature/FeatureEnum.php | 1 +
app/Services/Activity/HubSpot/ProviderResolver.php | 4 +-
app/Services/Activity/HubSpot/ProviderResolverInterface.php | 2 +-
app/Services/Activity/HubSpot/Providers/Provider.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderKixie.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderOrum.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderTwilio.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderTwilioFlex.php | 5 +-
app/Services/Activity/HubSpot/Service.php | 97 +++++++++++++++++++++++++++------
app/Services/Crm/Hubspot/Client.php | 132 +++++++++++++++++++++++++++++++++++++++++++++
app/Services/Crm/Hubspot/HubspotClientInterface.php | 15 ++++++
app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php | 21 ++++----
app/Services/Crm/Hubspot/Pagination/PaginationState.php | 2 +-
database/migrations/2026_05_13_124153_create_mcp_feature_flag.php | 25 +++++++++
tests/Feature/Mcp/GetMeToolFeatureTest.php | 140 +++++++++++++++++++++++++++++++++++++++++++++++
tests/Feature/Mcp/ListCallsToolFeatureTest.php | 2 +-
tests/Feature/Mcp/McpTestHelpersTrait.php | 19 ++++++-
tests/Unit/Component/ES/ChunkSizeTest.php | 50 +++++++++++++++++
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 27 +++++++---
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 39 ++++++++------
tests/Unit/Component/MeetingBot/Service/ParticipantMatcherTest.php | 68 ++++++++++++++++++++++-
tests/Unit/Exceptions/RateLimitExceptionTest.php | 56 +++++++++++++++++++
tests/Unit/Jobs/Crm/MatchActivityCrmDataTest.php | 8 +--
tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Activity/HubSpot/ServiceTest.php | 109 +++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ClientTest.php | 250 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/Pagination/HubspotPaginationServiceTest.php | 283 +++++++++++++++++++++---------------------------------------------------------------------------
37 files changed, 1587 insertions(+), 344 deletions(-)
create mode 100644 app/Component/ES/ChunkSize.php
create mode 100644 app/Jobs/Middleware/HandleHubspotRateLimit.php
create mode 100644 app/Mcp/Tools/GetMeTool.php
create mode 100644 database/migrations/2026_05_13_124153_create_mcp_feature_flag.php
create mode 100644 tests/Feature/Mcp/GetMeToolFeatureTest.php
create mode 100644 tests/Unit/Component/ES/ChunkSizeTest.php
create mode 100644 tests/Unit/Exceptions/RateLimitExceptionTest.php
create mode 100644 tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20676-delete-report-related-objects
Switched to a new branch 'JY-20676-delete-report-related-objects'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5690/5690 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) app/Console/Commands/JiminnyDebugCommand.php (statement_indentation, blank_line_before_statement)
---------- begin diff ----------
--- /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
+++ /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
@@ -23,6 +23,7 @@
if ($action === 'redis-set') {
$this->testRedisSet();
+
return;
}
@@ -45,7 +46,7 @@
$ttl = 60;
try {
-// $result = Redis::set($testKey, $testValue, 'EX', $ttl, 'NX');
+ // $result = Redis::set($testKey, $testValue, 'EX', $ttl, 'NX');
$result = Redis::set($testKey, $testValue, ['nx', 'ex' => $ttl]);
if ($result) {
----------- end diff -----------
Fixed 1 of 5690 files in 50.673 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at https://docs.docker.com/go/debug-cli/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at https://docs.docker.c...
|
iTerm2
|
APP (-zsh)
|
NULL
|
59022
|
|
59023
|
remote: Enumerating objects: 1047, done.
remote: C remote: Enumerating objects: 1047, done.
remote: Counting objects: 100% (832/832), done.
remote: Compressing objects: 100% (298/298), done.
remote: Total 1047 (delta 634), reused 596 (delta 534), pack-reused 215 (from 3)
Receiving objects: 100% (1047/1047), 353.16 KiB | 1.56 MiB/s, done.
Resolving deltas: 100% (687/687), completed with 107 local objects.
From github.com:jiminny/app
907c54896c..34656c53ed pipedrive-sdk-poc -> origin/pipedrive-sdk-poc
03325ec50f..4e7078fd8b JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5
e7d231e163..bc6a3fce6b JY-20725-handle-HS-search-rate-limit -> origin/JY-20725-handle-HS-search-rate-limit
* [new branch] JY-20749-user-can-view-recorded-meetings -> origin/JY-20749-user-can-view-recorded-meetings
98ca281a04..e0351be069 JY-20808-low-priority-indexing-queue -> origin/JY-20808-low-priority-indexing-queue
569abb5149..3906a9238a JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
ad6c2a86e8..50eb6afba9 JY-20846-mcp-enable-the-ai-to-know-details-about-the-user -> origin/JY-20846-mcp-enable-the-ai-to-know-details-about-the-user
* [new branch] JY-20893-chunk-control-per-update-target -> origin/JY-20893-chunk-control-per-update-target
31c62924a5..cb4ebf0c36 master -> origin/master
Updating 907c54896c..34656c53ed
Fast-forward
PIPEDRIVE_V2_MIGRATION_TICKETS.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (pipedrive-sdk-poc) $ co master
M .env.local
M config/logging.php
Switched to branch 'master'
Your branch is behind 'origin/master' by 31 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
Updating 31c62924a5..cb4ebf0c36
Fast-forward
app/Component/ES/Processor/Traits/SelectEntityListTrait.php | 20 ------
app/Services/Calendar/CalendarActivityService.php | 46 +++++++++++++
app/Services/Calendar/Command/MapActivityData.php | 106 +++-------------------------
docs/mcp/explorer/explorer.html | 104 +++++++++++++++++++++++++---
docs/mcp/explorer/explorer.template.html | 102 ++++++++++++++++++++++++---
docs/mcp/tools-list.json | 373 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
docs/mcp/tools.md | 117 +++++++++++++++++++++++--------
tests/Unit/Component/ES/AsyncUpdateElasticSearchTest.php | 16 +----
tests/Unit/Component/ES/Listeners/UpdateMultipleTargetsListenerTest.php | 10 ---
tests/Unit/Component/ES/Listeners/UpdateSingleTargetListenerTest.php | 6 --
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 9 ---
tests/Unit/Component/ES/Processor/Traits/SelectEntityListTraitTest.php | 15 ++--
tests/Unit/Component/ES/UpdateProcessManagerTest.php | 2 -
tests/Unit/Services/Calendar/CalendarActivityServiceTest.php | 150 ++++++++++++++++++++++++++++++++++++++--
tests/Unit/Services/Calendar/Command/MapActivityDataTest.php | 78 ++-------------------
15 files changed, 832 insertions(+), 322 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20613-allow-owner-role-on-team-setup
Switched to a new branch 'JY-20613-allow-owner-role-on-team-setup'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5682/5682 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5682 files in 56.978 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5682/5682 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5682 files in 49.910 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git pull
remote: Enumerating objects: 248, done.
remote: Counting objects: 100% (128/128), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 59 (delta 43), reused 44 (delta 33), pack-reused 0 (from 0)
Unpacking objects: 100% (59/59), 10.48 KiB | 228.00 KiB/s, done.
From github.com:jiminny/app
b7df560451..190239dfd4 JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup
e0351be069..d94a285ae7 JY-20808-low-priority-indexing-queue -> origin/JY-20808-low-priority-indexing-queue
* [new branch] JY-20920-fix-participant-matcher -> origin/JY-20920-fix-participant-matcher
cb4ebf0c36..90bca4e4b2 master -> origin/master
Merge made by the 'ort' strategy.
app/Component/ES/ChunkSize.php | 54 +++++++++++++++++++++++++++
app/Component/ES/Processor/DTOs/SelectionList.php | 4 +-
app/Component/ES/Processor/TargetEntitiesSelector.php | 19 ++++++----
app/Http/Middleware/McpTierMiddleware.php | 27 +++-----------
app/Mcp/Servers/JiminnyServer.php | 2 +
app/Mcp/Tools/GetMeTool.php | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/Models/Feature/FeatureEnum.php | 1 +
database/migrations/2026_05_13_124153_create_mcp_feature_flag.php | 25 +++++++++++++
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue | 52 ++++++++++++++++++--------
front-end/src/components/Settings/Kiosk/modals/EditTeamModal/__tests__/EditTeamModal.spec.js | 14 +++++++
tests/Feature/Mcp/GetMeToolFeatureTest.php | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Feature/Mcp/ListCallsToolFeatureTest.php | 2 +-
tests/Feature/Mcp/McpTestHelpersTrait.php | 19 +++++++++-
tests/Unit/Component/ES/ChunkSizeTest.php | 50 +++++++++++++++++++++++++
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 27 ++++++++++----
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 39 +++++++++++---------
16 files changed, 557 insertions(+), 75 deletions(-)
create mode 100644 app/Component/ES/ChunkSize.php
create mode 100644 app/Mcp/Tools/GetMeTool.php
create mode 100644 database/migrations/2026_05_13_124153_create_mcp_feature_flag.php
create mode 100644 tests/Feature/Mcp/GetMeToolFeatureTest.php
create mode 100644 tests/Unit/Component/ES/ChunkSizeTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ git push
Enumerating objects: 40, done.
Counting objects: 100% (34/34), done.
Delta compression using up to 8 threads
Compressing objects: 100% (18/18), done.
Writing objects: 100% (18/18), 1.58 KiB | 1.58 MiB/s, done.
Total 18 (delta 15), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (15/15), completed with 13 local objects.
To github.com:jiminny/app.git
190239dfd4..ec1b261264 JY-20613-allow-owner-role-on-team-setup -> JY-20613-allow-owner-role-on-team-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ gbr
* JY-20613-allow-owner-role-on-team-setup
pipedrive-sdk-poc
master
JY-20903-update_activity-stage-on-opportunity-change
JY-20904-fix-update-es-on-activity-command
JY-20891-improve-sms-text-relays
JY-20725-handle-HS-search-rate-limit
JY-20818-move-AJ-reports-to-separated-datadog-metric
JY-20773-fix-automated-reports-user-pilot-tracking
JY-20157-AJ-report-not-send-notification
JY-20508-notify-before-AJ-report-expiration
JY-20372-ai-reports-promotion-pages
JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null
JY-20738-debug-AJ-tracking-UP
a
JY-18909-automated-reports-ask-jiminny
JY-20692-fix-integration-app-[API_KEY]
JY-20553-debug-crm-sync-delays
JY-20698-fix-SF-activity-types-on-new-playbook
JY-20543-AJ-report-tracking
JY-20384-handle-auto-sync-with-no-access-to-event-type
JY-20458-ask-jiminny-user-definitions
JY-19666-fix-import-contacts-account-association
JY-19666-HS-import-contacts-and-accounts-batch-job
JY-20458-Ask-Jiminny-Reports
JY-20200-batch-update-CRM-objects-Salesforce
JY-19666-HS-webhooks-add-contact-and-company
JY-20348-trigger-setup-DI-layout-on-team-creation
JY-20326-refactor-info-message-in-command
JY-20317-fix-auto-log-delay-issue-on-all-channels-disabled
JY-20312-remove-on-update-change-last-synced-at-crm-configurations
JY-20306-SF-skip-auto-sync-for-task-based-playbook
JY-20192-remove-deleted-team-from-saved-search-filters
JY-20197-import-opportunity-batch-job
JY-20293-enable-status-field-for-pipedrive-deals
JY-20191-remove-commands-interactive-prompts
JY-20118-change-default-sync-strategy
JY-20183-add-cache-on-auto-log-delay
JY-20197-add-import-opportunity-batch-job
20118-hs-opportunity-make-webhook-strategy-default
JY-20118-make-default-hs-opportunity-sync-strategy-webhook-based
JY-20196-handle-opportunity-without-note
JY-20118-improve-opportunity-import
JY-20189-handle-activity-search-on-deleted-groups
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20613-allow-owner-role-on-team-setup) $ co JY-20725-handle-HS-search-rate-limit
M .env.local
M config/logging.php
Switched to branch 'JY-20725-handle-HS-search-rate-limit'
Your branch is behind 'origin/JY-20725-handle-HS-search-rate-limit' by 439 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ git pull
Updating 0f3e438941..bc6a3fce6b
Fast-forward
.gitignore | 3 +-
.windsurfrules | 168 ++---
CLAUDE.md | 1 +
app/Component/ActivityAnalytics/Service/CalculateTalkTimeOffsetsFromTranscription.php | 24 +-
app/Component/AiActivityType/Services/AiActivityTypeEligibilityChecker.php | 28 +-
app/Component/AiAutomation/Actions/PrepareUpdateDtoAction.php | 32 +-
app/Component/AiAutomation/Services/CrmFillingEligibilityChecker.php | 47 ++
app/Component/AiAutomation/TestCrmAiPromptService.php | 14 +
app/Component/AiCallScoring/Services/AiCallScoringEligibilityChecker.php | 9 +
app/Component/ES/ElasticSearchDocumentPartialUpdater.php | 13 +-
app/Component/ES/ElasticSearchWorkerManager.php | 86 ---
app/Component/ES/Processor/Actions/LoadDocumentsAction.php | 80 +--
app/Component/ES/Processor/EntityQueryBuilder.php | 12 +-
app/Component/ES/Processor/TargetEntitiesSelector.php | 2 +-
app/Component/ES/Processor/Traits/SkipActivityTrait.php | 25 -
app/Component/ES/Repositories/EsResetActivityRepository.php | 11 +-
app/Component/ES/Worker/ActivityWorker.php | 73 --
app/Component/ES/Worker/EntityWorker.php | 44 --
app/Component/ES/Worker/WorkerAmount.php | 60 --
app/Component/ES/Worker/WorkerInterface.php | 15 -
app/Component/ElasticSearch/Contract/Searchable.php | 4 +
app/Component/Encoding/Job/AnalyzeTrackChannelsJob.php | 20 +-
app/Component/Encoding/Service/GenerateSpeechFromSilenceService.php | 85 ++-
app/Component/FFMpeg/Services/GetSpeechIntervalsService.php | 18 +-
app/Component/LanguageDetection/Services/FindSpeechTimeService.php | 22 +-
app/Component/Nudge/Job/ProcessOrganisationImmediateNudgesJob.php | 218 +++++-
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 +
app/Component/ParticipantSpeech/Services/ParticipantSpeechesCreator.php | 33 +
app/Component/ParticipantSpeech/Services/ParticipantSpeechesDeleter.php | 15 +
app/Component/ParticipantSpeech/Services/ParticipantSpeechesProvider.php | 51 +-
app/Component/ParticipantSpeech/Services/ParticipantSpeechesUploader.php | 36 +
app/Component/ProphetAi/Exceptions/InsufficientTranscriptException.php | 11 +
app/Component/Transcription/DTO/Http/Transcription/AssemblyAI/AssemblyAI/NoAssemblyIdException.php | 11 +
app/Component/Transcription/DTO/Http/Transcription/AssemblyAI/AssemblyAI/SuccessfulResponse.php | 6 +
app/Component/Transcription/DTO/Http/Transcription/TranscriptionIsNotCorrectFormatException.php | 11 +
app/Component/Transcription/Diarization/Services/GetNormalizedParticipantSpeechesService.php | 23 +-
app/Component/Transcription/Diarization/Source/MeetingBotSource.php | 16 +-
app/Component/Transcription/TranscriptionProcessor/TranscriptionProcessor.php | 3 +
app/Console/Commands/Activities/ActivityHardDeleteCommand.php | 4 +-
app/Console/Commands/Activities/Copy.php | 2 +
app/Console/Commands/Activities/SetupIntegration/TwilioSetS3RecordingCredentialsCommand.php | 119 ++++
app/Console/Commands/Activities/UpdateActivityElasticSearchDocumentCommand.php | 10 +-
app/Console/Commands/Crm/BackfillOpportunityUserFromAccountCommand.php | 126 ++++
app/Console/Commands/Elasticsearch/AsyncUpdateEsActivities.php | 19 -
app/Console/Commands/Elasticsearch/AsyncUpdateEsEntities.php | 50 +-
app/Console/Commands/Elasticsearch/ResetAsyncElasticSearchCommand.php | 30 +-
app/Console/Commands/GeckoExport/GeckoExportParticipantSpeechesCommand.php | 14 +-
app/Console/Commands/IssueMcpTokenCommand.php | 84 +++
app/Console/Commands/JiminnyDebugCommand.php | 7 +-
app/Console/Commands/Tracks/CleanupActivityTracksCommand.php | 2 +-
app/Console/Kernel.php | 6 +-
app/Contracts/Services/Calendar/CalendarTrait.php | 80 ++-
app/Events/AutomatedReports/AutomatedReportGenerated.php | 3 +
app/Http/Controllers/API/AiCallScoring/AiScorecardController.php | 7 +-
app/Http/Controllers/API/TeamAiAutomationController.php | 8 +
app/Http/Controllers/CustomerApi/CustomerApiController.php | 4 +-
app/Http/Controllers/Kiosk/ActivityController.php | 58 +-
app/Http/Controllers/Settings/PlaybookController.php | 15 +-
app/Http/Kernel.php | 23 +
app/Http/Middleware/McpAuditMiddleware.php | 156 ++++
app/Http/Middleware/McpTierMiddleware.php | 54 ++
app/Http/Requests/API/V2/ZapierUploadActivityRequest.php | 28 +-
app/Jobs/Activity/Import/ImportTwilioVideoSpeechesJob.php | 25 +-
app/Jobs/Activity/Import/IsActivityReadyForProcessingJob.php | 10 +-
app/Jobs/Calendar/SetupCalendarSync.php | 21 +-
app/Jobs/ImportRemoteTrackJob.php | 96 ++-
app/Jobs/Mailbox/EmailTextRelay.php | 15 +-
app/Mcp/Contracts/McpCallRepositoryInterface.php | 30 +
app/Mcp/DTO/ListCallsFilters.php | 29 +
app/Mcp/Errors/McpError.php | 123 ++++
app/Mcp/Repositories/McpActivityHydrator.php | 145 ++++
app/Mcp/Repositories/McpCallRepository.php | 84 +++
app/Mcp/Repositories/McpElasticCallRepository.php | 171 +++++
app/Mcp/Servers/JiminnyServer.php | 38 +
app/Mcp/Tools/ListCallsTool.php | 205 ++++++
app/Models/Activity.php | 10 +-
app/Models/Activity/Transcription.php | 17 +-
app/Models/ElasticSearch/OpportunityElasticSearchTrait.php | 5 +
app/Models/Participant.php | 1 +
app/Providers/AppServiceProvider.php | 22 +
app/Repositories/Crm/ContactRepository.php | 69 +-
app/Repositories/ParticipantSpeechRepository.php | 13 +-
app/Services/Activity/ParticipantsService.php | 19 +-
app/Services/Activity/Twilio/S3RecordingCredentialsService.php | 82 +++
app/Services/ActivityService.php | 21 +-
app/Services/Calendar/CalendarActivityService.php | 46 ++
app/Services/Calendar/Command/ImportParticipants.php | 1 +
app/Services/Calendar/Command/MapActivityData.php | 106 +--
app/Services/Calendar/GoogleCalendarService.php | 12 +-
app/Services/Crm/Close/Processor/OpportunityProcessor.php | 2 +-
app/Services/Crm/Close/Service.php | 22 +-
app/Services/Crm/Copper/Service.php | 12 +-
app/Services/Crm/Hubspot/Service.php | 154 +++-
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 88 ++-
app/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmEntitiesTrait.php | 22 +-
app/Services/Crm/Pipedrive/Service.php | 17 +-
app/Services/Crm/Salesforce/Service.php | 42 +-
app/Services/Mail/Office/EmailApiClient.php | 129 +---
app/Services/RecallAI/Commands/ScheduleBotCommand.php | 39 +-
app/Services/RecallAI/RecallAIService.php | 22 +-
composer.json | 3 +-
composer.lock | 87 ++-
config/mcp.php | 23 +
database/migrations/2026_04_30_120000_create_mcp_audit_log_table.php | 36 +
docs/mcp/explorer/explorer.html | 697 ++++++++++++++++++
docs/mcp/explorer/explorer.template.html | 697 ++++++++++++++++++
docs/mcp/explorer/generate.js | 215 ++++++
docs/mcp/explorer/tool-explorer-meta.json | 11 +
docs/mcp/tools-list.json | 2536 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
docs/mcp/tools.md | 621 ++++++++++++++++
front-end/package.json | 4 +-
front-end/src/components/Settings/OrgSettings/AiAutomation/CrmFilling/TemplateFieldForm.vue | 28 +-
front-end/src/components/Settings/OrgSettings/Playbooks/AddEditPlaybook.vue | 10 +
front-end/src/components/playback/comments/ActivityComment.less | 10 +-
front-end/src/components/shared/PromptTester/PromptTester.vue | 12 +-
front-end/src/components/shared/__tests__/PromptTester.spec.js | 35 +
front-end/src/components/shared/modals/EntityPickerModal/__tests__/useEntitiesCache.spec.ts | 37 +
front-end/src/components/shared/modals/EntityPickerModal/useEntitiesCache.ts | 9 +
front-end/yarn.lock | 16 +-
phpstan-baseline.neon | 50 --
routes/api.php | 11 +
sonar-project.properties | 91 ++-
tests/Feature/Component/Nudge/ProcessOrganisationImmediateNudgesJobTest.php | 534 ++++++++++++++
tests/Feature/Jobs/ImportRemoteTrackJobTest.php | 283 +++++++-
tests/Feature/Mcp/IssueMcpTokenCommandTest.php | 53 ++
tests/Feature/Mcp/ListCallsToolElasticFeatureTest.php | 155 ++++
tests/Feature/Mcp/ListCallsToolFeatureTest.php | 352 ++++++++++
tests/Feature/Mcp/McpTestHelpersTrait.php | 77 ++
tests/Feature/Services/Team/TeamDeleteHandlers/Retention/RetentionRepositoryHandlerTest.php | 1 +
tests/Stubs/SentryStub.php | 18 +
tests/Unit/Component/ActivityAnalytics/Service/CalculateTalkTimeOffsetFromTranscriptionTest.php | 28 +-
tests/Unit/Component/AiActivityType/Services/AiActivityTypeEligibilityCheckerTest.php | 103 ++-
tests/Unit/Component/AiAutomation/Actions/PrepareUpdateDtoActionTest.php | 91 +++
tests/Unit/Component/AiAutomation/Services/CrmFillingEligibilityCheckerTest.php | 124 ++++
tests/Unit/Component/AiAutomation/TestCrmAiPromptServiceTest.php | 67 +-
tests/Unit/Component/AiCallScoring/Services/AiCallScoringEligibilityCheckerTest.php | 55 ++
tests/Unit/Component/ES/ElasticSearchWorkerManagerTest.php | 135 ----
tests/Unit/Component/ES/Processor/Actions/LoadDocumentsActionTest.php | 220 ++++++
tests/Unit/Component/ES/Processor/EntityQueryBuilderTest.php | 21 +-
tests/Unit/Component/ES/Processor/Traits/SkipActivityTraitTest.php | 51 --
tests/Unit/Component/ES/Worker/ActivityWorkerTest.php | 174 -----
tests/Unit/Component/ES/Worker/EntityWorkerTest.php | 97 ---
tests/Unit/Component/ES/Worker/WorkerAmountTest.php | 116 ---
tests/Unit/Component/Encoding/Job/AnalyzeTrackChannelsJobTest.php | 52 +-
tests/Unit/Component/Encoding/Service/GenerateSpeechFromSilenceServiceTest.php | 171 ++---
tests/Unit/Component/FFMpeg/Services/GetSpeechIntervalsTest.php | 36 +-
tests/Unit/Component/LanguageDetection/Services/FindSpeechTimeServiceTest.php | 20 +-
tests/Unit/Component/MobileSettings/MobileSettingsControllerTest.php | 5 +-
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesCreatorTest.php | 75 ++
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesDeleterTest.php | 63 ++
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesProviderTest.php | 134 ++++
tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesUploaderTest.php | 57 ++
tests/Unit/Component/Transcription/Diarization/Services/GetNormalizedParticipantSpeechesServiceTest.php | 51 +-
tests/Unit/Component/Transcription/Diarization/Source/MeetingBotSourceTest.php | 29 +-
tests/Unit/Contracts/Services/Calendar/CalendarTraitTest.php | 58 +-
tests/Unit/Http/Controllers/Kiosk/ActivityControllerTest.php | 159 +++++
tests/Unit/Jobs/Activity/Import/ImportTwilioVideoSpeechesJobTest.php | 22 +-
tests/Unit/Jobs/Activity/Import/IsActivityReadyForProcessingJobTest.php | 26 +-
tests/Unit/Jobs/Calendar/SetupCalendarSyncTest.php | 25 -
tests/Unit/Services/Activity/ParticipantsServiceTest.php | 12 +-
tests/Unit/Services/Activity/Twilio/S3RecordingCredentialsServiceTest.php | 180 +++++
tests/Unit/Services/ActivityServiceTest.php | 132 ++++
tests/Unit/Services/Calendar/CalendarActivityServiceTest.php | 150 +++-
tests/Unit/Services/Calendar/Command/ImportParticipantsTest.php | 6 +-
tests/Unit/Services/Calendar/Command/MapActivityDataTest.php | 78 +-
tests/Unit/Services/Calendar/GoogleCalendarServiceTest.php | 116 +++
tests/Unit/Services/Crm/Close/ServiceTest.php | 165 +++++
tests/Unit/Services/Crm/Hubspot/ServiceTest.php | 272 ++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 25 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitMatchActivitiesTest.php | 3 +-
tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmEntitiesTraitOpportunitiesTest.php | 40 ++
tests/Unit/Services/Crm/Pipedrive/ImportOpportunityMatchActivitiesTest.php | 2 +
tests/Unit/Services/Crm/Salesforce/ServiceTest.php | 139 ++++
tests/Unit/Services/Mail/Office/EmailApiClientTest.php | 195 ++---
tests/Unit/Services/RecallAI/RecallAIServiceTest.php | 24 +-
175 files changed, 12562 insertions(+), 2162 deletions(-)
create mode 120000 CLAUDE.md
create mode 100644 app/Component/AiAutomation/Services/CrmFillingEligibilityChecker.php
delete mode 100644 app/Component/ES/ElasticSearchWorkerManager.php
delete mode 100644 app/Component/ES/Processor/Traits/SkipActivityTrait.php
delete mode 100644 app/Component/ES/Worker/ActivityWorker.php
delete mode 100644 app/Component/ES/Worker/EntityWorker.php
delete mode 100644 app/Component/ES/Worker/WorkerAmount.php
delete mode 100644 app/Component/ES/Worker/WorkerInterface.php
create mode 100644 app/Component/ProphetAi/Exceptions/InsufficientTranscriptException.php
create mode 100644 app/Component/Transcription/DTO/Http/Transcription/AssemblyAI/AssemblyAI/NoAssemblyIdException.php
create mode 100644 app/Component/Transcription/DTO/Http/Transcription/TranscriptionIsNotCorrectFormatException.php
create mode 100644 app/Console/Commands/Activities/SetupIntegration/TwilioSetS3RecordingCredentialsCommand.php
create mode 100644 app/Console/Commands/Crm/BackfillOpportunityUserFromAccountCommand.php
delete mode 100644 app/Console/Commands/Elasticsearch/AsyncUpdateEsActivities.php
create mode 100644 app/Console/Commands/IssueMcpTokenCommand.php
create mode 100644 app/Http/Middleware/McpAuditMiddleware.php
create mode 100644 app/Http/Middleware/McpTierMiddleware.php
create mode 100644 app/Mcp/Contracts/McpCallRepositoryInterface.php
create mode 100644 app/Mcp/DTO/ListCallsFilters.php
create mode 100644 app/Mcp/Errors/McpError.php
create mode 100644 app/Mcp/Repositories/McpActivityHydrator.php
create mode 100644 app/Mcp/Repositories/McpCallRepository.php
create mode 100644 app/Mcp/Repositories/McpElasticCallRepository.php
create mode 100644 app/Mcp/Servers/JiminnyServer.php
create mode 100644 app/Mcp/Tools/ListCallsTool.php
create mode 100644 app/Services/Activity/Twilio/S3RecordingCredentialsService.php
create mode 100644 config/mcp.php
create mode 100644 database/migrations/2026_04_30_120000_create_mcp_audit_log_table.php
create mode 100644 docs/mcp/explorer/explorer.html
create mode 100644 docs/mcp/explorer/explorer.template.html
create mode 100644 docs/mcp/explorer/generate.js
create mode 100644 docs/mcp/explorer/tool-explorer-meta.json
create mode 100644 docs/mcp/tools-list.json
create mode 100644 docs/mcp/tools.md
create mode 100644 front-end/src/components/shared/modals/EntityPickerModal/__tests__/useEntitiesCache.spec.ts
create mode 100644 tests/Feature/Component/Nudge/ProcessOrganisationImmediateNudgesJobTest.php
create mode 100644 tests/Feature/Mcp/IssueMcpTokenCommandTest.php
create mode 100644 tests/Feature/Mcp/ListCallsToolElasticFeatureTest.php
create mode 100644 tests/Feature/Mcp/ListCallsToolFeatureTest.php
create mode 100644 tests/Feature/Mcp/McpTestHelpersTrait.php
create mode 100644 tests/Stubs/SentryStub.php
create mode 100644 tests/Unit/Component/AiAutomation/Services/CrmFillingEligibilityCheckerTest.php
delete mode 100644 tests/Unit/Component/ES/ElasticSearchWorkerManagerTest.php
create mode 100644 tests/Unit/Component/ES/Processor/Actions/LoadDocumentsActionTest.php
delete mode 100644 tests/Unit/Component/ES/Processor/Traits/SkipActivityTraitTest.php
delete mode 100644 tests/Unit/Component/ES/Worker/ActivityWorkerTest.php
delete mode 100644 tests/Unit/Component/ES/Worker/EntityWorkerTest.php
delete mode 100644 tests/Unit/Component/ES/Worker/WorkerAmountTest.php
create mode 100644 tests/Unit/Component/ParticipantSpeech/Services/ParticipantSpeechesCreatorTest.php
create mode 100644 tests/Unit/Http/Controllers/Kiosk/ActivityControllerTest.php
create mode 100644 tests/Unit/Services/Activity/Twilio/S3RecordingCredentialsServiceTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ git status
On branch master
Your branch is behind 'origin/master' by 114 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Component/SCIM/Constants.php
modified: app/Component/SCIM/ScimProvisioning.php
modified: app/Component/Twilio/Conference/ConferenceManager/SoftPhoneManager.php
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/DTO/SCIM/AAD/Request/CoreUserRequest.php
modified: app/DTO/SCIM/AAD/Response/CoreUser.php
modified: app/Services/Telephony/TextMessagingService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Component/SCIM/Mutators/Attributes/User/RoleAttr.php
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Rules/ListenerRoleCannotHaveAdminOrManagerPermissionRule.php
ids.txt
public/favicon.ico
raw_sql_query.sql
tests/Unit/Component/SCIM/Mutators/Attributes/User/RoleAttrTest.php
tests/Unit/Policies/CanAccessAiReportsTest.php
tests/Unit/Rules/ListenerRoleCannotHaveAdminOrManagerPermissionRuleTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 306, done.
remote: Counting objects: 100% (299/299), done.
remote: Compressing objects: 100% (183/183), done.
remote: Total 306 (delta 213), reused 171 (delta 116), pack-reused 7 (from 1)
Receiving objects: 100% (306/306), 80.12 KiB | 1000.00 KiB/s, done.
Resolving deltas: 100% (213/213), completed with 53 local objects.
From github.com:jiminny/app
90bca4e4b2..5604af40cf master -> origin/master
4e7078fd8b..0b8343d179 JY-18091-upgrade-to-php-8-5 -> origin/JY-18091-upgrade-to-php-8-5
098eeaa087..d5a447e492 JY-20613-allow-owner-role-on-team-setup -> origin/JY-20613-allow-owner-role-on-team-setup
c3a76ace91..af65249d0f JY-20749-user-can-view-recorded-meetings -> origin/JY-20749-user-can-view-recorded-meetings
d94a285ae7..7ce96cb5fe JY-20808-low-priority-indexing-queue -> origin/JY-20808-low-priority-indexing-queue
* [new branch] JY-20842-remove-partial-updater -> origin/JY-20842-remove-partial-updater
* [new branch] JY-20920-fix-participant-flip -> origin/JY-20920-fix-participant-flip
* [new branch] secfix/npm-20260519 -> origin/secfix/npm-20260519
Updating cb4ebf0c36..5604af40cf
Fast-forward
app/Component/ES/ChunkSize.php | 54 +++++++++++++++++++
app/Component/ES/Processor/DTOs/SelectionList.php | 4 +-
app/Component/ES/Processor/TargetEntitiesSelector.php | 19 ++++---
app/Component/MeetingBot/Service/ParticipantMatcher.php | 46 ++++++++++++----
app/Exceptions/RateLimitException.php | 19 ++++++-
app/Http/Middleware/McpTierMiddleware.php | 27 ++--------
app/Jobs/Crm/MatchActivityCrmData.php | 47 ++++++++++++----
app/Jobs/Middleware/HandleHubspotRateLimit.php | 42 +++++++++++++++
app/Mcp/Servers/JiminnyServer.php | 2 +
app/Mcp/Tools/GetMeTool.php | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++++
app/Models/Feature/FeatureEnum.php | 1 +
app/Services/Activity/HubSpot/ProviderResolver.php | 4 +-
app/Services/Activity/HubSpot/ProviderResolverInterface.php | 2 +-
app/Services/Activity/HubSpot/Providers/Provider.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderKixie.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderOrum.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderTwilio.php | 2 +-
app/Services/Activity/HubSpot/Providers/ProviderTwilioFlex.php | 5 +-
app/Services/Activity/HubSpot/Service.php | 97 +++++++++++++++++++++++++++------
app/Services/Crm/Hubspot/Client.php | 132 +++++++++++++++++++++++++++++++++++++++++++++
app/Services/Crm/Hubspot/HubspotClientInterface.php | 15 ++++++
app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php | 21 ++++----
app/Services/Crm/Hubspot/Pagination/PaginationState.php | 2 +-
database/migrations/2026_05_13_124153_create_mcp_feature_flag.php | 25 +++++++++
tests/Feature/Mcp/GetMeToolFeatureTest.php | 140 +++++++++++++++++++++++++++++++++++++++++++++++
tests/Feature/Mcp/ListCallsToolFeatureTest.php | 2 +-
tests/Feature/Mcp/McpTestHelpersTrait.php | 19 ++++++-
tests/Unit/Component/ES/ChunkSizeTest.php | 50 +++++++++++++++++
tests/Unit/Component/ES/Processor/DTOs/SelectionListTest.php | 27 +++++++---
tests/Unit/Component/ES/Processor/TargetEntitiesSelectorTest.php | 39 ++++++++------
tests/Unit/Component/MeetingBot/Service/ParticipantMatcherTest.php | 68 ++++++++++++++++++++++-
tests/Unit/Exceptions/RateLimitExceptionTest.php | 56 +++++++++++++++++++
tests/Unit/Jobs/Crm/MatchActivityCrmDataTest.php | 8 +--
tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Activity/HubSpot/ServiceTest.php | 109 +++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ClientTest.php | 250 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/Pagination/HubspotPaginationServiceTest.php | 283 +++++++++++++++++++++---------------------------------------------------------------------------
37 files changed, 1587 insertions(+), 344 deletions(-)
create mode 100644 app/Component/ES/ChunkSize.php
create mode 100644 app/Jobs/Middleware/HandleHubspotRateLimit.php
create mode 100644 app/Mcp/Tools/GetMeTool.php
create mode 100644 database/migrations/2026_05_13_124153_create_mcp_feature_flag.php
create mode 100644 tests/Feature/Mcp/GetMeToolFeatureTest.php
create mode 100644 tests/Unit/Component/ES/ChunkSizeTest.php
create mode 100644 tests/Unit/Exceptions/RateLimitExceptionTest.php
create mode 100644 tests/Unit/Jobs/Middleware/HandleHubspotRateLimitTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20676-delete-report-related-objects
Switched to a new branch 'JY-20676-delete-report-related-objects'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5690/5690 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) app/Console/Commands/JiminnyDebugCommand.php (statement_indentation, blank_line_before_statement)
---------- begin diff ----------
--- /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
+++ /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
@@ -23,6 +23,7 @@
if ($action === 'redis-set') {
$this->testRedisSet();
+
return;
}
@@ -45,7 +46,7 @@
$ttl = 60;
try {
-// $result = Redis::set($testKey, $testValue, 'EX', $ttl, 'NX');
+ // $result = Redis::set($testKey, $testValue, 'EX', $ttl, 'NX');
$result = Redis::set($testKey, $testValue, ['nx', 'ex' => $ttl]);
if ($result) {
----------- end diff -----------
Fixed 1 of 5690 files in 50.673 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at https://docs.docker.com/go/debug-cli/
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20676-delete-report-related-objects) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at https://docs.docker.c...
|
iTerm2
|
APP (-zsh)
|
NULL
|
59023
|
|
84396
|
reauots now ownersroe toexUewredtines on New codJY reauots now ownersroe toexUewredtines on New codJY-20963 fix deleted object impsm.cwdSycaotionslsmalldcthatteM Inbox (1,733) - lukas.kovalik@jimirioonre Reso ve php 81.15 dedPlatform Sorint 5.02 - Platform TelimiomSona Subramaaian at 27/05/202O Illyana Netsova at 27/05/2026, 18Jy 20910 schedule parallel up: X=github.comv Gooc e GeminiGemini 3.1 Pro ~parent's memory space and open file descriptors. While you correctly purged MySQL andKedis connectionsin resecArterrork(), you missed the clasticsearch clent.The Result: Both the Activity process and the Opportunity process will attempt to read andwrite over the exact same HTTP/TCP socket to Elasticsearch simultaneously. Instead of notinterfering, they will literally collide at the network layer, causing corrupted payloads, CURLexceptions, and broken pipes.2. Goal: Reliable Signal Propagation & 10s Graceful ExitThe Intent: If the system ( supervisorctl ) sends a SIGTERM, the customAsuncuodaresuoervisor cachestr orocaodesteo te ctioren ane draceuivexiesThe Reality Check: In your (reapChildren() method, pcntl_waitpid(Spid, Sstatus); ismissing the WNOHANG flag. This makes it a strictly synchronous, blocking call.The Result: If the Activity worker successfully receives the SIGTERM but gets stuck trying tofinish a stalled Elasticsearch request, the Parent Supervisor will block forever waiting for it. The10-second araceful exit logic in GracefullyStoopable will be comoletely ianored, andsupervisorctl will eventually have to forcefully SIGKILL the whole group, risking data-tteelnl3. Goal: Accurate, Segregated Datadog MetricsThe Intent: Separating the Datadog reporting into ReindexTargetStatsReporter toXeeltiewmesut me tior dertlorThe Reality Check: The lock logic (if (! is_null(Redis::get (SlockKey))) ) is not atomic.The Result: Because these are now truly parallel processes, both workers could evaluate thatif statement at the eyact same microsecond. hath see nulll, and hoth nuch their metricosimultaneously. This defeats the lock and can lead to skewed Datadog graphs.The strategy you've chosen is definitely the right path, it just needs a few strict guardrails aroundhow PHP handles forking and locking to make it bulletproof.Would you like me to write out the exact code snippets to safely reset the Elasticsearch client and fixthe shutdown deadlock so you can drop them straight into your PR?Ask GeminilYour Jiminny chats aren't used to improve our modeis. Gemini is Al. It can make mistakes, so double check it. Your privacy & GeminSummarize pageCYMON100% K5X- • Thu 28 May 14:40:16Q Type [ to search8 -1eodePull requests34Agents + ActionsUWiknlSecurity and qualty12lwInsights g Settings• Vasil-Jiminny requested your review on this pull request.Jy 20910 schedule parallel update target processing #12130 •11 OpenVasil-Jiminny wants to merge 65 commits into naster from JY-28910-schedule-parallel-update-target-processingQ) Conversation 17a Commits 65E Checks 3 B Files changed 15Vasil-Jiminny commented 2 days ago • editedJIRA: JY-20910Changes:• Introduced a new class AsyncUpdateSupervisor under the same Artisan aliases:update-entities. The command works as parent / supervisor process and spawns a child process for eachallaued taradt tund e Mitroatly aetiuity hodl onnartunityif a child process exits, the supervisor will restart it within 5 seconds.Ia SIGTERM is recerved. "will oronsoate it to child processes.This allows each indexing operation to run with its own memory signature.• Cleanup old one-time commands that we do not need anymore.• Drop total memory usage, as it makes no sense when two separate processes are spawn for indexing activities andopportunities.• Improved GracefullyStoppable trait to correctly print exit message after 10 seconds.• Reporting Datadog metrics is moved to a separate class to keep concerns of UpdateProcessManager more strict.• Tests are uodated accoro-nolv• Added startup and exit logs.Siartuo LoosSIGTERM logs:• Awaiting approvaleode-4764 -440 88801....@kovicwere vkulov@ LakyLak® TodorStamatovJiminnyilian-jiminnyyalokin-jiminnyAt least 1 approving review is required to merge this pullStill in progress? Convert to draftAssigneesNo ond=assion vourselLaoelsNone yetProjectsNone yetMiles omNo milestoneDevelopmentSuccesstully merging this pull request may close theseIssue?None wetNotifications2 UnsubscribeHighight All Match Case Match Diacriies Whoie Words1of 1 matchReached top of page, continued from bottom...
|
iTerm2
|
NULL
|
NULL
|
84396
|
|
86037
|
rch due to Error: No Living connections error" rch due to Error: No Living connections error"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:36:54Z","tags":["warning","elasticsearch","monitoring"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:36:54Z","tags":["warning","plugins","licensing"],"pid":7,"message":"License information could not be obtained from Elasticsearch due to Error: No Living connections error"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:36:55Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:36:55Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:36:55Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:36:58Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:36:58Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:36:58Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:00Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:01Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:01Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:02Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
docker_lamp_1 | 2026-05-28 13:36:49 Running ['artisan' conference:pre-meeting-notification] 13s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:04Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:04Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:05Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:07Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:07Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:07Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:07Z","tags":["error","plugins","reporting","esqueue","queue-worker","error"],"pid":7,"message":"mppgwl2q00070bdf86frhqvx - job querying failed: Error: No Living connections\n at sendReqWithConnection (/usr/share/kibana/node_modules/elasticsearch/src/lib/transport.js:266:15)\n at next (/usr/share/kibana/node_modules/elasticsearch/src/lib/connection_pool.js:243:7)\n at process._tickCallback (internal/process/next_tick.js:61:11)"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:07Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
docker_lamp_1 | 2026-05-28 13:37:03 Running ['artisan' conference:monitor:start] ... 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:10Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:10Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:10Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:10Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:13Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:13Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:13Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:15Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:16Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:16Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
docker_lamp_1 | 2026-05-28 13:37:08 Running ['artisan' conference:monitor:end] ..... 8s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:18Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:19Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:19Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:20Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:22Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:22Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:23Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:24Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:24Z","tags":["warning","plugins","licensing"],"pid":7,"message":"License information could not be obtained from Elasticsearch due to Error: No Living connections error"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:24Z","tags":["warning","elasticsearch","monitoring"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:24Z","tags":["warning","plugins","licensing"],"pid":7,"message":"License information could not be obtained from Elasticsearch due to Error: No Living connections error"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:25Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:25Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:28Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:28Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:28Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:30Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:31Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:31Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
redis | 1:M 28 May 2026 13:37:34.000 * Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:35Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:35Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:35Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
docker_lamp_1 | 2026-05-28 13:37:17 Running ['artisan' jiminny:fix-hubspot-tokens] 19s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-28 13:37:37 Running ['artisan' conference:pre-meeting-reminder] in background 10.93ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-28 13:37:37 Running ['artisan' hubspot:journal-poll --start] in background 4.55ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:37Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:37Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:37Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:37Z","tags":["error","plugins","reporting","esqueue","queue-worker","error"],"pid":7,"message":"mppgwl2q00070bdf86frhqvx - job querying failed: Error: No Living connections\n at sendReqWithConnection (/usr/share/kibana/node_modules/elasticsearch/src/lib/transport.js:266:15)\n at next (/usr/share/kibana/node_modules/elasticsearch/src/lib/connection_pool.js:243:7)\n at process._tickCallback (internal/process/next_tick.js:61:11)"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:38Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:40Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:40Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:40Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:41Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:43Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:43Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:43Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:45Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:46Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:46Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:48Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:49Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:49Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:50Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:52Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:52Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:53Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:54Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:54Z","tags":["warning","plugins","licensing"],"pid":7,"message":"License information could not be obtained from Elasticsearch due to Error: No Living connections error"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:54Z","tags":["warning","elasticsearch","monitoring"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:54Z","tags":["warning","plugins","licensing"],"pid":7,"message":"License information could not be obtained from Elasticsearch due to Error: No Living connections error"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:55Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:55Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:55Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:58Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:58Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:37:58Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
docker_lamp_1 | 2026-05-28 13:37:37 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | 21s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:00Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:01Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:01Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:03Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:04Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:04Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:05Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:07Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:07Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:08Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:08Z","tags":["error","plugins","reporting","esqueue","queue-worker","error"],"pid":7,"message":"mppgwl2q00070bdf86frhqvx - job querying failed: Error: No Living connections\n at sendReqWithConnection (/usr/share/kibana/node_modules/elasticsearch/src/lib/transport.js:266:15)\n at next (/usr/share/kibana/node_modules/elasticsearch/src/lib/connection_pool.js:243:7)\n at process._tickCallback (internal/process/next_tick.js:61:11)"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:08Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:10Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:10Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:10Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:10Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:13Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:13Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:13Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:16Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:16Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:16Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:18Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:19Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:19Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:21Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:22Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:22Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:23Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:24Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:24Z","tags":["warning","plugins","licensing"],"pid":7,"message":"License information could not be obtained from Elasticsearch due to Error: No Living connections error"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:24Z","tags":["warning","elasticsearch","monitoring"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:24Z","tags":["warning","plugins","licensing"],"pid":7,"message":"License information could not be obtained from Elasticsearch due to Error: No Living connections error"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:25Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:25Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:28Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:28Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:28Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:31Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:31Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:31Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:33Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:34Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:34Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:36Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:37Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:37Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:38Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:38Z","tags":["error","plugins","reporting","esqueue","queue-worker","error"],"pid":7,"message":"mppgwl2q00070bdf86frhqvx - job querying failed: Error: No Living connections\n at sendReqWithConnection (/usr/share/kibana/node_modules/elasticsearch/src/lib/transport.js:266:15)\n at next (/usr/share/kibana/node_modules/elasticsearch/src/lib/connection_pool.js:243:7)\n at process._tickCallback (internal/process/next_tick.js:61:11)"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:38Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:40Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:40Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:41Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:41Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:43Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:43Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:43Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:46Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:46Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:46Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:48Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:49Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:49Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:51Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:52Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:52Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:53Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:53Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:53Z","tags":["warning","plugins","licensing"],"pid":7,"message":"License information could not be obtained from Elasticsearch due to Error: No Living connections error"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:54Z","tags":["warning","elasticsearch","monitoring"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:54Z","tags":["warning","plugins","licensing"],"pid":7,"message":"License information could not be obtained from Elasticsearch due to Error: No Living connections error"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:55Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:55Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:56Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:58Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:58Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:38:58Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:01Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:01Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:01Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:03Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:04Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:04Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:06Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:07Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:07Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:08Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:08Z","tags":["error","plugins","reporting","esqueue","queue-worker","error"],"pid":7,"message":"mppgwl2q00070bdf86frhqvx - job querying failed: Error: No Living connections\n at sendReqWithConnection (/usr/share/kibana/node_modules/elasticsearch/src/lib/transport.js:266:15)\n at next (/usr/share/kibana/node_modules/elasticsearch/src/lib/connection_pool.js:243:7)\n at process._tickCallback (internal/process/next_tick.js:61:11)"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:08Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:10Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:10Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:11Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:11Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:13Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:13Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:13Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:16Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:16Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connection: [URL_WITH_CREDENTIALS] living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:16Z","tags":["error","plugins","taskManager","taskManager"],"pid":7,"message":"Failed to poll for work: Error: No Living connections"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:18Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[ConnectionError]: getaddrinfo ENOTFOUND elasticsearch elasticsearch:9200"}
kibana | {"type":"log","@timestamp":"2026-05-28T13:39:19Z","tags":["warning","elasticsearch","data"],"pid":7,"message":"Unable to revive connectio...
|
iTerm2
|
DOCKER (docker-compose)
|
NULL
|
86037
|
|
85790
|
rapstomvewNeweNNCCoocWindowPwovscors#12121 on JY-2 rapstomvewNeweNNCCoocWindowPwovscors#12121 on JY-20963-foc-eSarvicc.ohwnapers.oh©ActivityControlier.phpuewholeooserver.ono Tesmuonsy kemetonsc) eienupnpE HubspolIntcaratonado>E Listenersclass servicelesc excenos lesccase• -) Pipedrivepubuzc tunccion cestrarseconcaccrnonewv saestorch› E FieldsOpportunityMatcherba OpportunitvSvncStrateuSOrasSeNAnnaYhasKey ney. "onohwltests/Unit/Services/crm/Salestorceeuserassenorn nostar io thleehuD SDaSSeNULLOPAOY© Servicetest.phpenyloes› ProspectsearchStrategServicetraits©elientrest.php© DecorateActivity Test.P 2691pa atedr acsitn ttesUnversioned Eiles g es"moeadusaodpublic static function parseContactMobiCommkt Wessage1o89o5 add tests coverageFieldDetinitionsTest.phCCercwme amenreturn24S4D4 PayloadBullder Test.prf nes )QueryBuilder Test.php© QueryHandler Test.php© QueryiteratorTest.phpQueryResunsiestspip 2690© ServiceTest.php7A18I© SyncBatchRedisservict 261лRacASanicatast obo2412Va CachadCrm SanicsPhooeemory hoo ilephone returns null'no MobiilePhone key returns nullT40+→0Side-by-side viewerDo not lgnore@ 41e8c6b5 tests/Unit/Services/Crm/Salesforce/ServiceTest.phghontaenav.hon nancekootcertohmeproureturn"eroty MohflaPhond natunne oull"=> "Mob{lePhone' => **. null, null)lpublic function testParseContacthobilenChanges 5 filesE.env.local apc© JiminnyDebugCommand.php app/Console/CommandsSservice = Sthis->getServiceMocko,Sresult = self::invokePnivateMethodpalontactMobile". Sservice. (ScountryCode.8 41e8c6bS tests/Duosersane ixoocoo ohosulwplogging.php coniig@ PlaybackService.pho app/ServicesServiceTest.php tests/Unit/Services/Crm/SalesforceyUnversioned Filcs 9 ficdE.enw.nikilocal andpublic function testiaportOpportunitySkios#henProfileNotFoundO: voidnuhln ctateenw.other aog@ GanAccossA ReporteTest.oho teste/Unit/PolicioscreateWlock.skiminny?eoot?ecteommandlonoaog/conso.e/commandsintu favicon.ico public=kyandR.raw.sal.querv.sol.aoolSservzcS mulateWebhookscommand.oho.ano/Concole/Commandis/Crm/HubsootM.WERHOOK FILTERING. IMPIFMENTATION md anrSthis-›assertSame(Sexpected, Sresult)public function testImportOpportunitySkipsWhenProfileNotFound: vof.TO0У L7ind co mey to.ltrscustom.ioaraveuesA SF fiminny@localhost)HS Jocal (jminny@localhost)d console (PROD) x C Service.php# console fiaumeeendhA console (STAGING)lesorceserwicee+0.TXAutowcreated at > DATE SUB(NOWU. INTERVAL 38 DAYtestsruexec dovkers/crm/3 bestore 5e/vicer/stmphpy - iterwenest/brseContact' 256111.5.55 by Sebastian Bergmann and contributors.ChangelistChangesrarstont Wnoreinnyl chounx"Author11/ 11 (100%f Amend commitSign-off commit0:10.908, Menory: 00.00 Mbnd existing testParseContact* tests pass. The deprecations are pre-existing PHPUnit warningscommt checksat'cklv min tha mil SarufcaTast to contirm nothioa is brokaa.• Update copyright• Reformat code() Rearrange code• Optimize importsvendor/bin/phpuni11.5.55 by Sebastzan Beramann and contributors.OHp SHNecant alllCurront woreinr25S2558Sservice = Sthis-›getServiceMock:*07911123456'$AdaptiveSresult = self::invokePrivateMethod('parseContactMobile'Sservice. '6B", ScreoltterencesSthis->assertStringStartsWith('+44'. Sresult):onelrwice. "Scountrutode. Scceiataios26521oorunryskoskhenPros eNor Foundor vondactPhone'. Sservice, null, ScraData):scnis->assentsane [PHONE]Sthis->assertNull(Sext):oublie funetzion testPanseContactPhonellithExtensiionde voiaSservice = Sthis->aetSeruiceNockO:SoreData = f'Phone* => *[PHONE] cxt. 42'1.fSoansedMunber. Soxtl = self.sinvokePoivatckethod("nansefontactPhone" Sservice. F'US'. Sccelatal):KModturlaserker ieshens?...
|
PhpStorm
|
|
NULL
|
85790
|
|
85792
|
rapstomvewNeweNNCCoocWindowPwovscors#12121 on JY-2 rapstomvewNeweNNCCoocWindowPwovscors#12121 on JY-20963-foc-eSarvicc.ohwnapers.oh©ActivityControlier.phpuewholeooserver.ono Tesmuonsc) eienupnpE HubspolIntcaratonado>E Listenersclass servicelesc excenos lesccase• -) Pipedrivepubuzc tunccion cestrarseconcaccrnonewv saestorch› E FieldsOpportunityMatcherba OpportunitvSvncStrateuSOrasSeNAnnaYhasKey ney. "onohwltests/Unit/Services/crm/Salestorceeuserassenorn nostar io thleehuD SDaSSeNULLOPAOY© Servicetest.phpenyloes› ProspectsearchStrategService t raits©elientrest.php© DecorateActivity Test.P 2691pa atedr acsitn ttesUnversioned Eiles g es"moeadusaodpublic static function parseContactMobiCommkt Wessage1o89o5 add tests coverage© FieldDefinitionsTest.phCCercwme amenreturn24S4D4 PayloadBullder Test.prf nes )QueryBuilder Test.php© QueryHandler Test.php© QueryiteratorTest.phpQueryResunsiestspip 2690© ServiceTest.php7A18I© SyncBatchRedisservict 261лRacASanicatast obo2412Va CachadCrm SanicsPhooeemory hoo ilephone returns null'no MobiilePhone key returns nullT40+→0Side-by-side viewerDo not lgnore@ 41e8c6b5 tests/Unit/Services/Crm/Salesforce/ServiceTest.phghontaenav.hon nancekootcertohmeproureturn"eroty MohflaPhond natunne oull"=> "Mob{lePhone' => **. null, null)lpublic function testParseContacthobilenChanges 5 filesE.env.local apc© JiminnyDebugCommand.php app/Console/CommandsSservice = Sthis->getServiceMocko,Sresult = self::invokePnivateMethodpalContactMobile". Sservice. "ScountryCode,8 41e8c6bS tests/Duosersane ixoocoo ohosulwplogging.php coniig@ PlaybackService.pho app/ServicesServiceTest.php tests/Unit/Services/Crm/SalesforceyUnversioned Filcs 9 ficdE.enw.nikilocal andpublic function testiaportOpportunitySkios#henProfileNotFoundO: voidnuhln ctateenw.other aog@ GanAccossA ReporteTest.oho teste/Unit/PolicioscreateWlock.skiminny?eoot?ecteommandlonoaog/conso.e/commandsintu favicon.ico public=kyandR.raw.sal.querv.sol.aoolSservzcS mulateWebhookscommand.oho.ano/Concole/Commandis/Crm/HubsootM.WERHOOK FILTERING. IMPIFMENTATION md anrSthis-›assertSame(Sexpected, Sresult)public function testImportOpportunitySkipsWhenProfileNotFound: vof.custom.ioaraveuesA SF fiminny@localhost)HS Jocal (jminny@localhost)A console (STAGING)d console (PROD) x C Service.phpTX: AUTO NIcreated at > DATE SUB(NOWU. INTERVAL 38 DAYChangelistChanges25S255826521Authorf Amend commit• Sign-off commitcommt checks• Update copyright• Reformat code() Rearrange code• Optimize importsCurront woreinrSservice = Sthis-›getServiceMock:'07911123456'Sresult = self::invokePrivateMethod('parseContactMobile'Sservice. '6B", ScretSthis->assertStringStartsWith('+44'. Sresult):pudlac tuncition test eooruooorunryskoskhenPros eNor Foundor vondTO0У L7ind co wey to.ltrss# console fiaumeeendhlesorceserwicee+0.testsruexec dovkers/crm/3 bestore 5e/vicer/stmphpy - iterwenest/brseContact' 256111.5.55 by Sebastian Bergmann and contributors.rarstont Wnoreinnyl chounx"11/ 11 (100%0:10.908, Menory: 00.00 Mbnd existing testParseContact* tests pass. The deprecations are pre-existing PHPUnit warningsat'cklv min tha mil SarufcaTast to contirm nothioa is brokaa.p vendor/bin/phpuni11.5.55 by Sebastzan Beramann and contributors.OHp SHNecant alll$Adaptiveoltterencesonellrwice. "Scountrutode. ScceiataiosactPhone'. Sservice, null, ScraData):scnis->assentsane [PHONE]commt and Push,Sthis->assertNull(Sext):oublie funetzion testPanseContactPhonellithExtensiionde voiaSservice = Sthis->aetSeruiceNockO:SoreData = f'Phone* => *[PHONE] cxt. 42'1.fSoansedMunber. Soxtl = self.sinvokePoivatckethod("nansefontactPhone" Sservice. F'US'. Sccelatal):hens?...
|
PhpStorm
|
Commit Changes
|
NULL
|
85792
|
|
86398
|
rapstomvewNeweNNCCoocKetucioWindowFV faVsco.s ~#12 rapstomvewNeweNNCCoocKetucioWindowFV faVsco.s ~#12121 on JY-20963-fx-inAdtwtyontroller.onga service.phiasanyiceteston>mutkewolcnnedvilycimbato.ongIa Wethookc Batchsynceo ecror.orrcRatchSuncRedeCanrce.o© Clent.phoc eoseddeaistarcosermieuDealFieldsService.php© DecorateActivity.phge feldaetinitions.ono© FieldTypeConverter.pho(© HubspotClientinterface.ph@ HubspotTokenManager.ot =7© PayloadBuilder.phoc) Remotcermocrec.wan .oulResponseNormalize.phoc) service.ono© SyncFieidAction.phocSuncrelateohcwiywanx17© WebhookSvncBatchProce> IntegrationApp› @ Listeners→lweradatal18Motaten→p nedriveMh Salesforce• FaldeMi Onnortun tMatchenOpportunitySyncStrategyProspectSearchStrategyIh Sennicetraird© Clent.phg© DecorateActivity.phpDeleteObiectsTrait.phpe Faldnafoitione mho© PayloadBuilder.pho(©) Profile.pho207© QueryBuilder.php© QueryHandler.pho208© Querviterator.ohc© QueryResuits.pho(c) Service,oho@ SvncBatchRedisService.of 24€la TraitsC BaseClient.php© BaseService.ohe© CachedCrmServiceDecoratoc countrvcoderesolver ohdCrmActivitvProviderintegrateCTermcv tsarioe.oodclermeontautatoncet doccerclermoniac shaes wero@ nelanttDrosneetSaarchStrate 27:© CrmActivityService.php xC Activity.php©) Team.phpclass cruacevzcyserviceprivate function updateParticipantsCrnData(EooersestratChiiRecords: SmatchedDomainRecords,Fo("[ConAct.v.tySenvice) CRH matching conpleted', LSactus tyosaettdlol._processed' => Sparticipants->count.s' => count(SmatchedRecords)es" => count (SmatchedDomainRecords),ound" =>! empty($bestMatch).› LdPerfornLookup(Particinant Sparticipant. Team Steam): bool ...=jateCrnConfiguration(Activity Sactivity): voidi.…astMatch(2array SmatchedRecords, ?array SaatchedDonainRecords): arravf...;> ConRecords(Particioant Sparticinant. Actávity Sactivity): 2arravá...}sekopart erinentpanta einant ShantscsnantebooittaashuserIfExists(Partieipant Sparticipant, Tean Stean): voidf..CardonsfnRecondewwwttw/wiew oureoneetsnmioutas.nedinu Lo moy twursServiceTestA2ASAY= custom.loglSF [minny@localhost)A console (EUTA console [STAGING"imiamyAND a.created at > DATE SUB(NOWO, INTERVAL 38 DAY)GROUP RY u.sd urenaitl, u.nane. M. softahone nunberORDER BY sms count DESC045 A1 A41 Y 66 Aselect * from teans where 1d = 1select * fron rolesCONCAT(U.1d, CASE WHEN U.1d = t.owner_id THEN • (ouner)' ELSE ** END) AS user_1d.t.oaner id FROM social_accounts saJoiN users u on u.1d = sa.soczablc1d1.n<->1: on taid = u.tean_idWUIO D7OSASASS YESneeweles HerE wisd to mnwssyoeuosecuuieotucomasseeuusor2891864197W10hereoie shSes where 5d= 43783select * fron playbook_categories where playbook_id = 5473Seld values where com 6ield d = 659262SSLEN + FROM CA 4e1d datar+IOTM cos Erelde & OM Edl eo €reld3d= €.30•IOTN ACtvtes A OM £dl sctsustu 3a =93dRERTuserid IN (7168, 18688) and created at > *2826-85-22' order by id descaselect * fron users where tean_id = 1 and id IN (18688. 13934, 7160)=select * fron activities where user_id = 7168 order by id desc linit 18:select * fron accountsselect * fron usenswhere nane Like '%Subrax': # 31054. 1117aetuity searches where lusen oe syisasparch &ilters where actiuity seanch ia TN (9998), BROR)):111|Cecsdales Orcnnworceoeionh1/ 0rosers/ tuxos/2Toreach (Sparticiponts as spariicipant)Srecords = Sthis-s1indCreRecords(Sparticipant, Sactivity):coly piccororritonter tiit w::wwinrecorddlierarnch. kerserth/l & This nay call Salesforce::matchByDomain()Step 7: Domain Search tnggers opportunity synoboin senrh eirs necount ens drinee" withi relaired oncorunt/l To get opportunity details, it calls:Scraservicessyndopponenstylscirtovzoerto):# couts aaporcopportunztyl)Step 8: The bua - importo pportunity creates temporary Recoro/Users/lukas/1m1nny/app/app/Services/cra/Salestorce/Servicc.php:1430-1448oriivate tunctionimoort@sportunt tylScr iatal: 20000rtuntvVxino early chelete chack8a. Restore fron trash (tine 1430)SthcesrestorAcyTrachwenttylsthiisescontossomortntlesol. SerDataloToebuny na sests wich valbld0io.l0ones34305833Sopportunity = Sthsooruaeolnoalasosaat RosborunitweseVADio la.or7hosy5yiumoor edusin thesid edine42sthices coort DocortuntverFelData (Ser Datar SorBtelds, Conoortunt tyesd)eM8ar Noh celeteit ansin itine 1444Sthis-shandle0bjectDeletion(Sopportunity, ScrnData):Sopportuntty=trashedIl Methad returs null, ButAat anuthientuat4 space...
|
PhpStorm
|
faVsco.js – CrmActivityService.php
|
NULL
|
86398
|
|
86072
|
rapstomvewCoocWindowFV faVsco.is ~#12121 on JY-209 rapstomvewCoocWindowFV faVsco.is ~#12121 on JY-20963-folproidetWnceredonAeUsciko cooscrytrionyTeom.one>u Listeners>(D Metadata>E Miaraton>&a Pipedriveusehyusalestorch- Fields= OpporunitvMatchenopportunitySyncstrategy› ProspectsearchStrategySerice traiisCleentontCDecmrate-cmwonnDeleteObjectstrait.phpcFaldseintonscho© PayloadBuilder.php© Profile.php© QueryBuilder.php© QueryHandler.php© Querylterator.php© QueryResults.phpo service.onlp© SyncBatchRedisService.ptD Traits© BaseClient.phoebrseoemce.on© CachedCrmServiceDecoratoreCouniincootkiowond(C CrmActivitvProviderintearateCCmAciMweiMoonrmConticurationSettinasserC) Detault Prospec SearchStrate)FindsProspectintertace.ohC@oportun tvact vitwMatcherOpportur tysvncstratecvintecprosnaeteache.ooo#ProspectSearchScope.phpclass Service extends BaseService nol esents.Salesfonceintenface.SalesforceBatchsyncinterface,Suncimenta tles intentace.$ %SynccrmProf1LeRecordtypesinterfacesonortcrus ness?racessesiintensacecprosnae SaatchSrathoe© ProspectSearchStrategyinterclprowdwewe ehr nong PococdSalnator nhoPacolvoCommaoNamAp.Em.RemoteEntityHanipulationinterfaceFerchte arednciavilyanterrace.SendSur arviocrhinterrace.Matchao ginsy-naztnterrace.Casrchtaskiintertace.CayouchondgenencinterraceSettingsIntenface.MatchfoeFntftfacTntanfacsкeaoreche ylookue htertaceSupports0briectTypeParseInterface.PasotalotaEnt/twManfoul.t5onTotonfaceVenyusxexsenrentocUst Keso Veconoanynaneoyrhartiruse Syncheldstraltuse velereubnecistraltuse Recordiantou atonstrart.use Servcetralts Barchsynchrartuse FollowupActivityTrait:use Looctviryiralt* Note Bodu bim tor the old Note-takiina Tool*awen snt1 usageanivate conet nt hsei Wins teNeiheyih*Note Contont Isest fon the Nor Nothe*Avan inttussge(C) TimaPorioditacatos nhaprivate const int ENHANCEO_NOTE MAX LENGTH = 50000000M Kinckprivate const steing INSTALLED PACKAGEП0 = *В33Т-60009876K67AT*• M MaiDeleteObjectsTrait.php© Client.phpTO0У L7Inu cowoy 1o.45i+0.A SF fiminny@localhost)A console [STAGING)D0000Ty: AutowINTERVAL 38 DAY.BY u.id, u.email, u.name, u.softphone numbenBY sns_count DESC;* fron teans where id = 1;console (PROD) x C Service.phpds consoeleu.eeendhles orcesirwichAetew045 A1 A41 У 66 AГОШТОЕНВШІ714715-718719720BEERRBREBERRERTYNCAT(u.id, CASE WHEN u.id = t.ouner_id THEN • (ouner)* ELSE ** END) AS user_idouner_id FROM social_accounts saeans t 1.nc->1ontd n.teandU.tean_id = 1117 and sa.provider = "hubspot":* FROM activities WHERE uuid_to_bin(*8824fffb-2df7-4817-91f4-d9f896050248') = uuid; # 79933459 YES* FROM activities WHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c') = uuid; # 80186192 NO*EROM eon confaurazons MHEPF 3d = 1953%* FROM teans WHERE 1d = 1117;* Eoon ucene whena 3d = 30240.* fron playbooks where id = 5473;* fron playbook categonies where id = 43783:* fron playbook categories where playbook_id = 5473:*foon enn ffalde whond id = 450222.* fron cra_field values where cra_field_id = 659242:* FROM crn_field_data fdcrnfields f ON fd.crm field id = f.ioactivities a ON fd.activity_id = a.idactivity_id = 79933459f.crn_provider_id = 'hs activity_type'* FROM activity-messages:* fron text. relayswhere created at > *2926-05-91*-* fron actsivities where user_id TN (7168, 18688) and created at > 2926-85-22' orden by id desciteam.id = 1 and 3d TN (18688, 13934, 2169):*£ron activities where usen 1a = 7169 order bu jd desc 1ini+ 10:*fnon accounts where tean 3a = 1and nane = "Colunos,.*Toon tasne whendae*foon Antéusty seanches whene usen $a = 71852.*Eoon sctkusty coanch Eilitane nhans actkusty cancch fa TM CRRRR2 RROQ2Cachado Codo XoKick of a new aroisct. Make chunoee salestorce servico vest coveragtFixing and Validating TextRelayService TesteCnlamkhur dor ihie Kranak lohoe hlhiwtAdhotv40m59m• oNtwodtur Tasms Tox-se Whies...
|
PhpStorm
|
faVsco.js – Service.php
|
NULL
|
86072
|
|
86095
|
rapstomvewCoocWindowFV faVsco.is ~#12121 on JY-209 rapstomvewCoocWindowFV faVsco.is ~#12121 on JY-20963-folproidetWnceredonAe>u Listeners>(D Metadata>E Miaraton>&a Pipedriveyusalestorch- Fields= OpporunitvMatchenopportunitySyncstrategy› ProspectsearchStrategySerice traiisCleentondCDecmrate-cmwonnDeleteObjectstrait.phpcFadse intonsrno© PayloadBuilder.php© Profile.php© QueryBuilder.php© QueryHandler.php© Querylterator.php© QueryResults.phpo service.onlp© SyncBatchRedisService.ptD Traits© BaseClient.phoeoreseviceon© CachedCrmServiceDecoratoreCouniincootkiowond(C CrmActivitvProviderintearateCCmAciMweiMoonrmConticurationSettinasserC) Detault Prospec SearchStrate)FindsProspectintertace.ohC@oportun tvact vitwMatcherOpportur tysvncstratecvintecprosnaeteache.ooo# ProsnectSearchScope.phpUsciko cooscrytrionyTeom.oneusehclass Service extends BaseService nol esents.Salesfonceintenface.SalesforceBatchsyncinterface,Suncimenta tles intentace.$ %SynccrmProf1LeRecordtypesinterfacesonortcrus ness?racessesiintensacecprosnae SaatchSrathoe© ProspectSearchStrategyintercprowdweeeeir dodg PococdSalnator nhoPacolvoCommaoNamAp.Em.RemoteEntityHanipulationinterfaceFerchte arednciavilyanterrace.SendSur arviocrhinterrace.Matchao ginsy-naztnterrace.Caarchtaskintertace,CayouchondgenencinterraceSettingsIntenface.MatchfoeFntftfacTntanfacsкeaoreche ylookue htertaceSupports0briectTypeParseInterface.PasotalotaEnt/twManfoul.t5onTotonfaceVenyusxexsenrentocUst Keso Veconoanynaneoyrhartiruse Syncheldstraltuse velereubnecistraltuse Recordiantou atonstrart.use Servcetralts Barchsynchrartuse FollowupActivityTrait:use Looctviryiralt* Note Bodu bim tor the old Note-takiina Tool*awennh1 usagoanivate conet nt hsei Wins teNeiheyih*Note Contont Isest fon the Nor Nothe*Avan inttussge(C) TimaPorioditacatos nhaprivate const int ENHANCEO_NOTE MAX LENGTH = 50000000MimnarM Kinckprivate const steing INSTALLED PACKAGEП0 = *В33Т-60009876K67AT*• M MaiDeleteObjectsTrait.php© Client.phpTO0У L7Inu cowoy 10.40.0"+0.A SF fiminny@localhost)A console [STAGING)D0000Ty: AutowINTERVAL 38 DAY.BY u.id, u.email, u.name, u.softphone numbenBY sns_count DESC;* fron teans where id = 1;console (PROD) x C Service.phpds consoe leu,eeendhlesOrcherwich045 A1 A41 У 66 AГОШТОЕНВШІ714715-718719720BEERRBREBERRERTYNCAT(u.id, CASE WHEN u.id = t.ouner_id THEN • (ouner)* ELSE ** END) AS user_idouner_id FROM social_accounts saeans t 1.nc->1ontd n.teandU.tean_id = 1117 and sa.provider = "hubspot":* FROM activities WHERE uuid_to_bin(*8824fffb-2df7-4817-91f4-d9f896050248') = uuid; # 79933459 YES* FROM activities WHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c') = uuid; # 80186192 NO*EROM eon confaurazons MHEPF 3d = 1953%* FROM teans WHERE 1d = 1117;* Eoon ucene whena 3d = 30240.* fron playbooks where id = 5473;* fron playbook categonies where id = 43783:* fron playbook categories where playbook_id = 5473:*foon enn ffalde whond id = 450222.* fron cra_field values where cra_field_id = 659242:* FROM crn_field_data fdcrnfields f ON fd.crm field id = f.ioactivities a ON fd.activity_id = a.idactivity_id = 79933459f.crn_provider_id = 'hs activity_type'* FROM activity-messages:* fron text. relayswhere created at > *2926-05-91*-* fron actsivities where user_id TN (7168, 18688) and created at > 2926-85-22' orden by id desciteam.id = 1 and 3d TN (18688, 13934, 2169):*£ron activities where usen 1a = 7169 order bu jd desc 1ini+ 10:*fnon accounts where tean 3a = 1and nane = "Colunos,.*Toon tasne whendae*foon Antéusty seanches whene usen $a = 71852.*Eoon sctkusty coanch Eilitane nhans actkusty cancch fa TM CRRRR2 RROQ2Cachado Codo XoKick of a new aroisct. Make chunoeca Salesforca Servico Test Coverao.C Fixing and Validating TextRelayService Testsc, Hubspol Poling Lock AnalystCnlamkhur dor ihie Kranak lohoe hlhiwt" PodnAdhotvNtwodtur Tasms Tox-se Whies...
|
PhpStorm
|
faVsco.js – Service.php
|
NULL
|
86095
|
|
85497
|
rapstomproidetWindowFV faVsco.|s ~o-t2t2t ml-snota rapstomproidetWindowFV faVsco.|s ~o-t2t2t ml-snota.©ActivityControlier.php=custom.loglaravel.logA SF fiminny@localhost)& console (PROD) Xv SalestorgLcAkokyociwco.onOAeindi.oneA console [STAGING>MFelde• # OpportunityMatcherOpportunitySyncStrateProspectSearchStrated• 5 ServiceTraitsClientTest.phoDecorateActivityTest.p© DeleteObiectsTraitTest© FieldDefinitionsTest.ph© GetActivityFieldNameTPayfoadBuilderTest.phgQueryBullderTest.phoQueryHandlerTest.pho© QuerviteratorTest.pho700Cass exkela seru chles exehos estast134Pc) Querykcsu stesioneC ServiceTest.phoc) Suncta chredk Servic© BaseService Test. phoceacheemsarcod.ocoEmal talnartest.ood© FieldValueconvertertestf,4© LayoutManagerTest.phpMiarateProv derSendcaleOnnortun tvA chivirlatchOnnortun tSwncStrateovfProsnactCachatast ohoProspectsearcnststegy.osz2 ProviderRecistryTest.php© RecordSelectorTest.pho*pasolveComoanyNamebylTim/OheatAetateAh© UpdateCrmDataResolverTwlathrnd>D Kioskwiewar>DActions› D Office> &a Resolvers→D traits• - [EMAIL]@ EmailActivitvServiceTest© InboxServiceTest.phpo meytcalavsemceltestood>M MeetinaGeneraton>M Notification#DataProvider("environmentProvider)782public function testisForCurrentenvironnentlithMatchingX6n0riginalToHeader(string SdeployRegion, string 70)#[DataProvider("environmentProvider')]public function testIsForCurrentEnvironnentWithNonMatchingX6n0riginalToHeader(string SdeployRegion.public function testIsForCurrentEnvironnentIgnoresToHeader: voidi...HННHHÀpublic function testIsForCurrentEnvironnentWithEnptyHeaders(): voidf...public function testIsForCurrentEnvironnentWithException: void{..}auodruncstonessuncusestuadrstorcuroronowospublic function testSyncUsesUsALiasForUsRegion: void{...}Rerect717public function test6etHistorywithPaginationO: voigConfig::set("jiminny.google_text_user'. "[EMAIL]'):contia:.setthiminny.aoggle text celay toonc', "testetooic")Sseruiice = Sthiiso>createlextPelaySeruicelorSgnailService = Sthis-›createMock or: 6oogleбnail::class)ShistoryResponse1 = Sthis->createMock(orignalClassNan1600gle|Service\Gnail ListHistoryResponse::=U 72ChretonuPocnanconthietanuld122/C1"getHistory'->willReturn(0p:ChretanuPocnancon-mothadlcoactr.'getNextPageToken' ->willReturn( value: "next-page-token')Shdetanupoenaneon - Cohle,sanoatolaait Mininsionselame1casnlol Conuinol Conttl l2ettietanuPosnancorShistoryResponse2->historyId = 12346ShistoryResponse2->method( constraint: 'getHistory')->willReturn([)ShistoryResponse2->method( constraint'getNextPageToken')->willReturn( value: null)SusersHistory = Sthis->createMock( originalClassName: \Google|Service|Gmail\Resource UsersHistory::clSusensHistony->nethod( constraint: "TictlsensHistory»)wwwkeurnintonsrcte.wemrenttton.esnsez, Shastorykesponse2);wache. choudheceuaanoohiwache. chou dhece velauro throese onewache. chou drecevelaurow tharos testetonieMockery::on(fn (Sexpires) => Sexpir74носkery::on(tn (sexpires) *> Sexpici74Sresult = Sservice-soetHistory(SonailService)TXS AUTO NIi.created at > DATE SUB(NOWO, INTERVAL 38 DAY.bY U.zo, U.enazl, U.nane, U.sorconone nundel:BY sms count DESCt * from teans where id = 1:* tron rolesONCAT(U.10, CASE WHEN U.4d = t.owner_id THEN " (ouner)' ELSE ** END) AS user.3domner thuh soot sccounusensu on uisid e shsocabledtcanst1.ndonsde u.teanand ea-orovider & "hubsoor"T * FROM activities WHERE uuid_to_bin(^8024fffb-2df7-4817-91f4-d9f896850248') = uuid; # 79933459 YES* FROM activities WHERE uvid_to_bin( [CREDIT_CARD]-927f-4f4da2a8185c') = uuid; # 80186192 NCT * FROM crn_configurations WHERE id = 1053;*SPOM teans THERE 50810025t * from users where id = 30249**tron nlavbooks where saln Shakt * from playbook categories where id = 43783;t * from playbook categories where playbook id = 5473t * from crn fields where id = 659242;t * from crn field values where crm field id = 659242T * FROM crn field data faN cre fields f ON fd.crm fleld id = f.idN activities a ON fd.activity id = a.idacavily10 = 799554541 f.crn provider id = 'hs activity type':T * FROM activity nessages** fron toxt relave where created at > 12826-85-01*.** fron activitice where usen id IM (7168, 18688) and coeated at > 12826-85-221 onden by sid desci** fron usens nhere tean id = 1 and Sid TN (18688, 13934. 7169),ttnonactivities where usen jid = 7168 onder by id desc Linit 16)rom nccounts where cennurds and inane "solunns** fron usens nhere nane Like IySubrakt: # 31054, 1117*Xrom teans nhere 5din10175***Erom actaiviity searches where lusen sdn318523trom actavity search Silltens where actaivity seanch sidTM 188882 88082# console fiaum045 A1 A41 У 66 4TO0У L7Thu 28 May 15:42:34axineainealieir+0.TextRelayServiceTest.php410-7ecndnexRehySewice.ondwowTextRelayservicctest.phg+0-TextRelayServicetest.php© docker exec docker lamp 1 php artisan test -filter TextRelayServiceTes:uincareoboonnessMetadata found in doc-comment for methogTests UnitlServicesoueetinodenerator1C000l GettoeetinoProviderTest:: testHasRequiredScopeN)Searched function abort unless in -himinnyapThoughtsSearched abort unless in -niminryapgTextRelayServiceTest.php+1-1O docker exec docker lanooho artisan test attiter TextRe avservicerestminetah ieA Knoesadura test docee eo use attrapreesites rinlec penerMetadata found in doc-comment for nethodTestelUnit|Services\Meet/inoGenerator/GooolMoetMeetinoProwiderTesttstestHSsReoufredScooowTextRclayServiccrest.phgAsk anything (XoL)o PodeswiettAcceot allKtwodeurlaime"eiireht4 spag...
|
PhpStorm
|
faVsco.js – TextRelayServiceTest.php
|
NULL
|
85497
|
|
86701
|
rapstomproidetCoocWindowFV faVsco.|s ~#12121 on JY rapstomproidetCoocWindowFV faVsco.|s ~#12121 on JY-20963-fx-l= custom.logIaravellogSF [minny@localhost)cliwarduscomnhotenwalenaedvitycimbalo.ongy uimaeumyociwiceonyUucrct winscwecuscorolo.oh(©) ProspectCache.php(C)) Camrica choconsole (EU »Ainancars fEunconcole ISTAGINGJiminhycocnee.corcom mono© Activity.phoimiamy* crass Jaaznnubebuocomsand031 A9 A28 M 3 У108 A VcOiminhyoecrowooor© JiminnyTokeninfoCommandr82811 ×3 A Y* soackaac Janznny console commandsOMaxeobexaweeocineC) ManageScimForTeam.choC) MarkBranchForEnvironmentPclass Jninnybebuocommand extends connanoc Propadatecoaching Feed oacc) Purgeconterences. onoC Removeunused Paric oentsoC Resetsastcsascch.onocRactorsCiamermotoranciRaetoreiamivaaeooecPineCeoeesolatacCaletitne noncCandNicossynittidaw(© SyncActivity.pho(© Trackimported.php@ MhichWarkoeleWadinadolM SchedulineC) KernelpheMGontracte› @b Domain> CODTO> ê Emails.› Ca Enums› Ea Evente› E Exceptions> O FFMoed0n FormatcHeloersTet Accessilokenprowidery controller•MApIMAlel ScornamAlteoonte338989889• Imsosline chteIOpportunn• B PageIn CeMoAsthe-Cottinatprotected ssignature =1mnny:debug factzon?,"public function handle: voidi...private function testRedisset: vo1dhnsossinfalt sinnor testand Rects Satmiith Phopeans suntayoStestKey = 'test:ratelinit:' . tine®:StestValue = (string) (tine() + 68):$ttl = 60;trySresult = Redis::set(StestKey. StestValue, 'EX'. Sttl, 'NX'):oresult - klotutec orcatney prcatralus= SttuDAif (Sresult)CAkteNinGhe strind'7 Redis SET with PhoRedis syntax succeeded),CahteinGasteinsthis-sintod"Value: (StestValue)*):"Tusirr secondsSretrtevedValue = Redis:"ger stestxev"Sthis->info( string: "Retrieved value: (SretcievedValue}"):Redis: :del(StestKey):Sthis-sinfodstelse 1Vtest key deleted"Sthis-serror( string: *X Rediis SET returned false (key nay already exist)•):carchult sxcenton Sanllthisesermon i sthne. Pedte Sartathede.Se->getMessage(D):thisesanmon i stino. "Tinacar t, Saosoetiinace eoxasioeloe1691169MACCI SELECT DISTINCT u,id, u,enail, u,nane, u,softohone nunber. COUNT(a,ja) as ses countFROM Users USiNER o acomdies a 1eos.n oh uisd e a.usen idWHERE a.type LIKEAND ALCCeSted at> DATE SUB(NOWO). INTEDUAI 70 NAVY6ROUP BY u.id, u.email, u.nane, u.softMonse tyene count hesheenSve taO. Crocit - Redkcuset(StostKcw, StestValue, Inx. 'ex' => Stul):t.tuilio_sms-sid, t.twilio_nessINNER JOIN teans t 1..n<->1: ON v.team.NuSoE le tdlin eoe cid ye Moy Muli opAND u.status = 1ORDER BY t.name, u.email:GGIEMT & SO0M 4OSNG NHEDE DARG ITKG 1SSELECHUea Find in Filas (419F) to nertorm full-teyt searchiCONCATCU,1O, CASE WHEN U,1d = t.onsa, *thouner 1d FROM socilal accounts seJ0TN usens u on unid = sa,sociable 1dJOTN teans + 1.nc->1: on tuid = u.tearWHERE u,tean 10 = 187 and sa,onowidenselect * fron actaivátaies whene $id = 32salect * "mon contacte wend 1d= 63%%salect *non accounts wend id = 45tsaledt"non onnortun dies wherd id# undate "nctávities" set 'account $alsollect + tron text relavs where creatacolont tmn satutloe andon hu id doca.colont & tmn ncond whond nandlo leSuhoottCSIENT & CONK ANNANtInSTOG NHSOS TIUSA TAUNIN D AINONEONDARTHLIEZ-O0TD DARANZRAAERR"TE WISAselect * fron teams where id = 555:1772COloAt & EAAn CtandG whond foOn "he Ges.ServiceTestinu co woy to.uo.+0.Cecsdales Orcnnworceoeionhtoreachsoartcnants as coarticioant// Line 144-150: If no enail natch, try DOMAIN matchleoryisrconSrecords a Sthis=sfindCrmDomainRecords(crmService: ScrmService, ...):nity SynoXe dca" wiithraatad onodetunlesforcelServicocauls inportopportunityervices/Cra/Salestorce/Service.oho:1430-1448(ScreData): ?0pportunityc1430)(Sthis→>config-›opportunities(), screData("Id']):AtuMAe VALTO TAA 17095257the thi enns 1442ldData (ScreData, ScrnFields, Sopportunity=>id):nA 144AStnis-ohand LeubiectDe let zon (Sopportunity, Scrabata)I/ 8e. Return null (Lines 1446-1448)socoortuny-o"rasheco)ratur anllff Mathod returne onll. pui.Ctan a.tha Cheesdad nalatadttnisoue to/detviAsk anything (Xo* @eocaAdhetywew oulteonasttodaylReyXwedelateeaikiins charetwhireh...
|
PhpStorm
|
|
NULL
|
86701
|
|
81089
|
rapstomWewCoocWindowFV faVsco.|s ~$ JY-20915-fix-m rapstomWewCoocWindowFV faVsco.|s ~$ JY-20915-fix-missing-header-textDockerfileno araluuuoreTextRelayServiceTest.php3.env.productionphe logging.phgphe logos.phpcloss lexckelayservact-A1A1A Vouoere Tuncczon syne diidPmailenie"moxro.oneHenwoonephe media-streaming.php"wrowne lcalonequeue.onosalestorce.oinswpsecure-neaders.ongwpservices.phopip slack ohephptimezones.ohgpho wenno.kasarver.ond>E contrib→darabas.rontcent>UlangE node_modules library rooten chostanM oublic,C resourcesv hroutesphe api.phpphe api_v2.phpno console.onocustomercLonoaemocooco.oneppcim-onompuoro ecuo weo.onepp Weo.onephp webhook.oho>On scriptsSexpectedAlias = config( key. "jininny deploy-region') aa= 'eu' ? "catch-all-eu' : 'catch-alSexpectedHost = config( key. "jiminny,coogle texthost')loa:"infoonago: '[TextRelayService) Starting sync', [nalbox a> smatloox,expected abas a> Sexoected,das=> Sexoectedhost.Sserusice = Sthis-sgerServicelsnaslbox)SnessageHistory = Sthis->getHistory(Sservice):nuuuesoata Sunnont Sacadae lide.echenoa li chande. Deueton channeus nedlCraceaoalsetomuKeaessontde =foreach (SnessageHistory as Shistories)Snessages = Shistories->messagesAdded 2? 0=foreach (Snessages as Smessage) 1Snessageld = Smessage->nessage->id;if (l Sthis->isForCurrentEnvironment(Sservice, Snailbox, Smessageld, SexpectedALias, Sexpe »SrelavedText = TextRelav::where( column: 'enaiorovider_id' Snessageld)->firsto.Sif (ScelavedText a= null) "relavedlexeexiee"status e> Textrelay:.sTAlus PRodESSisSiob = new Ene Tex te ayts nessacela Shelavedtext"Siob->ondueuel queue: constanterouaueErAs)vên storage› Eo apo>E debuabal|//disontchls iobrameworkv êa loas.Lootintot messace: "TextRelaySeruicel Succosstukly disnatched nessaoe".eitionore• audio, wav=nunsmote cuma troCaravell8 ahounit .ymTAAAANNmacennd a' rs Chacesaslaltext relayid' => Srelayediext->id.auomto"hanetanteremisils sartdCnocconottcltlr Choceanold»SF (iminny@localhost)HS Jocal jiminny(blocalhost)& console [PROD)# consoke leu.2826-85-28 87:47:501 Local.INF0: SparanshistoryTypes => messageAddecstartHistoryId) => 359921correlazon1d:YaC0//105-c215-4442-[CREDIT_CARD]-(2826-85-28 87:47:581 Local.INF0: SnessageHistor1d":*87f39623-3deb-4827-aBcf-b862acc93289**correlarion.1d:%acc/05-0245-4442-0880-126287652090TraC6-10: [CREDIT_CARD]-a86т-0862aec93289-17876-85028 87rS8:57omuufts Soaranslhn tory iwnesi messade.dde.startHistorytoll50%2cornellatiionsd"."ph67/206-7350-172h-6789-40a7456066550 "trace 3o".=62a0Rohp-d660-hcAu-h1de-R/3ceccba6at*2826-85-28 87-58-5811 JocnlTWEn: Snessadels stomEconnelatton Saw."ehf71z0h-775a.170h-h780.40.7456e01550 "tлaCA S/.-6290R0/9-1640-hc04-h1de-9/3cecchaf91»)TextRelayServiceTest7o0sLXo nu comoy 10:04.51+0.OTXCONHENYSWWICNew PHP manual is available (latest: 3.0.71. Undate with doc euodatc-eanunl> Ssvc = new class extends (Jiminny|Services|Mail TextRelayService ( public functionconstruct00)-iminawCanncasnliTaytrelsancssnoc.umone.t..rm> Samail = Ssvc-sgetService contialyiminny.google-textuserThe message is gone — it was likely trashed by the job's finally block (trastMessage() is called afterorocescina)I or it exored. Either waw ins no longer tetchaole)The key question is: why is the warning still appearing? it means new messages keep arriving without x-Gn-0rigThe user reverted my iix (back to only checking X-ce-oriainaloro, so messages sent dircctly to catch»all+...эрростуксь иннехкевуsвуke pip aspoct it before it gets trashed, you can temporarily add logging of all headersin isForCurrentEnvironmentRead TextRelayService.php #L182-211oex RetMSewiceonAsk anything (XoL)*« eodeAdhotv• oworeur Tatmehiest4 spad...
|
PhpStorm
|
faVsco.js – TextRelayService.php
|
NULL
|
81089
|
|
86050
|
rapstomWewCoocWindowFV faVsco.|s ~#12121 on JY-209 rapstomWewCoocWindowFV faVsco.|s ~#12121 on JY-20963-fx-lproidetWnceredonAe>u Listeners>(D Metadata>E Miaraton>&a Pipedriveyusalestorch- Fields= OpporunitvMatchenopportunitySyncstrategy› ProspectsearchStrategySerice traiisCleentondCDecmrate-cmwonnDeleteObjectstrait.phpcFaldseintonscho© PayloadBuilder.php© Profile.php© QueryBuilder.php© QueryHandler.php© Querylterator.php© QueryResults.phpo service.onlp© SyncBatchRedisService.ptD Traits© BaseClient.phoebrseoemce.onwchcimseneorconoeCouniincootkiowond(C CrmActivitvProviderintearateCCmAciMweiMoonrmConticurationSettinasserC) Detault Prospec SearchStrate)FindsProspectintertace.ohC@oportun tvact vitwMatcherOpportur tysvncstratecvintecprosnaeteache.ooo#ProspectSearchScope.phpUeerRokObserver.ohpyTeom.oneuseh3 Бclass Service extends BaseService nol esents.Salesfonceintenface.cprosnae SaatchSrathoe© ProspectSearchStrategyintercprowdweeeeir dodg PococdSalnator nhoPacolvoCommaoNamAp.Em.SalesforceBatchsyncinterface,Suncimenta tles intentace.SynccrmProf1LeRecordtypesinterfacesonortcrus ness?racessesiintensaceRemoteEntityHanipulationinterfaceFerchte arednciavilyanterrace.SendSur arviocrhinterrace.Matchao ginsy-naztnterrace.CaerchitiknrcrrdceCayouchondgenencinterraceSettingsIntenface.MatchfoeFntftfacTntanfacskenorccner ylookoo ncertaceSupports0briectTypeParseInterface.RemoteNoteEntityManipulationInterfaceVenyusxexsenrentocUst Keso Veconoanynaneoyrhartiruse Syncheldstraltuse velereubnecistraltuse Recordiantou atonstrart.use Servcetralts Barchsynchrartuse FollowupActivityTrait:use Looctviryiralt* Note Bodu Bioit for the 0ld Note-Taksina Tool*awennh1 usagoanivate conet nt hsei Wins teNeiheyih*Note Contont Isest fon the Nor Nothe*Avan inttussge(C) TimaPorioditacatos nhaprivate const int ENHANCEO_NOTE MAX LENGTH = 50000000MimnarM Kinckprivate const steing INSTALLED PACKAGEП0 = *В33Т-60009876K67AT*• M MaiDeleteObjectsTrait.php© Client.phpa| 5ServiceTestOwW nU LoMoy 1o.4L+0.A SF fiminny@localhost)console (PROD) x C Service.phpds consoeleu.A console [STAGING)D000€Ty: Autow784ГОШТОЕНВШІ71471571!719720BEERRBREBERRERTYINTERVAL 38 DAY.BY u.id, u.email, u.name, u.softphone numbenBY sns count DESCDojminnyv945 A1 A41 У 66 A* fron teans where id = 1;" tron roles.NCAT(u.id, CASE WHEN u.id = t.ouner_id THEN • (ouner)* ELSE ** END) AS user_idouner_id FROM social_accounts saeans t 1.nc->1on t.id= u.tean jdU.tean_id = 1117 and sa.provider = "hubspot":* FROM activities WHERE uuid_to_bin(*8824fffb-2df7-4817-91f4-d9f896050248') = uuid; # 79933459 YES* FROM activities WHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c') = uuid; # 80186192 NO*EROM eon confaurazons MHEPF 3d = 1953%* FROM teans WHERE 1d = 1117;* Eoon licene whene 3d= 30240-* fron playbooks where id = 5473;* fron playbook categonies where id = 43783:* fron playbook categonies where playbook_id = 5473:*foon enn ffalde whond id = 450222.* fron cra_field values where cra_field_id = 659242:* FROM crn_field_data fdcrnfields f ON fd.crm field id = f.ioactivities a ON fd.activity_id = a.idactivity_id = 79933459f.crn_provider_id = 'hs activity_type'* FROM activity-messages:where created at > *2826-05-91*•* fron actsivities where user_id TN (7168, 18688) and created at > 2926-85-22' orden by id desci* fron users where team id = 1 and id TN (18688, 13934. 7169)=*£ron activities where usen 1a = 7169 order bu ja desc 1ini+ 18:*fnon accounts where tean 3a = 1and nane = "Colunos,.*Toon tasne whendae*foon antsusty seanches whane usen $a = 71852.*Eoon sctkusty coanch Eilitane nhans actkusty cancch fa TM CRRRR2 RROQ2eeendhles orcesirwichCacaado CodoxoKick of a new proisct. Make chunoe111e salestorce servico vest coveragtFixing and Validating TextRelayService TesteCnlamkhur dor ihie Kranak lohoe hlhiwtAdhotv39m58mXtModtur Tatme Toxcsehireh*4 space...
|
PhpStorm
|
faVsco.js – Service.php
|
NULL
|
86050
|
|
86101
|
rapstomWewCoocWindowFV faVsco.|s ~#12121 on JY-209 rapstomWewCoocWindowFV faVsco.|s ~#12121 on JY-20963-fx-lProinet vWnceredonAe>u Listeners>(D Metadata>E Miaraton>&a Pipedriveyusalestorch- Fields= OpporunitvMatchenopportunitySyncstrategy› ProspectsearchStrategySerice traiisCleentondCDecmrate-cmwonnDeleteObjectstrait.phpcFaldseintonscho© PayloadBuilder.php© Profile.php© QueryBuilder.php© QueryHandler.php© Querylterator.php© QueryResults.phpo service.onlp© SyncBatchRedisService.ptD Traits© BaseClient.phoebrseoemce.onwchcimseneorconoeCouniincootkiowond(C CrmActivitvProviderintearateCCmAciMweiMoonrmConticurationSettinasserC) Detault Prospec SearchStrate)FindsProspectintertace.ohC@oportun tvact vitwMatcherOpportur tysvncstratecvintecprosnaeteache.ooo#ProspectSearchScope.phpUeerRokObserver.onpyTeom.oneuseh3 Бclass Service extends BaseServce inolements.Salesfonceintenface.cprosnae SaatchSrathoe© ProspectSearchStrategyintercprowdweeeeir dodg PococdSalnator nhoPacolvoCommaoNamAp.Em.SalesforceBatchsyncinterface,Suncimenta tles intentace.SynccrmProf1LeRecordtypesinterfaceonorrchus nesspracessesiintentaceRemoteEntityHanipulationinterfaceFerchte arednciavilyanterrace.SendSur arviocrhinterrace.Matchao ginsy-naztnterrace.CaerchitiknrcrrdceCayouchondgenencinterraceSettingsIntenface.MatchfoeFntftfacTntanfacsкeaoreche ylookue htertaceSupports0briectTypeParseInterface.RemoteNoteEntityManipulationInterfaceVenyusxexsenrentocUst Koso Veronoanynaneoychartrause Syncheldstraltuse velereubnecistraltuse Recordiantou atonstrart.use Servcetralts Barchsynchrartuse FollowupActivityTrait:use Looctviryiralt* Note Bodu Bioit for the 0ld Note-Taksina Tool*awennh1 usageanivate conet nt isei Wiii nhey*Note Contont Isest fon the Nor Nothe*Avan inttussge(C) TimaPorioditacatos nhaprivate const int ENHANCEO_NOTE MAX LENGTH = 50000000MimnarM Kinckprivate const steing INSTALLED PACKAGEП0 = *В33Т-60009876K67AT*• M MaiDeleteObjectsTrait.php© Client.php•• Thu 28 May 16:45:14ServiceTest+0.A SF fiminny@localhost)A console [STAGING)D0000Ty: AutowINTERVAL 38 DAY.BY u.id, u.email, u.name, u.softphone numbenBY sns_count DESC;* fron teans where id = 1;console (PROD) x C Service.phpds consoe leu,eeendhlesOrcherwich045 A1 A41 У 66 AГОШЕОЕНВШІ714715-718719720BEERRBREBERRERTYNCAT(u.id, CASE WHEN u.id = t.ouner_id THEN • (ouner)* ELSE ** END) AS user_idouner_id FROM social_accounts saeans t 1.nc->1ontd n.teandU.tean_id = 1117 and sa.provider = "hubspot":* FROM activities WHERE uuid_to_bin(*8824fffb-2df7-4817-91f4-d9f896050248') = uuid; # 79933459 YES* FROM activities WHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c') = uuid; # 80186192 NO*EROM eon confaurazons MHEPF 3d = 1953%* FROM teans WHERE 1d = 1117;* Eoon ucene whena 3d = 30240.* fron playbooks where id = 5473;* fron playbook categonies where id = 43783:* fron playbook categories where playbook_id = 5473:*foon enn ffalde whond id = 450222.* fron cra_field values where cra_field_id = 659242:* FROM crn_field_data fdcrnfields f ON fd.crm field id = f.ioactivities a ON fd.activity_id = a.idactivity_id = 79933459f.crn_provider_id = 'hs activity_type'* FROM activity- messages:* fron text. relayswhere created at > *2826-05-91*•* fron actsivities where user_id TN (7168, 18688) and created at > 2926-85-22' orden by id desciteam.id = 1 and 3d TN (18688, 13934, 2169):*£ron activities where usen 1a = 7169 onder bu ja desc 1ini+ 18.*fnon accounts where tean 3a = 1and nane = "Colunos*.*Toon tasne whendae*foon Antáusty seanches whane usen $a = 71852.*Eoon sctkusty coanch Eilitane nhans actkusty cancch fa TM CRRRR2 RROQ2Cacaado CodoxoKick of a new proisct. Make chunoeca Salesforca Servico Test Coverao.C Fixing and Validating TextRelayService Testsc, Hubspol Poling Lock AnalystCnletm kur don ihie tranah Alohoee hlhmiewhe th deee nnn" PodnAdhotvXtModtur Tatme Toxcsehireh*4 space...
|
PhpStorm
|
faVsco.js – Service.php
|
NULL
|
86101
|
|
86105
|
rapstomWewCoocWindowFV faVsco.|s ~#12121 on JY-209 rapstomWewCoocWindowFV faVsco.|s ~#12121 on JY-20963-fx-lProinet vWnceredonAe>u Listeners>(D Metadata>E Miaraton>&a Pipedriveyusalestorch- Fields= OpporunitvMatchenopportunitySyncstrategy› ProspectsearchStrategySerce traitsCleentondCDecmrate-cmwonnDeleteObjectstrait.phpcFaldseintonscho© PayloadBuilder.php© Profile.php© QueryBuilder.php© QueryHandler.php© Querylterator.php© QueryResults.phpo service.onlp© SyncBatchRedisService.ptD Traits© BaseClient.phoeoreseviceonwchcimseneorconoeCouniincootkiowond(C CrmActivitvProviderintearateCCmAciMweiMoonrmConticurationSettinasserC) Detault Prospec SearchStrate)FindsProspectintertace.ohC@oportun tvact vitwMatcherOpportur tysvncstratecvintecprosnaeteache.ooo#ProspectSearchScope.phpUeerRokObserver.ohpyTeom.oneuser.3 Бclass Service extends BaseServce inolements.Salesfonceintenface.cprosnae SaatchSrathoe© ProspectSearchStrategyinterclprowdwewe ehr nong PococdSalnator nhoPacolvoCommaoNamAp.Em.SalesforceBatchsyncinterface,Suncimenta tles intentace.SynccrmProf1LeRecordtypesinterfacesonortcrus ness?racessesiintensaceRemoteEntityHanipulationinterfaceFerchte arednciavilyanterrace.SendSur arviocrhinterrace.Matchao ginsy-naztnterrace.CaerchitiknrcrrdceCayouchondgenencinterraceSettingsIntenface.MatchfoeFntftfacTntanfacsкeaoreche ylookue htertaceSupports0briectTypeParseInterface.RemoteNoteEntityManipulationInterfaceVenyusxexsenrentocUst Koso Veronoanynaneoychartrause Syncheldstraltuse velereubnecistraltuse Recordiantou atonstrart.use Servcetralts Barchsynchrartuse FollowupActivityTrait:use Looctviryiralt* Note Bodu Bioit for the 0ld Note-Taksina Tool*awen snt1 usageanivate conet nt isei Wiii nhey*Note Contont Isest fon the Nor Nothe*Avan inttussge(C) TimaPorioditacatos nhaprivate const int ENHANCEO_NOTE MAX LENGTH = 50000000MimnarM Kinckprivate const steing INSTALLED PACKAGEП0 = *В33Т-60009876K67AT*• M MaiServiceTestDeleteObjectsTrait.php© Client.php• Thu 28 May 16:45:21+0.A SF fiminny@localhost)A console [STAGING)D0000Ty: AutowINTERVAL 38 DAY.BY u.id, u.email, u.name, u.softphone numbenBY sns_count DESC;* fron teans where id = 1;console (PROD) x C Service.php# console fiaumeeendhlesOrcherwichAetew045 A1 A41 У 66 AГОШТОЕНВШІ714715-718719720BEERRBREBERRERTYNCAT(u.id, CASE WHEN u.id = t.ouner_id THEN • (ouner)* ELSE ** END) AS user_idouner_id FROM social_accounts saeans t 1.nc->1ontd n.teandU.tean_id = 1117 and sa.provider = "hubspot":* FROM activities WHERE uuid_to_bin(*8824fffb-2df7-4817-91f4-d9f896050248') = uuid; # 79933459 YES* FROM activities WHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c') = uuid; # 80186192 NO*EROM eon confaurazons MHEPF 3d = 1953%* FROM teans WHERE 1d = 1117;* Eoon ucene whena 3d = 30240.* fron playbooks where id = 5473;* fron playbook categonies where id = 43783:* fron playbook categories where playbook_id = 5473:*foon enn ffalde whond id = 450222.* fron cra_field values where cra_field_id = 659242:* FROM crn_field_data fdcrnfields f ON fd.crm field id = f.ioactivities a ON fd.activity_id = a.idactivity_id = 79933459f.crn_provider_id = 'hs activity_type'* FROM activity- messages:* fron text. relayswhere created at > *2926-05-91*-* fron actsivities where user_id TN (7168, 18688) and created at > 2926-85-22' orden by id desciteam.id = 1 and 3d TN (18688, 13934, 2169):*£ron activities where usen 1a = 7169 order bu jd desc 1ini+ 10:*fnon accounts where tean 3a = 1and nane = "Colunos,.*Toon tasne whendae*foon Antáusty seanches whane usen $a = 71852.*Eoon sctkusty coanch Eilitane nhans actkusty cancch fa TM CRRRR2 RROQ2Cacaado CodoxoKick off a new oro© Fixcing and Validating TextRelayService TestsExplain to me how does this branch dift solves the issue with. ls the description: When an opportunity is deletedton joo runs, scuvides unhe delated omno tiaity euiaino a forkian teu consteiat vialutionscurs in Salesforco:importOpportunity (and similar methods for Lead, Account, Contact):sforce returns a record with isDeleted = true, the code:neoendsdieobjectdeletion (because IsDeleted = true• муо оон e outin bocd on Aey o uoen be etete o oa tu t ne longr oitein theAdhotvXtModtur Tatme Toxcsehireh*4 space...
|
PhpStorm
|
faVsco.js – Service.php
|
NULL
|
86105
|
|
71237
|
rapstomViewPe master xCoocCaravelKetdcioFV faVsco. rapstomViewPe master xCoocCaravelKetdcioFV faVsco.|s ~©InternetMessagelnterface.php© MailChannelService.php› @ MeetingGeneratoranowcadonEOHUNPlaybooks—KeCaLAotaeeStreaminga TeamTelephonyC) • enttoken cenerator cho© InsightsService.phpC NumberAl locator.ond© TextMessagingService.phpC) Tw oe entono©TwilfoClientBulider.php© [EMAIL]@Webhook©AbstractService.php©ActivityProviderFactory.php©ActivityService.php© ApiResponseService.php© ConferenceService.php©InsightSeatService.php© InstantMeetingService.php©IntercomService.php© lpapiClient.php©lpap/Service.phpawannasemorn© PlaybackService.php© PlaybackVideoOnlyService.php© PlaybookCategoryService.phpwawis GenttuntohC Smolethrottlesemce.ond© SlackService.phpC) SocialAccountSammice ono.© SoftPhoneService.phpC) Team [EMAIL]) TeamSevice.oho©TranscodeParameterResolver.phpe lliearCon.no nhn© Uuid.php› MltcoracooE custom.logA console [STAGING)E laravel.logA SF jiminny@localhost)HS Jocal [jminny@localhost)console (PROD] x console (EU)BOдSAMASEcloss Texckeldyservachpuoere tunceion synce. orroyA1A10 AvSexpectedAlias = config( key. "jininny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all': 692SexpectedHost = config( key."jininny.900gle_text_host');MessacehstordotiSooetSoeSieessaceostorforeach (SnessageHistory as Shistonies) "foreach (Snessages as Snessage) (Snessaceld =sessace->message.>1oh72888if (: Sthis->isForCurrentEnvironment(Sservice, Snailbox, Snessageld, SexpectedAlías,continue:SrelayedText = TextRelay::ahere( column: 'enail_provider_id', Snessageld)->first:if (SrelayedText aa= null) {SrelayedText = TextRelay::createCl'enail_provider' => TextRelay::PROVIDER_GSUITE,'enail_provider_id' => Snessageld,"status' => TextRelay::STATUS_PROCESSING,=714=Sjob = (new EnailTextRelay(SnessageId, SrelayedText)) ->onQueue( queue: Constants: : QUEUE= 715oSoarchEOonessaceosusessaeeo722_723—724725oub be functsion cerhlistony coodlectah Sseruscel: armaySonacloken = nul:Stonic e cont tad key. "ininny.aoogle teyt relay coptc"olSmassnacs = MShistoryid\Cache::get(Stopic):/ If we have no history stored, HatchMailboxEvents nust not have run yet :/if (Shisteryid m false) €c vot?naue 1oo cocallCaoarate inont Shom Anumore K minitae doTy:ANto wOo yminnyv045 A1 A41 X66 A ~FROM text_relaysWHERE vuid = uvid_to_bin(^8626141c-27a6-4d8c-aff8-7c8028a2c656');* [PASSWORD_DOTS],SELECT DISTINCT v.id, v.enail, u.nane, u.softphone_nunber, COUNT(a.id) as sms_countFROM users uINNER JOIN activities a ON u.id =.user_idWHERE a.type LIKE 'sms%"AND a.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)GROUP BY u.id, v.email, u.nane, u.softphone_numberORDER BY sns_count DESC;select * fron teams where id = 1;select * fron rolesCONCAT(U.1d, CASE WHEN U.id = t.ouner_id THEN ' (ouner)' ELSE "* END) AS user_id,t.ouner_id FROM social_accounts saKihimneone tontdeeneoehileJOIN teans t (1.n<->1: on t.id = U.tean_idNHSPS 1 toon 1d = 1112 and en ncouidon = thubenattSELECT * FROM activities WHERE uuid_to_bin('8024fffb-2df7-4017-91f4-d9f896050248') = uuid; # 79933459 YESSELECT * FROM activities WHERE uuid to bin(*[CREDIT_CARD]-927f-4f4da2a818Sc') = uuid; # 80186192 NOSELECT * FROM crn_configurations WHERE id = 1053;CSISOY & SO0M tonne WHGOE 12 = 11121select * fronusers where id= 30249:select * fron playbooks where id = 5473;select * fron playbook_categories where id = 43783;select * fron playbook_categories where playbook.id = 5473;select * fron crn_fields where id = 659242;select * fron crn_field_vatues nhere crn_field_id = 659242;SELECT * FROM crm_field_data fd• JOIN crn_fields f ON fd.crn_field_id = f.1d# JOIN activities a ON fd.activity_$d = a.1dWHERE activity_id = 79933459# AND f.crn_provider_id = 'hs_activity_type':select x fron text_relays where created_at › *2826-05-01*:select * fron actávities where user_id IN (7168, 18608) and created_at > ^2026-05-22' order by id desc;D00%L7TUc coMd SrS2:4U TextRelayServiceTest~+0.WCacaado GodoxoKick off a new project. Make changese, Investosting Missing Text RelaysAsk anything (XOL)" eodeChude dousw Madhum• CMwindeurlhsmeoelthieh*4 space...
|
PhpStorm
|
faVsco.js – TextRelayService.php
|
NULL
|
71237
|
|
80538
|
rapstomViewNeweNiCCoocTOOI-WindowFV faVsco.s ~$ JY rapstomViewNeweNiCCoocTOOI-WindowFV faVsco.s ~$ JY-20915-fix-missing-header-text-re© DealStageTransformer.phpgrostureltonstoner.onOridd tfonstotmer.ondorielovalelon omeone© ForecastTransformer.ohdCOoeaikxWoeonon© GroupTransformer.ohooneoaononoero© InvitationTransformer.ohccJoo eansouneoneC LanquageDialect TransformeCLavout Enttviranstormer choC Lavout Transformer.ohoC) Lesdtranstormer.oho@ MessageTransformer.ohoCMomentitranstormer.ono© NoteTransformer.choCNotrestontttans ormer.onoLochlehnotchandesesenullocallaoc@.liminnv?ebuCommand.cho.ano/Console/Commandsphe logging.php configTaytRelavSarvica pho ann Contceshl• Unversianad Filas 9 Caophe api.phpecam contro cror# composer.ison• Dockerfilepublac tuncizon serwouerau loool Snouetaul...oublac tuncizon transtor Field Smeld: arrawSdetau vailme atel de%deraut walluertune asedosvne:ess nooikdeau rVatwe)DSdefau Vailme KhooiaSdetau thailue:neturn"id' => $field->id_string.'objectType' => Sfield->object_typeT0 +→ 0 Side-by-side viewerDo not ignoreyXB0?@ 890e4292 app/Services/Mail/TextRelayService.phSservice = Scnis->oe servzcelsnazLbox*Sacssagchistory = Schis->oe hascory SservicehaSmessagcIds = 1:foreach (SnessageHistory as Shistories) ‹Snessades = Shistonies->nessaoesAdded 23 01:5j00 = new EnaltTextRelay(Snessageld, Srelayedtext):Siohesondueue Constants: -OUSUS SMATISIAciisoatchlsiohlocr-ntold TeytRelavSenusce Successfulily disnatched nessace".raccade 1d" = Snessacetal"teyt calav d' = ScelavenTeytosd.tay4SnsdeToken?Sparass i"pageToken' = SpageTokenShistoryResponse = Sservice-›users history->ListUsersHistorydconfig@"jininny.google.text_user')SoarasTO0У L7oo inu co moy tuizorssTextRelayServiceTestaraveliosSF (iminny@localhost) x HS.Jocal (jminny@alocalhost)# console pron# consolefFulA console (STAGING=269=127.ler henwserwiet+0.Tc Autoycan I test it locally first. if I place env from staging021 A1 A18 V2 V6 Aorowider_user token": "VIU:AOT8AH1-ZTNKZwuuuaLO-2haogcru.KhokeFlogrinxoo.oAE0hon00varnvlchEvnovszaaaaT1иимОкОnклbyк55кa0exotres:989199Yes. The service relies on a tew thinas vou'd need in place1. Credentials file The constructor expects storage/text-relay.json (a Google service account JSON key file)Gmbtrom sthaind and oince it there2. .env values to copy from stagingMect * fron con feld vallues?con felds where tuoe = "nult-oickiaisteLECT * FRON crm_layouts WHERE uUid_to_bin( 70527871-fc25-4c56-9a8f-44058849d65c') = uuid;* EROX con lavout entoroes nHER!conavout= 778GOOGLE TEXTUSERECOOGLE TEXTI HASTGOOGLE TEXT RELAY TOPIC:DEPLOY REGION:the cnail mailbox address# e.g. txt.jiminny.com or txt.staging.jiminny.com# eu or usLECT * FROM crm_fields WHERE id = 3814; # 1883Ssm"eikeraa valne hsps enstmei3. Run the svnc manualiv vin tinker tinside docker 1aeo 1%Ask anminineto(CodeAdaptivZdhoroncaeSservice = Sthis->getService(Seaflbox) :Secssaachiscory = schis->octhtscorylsservice"Saessnacids = f1elforeach (SnessageHistory as Shistonies) «Smessages = Shistories->messagesAdded ?? [];Siohn nen Enat extRelaylSressaceid. Srelavediext)"Sioh-sonQueue (Constants+-OUFllS FNATIS).dsnatch SilohLog::info(' [TextRelayService) Successfully dispatched message', ["nessace "a' => Scacsaceldl"text relay 1d' => SrelayedText->id,tavif (SpageToken)Sparans ""pageToken' = SpageToken:ShistoryROuD GOT RASAt ARGASANETANeIwodeueime ehiekahensa....
|
PhpStorm
|
faVsco.js – FieldTransformer.php
|
NULL
|
80538
|
|
83184
|
rapstomViewNeweNiCCoocEV faVsco,ls ~> Dapp :•h rapstomViewNeweNiCCoocEV faVsco,ls ~> Dapp :•h Extemal Vibraries› Eº Scratches and ConsolesKetucioTOOI-WindowService.php© Team.phpwnapers.ohDeleteObjectsTrait.phpo komeLont@ UserRoleObserverTest.php©ActivityController.php© TextRelayServiceTest.phppto autoload. phproneaehonessdrchestony ds ohastondesnessages = shiscorzes->nessagesxodeostoreachsnessages as snessageSnessageId = Smessage->nessage->id:if (I Sthis->isForCurrentEnvironnent(Sservice, Snailbox, Snessageld, Sexpected0riginalRecipient)) ‹contanuc:UserRoleObserver.php$0ServiceTest• console [STAGING)•• Thu 28 May 13:12:34DSrelavedtext = TextRelay::wherel'enaroroviden1d" Snessaded=2nstoif (SrelayedText aa= null) (re avedlteyt "eytre au.ccrearel> TextRelay::PROVIDER_GSUITE,emartunrowiden1oneccanelid.'status' a> TextRelay::STATUS_PROCESSING,Checked out Jy-28963-fixoiroont-on-deletod-entitySjob = new EmailTextReLay(Snessageld, SrelayedText)-›onQueue(Constants: : QUEUE_EMAILS):dispatch($job);SnessaceIds(l = SnessageId:nerunh sacdobrospublic function getHistory(GoogleGnail Sservice): arraySoageroken = nulStopic = config("jiminny.googie_text_relaytonic"):Snessages = 0);Shistoryidrache: aer stootc)"// If ne have no history stored, HatchMailboxEvents nust not have run vet a1f (Shistoryid = false) (Shuistonuin=rhisosrenachhsstonyposorsmooscSparans = (shstonulivnnss"etantkh etonuldt es Shsetonyldldo {•SF [iminny@localhost)A HS Jocal ([iminny@localhost)• console [PROD] >SELECT * FROM teans WHERE name LIKE "XZútáfyX"; # 1069, 994, 24993SELECT * FROM USerS WHERE 1d = 25061;SELECT * FROM CMR_profiles WHERE crn_configuration_id = 994;SELECT * FROM CMR_profiles WHERE user_id = 25061;select x fron crn_configurations where id = 834;SELECT * FROM teans WHERE id = 882;SELECTCONCAT(u.id, CASE WHEN u.id = t.ouner_id THEN ' (owner)' ELSE "* END) AS user_id,v.enait,t.ouner_id FROM social_accounts saJOIN users u on u.id = sa.sociable_idJOTN teans t 1.nc->1: on t.id = u.tean.1dWHERE U.tean_id = 882 and sa.provider = 'hubspot':SELECT * FROM CMn_configurations where id = 882; # 933 - GoGlobatSELECT * FROH opportunities WHERE tean_id = 935 order by updated_at descSELECTCONCAT(U.1d, CASE WHEN u.id = t.ouner_id THEN • (owner)' ELSE ** END) AS user_id.v.email,sa.*,t.ouner_id FROM social_accounts saJOIN users u on u.id = sa.sociable_idJOIN teans t 1ne-»t: on t.id = u.tean_idWHERE v.tean_id = 933 and sa.provider = 'hubspet';SELECT * FROM crm_configurations WHERE provider = 'hubspot' and crn_provider_id = 7270388;SELECT * FROM contacts where crn_configuration_id = 834;SELECT * FROM opportunities WHERE tean_id = 933# AND crn_provider_id IN ('20131586868', "46017317898', '52543911899*, '53451356564**S4101251892* *54323768459')AND id IN (8482561,18352941,19842734, 19232139,19445140,19472541):SELECT * FROM opportunity_contactsWHERE opportunity_id IN (8482561,18352941,19842734, 19232139,19445148,19472541):SELECT * FROM crn_configurations where id = 485; #SELECT * FROM opportunities WHERE tean_id = 933 order by updated_at desc;SELECTCONCAT(U.1d, CASE WHEN U.1d = t.owner_id THEN ' (owner)' ELSE "* END) AS user_1d,honner to srok sociall accountssNonusens u on uiid e sh.socableidJOIN teans t 1.n<-›1: on t.id = u.tean_idWHERE v.tean_id = 933 and sa.provider = "hubspot":colont ea nmuidonmelondeosin enn contsaunstone eneneosanean contsaunstonaeonndwhere cra.provider NOT IN ('salesfonce'."integration-app', "bullhorn", "copper")andcanvontodstwr Milinooteo wiloanc*JY-20963-fix-import-on-deleted-entity hasoeen restoreoWWindcur Tost...
|
PhpStorm
|
faVsco.js – console [PROD]
|
NULL
|
83184
|
|
74529
|
rapstomViewNeweNNCEV faVsco,ls ~Projectv< phpun rapstomViewNeweNNCEV faVsco,ls ~Projectv< phpunit.xmlToraw_sqL.query.sqlCodeCarevelKetdcioOOl-#12121 on JY-20963-fix-Import-on-deieted-entity© Service.phppho heipers.php© TextRelayService.phpx© UsersHistory.phpleorOAkonActivityController.phpReleaseUnusedNumbersCommand.phpyservice lestontM: README.mdsonar-project.propertiesMWiaKor=test.py<> Untitled Diagram.xmluvelurcontorMEWEBHOOK_FILTERING_IMPLEMENTATION.md>1h extemal Librane:v Scratches and Consolesy Databise consolesY AEU# consolc Eu28283238E .envilocaCass eXKeLaySeNWCPio tunetien ei tory ogleseail Sservico): BnnaySparans = (historytypes" a> "messageAdded"A DEAL RISKS (EUJAOIEUA EU (EUJdo 3illiminnycco.nosA console (jiminny@localhost)isuminny alocal nestry (if (SpageToken) (Sparams['pageToken'] = $pageToken;4 HSJJocal (iminny@localhost)4 SF jiminny@localhost]A zoho_dev (jiminny@localhost)V & PRODA console (PROD]console 1rpgonlm rppon2822338ShistoryResponse = Sservice-›users_history->listUsersHistoryCconfig( key: "jininny-google_text_user'),+ 1 of 2 editsV Accept Fle x--X Reject Fle oxaE envServicos+,@, ct~ E DatabaseV AEU&consolev 4 jiminny@localhost4 HSJocal4 SFV A PRODconsole?s 170 msV A STAGINGconsoleDockenD OutouMW 215rowsvUN # AND fcrm provider.. hs_activity_type+ -( jminny.usersQCaд®Amid Y :Duvid (UUID with tine-Low a7 : Dname 713934 631ddc14-4137-405b-a884-9d184578549314858 69747a7e-0c9f-484d-8d12-0f f4c240f-ff12-436b-80c8-23c282294786wes wwmheroostnwehatedhilhhrot14596 9d22165b-Scbb-4a75-b02b-2be3b1e8ddS914641 21e93b6a-769a-4315-bSd4-0160fdd31e7a14686 8927db29-Cb88-448d-9347-be2ffd831c8814767 79767eae-e325-4905-9aba-d3a98e38839C15479 de14afad-38c2-4aCC-875b-a9c2ac5ca6a8Harcela 1120Atanas TasevPetko KashinsksEloise TaylorDaniel wilsonJames SuttonJanie Georgewulmaney15571 d8b15daS-a995-4c28-b1b4-17cdd8374f6115613 a8ce9073-fec1-4d81-aea9-eeS73dSb648f15728 4382f930-7ad5-4418-8557-78828544610115954 Sd57ad59-0161-409c-a762-f3e1b6d481641S95S 6c692342-1098-4632-6865-366931268577Elise nylieEn ReeveIvelina HristovaGeorge Tulev150S69b82R076-6772-4643.8110.980945886121The Hunspell plugin has been deprecated. If you're not writing in Hungian, you can safety uninstall Hunspell without affecting the dictionaries for other lanquages. (38 minutes ago)x5 Cc * WDemait [EMAIL]@[EMAIL]@[EMAIL]@[EMAIL]@[EMAIL]@jiminny.com300%L28- Wed 27 May 10:25:11U ServiceTest ~E custom.logE laravel.logA SF jiminny@localhost)HS Jocal ([jminny@localhost]A console (EU)A console (STAGING)DM000TeAutosSELECT * FROM crn_configurations WHERE id = 1053;SELECT * FROM teans WHERE id = 1117720select * fron users where id = 30249;See*onoayoooks where0do4select * fron playbook_categories where id : 43783;sellect * Fron plavbook catecortes where olavbook1d a 5476%724select * from crn_fields where id = 659242;select * Fromcrn Field values where crnteldd = 659242A console [PROD) X© Service.phpCascademhonertehwsemoSearched setHistoryPoint in ~/jiminny/app (3)+0.POA-TETT-NINUGEGOLOSL 2 - UCEd8 fminny~O45 A1 A41 X66 A726728SEE * FR0X con Field deta fo• JOIN crn_fields f ON fd.crm_field_id = f.1d• Jo actouities a ou foracto vity oe a.1oWHERE activity_id = 79933459ene nnousden732-734735 vselect * fron text_relays where created_at > "2826-85-01';sMect x from activities where user_id IN (7168, 18608) and created_at > ^2026-05-22' order by id desc;select * from users where team_id = 1; # and id IN (18698)secondary_enail [EMAIL] status Yrenenber_token T<null»<null><null><null»<null»<null»<null><null><nul1><null»CoueepassuordY1 <null»2 <nutl»2 <null>1 <null>2 <null>2 <null»<null>cnult<null»<null»snulcnullcnullKnule<null>7 conliscnullLet me also check if there are any subclasses that might override this method:Searched setHistoryPoint in tests/Unit/Services/Mail/TextRelayServiceTest.php (0)"nougntsSafety Analysis: The fix is SAFEVer nica tion Resulte.AspectSyntaxStatus5 Compatible5 No impactUnchanged# SateBoth callers pass strings from Gmall AP1etciurs exteronourdoethtOhnie the methodSame value stored, just property castomal history los tit in PHP integer.Why it's saieAcceo: alllhing relplonse in e iextoe da os eochtevihg 1 2-, 5uciewdorclE Neoronxollonatkaiso whwls therAdsotiCsv ~11400photo_path Y/5f0f4810-7e77-4086-8f69-93429ae4d78b/avatars/ojNSFIWb7nN6nLUUGENYIhtxMjs8VLX87Ef€/Sf0f4810-7e77-4086-8469-93429ae4d78b/avatars/64zfyeyMtfdYK4D8FvzapWq3nyq9vQAyPZZ›Ew.lhcwert-hin.-st.o.okwoaecrino/auaranc/iwro.hporit.e.ec.gicsxw.winwhv/5z/Sf0f4818-7e77-4086-8f69-93429ae4d Cascade & CICommand a1 wXe2HtpPB898LeGJWNAUE/5f0f4810-7e77-4086-8469-93429ae4d78b/avatars/N3S9UNQ/HLNBxXQ3zwm6MGxHBsXnJTwcSdrk/5f0f4810-7e77-4086-8f69-93429ae4d78b/avatars/CI®eVyDqESf6nMoYvboJwzwWCvzELHvg96UV/5f0f4810-7e77-4086-8469-93429ae4d78b/avatars/Lt16T1A₫pVH0Y2TQYs7W2ubE2YUxC3awoF3C/5f0f4810-7e77-4086-8469-93429ae4d78b/avatars/8a6xPKEgXf2YvUE3k6uQ1vHKYEDLnSaAwhm]/5f0f4810-7077-4086-8469-93429ae4d79b/avatars/JKyC8Lp2pBI0TQИK8SE8CTYYUsbgH014F6y€/5f0f4810-7e77-4086-8469-93429ae4d78b/avatars/vcfjHRxKK3VQtIjoC6yLX7HXdSrwiwC1weIf/5f0f4810-7e77-4086-8469-93429ae4d78b/avatars/p8g2upNCy0pZ0B8h6J2K3J5Z6f3c1xRPhy6P/5f0f4810-7e77-4086-8469-93429ae4d78b/avatars/GvK7{ySZdGAkABNbJZUEG0IuQkaz6tWtV{wc/5f0f4810-7e77-4086-8469-93429ae4d78b/avatars/jpPBAAK8GSdSRWhGuNPNL0gFcLf3TunjKj1gS+844818-7077-4986-8669-93429a64d786/avatars/PaBo2NVn2xV-FH0Bva8VhPGXhYatXekasiTh/S+0+/810-7077-/986-8469-03/29a84d796/awatars//03enSwzkoll11b1 Kco70v.1H06267530-2257SUM: 447577084583 137:30W Windsurf Teams735:42...
|
PhpStorm
|
faVsco.js – console [PROD]
|
NULL
|
74529
|
|
74552
|
rapstomViewNeweNNCCoocooksFV faVsco.|s ~#12121 on rapstomViewNeweNNCCoocooksFV faVsco.|s ~#12121 on JY-20963-fx-import-on-deleted-eneService.oh:Swwicetesto© ActivityControlier.php<>phpunit.xmlraw-sal-query.solW.RSADME mal0 sonar-proiect.properties=test.py<> Untitled Diagram.xmluvelur.connorM: WEBHOOK FILTERING.IMPLEMENTATION.mo©) TextRelayService.php X© UsersHistory.pholwPelanseUouscoNumootsCommano.orgW TCOrONeOhTextRelayServiceTest.phpZ.emMWiaKorE .envilocaCass eXKeLaySeNWCpUbio (unaten etistorb oglefnatl Sservice): rray>1h extemal Librane:v Scratches and Consolesy Databise consolesY AEU# consolc EuLDEAL RISKS EUAOIEUHEUTEUlliminnycco.nosconsole liminnuc ces nosisuminny alocal nesHwswealltiminnueooanoch2 SF Liminny@localhost)zond dav tim nowe des nochl& PRODconsole ipronlconsole 1rpgonlm rpponServicos+@ 6v @ DatabasoV AEU&consoleAliminny@localhostAHS local# SFV APRODconsoles o11 mgASTAGINGconsoleDocken998839Sparans =historytypes" a> "messageAdded"do 3itry1fSosgeTokenSoaransosgetioken" = Sosgetoken:2&223ShistoryResponse = Sservice->users_history->ListUsersHistory(config(key.'minny.google_text_user')v Accept Fle x= X Reject Fle oxaM OutouER # AND (crm provider...= hs activity tvpesaetiim noy usersMW SrOWSVGORAQ. kovander yn conference-record announceam conference record preference ye on1 on8 oncustom.logIaravelloSF (jiminny@localhost)HSJocal jiminny(blocalhost)console (PROD) x ©) Service.php# convoie kuA console [STAGING)De000N*rKuh rrans whhkeodeselect * fron users where id = 30249;see*"ronoavoooks where0do4NENETTET-NINUGEGOLOSLD -UESELECT * FROM con confiqurations WHERE id = 1053:dominnyO45 A1 A41 X66 Aselect * fron playbook_categories where 1d = 43783sellect * Fron plavbook carecortes where olavbook10 = 54769select * fron crn_fields where 1d = 659242;ern Field values where crn tieldd= 65942SEE * FR0X con Field deta fo• JOIN crn_fields f ON fd.crm_field_id = f.1deJo actouities a ON foract viry soe a.1oWHERE activity_1d = 79933459select * fron text_relays where created_at > 2826-85-81'*splect * fron activities where user_id IN (7160, 18688) and created_at > '2026-05-22' order by id desc:select * fron users where team_id = 1 and id IN (18688, 13934, 7168):= 73x5 Cc * WFiter rowsin softphone numberim) softphone inbound destination "0 + ILORRWEWlWin conference bandwidth Mm conference_notifysms n300%L2*Wed 27 May 10:25:47ServiceTestCascaormhonertehwsemo+0.Sarrched ser chomPointn shim nnnoo k)Let me also check if there are any subclasses that might override this method:TnougintsSearched sett storyPointin tests/Un t/Serv.ces/Mail/MextRelayservicetest.oho 0"nougnts7 Safety Analvsis: The fix is SAFEVer nica tion Resulte.AspecStatusSynta:No suntax ertocs detecteceomortibBoth callers pass strings from Gmail APVo imoseretciurs exteronourdoenohinet the methodUnchangedSame value stoceoh utt prooeety casvSatcWhy it's saieAccep: alllsong resf linse wh ete xtire da ysercheuphnpr tnker, 5uciewDorclEn Nioronxollonaukaiso whlyistherAdsoti• oCSVVin conference start webcamyam) conference. auto_join_by computer Y: m) conference reduce videoresolCascadeXaalCommandNV M Maur Tosme 726119 lITS9 enA...
|
PhpStorm
|
faVsco.js – console [PROD]
|
NULL
|
74552
|
|
81497
|
rapstomViewNeweNNCCoocWindowFV faVsco.|s ~$2 JY-20 rapstomViewNeweNNCCoocWindowFV faVsco.|s ~$2 JY-20915-fix-missing-header-text-relproidet© SyncMailbox.phpmockhrhts© InternetMessagelnterface.ph© MailChannelService.phgC TextRelayServiceTest.php >fyminny.ohe3.env.productionuse wanny servaces näzt lextkeldyoervzeeo Textrelkysewice.on> ( MeetinaGeneratoruse thrunzt rranework hecizuutes coversulassuse Purunze rranework Accrzbures Uacarrovzderanoucadorên OAuth2Dn Playbooksuse Tests esccaseruse kertectzonctass—KeCaLA—oeon=coversclassdexRelayserv.ce:.classJotaeo21%class Tex ReLayservacetest excends Testcasa-Streaminaa Teama TelechonyaUserPilotWebhook2467)C Abstrac Semvice cho©ActivityProviderFactory.php© ActivityService.php© ApiResponseService.ohog conferenceService.phpg InsightSeatService.phpC InstantMeetingService.phgC IntercomService.phgC IpapiClient.php© IpapiService.phpC ParticipantShareService.phg©PlanhatService.php© PlaybackService.phpPlaybackVideoOnlyService.pho© PlaybookCategoryService.php© PlaylistGeneratorinterface.phpel PocAlvo TosmerEmnodtin ny© SimoleThrottleService.ohd© SlackService.oho© SoclalAccountService.oho)© SoftPhoneService.oho©) TeamDeactivatedService.oho©) TeamOwnerService.ohoC) TeamService.ohoC) TranscodeParameterResolver.oh113 %154 %184 P216 ₽48 PZusagespublic static function environmentProviderO: arrayf…nrorecteduncion serint wosd.protected function tearbowng: voidt...#baraprousdenenusconmenr?rowsden"nubibie functiion testisForfucrentFnvsconnenttthMatchsnoY6n0r.csnalTokeaderdstring SdeployRegion,string SexpectedAlias,string Srecipient): void {...}nataProusden enusconcontProusdentpooere tuncczon cesclsrorcurrentanv.ronnen:.Nonksrchsingx6non..o.mml.Tokondenstring SdeployRegiontiino SexoeechoR broriiino oreczorenD: void 4..Hpublic function testIsForCurrentEnvironnentLoqsRefusedMessageO: void...oublic function testisForCurrentEnvironnent/gnoresToHeaderO: void...public functiion testisFor@urrentEnvironnent@ithEnotvHeadersO= voidf...;oublic functiion testisFor@urrentEnvironnent@ithSxceptzionO= voidf...C UserSemce.on© Uuid.php> M Traitc› @ UseCasesoublic functsion testisFor@urrentEnvironnentRefectsllrongHostWithMatchingPlusTaq@: voidf...public function testSyncUsesEuALiasForEuRegion(): void{...}mutismaite Funetson tastcunclcasisacsonlcceosodde wosde>E Va cationpublic function testSyncwithEnhancedLoggingO: voidt...Mo halnore nhr@ tnitislGrantondGtnto nhoTAApublic function testSyncWithRefusedMessageLogs: voidk....eillliminnv nhnpublic function testGetHistoryLogsErrorOnException: voidk...;araveliosSF (iminny@localhost)HS.Jocal jiminny@blocalhost)& console [PROD# console leul# CodMTGN(startHistoryId] => 359929correlazon1d: 0095/14/-t328-4017-8a55-961cocca1200race10: 34062130-3912-45ct-95cc-0528268C2t0S-17826-85-78 88:88:54 Locau.AWFU: Snessaachzscorycorrelation.1d:0av5y74-7378-4017-8055-96c8ccalxoctrace-10:[CREDIT_CARD]-95c6-052826862T05-317876-85078 88:852 omuetsts Soaranelh story wnesi messado.ddedctartHistorydil50:741"correlation_1d:"C5339dcc-4601-45a4-81f9-ede8285ab266, trace_10: 627196cf-0a89-465a-ab3e-18eS4oadfcde"}12826-85-28 R8-05:201l TocolTwEn: Snessadels stomAnnar"correlation_id":"c5339dcc-46C1-45a4-81f9-ede8283ab266*,*trace_1d":"627196cf-0a89-465a-ab3e-10e546adfcde")(2826-85-28 88:10:44) local.INFO: SparansArrayhistoryTypes => messageAddecistartHistoryId) => 359929"correlation_id":"86677130-79c8-46a6-bSa4-b13351d287da*,*trace_id":"52cc740a-b685-4b96-abda-8eSab1057ca6"}12826-85-28 88:10:44] Zocal.INF0: SmessageHistoryArratcorrelation.1d: 860/30-1908-4606-0504-065507870atrace10:Syec/48a-0685-4096-a0da-8eSab8Syeao12826-85-28 88:15:301 Zocal,INF0: SoaransArravnistorvivoes => messageaddedstartHistoryd 8> 359823fconnelation fa"."47777621-4h8e-4703-022d-600ad05cehhe* etoace 3a*.=11h38545-5665-483e-92c2-/88eb7c15ed6*})ierhoReeS oesi Shassadelstonyconnallatton"*"ctrhhh.-nna-woX-002decaaadoscanhaeconea/etthhasnsesthchxn-82c2./.Rahtcs5erxuTextRelayServiceTesteeendhler henwserwietTO0У L7• Thu 28 May 11:20:32+0.Winat about thit. Saeme the a cion is in cmall. Witistll work and howYes, this will work correctly. Let me trace through the logic with this exact ema.o tncader valtos catchen2444700 SyxPorlheeeRoosueonnrcophe11 1. Split on &oirt8carchenttocho0LyaPors.cra8808.0o.wot.tdwrinw.conthos,chict:Xwloihy.cos=ssXr9th.osI1 3. Strip plus tag fron local partstoca Basc= exolodel",catch=a14447700157786...Ol"catch-al// 4. Compare alías: 'catch-all' ma= 'catch-all' 7 - returns truSo isforcurrentEnvi ronsentü returns tre and the messace docaeds to oe disoatchedThen in EnailTextRelay job, parseRecipient() uses the To header directly and the regex \0+\.1d+\. [a-zA-20-91(10)@txt\.Jiminny\.com extracts 447700152786.359877878118. 1005kd3d2M9txt-Jiminny.com -the + prefixbelore tne phoné numbers is stripped oy parsekeciptentintoentities wnich prepends + isell anyway.Everything works end-to-end. Now you just need to re-apply the to header fallback fix so these messagesice.0ho #l187-718aytPalhuSarica nhrFix is back in place and the temporary headers present diagnostic logging is removed. The tests already retlcctthis loo'e trom carier. Youfo dood to ocpioyAsk anything (XoL)-@ eodtAdhotv• CKwindeurlahmehieh*4 space...
|
PhpStorm
|
faVsco.js – TextRelayServiceTest.php
|
NULL
|
81497
|
|
81142
|
rapstomViewNeweNNCCoocWindowFV faVsco.|s ~$ JY-209 rapstomViewNeweNNCCoocWindowFV faVsco.|s ~$ JY-20915-fix-missing-header-text-rmockhrhts© InternetMessagelnterface.ph© MailChannelService.phgTextRelayServiceTest.phpd MeetingGeneratoranoucadorEOHUNDn Playbooks—KeCaLAJotaeoa Team#UserPilotWebhookC AbstractSemvice cno©ActivitvProviderFactory.oho© ActivityService.php© ApiResponseService.ohoCeonarsneasaries oodg InsightSeatService.phpC InstantMeetingService.phgcilntecomswneoeC IpapiClient.php© IpapiService.phpC ParticipantShareService.phg©. PlanhatService.php© PlaybackService.phpPlaybackVideoOnlyService.pho© PlaybookCategoryService.php© PlaylistGeneratorinterface.php© ResolveTeamCrmConnection.ph© SimoleThrottleService.ohd© SlackService.ohoCNYWaNCOTMoronoC SoftPhoneService.oho©) TeamOwnerService.ohoC) TeamService.ohoC) TranscodeParameterResolverC Use Semce ono© Uuid.php> M Traitc› @ UseCasesANUNHASESSGRESESSSSSARASESSES&4а172178>E Va cationMo halnore nhr@ tnitislGrantondGtnto nho182eillliminnv nhn3.env.productionclass TextRelayServicesuoee tuncczon syne diidcuston channeltho intou nessaoehistorymessadeiidsillnforeach (SnessageHistory as shistories) 1nessades=Shistansesosnescades.doe.o7tforeach (Smessages as Smessage) 1Snessageld = Smessage->nessage->1d;if (! Sthis->isForCurrentEnvironment(Sservice, Snailbox, SmessageId, SexpectedALias, Seconeinue,SrelayedText = TextRelay::where( columcaoonovocho satmnotooratif (SrelayedText === null)SrelayedText = TextRelay::createdlOiiorovouhDAKiLruWURKosUIEoueorowcoreossoeoOUSDPAKOYDIANTORSNOSnob= new Enarutextrelavlenessageo,Srellavedtext?Siob->onQueue( queue: Constants::QUEUEEMATLS)A|//osoatchi1oo)Lookinfot mes*[TextRelayService] Successfully dispatched message', [massane ut es Shecsadeo'text_relay_id => Srelayedtext->id,aneescdtdelte eneesealleTusereprivate function isForCurrentEnvironnentGoogle6nail Sservicectaina Costhl haystring Snessageldstring SexpectedAlias,strang Sexoectenkost): booloublie functiion getHiistory (GoohieGfart Accept Fle x-X-RoJect P10 02CrSF (iminny@localhost)HS.Jocal jiminny@blocalhost)& console [PROD# consoe leu.2826-85-28 87:47:501 Local.INF0: SparanshistoryTypes => messageAddecstartHistoryId) => 359921correlazon1d:YaC0//105-c215-4442-8886-7260825330901d":*87f39623-3deb-4827-aBcf-b862acc93289**17826-85-28 87:47:58 Local.wFu: Snessagchzscorytrace10: [CREDIT_CARD]-a8cт-0862aec93789-17876-85528 87-S8857omuotfteSoamaneIhistorylypes => messageAddecstartHistorytoll50%2"ph67/306-7350-172h-6789-4017456066550 "tлaсe 30".-62a0Rp6p-1669-hcR-h1de-R/3ceccba6at*2826-85-28 87-58-5811 JocnlTWEn: Snessadels stomEconnelatton Saw."ehf71z0h-775a.170h-h780.40.7456e01550 "ьласA S/.-6290R0/9-1640-6604-h1de-9/3cecchaf91»)2924-05.28 87-55-17 1 1oc01 TNSh: SoananshistoryTypes => messageAddecAwAtU&AtAAuTAl = 26002-4d4a-b84b-a8531ca414a7"1300x.06.29 92.66-17 1 1oc0-051: Snossaachstom.#"correlation_id":"25971837-3161-431b-adS9-e898eb49beSf*, *trace_1d*:*c3463c2c-d21b-4d4a-b84b-a8531ca614a7"}(2826-85-28 88:88:531 Zocal, INF0: Sparansmistorvnvoes => nessagenddedistartHistorvidl s 350925connel atson o""naosynoo%ctheyerark -chn chcoaiieuooace aeuei aioowe ser.oSec-hsyiuhichthuOierhoR RRohieSaioetst Srassadelsrom#[CREDIT_CARD].05cc-H529269c24h7"TextRelayServiceTestler henwserwiet• Thu 28 May 11:01:06+0.-VANew PHP manual is available (latest: 3.0.71. Undate with doc -uodatc-eania>ssve - new class extenosminnyservices .wam lexorelyseivieepoone funcionconstuctu-iminawCanncasnliTaytrelsancssnoc.umone.t..rm> Samail = Ssvc-sgetService contialyiminny.google-textuser=G00gle|ServicelCmall (41684€The message is gone — it was likely trashed by the job's finally block (trastMessage() is called afterThe key question is: why is the warning still appearing? it means new messages keep arriving without x-Gn-0rigThe user reverted my tix (back to only checking X-ce-oriainalolo, so messages sent dircctly to catch»all+...To catch the next occurrence and inspect it before it gets trashed, you can temporarily add logging of all headersin stoncurtentenvaronbentRead TextRelayService.php #L182-211TextRelayService.ohdThis logs all header names (with + tag stripped for PlI safety) so the next time it fires you'll see in production logsOnce you see that in the logs, we'll know for certain whether re-applying the To fallback fix is the right moveOal -Ask anything (Xol-@ eodeAdhotvRT RetetalAcceot allMwoderlatme orerhies*4 space...
|
PhpStorm
|
faVsco.js – TextRelayService.php
|
NULL
|
81142
|
|
80986
|
rapstomViewNeweNNCCoocWindowFV faVsco.|s ~$ JY-209 rapstomViewNeweNNCCoocWindowFV faVsco.|s ~$ JY-20915-fix-missing-header-text-Proinet vDockerfile© InternetMessagelnterface.ph© MailChannelService.phgTextRelayServiceTest.php3.env.productionclass TextRelayServiceo Textrelkysewice.on> ( MeetinaGeneratorouoere Tuncczon syne diidyanoucadorEOHUNDn Playbooks—KeCaLAJotaeoa Teama Telechony#UserPilotWebhookC Abstrac Semvice cho©ActivityProviderFactory.php© ActivityService.php© ApiResponseService.ohog conferenceService.phgg InsightSeatService.phpC InstantMeetingService.phpcilntecomswneoeC IpapiClient.php© IpapiService.phpC ParticipantShareService.phg©. PlanhatService.php© PlaybackService.phpPlaybackVideoOnlyService.pho© PlaybookCategoryService.php© PlaylistGeneratorinterface.phpel PocAlvo TosmerEmnodtin ny© SimoleThrottleService.ohg© SlackService.oho© SoclalAccountService.oho)C SoftPhoneService.oho©) TeamOwnerService.ohoC) TeamService.ohoC) TranscodeParameterResolver.ohSexpectedAlias = config( key: '"iminny.deploy region') «a= 'eu' ? 'catch-all-eu' : 'catch-all'SexpectedHost = config key: "iminny.google text host'):Log::Info( message: '(TextRelayService) Starting sync'.nozloox ay shoeluoxexpecceuduzos or dexdecreonllasexpecceo nost = sexpeccedmoscsservice = schzs->oerservzcesaaz.0ox=snessagchascory = schis-sae hascorylsservzce\Illuninate|Support\Facades\Loq::channel( channet: 'custon channel')->info("SnessagcHistorySnessagcids=coreachtnessnochtstory s thistontesSnessades = Shistonies->nessagesAdded 2> 11:oreachi le nessaces as messade)Snessageld = Smessage-›message->10;thsowssartunrent snus connenrcerunce narthoy Shessanelid Seynected.idas, Seyoeconta nue:SrelayedText = TextRelay::where( colum"amashl nnowsden d' Cnescanetaesenetior+ScelavedTeyt se= ouiiaSrelayedText = TextRelay::createdl'email provider' => TextRelay::PROVIDER GSUITE.'email provider id' = Smessageld'status' => TextRelay::STATUS_PROCESSINGDDASiob = now EmailTextRelay(Snessageld, SrelayedText)Siob->onQueue( queue: Constants::QUEUEEMATLS):C Use Semce ono© Uuid.php> M Traitc› @ UseCases|/1dsoarchls100)"Log:sinfo( message: '[TextRelavService) Successfully dispatched nessage'."message id' => Snessageldl>EVacatiortext relav 1d a> Srelavedtextosidqueue' => Constants:: QUEUE EMATLSWa holnore nhr@ tnitislGrantondGtnto nhoeillliminnv nhnSaessaretnsille Smassadeios= laravel.log X 2 SF fiminny@localhostHS Jocal (jiminny@alocalhost)& console [PRODA console [EUA console (STAGING2826-85-28 87:47:15 Local.INF0: Jiminny Console Conands Command::run Memory usage before starting command *co2826-85-2887:47.15Local.INF0: ScheduleBotConnand Dispatched activitiesto caprure count cur correlacion10: 050/82826-05-28 07:47:152826-85-2887:47:192826-85-28 87:47:191Local.INF0: Jiminny Console Conmands|Command::run Memory usage before starting command "command":"dia"Local.INF0: Jiminny Console Colnos Connand::run nenory usagc ton connand connand: cralers:nonzcon7826-85-7887:47:23locat.wurlet: honzcoring starxcorrelat.zon.10:ttvocecc-1609-427d-at95-6dczc8085e40race-1004%7826-85-28 87:47:23Locat.wurat: honzcoring eno7876-85-7887:47:25elatzon_20: 11996099-f669-427d-af95-6dczC6a65e40, trace_10 :-403)nds Connand::run henory usagc bcrore starizng command comaand: 2a2)7826-85-28 87:47:25localwFu: Janinny console Co.nory usage for connand 1 co7826-85-2887:47:287826-85-28 87:47:28LocaaWFu: Janinny console, connands connand::run henory usage berore stariing command conmand?narLocaL. INFO:(EnailSchedule) STARTING batch process ("host":"docker_Lamp_1"} {"correlation_id":"bS51ee4ena Schecmlelatt. enoanch orocess "host". "docken anouorocessedtir correlaielo12026-A5-28LocaL.INFU: J1ninny console commands (command::run Henory usage for connand 1"comnand": "ma1lbox:batch:p,7:76-85578omiouets sminny console, vormandel conmande runi wemory usade netore startano conmandiconmandemat(2826-85-28 07:47:33]local.INFO:lena1tSchedule) STARTINS batch create 1"host":"docker_lamp_1} 1"correlation_1d: b«cdabasenart Schedmelattsr et nanch creare host""dncken tandcorcel aronioencoaiat12826-85-28 87:47:33,2826-85-2887:47:361Local.INFU: Jiminny console \commands \command::run Hemory usage for connand 1"comnand": "mallbox:batch:c)T.trsnnv Jlobs Maribox CreateRatchesll nrocaccerl 2 Snhoyes and created 13 batches Dusenidee(2826-85-28 87:47:58]2826-85-2887-47-5011local.INFO: Jiminny\Console \Commands\Connand::run Menory usage before starting command ("command":"nalJocl TNEh: TeytRelavSenuscel Startna cunc Pnaslhoy"."catch-allGtyt.stacsno.5ninny.con" "ayoected[2826-85-28 87:47:50) local.INFO: [TextRelayService) Sync completed {"nailbox":"[EMAIL]*,"nessages2824-95-28 87-47-5011local.INFO: Jiminny\Console\Comnands\Connand::run Menory usage for connand ("comnand":"mailbox:text-reTO0У L7Thu 28 May 10:48:23+0.rner hensewietcan I test it locally first. if I place env from stagingYes. The service relies on a few things you'd need in place1. Credentials file The constructor expects storage/text-relay.fson (a Google service account JSON key file)Gmbtrom sthaind and oince it there2. .env values to copy from stagingGOOGLE TEXTUSERECOOGLE TEXTI HASTGOOGLE TEXT RELAY TOPIC:DEPLOY REGION:the cnail mailbox address#e.g. txt.jiminny.com or txt.staging.Jiminny.com# eu or us3. Run the sunc manualiv vin tinker tinside docker 1aeo 1%b bashaegdocker exec -it docker_lamp_1 php artisan tinkeb)pheapp(\Jiminny\Services\Ma1l\TextRelayService::class)-sync():Caveat: The service reads from Gmail history and dispatches jobs to the queue. If you don't want it to actuallsend SMS, make sure QUEUE_CONNECTICN»sync is not set (or use a test queue), or just call isForCurrentEnvironnentorectly via tinker to verity the header loaic without disoatchino amvthinotioh./1 Just test the header reading logic on a known message loSsvc = new class extends \Jiminny|Services\Mail\TextRelayService & public function _construct(Som Serviceassvc-soctServicelcontiaminny.google textuser'I then sinsoect au eessade canuat. ivlsasg= sonailService-susers_messages-sget(config(*iminty.google text user'), *THE_MESSAGE ID')collect(5-s0-20etPayload()-soetWeaders())-soluck("value"thut wey von can Mrity whht handare tra nehhilm oraeset do ttat mactsod alote tha ull evoc rineGadl -Ask anything (XOL)" HodhAdhotvt4 spad...
|
PhpStorm
|
faVsco.js – TextRelayService.php
|
NULL
|
80986
|
|
87849
|
rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 o rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 on JY-20963-fx-l© Service Test.phppeleteooiccistrai.png› @ MergewawenacdvityCimDalo.ongy uimaeumyociwiceonaewemwwocorotor.oro Prossceruochid.pno© HubspotWebhookMetriLo Propenycnangemons:uvalohtwohooktoWebhookAssociationCooonurwowncaion© HubspotLastModifiedCreatedRecentiyOpenSyncStrateay.ohg© PayloadBulder.php x© WebhookDeletionHandwewokventsC WebhookMergeHandleclass Payloadbuzlden- 48×25 ^ V 219WebhookProoertvChan 9°c WeohookSionatureVal© BatchSynceollector.phpc) Batchsuncred sservice og clent.phpC) Cosed Dea StadessemicelC Desl zieldsservice onoC) Decorate chmm chocFeld detinttons onoCrAcTvaAeoousreoodKtnend'esotiotsrnesnhC HubspotTokenManager.pho pawiasatthoneooecPAmotdermersaiisomnd ResnonseNormalize.phpel Sarnice ono© SyncFieldAction.php© SyncRelatedActivityManac 69e Mohhaal-CunaRatchormd> @ IntegrationApoMlictonord> @ Metadata> [ Migration>D Pipedrivev C Salesforce> D Fields> B OpportunitvMatchen> D OpportunitvSvncStrateoeSemicetiraitsC e entondC. DecorateActivity.cho710bele eocectetie tonocseldae initons choc Paviosd Bulldes.onoc Pronie.onocOuwyetder.onocOuerylandier.ohoc Ouorvitorstoe nhae Ouoneoarte nhnci Connno nhr* Generate a payload to search for contacts by name.*The searchois a token search sin dinstnane on uostnendpublic function generateSearchContactsByNamePayLoad(string Snane, array Sfields): arrayt...:Z245 usagespublic function buildAddAssociationPayload(string Scrnid, array Sids, int Sassociationlype): arrayi 22€227228public function buildRemoveAssociationPayload(string Scrnid, array $ids): array{...;/usagespublic function addClosedStageFilters(array &Spayload, array SclosedStages): voidif ( enpty(SclosedStagesf 'won'1)) 5oavrosolnwense251252"propercynane" s> "dealstage"vallues 8>SclSeoSROrSROn254259254257if (4 enoty(SclosedStagesf'lost•1)) !SoayLondn'Sittens"me'propertyName' => "dealstage",onemator,262262"vallues' E> SclosedStaoest" lost"public function addCreatedDateFilters(array &Spayload, Carbon ScreatedAfter): void ....10 usagespublic function getDealsinBulkPayload(array Sdealids): array ...;wtw:twwiews.outreonaettodaw RayA SF fiminny@loca host)de console [PROD# consolkeule Froterundrewons"ohunguis users (EUTA console [STAGING)TNY.AVprivate function isDirectUpdateSupported(string SobjectType, string SpropertyName): bool(...* Henole oroperaesha suodon onec denooseWeCino oo1eee Votoino So01e0edConfigurat ion Sconfigurationstriina Soropertylancstring SpropertyValug: booL 1..H* Handle direct updates for deal objectsprivate function handleDealDirectUpdatestring SobnectId.lConfiquration Sconfiqurationstring SpropertyNameStrano Spropercyvalue: bool 4Sopportunity = Sthis->opportun_tyRepos{tory->findByConf_gAndCraProviderIddif ( Sopportunity instanceof Opportunity) 4reurntei/ Uodate nodel pronenty if naoping existeSpropertynappings = SeLT::UBJECT_PROPERTY_HAPPINGSLSELT::OBJECT_TYPE_DEAL) PP LJEi€ Gisset (Soronent.vManninasfSoropentyNanel))?Sthis-sonnortunitvRenositony->update0rCceate/Sohrectd.SoronertyMannsinasiiSaronertylanel SoronentyVailuelUpdate field dateSthssosononthhsectf.eldhatalobecttwoe. self..OR.FAT TYPE NSAICAnnAntIn turSaOtTAO>0bAl100% 142-• Thu 28 May 19:26:47ServiceTestvmeesdales Orcnnworeebeeionhnves ohtine oDon+0 .Unless the May 20 sync used a cachedClosedDea lStages that was populated earlier in the same batch lob — before a importStages () call updated thestage probability from 0 to 100. But that would require stage 20616 to have been at probabiity o at the start of that batch run, then changed to 100 midrunby tcortStases(.And ieportstanes onty runswThe true, detinitive answenAfer all this ansves, the most"kely exolonstion is this is a data snaoshot from an eanter time,t ihe opoortunty was sunoed when closedlost hadprobability 0 (before May 4, 2026). Then someone manually changed the stage probability to 100 on May 4 in Jiminny. But the opportunity hasn't been re-synced since then - it shows updated at: 2026-45-20 but that could be from a different field being updated (like dealnase, value, etc.) via the Propertychangckansger's dircct uodate path, which does Not recalculate is wonLook at PropertyCharchinono looea luareciupdatea PropertyChUoonte bouck procchisyuttne CxistCRooerMRoosCos& CeTTeOEeI PROPERN MAPPISRANAHORFMNNPE OEATNEhif (isset(SpropertyMappings(SpropertyNase) )) 4Sthis-sopportunityRepository-update0rCreate(...):odste weld darsthis->import0bjectFieldData(...):return tries0B OBJECT UPOATE PROPERTIES for deals = ["ótalnane', "description']. If a dealnane or description webhook event came in on May 20, it would1. Update nane on the opportunity (via update0rCreate ) → touches updated.at2. Return true (bypassing the full hand leübiectSync / batch queue path3. NOT recalculate 15, volThis is the answer. On May 20, a dralnase or description change webhook arrived. PropertyChangeManaoer: :handleDralDirectUpdate ran, undatecthe opportunity's nane field (touching updated_at to 2026-05-28 18:36:59 ), and returned true - skipping the full batch sync that would haverecalculated is_von. The deal's is_von was already e from a previous sync (when closedlost had probability 0, before May 4), and the May 20 directupdate webhook dionthxkSummalyTine ooocturynsywna1. Before May 4: Stage 20616 (closmdlost) had probability = 8 in Jiminny's DB (consistent with HubSpot's default behavior for a stage named"closedlost"). Any sync at that time would put "closedlost" in tost() → 1s_closedel, is-wonne2. May 4: Someone nsally updated the stage probability to 100 in Jiminny DB (and/or HubSpot updated their stage label/settings). Stage undatedl.ate2026-06-043. May 20: A HubSpot webhook for dealnase or description property change arrived for this deal. Procertychndleocaldi rectUpdatfired - it updated the opportunity's nane field directly (touching updated_at ) but returned true without queuing a fulll sync. is_von was neverrecalculated4. Result: updated.at: 2826-85-20 looks recent, but the is-von value is stale from a sync that happened before May 4 when the stage probability wastilllotthe tixis to troac a troch sune df thie sond ic anoortunity: sync0noortun ty(404958190945*) wotld tetch ttrom Hub Soot soo denlstran - "closedlosf*, find it in wonill (probabillity 100 now), and set 1s.won = 1Coal +ok I still don't get it. After I run manual conand to php artisan crm:sync-opportunity --teamid 555 --opportwas set to 1. However I stil can't understand what happened before. The opportunity stage was changed on 2026-"eooht4 spag...
|
PhpStorm
|
faVsco.js – PropertyChangeManager.php
|
NULL
|
87849
|
|
88042
|
rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 o rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 on JY-20963-fx-l© Service Test.phpDeleteObjectsTrait.phg=custom.logaraveiiosA SF fiminny@loca host)HS Jocal (jminny@blocalhost)de console [PROCwolcnnedvilycimbato.ongy uimaeumyociwiceonaewemwwocorotor.or(©) ProspectCache.phgMEINSTALLMOM.INTERNALWEBHOOK SETU? maliminny storaceMalicenses.maMakere0 package-lock.jsonphpstan.neon.distF phpstan-baseline.neonphpunit.xmlraw.sol query.saMAesNeiMs mai sonar-project propertiesEtest.py<> Untitied Diagram.xmlus vetur.config.isMAWSAlOOK SInSNGMONEUEENnt. Sytemallloranesv =0 Cemtches and Consolosv @ Database ConsolesV AEU# console cUA DEAL RISKS (EUACUViy.onwoowonoryownctainaSamtorcs/Service.ongA console (EU] XPropertyChangeManager.phguis users (EUTA console [STAGINGOojiminny031 A9 A29 У 3 У 109 ^meutsunRR88SarvicaeivontameAA console 1 $ 759 mgui users 1 $ 548 msy2liminny@localhostA HSJJocalA SFV A PROD# ConcalaV A STAGINGH Concal"noakor© HubspotLastModifiedCreatedRecentiyOpenSyncStrateay.ohg© PayloadBulder.php x©crmentityRepository.ohgclass Payloadbuzldenpublic function addClosedStageFilters(array &Spayload, array SclosedStages): voicif (l empty(SclosedStages["won'))) <Spayload I'filters'0 =OrovenYione or ocaltoce'operator' => "NOT IN*.'values' => SclosedStagesi"won'))if ( enpty(SclosedStagesf'lost'))) "Spayload['filters'](] = [oropertvlane" a> deal stage"11726117221B8 ×25 A M1728— 172917381731— =1740select * from activities order by id descselect * "rom usens nhere nane Uike "SubnaeeSELECT * FROM OpPortUniEiOS WHERE vuid. to bin('84a9cfad-2C87-4453-9072-28aeb78ecf8d*) = uusd;=select * from teans where id = 555select * from stages where tean_id = 555CONCAT(u.id, CASE WHEN u.id = t.owner id THEN " (ouner)' ELSE "* END) AS user idv.emaisa.*t.owner id FROM social accounts saJOIN users u on u.id = sa.sociable idJOIN teams t 1..n<->1: on t.id = u.tean idWHERE u.team id = 100 and sa.provider = 'hubspot'1742 Vselect * fron opponturlitsles where team 1d = 555 and stace $1d = 28616:'values' a> ScllosedStaces"ost"7) Outputjiminny.opportunitiesIID fiminny stagesTx,151 rowsv OUrn confiquration id475An account id M y2Ar stagc.id m1n record type id vIeuser id28616286162A m) ouner id yin) valuc m18137 21111394812590,80 GBF18118 48031483735999,80 68018118 488314834137000.60 689RRZA DIZARZAARim currency codeim close date T2824-81-152026-AS-192826-840132826-82-119Л00 109090010535AAAHAA TISOCOZO0O0TIGA RAZA 122Z8RZAA0175000.00 USD55000.00 USO75900.80 680ARAPALAA GRO2824-97-22823-11- S DAATTADAKTA2061628616ASA4556455645561867A 27141210019177 211117929MOREAZIAO S6AANAR TARARARTOE191181903/1197J910n gpnkIkOk48000.00 68Р50000.00 GBA0000 00 6od36908,89 68F2AG06 AA GBCACAAALACllsn00959.90 Ged70950.00 cod2822-89-292921.94.802826-83-162824-85-81Denkaatne2924.91.20300140.1840400 4060600405Man:t// Mowm/llronnoat /twdou18.2TO0У L7Thu 28 May 19:41:29ServiceTestmeesdales Orcnnworeebeeionhnves ohtine oDon+0.oulan't explain wrong probabiity in cachedetosedbea lStagesThe cache is populated once on first cali to getClosedDealStages() and reused for the entire batch. It reads from DB at that moment. Stage 20616 hasprobabdty 100 in D8 since May 4 5o "Closedlost" is in wontollI need to look at this from a fundamentally different angle. Let me check: could there be a second stage with cre provider id = *closedlost" but witeprobability 0 in a different pipeline for the same config?No withTrashed() here. configuration-sstages() = let me check if the stages() relationship includes soft-deleted stagesStage uses Softpeletes And cetOoportunitvClosedStages does NOT call withtrashed(), So soft-deleted stages are excluded from the closed stagesauery, That's not directiy relevaot hore sinao staoe 20616 exists and isn'it deletedlAt this point. I've exhausted all code-based theories. Let me be honest with youHonest Assessmentlue traced every cade onth and cannot tind a mechanism in the current code that would oroduco i closednt. f woara tog a donl wth denlstaon-"cloedlost* when stage 20616 has probability=100 in the DB. The logic in buildOpportunityData should produce is,vonetrue in that stateThe most likely explanations - in order of probability1. The stage had probability = 0 at the time of the May 20 sync (most likely).Stage 20616 uodated at a 2926-05-A4, That records the last update, But DB wednted at gets written on every mndntebrGreate call, even it values don'• :CSV.TTTO0Im probabilityyim forecast category M100 Closed100 Closed100 Closed100 Closec108 Closed100 ClosedIm deleted at y<null»«nutl«null»«nutl»<null>cnullaIm created at Mim renotely created at(Im) updated2025-11-18 15:56:592025-11-19 00:12:092025-11-19 00:12:522023-86-16 11:26:352825-85-82 09:38:142825-01-83 10:33:262026-03-262026-05-19:2926-84-222025211-10 19-98-172826-81-14 21-35-R92026-04-222825-11-19 18:88:132825-85-87 16:84:182026-05-202825-11-19 16:30:69109 Closed198 Closed2825-11-19 19:33:202025-11-19 10:33:48188 Closeo100 Closed100 Closed<nutl»<null><null>eonllsDiOSERONO THAe2824-88-22 15:11:162024-81-26 28:19:272823-89-23 89:27:592027-97-71 28-82-142026-03-202026-05-152926-90-232025-11-19 10:36:082022-87-84 15:54:842026-05-262825-11-19 10:37:162822-82-89 15:34:592026-04-01noo Mnnong tto do.e.nonn.on.6012.212.nonltror00108 Closed<null2826-01-86 18:17:122826-81-86 18-15:882026-05-04100 Closco<nul!2825-11-18 14:48:572824-84-83 18-44-402025-12-93100 MocodConis2A0S.11.1816.10.212006.19-01 14-60-2DAWkHACA""190 Macor2ang.11.1915019.21nenk.et.2n 19.5.1d2026-01-29400 MacarPout!nang,nne Agcteend000140.00 13107279nanraaronang AaniW Windeur Toom12A0.09...
|
PhpStorm
|
faVsco.js – console [EU]
|
NULL
|
88042
|
|
85702
|
rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 o rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 on JY-20963-fx-lproidet•) Service.php x php heipers.phg© Querylterator.phpу queуkesui onoservice one©) SyncBatchRedisService.ptd Traitsooaseeenone© BaseService.phpoCachecimsenroo© CountryCodeResoiver.prpC) CrmActivityProviderintegrateC CrmActivitvService.ohoccrmcont curationsettinos.ser© CrmObiectsResoiver.phpC) DeraultProsoec SearchStrateEmailHelper.php© FindsProspectinterface.php© LayoutManager.php8 MatchDomainByEmailinterfac©OpportunityActivityMatcher.genoorur wsvoesttatkouote@ OnnorturitvSvoeStrtaosBaeC [EMAIL](c ProspectSearchStrategyFact® ProspectSearchStrategyinter(© ProviderRegistry.phpd PocordColoator nhoResolveCompanyNameByEm:© TimePerioditerator.php@ impori@b internalUsciko cooscrytrionyTeom.oneo Nemeuoninanespace Jaminny servaces urn salestorce› use .8B8832258Ca Maiii>D Actions>D Office> E Repositories.>M Resoivers>O Trait:>M Validators.©) BatchCriteria.ohd©BatchCriterisInterface.oho©.BatchService.php8 BatchServiceinterace ono©[EMAIL] MnChsond Conhto nhn111119class service excends Baseservice Inplemencswles torceinertideSalesforceBatchSynCInterface,Sunc tontheeuis interthceSunctontrorer arecord woes ncerthcImportsBusinessProcesses.nterfaceRemoteEntityManipulationInterfaceFetchRelatedActivity.nterface,SendSummaryToCrminterfaceMatchDomainByEmailInterface,SearchTaskInterfaceLayoutManagementInterfaceSettingsInterface.Matchinintr des ntertaceSupports0b:lectTypeParseInterfaceRemoteNoteEntityManipulationInterfaceVonCutaclsysotcintonfanduse ResolveCompanyNaneByEnailTraituse syncrelostraseuse Delete0biectsTraituse RecordManipulationsTrait:use ServiceTraits\BatchSyncTraituse FoLlowupac.v.cylraze* Note Body Liait for the Old Note-Toking Too*Avar snt1 usageonivate const int GLASSTC NOTE MAX LENGTH = 32600,*Note Pontent Hmit fon the New Notes*avan snt1 usagdprivate const int ENHANCED NOTE MAX LENGTH = 58000800:inu co woy to.oo.+0.©ActivityControlier.phpA SF fiminny@localhost)© Client.phpa| 5A console [STAGING)D0.000as aua a an - aTy: AutowINTERVAL 38 DAY.BY u.id, u.email, u.name, u.softphone numbenBY sns_count DESC;* fron teans where id = 1;console (PROD) x C Service.php# console fiaum045 A1 A41 У 66 4714715-718719720BEERRBREBERRERTYNCAT(u.id, CASE WHEN u.id = t.ouner_id THEN • (ouner)' ELSE ** END) AS user_idouner_id FROM social_accounts saeans t 1.nc->1ontd n.teandU.tean_id = 1117 and sa.provider = "hubspot":* FROM activities WHERE uuid_to_bin(*8824fffb-2df7-4817-91f4-d9f896050248') = uuid; # 79933459 YES* FROM activities WHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c') = uuid; # 80186192 NO*EROM eon confaurazons MHEPF 3d = 1953%* FROM teans WHERE 1d = 1117;* Eoon licene whene 3d= 30240-* fron playbooks where id = 5473;* fron playbook categonies where id = 43783:* fron playbook categonies where playbook_id = 5473:*foon enn ffalde whond id = 450222.* fron cra_field values where cra_field_id = 659242:* FROM crn_field_data fdcrnfields f ON fd.crm field id = f.ioactivities a ON fd.activity_id = a.idactivity_id = 79933459f.crn_provider_id = 'hs activity_type'* FROM activity-messages:* fron text. relayswhere created at > *2926-05-91*-* fron actsivities where user_id TN (7168, 18688) and created at > 2926-85-22' orden by id desciteam.1d = 1 and id TN (18688, 13934. 7168)=*£ron activities where usen 1a = 7169 order bu ja desc 1ini+ 18:*fnon accounts where tean 3a = 1and nane = "Colunos*.*Toon tasne whendae*foon Antáusty seanches whane usen $a = 71852.*Eoon sctkusty coanch Eilitane nhans actkusty cancch fa TM CRRRR2 RROQ2Cascadioles orce PhontamntulCcrmonthtWonilaghonsLet me tirst look at the PR dit to understand the changcs• cd /Users/lukas/jiminny/app 66 git diff origin/master...HEAD -nane-onlyspp/tery/ces/com/SrlesPorcetServyce.proller. phptacte/linst/Corusrac/er/C.lnctarra/amrataet.phCommand cd, giaspp/servs/10xr//alesyorce/ Servitetpfp origin/easter.. HEAD -arapp/selvaces/crosatestorcerservice.prsthis-shandledo ectdelet ion Stcac, Screbara)nCommand col.ote ts/uns/5erv/ces/crv/splestoree/Servicrtest-paster.. HEAD -ctnuncated 124iness@contactsPelatton-seethod(tuedate0rGreate*_wvd11Petum (&contact)scontip- = ethod +contaetse)xlt1gururn(scorlacs.ieTation):Now iet me see the existino tost ile to underetnnd ite atnachurcCAmmand dAids hanor /gun/ester:s/.ts/uny/Se 4.es/ crm/Solesforce/ServiceTest. php 1 head -108erohnanespace Tests\Unit\Services\Crm\Salesforce:Database \eloquent (Relations (HasHany=AGe naetAn7EKAsk anything (XOL)" HodhAdhotv• OXtModtur Tatme Toxcsehireht4 spag...
|
PhpStorm
|
faVsco.js – Service.php
|
NULL
|
85702
|
|
85686
|
rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 o rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 on JY-20963-fx-lproidet•) Service.php x php heipers.phg© Querylterator.phpу queуkesui onoservice one©) SyncBatchRedisService.ofd Traitsooaseeenone© BaseService.phpoCachecimsenroo© CountryCodeResoiver.prpC) CrmActivityProviderintegrateC CrmActivitvService.ohoccrmcont curationsettinos.ser© CrmObiectsResoiver.phpC) DeraultProsoec SearchStrateEmailHelper.phpFindsProspectinterface.php© LayoutManager.php8 MatchDomainByEmailinterfac©OpportunityActivityMatcher.genoorur wsvoesttatkouote@ OnnorturitvSvoeStrtaosBaeC [EMAIL](c ProspectSearchStrategyFact® ProspectSearchStrategyinter(c ProviderRegistry.phpd PocordColoator nhoResolveCompanyNameByEm:© TimePerioditerator.php@ impori@b internalUsciko cooscrytrionyTeom.oneo Nemeuoninanespace Jaminny servaces urn salestorce› use .888832258êa Maili>D Actions>D Office> E Repositories.>M Resoivers>O Trait:>M Validators.©) BatchCriteria.ohd©BatchCriterisInterface.oho©.BatchService.php8 BatchServiceinterace ono©[EMAIL] MnChsond Conhto nhn111119class service excends Baseservice Inplemencswles torceinertideSalesforceBatchSynCInterface,SunctontmerelignterthchSunctontrorer arecord woes ncerthcImportsBusinessProcesses.nterfaceRemoteEntityManipulationInterfaceFetchRelatedActivity.nterface,SendSummaryToCrminterfaceMatchDomainByEmailInterface,SearchTaskInterfaceLayoutManagementInterfaceSettingsInterface.Matchinintr des ntertaceSupports0b:lectTypeParseInterfaceRemoteNoteEntityManipulationInterfaceVonCutaclsysotcintonfanduse ResolveCompanyNaneByEnailTraituse syncrelostraseuse Delete0biectsTraituse kecororanzoulaczonstrazcuse ServiceTraits\BatchSyncTraituse FoLlowupac.v.cylraze* Note Body Liait for the Old Note-Toking Too*Avar snt1 usageonivate const int GLASSTC NOTE MAX LENGTH = 32600.*Note Pontent Himit fon the New Notes*Avan snt1 usagdprivate const int ENHANCED NOTE MAX LENGTH = 58000800:©ActivityControlier.phpA SF fiminny@localhost)© Client.phpa| 5A console [STAGING)D0.000as aua a an - aTy: AutowINTERVAL 38 DAY.BY u.id, u.email, u.name, u.softphone numbenBY sns_count DESC;* fron teans where id = 1;console (PROD) x C Service.phpds consoe leu,045 A1 A41 У 66 AOremew hephotio Inu comoy 1o:00.1eTextRelayServiceTest+0 .As. Stthere is somethina miss no orivate functionne1, 25,"))714715-718719720BEERRBREBERRERTYNCAT(u.id, CASE WHEN u.id = t.ouner_id THEN • (ouner)* ELSE ** END) AS user_idouner_id FROM social_accounts saeans t 1.nc->1ontd n.teandU.tean_id = 1117 and sa.provider = "hubspot":* FROM activities WHERE uuid_to_bin(*8824fffb-2df7-4817-91f4-d9f896050248') = uuid; # 79933459 YES* FROM activities WHERE uuid_ to_bin ("[CREDIT_CARD]-927f-4f4da288185e') = uuid; # 80186192 NO*EROM eon confauratzons WHERE 3d = 1953%* FROM teans WHERE 1d = 1117;* Eoon ucene whena 3d = 30240.* fron playbooks where id = 5473;* fron playbook categonies where id = 43783:* fron playbook categonies where playbook_id = 5473:*foon enn ffalde whond id = 450222.* fron cra_field values where cra_field_id = 659242:* FROM crn_field_data fdcrnfields f ON fd.crm field id = f.ioactivities a ON fd.activity_id = a.idactivity_id = 79933459f.crn_provider_id = 'hs activity_type'* FROM activity-messages:* fron text. relayswhere created at > *2926-05-91*-* fron actsivities where user_id TN (7168, 18688) and created at > 2926-85-22' orden by id desciteam.1d = 1 and id TN (18688, 13934. 7168)=*£ron activities where usen 1a = 7169 order bu ja desc 1ini+ 18:*fnon accounts where tean 3a = 1and nane = "Colunos,.*Toon tasne whendae*foon Antéusty seanches whene usen $a = 71852.*Eoon sctkusty coanch Eilitane nhans actkusty cancch fa TM CRRRR2 RROQ2private function parseContactMobile(?string ScountryCode, array ScrmData): ?stringlet ma Fret look at tha po di4l to undaretand tha chaooaecommand co..g0 cd /Users/lukas/aminny/app od git dift origin/master...HEAD -nane-on LyRunXe SkioAsk anything (XOL)c HodeAdhotvTeete nactan7e7• OXtModtur Tatme Toxcsehireht4 spad...
|
iTerm2
|
NULL
|
NULL
|
85686
|
|
85655
|
rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 o rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 on JY-20963-fx-lproidet© Querylterator.phpу queуkesui onoservice one©) SyncBatchRedisService.ofd Traitsooaseeenone© BaseService.phpoCachecimsenroo© CountryCodeResoiver.prpC) CrmActivityProviderintegrateC CrmActivitvService.ohoccrmcont curationsettinos.ser© CrmObiectsResciver.phpC) DeraultProsoec SearchStrateEmailHelper.php© FindsProspectinterface.php© LayoutManager.php© MatchDomainByEmailnterfac©OpportunityActivityMatcher.genoorur wsvoesttatkouote@ OnnorturitvSvoeStrtaosBaeC [EMAIL](c ProspectSearchStrategyFact® ProspectSearchStrategyinter(c ProviderRegistry.phpd PocordColoator nhoResolveCompanyNameByEm:© TimePerioditerator.php@ impori@b internalCa Maiii>D Actions>D Office> E Repositories.>M Resoivers>O Trait:>M Validators.©) BatchCriteria.ohd©BatchCriterisInterface.oho©.BatchService.php8 BatchServiceinterace ono©[EMAIL] MnChsond Conhto nhn•) Service.php x php heipers.phgUsciko cooscrytrionyTeom.oneo Nemeuoninanespace Jaminny servaces urn salestorce› use .8B883225g169111119class service excends Baseservice Inplemencswles torceinertideSalesforceBatchSynCInterface,Sunc tontheeuis interthceSunctontrorer arecord woes ncerthcImportsBusinessProcesses.nterfaceRemoteEntityManipulationInterfaceFetchRelatedActivity.nterface,SendSumnaryToCrnInterfaceMatchDomainByEmailInterface,SearchTaskInterfaceLayoutManagementInterfaceSettingsInterface.MatchCrmEntitiesInterfaceSupports0b:lectTypeParseInterfaceRemoteNoteEntityManipulationinterfaceVerifyTaskExistsInterfaceuse ResolveCompanyNaneByEnailTraituse syncrelostraseuse Delete0biectsTraituse RecordManipulationsTrait:use ServiceTraits\BatchSyncTraituse FoLlowupac.v.cylraze* Note Body Liait for the Old Note-Toking Too*Avar snt1 usageonivate const int GLASSTC NOTE MAX LENGTH = 32600,*Note Pontent Himit fon the New Notes*Avan snt1 usagdprivate const int ENHANCED NOTE MAX LENGTH = 58000800:TextRelayServiceTest100% 142-• Thu 28 May 15:53:48+0.©ActivityControlier.php(© Client.phpa| 5412 A246 У3 121 %A SF fiminny@localhost)console (PROD) x C Service.phpds consoe leu,A console [STAGING)714715-718719720728BEERRBREBERRERTYTy: AutowDojminnyvINTERVAL 38 DAY.BY u.id, u.email, u.name, u.softphone numbenBY sns_count DESC;B4SBIBSYOA* fron teans where id = 1;NCAT(u.id, CASE WHEN U.id = t.ouner_id THEN ' (ouner)' ELSE ** END) AS user_id,ouner_id FROM social_accounts saeans t (1.n<->1:Sontd M.teandU.tean_id = 1117 and sa.provider = "hubspot":* FROM activities WHERE uuid_to_bin(*8824fffb-2df7-4817-91f4-d9f896050248') = uuid; # 79933459 YES* FROM activities WHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c') = uuid; # 80186192 NO*EROM eon confauratzons WHERE 3d = 1953%* FROM teans WHERE 1d = 1117:* Eoon ucene whena 3d = 30240.* fron playbooks where id = 5473;* fron playbook categonies where id = 43783:* fron playbook categonies where playbook_id = 5473:* fron crn_fields where id = 659242:* fron cra_field values where cra_field_id = 659242:* FROM crn_field_data fdAAEERAACOM CAAA CAAIBACGRacrviies a UN to.acovity 1d = a.10activity_id = 79933459f.crn_provider_id = 'hs activity_type'* FROM activity_messages:* fron text. relayswhere created.at > *2926-05-91*-* fron actsivities where user_id TN (7168, 18688) and created at > 2926-85-22' orden by id desciteam.id = 1 and 3d TN (18688, 13934, 2169):*£ron activities where usen 1a = 7169 order bu ja desc 1ini+ 18:*fnon accounts where tean 3a = 1and nane = "Colunos*.*Toon tasne whendae*foon Antáusty seanches whane usen $a = 71852.*Eoon sctkusty coanch Eilitane nhans actkusty cancch fa TM CRRRR2 RROQ2Cachado Codo XoKick of a new proisct. Make chunoeTecte nactad7le minc. Hung and Validaung Textkela service Testereview the PR diff and add full test coeverage on changes. Still there is something missing"Podswioth35mXtModtur Tatme Toxcsehireh*4 space...
|
PhpStorm
|
faVsco.js – Service.php
|
NULL
|
85655
|
|
85532
|
rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 o rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 on JY-20963-fx-lproideteSarvicc.ohwnapers.oh©ActivityControlier.phpv SalestorgOLekоkyseiwico.one UsersHistory.ong© Team.phpc) Kemel.ono>MFeldeTextRelayServiceTest.php• # OpportunityMatcher• = OpportunitySyncStrateProspectSearchStrateg> ServiceTraitsClientTest.phpC DecorateActivityTest.p 181 %c oeeredc ecistreties ca© FieldDefinitionsTest.ph© GetActivityFieldNameT@ PayloadBuilderTest.phs© QueryBullderTest.phpC QueryHandlerTest.pho 244© QuerviteratorTest.pho 249© QueryResultsTests.phcC ServiceTest.pho246 €huosoo soutarollmosewieedPap aulooonCass exkelayserw celesPoueze Toncczon cooccororconcncciiaouchenacicACe .d0n. To.0.public function testSyncUsesEuALiasForEuRegionO: voidi...public function testSyncUsesUsALiasForUsRegionO: voidi...-11 usagesprivate function createTextRelayService: TextRelayServiceSservice = new class (() extends TextRelayService {public function constructoc SunctatchRedkSemior 24© BaseService Test. phocleache eimsamcod.ocog74CemAdMieiceeroeeimeontauratonsettnosCrm@biectsRosolverTest., 25%Nerunn SeNVTCerope autprosoedsoarohsrayChanges 5 filesE.env.local apc© JiminnyDebugCommand.php app/Console/CommandsT+0 +→ Side-by-side viewer -=Do not ignore"Highlight words -X15 € ?• Contents are identicaasekhsaetelloWan.cactillaytelauSancatiaer.obmwplogging.php coniig@ PlaybackService.pho app/Services© TextRelayServiceTest.cho tests/Unit/Services/Mail>Unversioned Filce 9 ficd=custom.logaraveuosA SF fiminny@localhost)HSJocal (jiminny@blocalhost)d console (PROD) x C Service.php# console fiaumA console (STAGING)700792704786TXS AUTO NIi.created at > DATE SUB(NOWO, INTERVAL 38 DAY)045 A1 A41 У 66 4bY U.zo, U.enazl, U.nane, U.sorconone nunder:BY sms count DESCt * from teans where id = 1:* tron rolesCONCATCU,Id. CASE NHEN u,51d = tounen id THEM * (onner)* ELSE ** END) AS usen 30omner thuh soot sccounusens u on uisid e shsocabledteans>onsde u.teanand ea-orovider = "hubsoor"T * FROM activities WHERE uvid_to_bin(^8024fffb-2df7-4017-91f4-d9f896850248*) = vuid; # 79933459 YES* FROM activities WHERE uuid_to_bin( [CREDIT_CARD]-927f-4f4da2a8185c') = vuid; # 80186192 NCT * FROM crn_configurations WHERE id = 1053:*SPOM teans THERE 50810025**tom usens nhere d= 39249.TO0У L7Inu cowoy 1o:4/.Useeendhanoainellohtine+0.awashoocker medo docker heoohd arcin ciie moyeteyere hu:synThen check the logs straight after. If there's a refused message in the current history window, you'll see the new headers present array in the warning log immediately. No need to wark vor the scheouke:Oal -What about this. Seems the + sion is in email. Wall ti still work and howtetswilllworxcorttatv.lemecachrouch.helooc.wi.httsexeemTo header value: catch-a11[PHONE].359877878118.1005kd342%9txt.Jiainty-comAsk ammnina+ < Code SWE-1.6No dlierenceEEAnt Mhrenew class e›ends TextRelayServicepublic function-construct}: Jiminny\Services\Mail\TextRelavServicelanonymous89617Source: .../tests/Unit/Services/Mail/TextRelayServiceTest.phpTecte nactar:7e minutas saoN Wodtur Teams DA4R UTE-R AlA enano...
|
iTerm2
|
NULL
|
NULL
|
85532
|
|
85550
|
rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 o rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 on JY-20963-fx-leSarvicc.ohnhe heloers phi©ActivityControlier.phpcustom.logA SF fiminny@localhost)coaedla oeon %• Httpa IntegrationsnlinteractionsJobsuewholeooserver.ono Tesmuonsc) e enupn;class servcelesc excends lescuaseA console (STAGING)D0000A1A ~69i.created at > DATE SUB(NOWO, INTERVAL 38 DAY)700• BY u.id, u.enail, u.name, u.softphone number:BY sms count DESC:a MailiModels• (a Notificationspublic function testResolveContactAccountSyncsllhenNotFoundLocally(): void(...}vosewversSocialAccountOoserverlestUserObserverTest.phpUserRoleObserverTest.phoPolciesa Providerushon2479248974982491public static function resolveContactCountryCodeProvider(): arrayt..784705706E708#AdataProviden neso-vetontacttountrudodeProwder2493 C>EACtVIYDa ActivityProviders2495L4Yon2497L4Yopublic function testResolveContactCountryCode(array ScrmData,?bool ScountryExists?string SconvertedCode,?string Sexpected: void (..calendarleonterenco1 usage•RullmeenCloseleoonepublic static function parseContactPhoneProvider@: array….25442545254025422548 ₽* AdataRrovider parseContactPhoneProviderHelpersHubspotD IntegrationAppTnll istenarspublic function testParseContactPhoneWithEnptyPhone(array Scrnbata, ?string ScountryCode, array Sexoe=724IШIII1usaodPipedriveh Salaslorca> Fields2563D OpportunityMatcherl OpportunitySyncStrate 2545• (L ProsoectSearchStratecim senrcotraisClientTest.phoC DecorateActivity Test.p 2642C DeleteObiectsTraitTest 2nzaanhtntoasieron@ GetActivitvFieldNameT 2n2dPavloadBuilder Test. ohr [EMAIL]© QuervHandlerTest oho 2nze© Querviterator Test.ohoDACAGN©QuervResultsTests.php 2653cSemcettestono@ SuncRatchRedisSenics@ RaseSeniiceTest oho(CacharCrmSanicehompublic static function parseContactMob{leProvider@: arrayk….."oeaprousden ponsetonirer.oonueprowtdenpublic function testImport0pportunitySkipsllhenProfileNotFound(): voidf...1u580eclass HasManvFytended extends HasManypublic function where f...)public function firstol...ht * from teans where id = 1:t * from rolesCONCATCU,1d. CASE NHEN u,51d = tounen id THEM * (onner) * ELSE*• END) AS usen 30Sonnen id FROM sochal accounte snusens u on uisid e shsocabledtcanet1.ng->1: on tisid = uatean fdurcanbiid e 117 and eh-orovider = "hubsootT * FROM activities WHERE uvid_to_bin(^8024fffb-2df7-4017-91f4-d9f896850248*) = vuid; # 79933459 YES* FROM activities WHERE uvid_to_bin( [CREDIT_CARD]-927f-4f4da2a8185c') = vuid; # 80186192 NCT * FROM crn_configurations WHERE id = 1053;*SPOM teans THERE 5O81002:t * from users where id = 30249**tron nlavbooks where saln Shaket * from playbook categories where id = 43783;**Eaan mlauhanh astonan oc whond nlauhaah dr Chart * from crn fields where id = 659242;**Eham Ann Cold valmoc whono ane bhold ne Aconta,T& GOnM Ann Bold doto &hN crn fields f ON fd.crn field id = f.idMOAtNS+2oGa OM SHl onftustu ka- 0%aactivity id = 799334591 f.crm provider id = 'hs activity type':T * FROM activity nessages* fron toxt relave where created at > 12826-85-01*-** fron activitice where usen id IM (7168, 18688) and coeated at > 12826-85-221 onden by sid desca** fron usens nhere tean id = 1 and Sid TN (18688. 13934. 7169)=** fron activities where usen jid = 7168 onder by id desc Linit 16** fron accounts where tean jid = 1and nane = "ColunnS".** fron usens nhere nane Like "ySubrak*: # 31054, 1117)nhere $d= 1117,**Erom actaivity searches where lusen 5dn 318563RRORD# console fiaum045 A1 A41 У 66 4Thu 28 May 15:47:51Cascadeanoainellohtine+0.AToasdocker med o docker neosohd hrtein cie moyeteytere hy: synThen check the logs straight after. If there's a refused message in the current history window, you'll see the new headers present array in the warning log immediately. No necd to war vor the schedule:Oal -What about this. Seems the + sion is in email. Wall ti still work and howetwilllworxcorttolv.le.mecachrouchnelocc.wi.httsexcmTo header value: catch-a11[PHONE].359877878118.1005kd342%9txt.Jiainty.comwSottonSparts = ['catch-al([PHONE].359877878118.1005kd3d2%', *txt.1minny.com')i. Hoct chack itytumionu.cotf tyttmtnou.tonJ3, Strio plus tan fron localoar?clocnlRaca= exolodet"4'. *catcheal14447709152786.*0re1Me "atchenll1 4. Comoare aitias: "catchenlt" men "catchaalt"e retumstmatCa icfordurrontEnus ronsantil roturne thu and tha matasos mocadde to ha dienstchanThen in EnsilTextRelay job, parseRecipient() uses the To header directly and the regex \d+).1d+\.[a-zA-28-92ertxtl. 1ninny..com extracis 447/00152706.35931/078118.L0o5kd30txt.1minny.com - the + prenbocfore the phons numbers isstnoocd ou carsabuctotenttntofntittest) which orcoonde + teelt anvwawEverything works end-to-end. Now you just need to re-apply the To header fallback fix so these messagesaren't refused.Read TextRelayService.php #L182-216TextRelayService.ohr+28 -18Fix is back in place and the temporary headers_present diagnostic logging is removed. The tests already reflectthis looic from eariier. You re good to deployGal -wheytReauserncetestohRoad TextRelayScrviccrest.pho #L154-188TextRelayServiceTest.phpAsk anything (XOL)"Podswiothutwnderelmerxees*4 space...
|
PhpStorm
|
faVsco.js – ServiceTest.php
|
NULL
|
85550
|
|
87853
|
rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 o rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 on JY-20963-fx-lProinet v© Service Test.php› @ MergewawenacdvityCimDalo.ongy uimaeumyociwiceonaewemwwocorotor.orFroseeeuscnid.pint© HubspotWebhookMetriLo Propenycnangemons:uvalohtwohooktoWebhookAssociationCooonurwowncaion© HubspotLastModifiedCreatedRecentiyOpenSyncStrateay.ohg© PayloadBulder.pho xg© WebhookDeletionHandwewokventsC WebhookMergeHandleclass Payloadbuzlden- 48×25 ^ V 88WebhookProoertvChan 9°C WeohookSionatureVa© BatchSynceollector.phpc) Batchsuncred sservice og clent.phpC) Cosed Dea StadessemicelC Desl zieldsservice onoC) Decorate chmm chocFeld detinitons cnoCrAcTvaAeoousreoodKtnend'esotiottesnhC HubspotTokenManager.pho pawiasatthoneooecPAmotdermersaiisomnd ResnonseNormalize.phpel Sarnice ono© SyncFieldAction.php© SyncRelatedActivityManac 69e Mohhaal-CunaRatchormd> @ IntegrationApoMlictonord> @ Metadata> [ Migration>D Pipedrivev C Salesforce> D Fields> B OpportunitvMatchen> D OpportunitvSvncStrateoeSemicetiraitsC e entondC. DecorateActivity.cho710bele eocectetie tonocseldae initons choc Paviosd Bulldes.onoc Pronie.onocOuwyetder.onocOuerylandier.ohoc Ouorvitorstoe nhae Ouoneoarte nhnci Connno nhr89* Generate a payload to search for contacts by name.*The searchois a token search sin dinstnane on uostnendpublic function generateSearchContactsByNamePayLoad(string Snane, array Sfields): arrayt...:5 usagespublic function buildAddAssociationPayload(string Scrnid, array Sids, int Sassociationlype): arrayi 973 apublic function buildRemoveAssociationPayload(string Scrnid, array $ids): array{...;/usagespublic function addClosedStageFilters(array &Spayload, array SclosedStages): voidif ( enpty(SclosedStagesf 'won'1)) 5oavrosolnwense"propercynane" s> "dealstage"-185vallues 8>SclSeoSROrSROnif (4 enoty(SclosedStagesf'lost'1)) !SoayLondn'Sittens"meBEES'propertyName' => "dealstage",onemator,113114"vallues' E> SclosedStaoest" lost"118public function addCreatedDateFilters(array &Spayload, Carbon ScreatedAfter): voidt...}10 usagespublic function getDealsinBulkPayload(array Sdealids): array ...;005Б65ВВВ5wtw:twwiews.outreonaettodaw RayA SF fiminny@loca host)HS Jocal jminny@blocalhostde console [PRODA console (EUle Froterundrewons"ohuneuis users (EUTA console [STAGING)Icaconl closs Prodercycnane chandoerTNY.AVself::0BJECTTYPE CONTACT => [I/ Add contact properties that support direct updateSelf::ORJECT TYPE COMPANY =>acooany oroderatesSuppornOReoping fren Hubspot prepenty nones to Mieieny roter prepenty nones* Used when updating the main model (Opportunity, Contact, Account) directly,* Onty needed when HubSpot property name differs fron Jininny property name*/private const array OBJECT_PROPERTY MAPPINGS =Commandsell.-ORJEeTYPE DEAL E)'dealnane' a> 'name'. / HubSpot 'dealname' maps to Opportunity 'nameExtract SurroundTT Ado contact property nappings if neededself::OBJECT_TYPE_COMPANY =>Add company property nappings if needed1:I/ Field object types mappingprivate const array FIELD_OBJECT_TYPES = [self::0BJECT_TYPE_DEAL => Field::0BJECT_OPPORTUNITYself::0BJECT_TYPE_CONTACT => Field::0BJECT_CONTACT,self::0BJECT_TYPE_COMPANY => Ficld::OBJECT_ACCOUNT1:onsuare tarchsuncioitleccon Sharchtoe ecton.private OpportunityRepository SopportunityRepository.orsivate CrnEntatvRenos.tory ScrnEnt: tyRenost tory.private FieldDataRepository SfieldDataRepository.private HubspotWebhookMetricsService SmetricsService,* Get contact fields that webhooks are subscribed to in HubSpot.* This serves as documentation of the current webhook confiquration.=100% 142-• Thu 28 May 19:27:04ServiceTestvmeesdales Orcnnworeebeeionhnves ohtine oDon+0.Unless the May 20 sync used a cachedClosedDea lStages that was populated earlier in the same batch lob — before a importStages () call updated thestage probability from 0 to 100. But that would require stage 20616 to have been at probabiity o at the start of that batch run, then changed to 100 midrunby ecortstases(.And ieportstanes only runsThe true, detinitive answenAfer all this ansves, the most"kely exolonstion is this is a data snaoshot from an eanter time,t ihe opoortunty was sunoed when closedlost hadprobability 0 (before May 4, 2026). Then someone manually changed the stage probability to 100 on May 4 in Jiminny. But the opportunity hasn't been re-synced since then - it shows updated at: 2026-45-20 but that could be from a different field being updated (like dealnase, value, etc.) via the Propertychanackanager's dircct uodate path, which does Not recalculate is. wonLook at PropertyCharhinonio Looea luareciupdatea PropertyChUoontc boock procchisy trwootne cxstsCoronerManoinos- CeTATO:EeT PROPERN MAPDNMSIRANANOROFMNMPE DEAEITETNif (isset(SpropertyMappings(SpropertyNase) )) 4Sthis-sopportunityRepository-update0rCreate(...):odste weld darsthis->import0bjectFieldData(...):return trues0B OBJECT UPOATE PROPERTIES for deals = ["ótalnane', "description']. If a dealnane or description webhook event came in on May 20, it would1. Update nane on the opportunity (via update0rCreate) → touches updated.at2. Return true (bypassing the full hand leübiectSync / batch queue path3. NOT recalculate 15. voThis is the answer. On May 20, a dralnase or description change webhook arrived. PropertyChangeManaoer: :handleDralDirectUpdate ran, undatecthe opportunity's nane field (touching updated_at to 2026-05-28 18:36:59 ), and returned true - skipping the full batch sync that would haverecalculated is_von. The deal's is_von was already e from a previous sync (when closedlost had probability 0, before May 4), and the May 20 directupdate webhook dionthxkSummatyTine ooocturynsywna1. Before May 4: Stage 20616 (closmdlost) had probability = 8 in Jiminny's DB (consistent with HubSpot's default behavior for a stage named"closedlost"). Any sync at that time would put "closedlost" in tost() → 1s_closedel, is-wonne2. May 4: Someone manually updated the stage probability to 100 in Jiminny DB (and/or HubSpot updated their stage label/settings). Stage undatedl.ate2026-06-043. May 20: A HubSpot webhook for dealnase or description property change arrived for this deal. Prndleocaldi rectUpdatfired - it updated the opportunity's nane field directly (touching updated_at ) but returned true without queuing a fulll sync. is_von was neverrecalculated4. Result: updated.at: 2826-85-20 looks recent, but the is-von value is stale from a sync that happened before May 4 when the stage probability wastilllotthe tixis to troac a troch sune df thie sond ic anoortunity: sync0noortun ty(404958190945*) wotld tetch ttrom Hub Soot soo denlstran - "closedlosf*, find it in wonill (probabillity 100 now), and set 1s.won = 1Cal =ok I still don't get it. After I run manual conand to php artisan crm:sync-opportunity --teamid 555 --opportyras set to 1. However I stil can't understand what happened before. The opportunity stage was changed on 2026-9"eoohWindewetetTrnchure xlline wasket4 spa...
|
PhpStorm
|
faVsco.js – PropertyChangeManager.php
|
NULL
|
87853
|
|
86832
|
rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 o rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 on JY-20963-fx-lProinet v© Service Test.php= custom.logIaravellogSF [minny@localhost)2 HS Jocal (jiminny@localhost)› D RedisD Service TraitsOppontunivsincllereswalcnaedviycimDalo.ongy uimaeumyociwiceonwwucrco Cimocwiccuccorolor.ohACUViy.on(©) ProspectCache.phpaSalmstorce/Service.preD000€# console (EU) XaiRlnsers feunA console (STAGINGNE AURG Mimiamy031 A9 A28 M 3 У108 A Vwsuncetmahorusuncreeeonuwwecimuo> D Utils•WeOnOOKooonur woync laionoxY00traeeononwsync taprivate function buitdOpportunityDataCSuserid = Sprofile?->getUserid ?? SaccountUserid:PWAVWAV1691-16921169%SELECT DISTINCT u,id, u,enail, u.nane, u,softohone number. COUNT(a,ja) as ses countCBacSVnckewwoec eentohoC @osed DealStagesserv.ceDeallFieldsService ohdC) Decorate,ctimtv choc) Fediivoeconverter.onoCtosootTokenVansoerC PawlosdBullder.onoCRAmoreemac selino ol« PesnoncaNormalize nhocSawes nor© SyncFieldAction.php©) SyncRelatedActivityManase Wanhod Cuneiotthoe> B IntegrationApoMlictonore& Metadata> (0 Migration& Pipedrivev MGoloctmed@ FieldsDa OpportunitvMatcherOooonuRWWnodP-WostechecwdPANEMCHKGIC Clent chd©) DecorateActivity.cho1082€) FieldDefinitions choc PaviosdBullder.onoC Profile.oho10111012101378141019C Oueryet der ono© QuervHandler.oho1017c) Ouwviterator.choc Ouwyeeet teonoc) [EMAIL].e2eRhedsllont nhneRocoCon.no nhrShame - "Unknownif (isset(Sproperties( "dealname'))) €Snane & no stranzoch soroperclesded thaueewidth: 128):E1693MACCImoutsws-sresolveoutitoroothersScurrency = Soropentslesf'deal cuccency code'1 22 nul1a17911eloselareenulestluerovonoerersclosto$closeDate = Carbon::parse(Sproperties('Closedate'))->format( format: "Y-n-d*);179%1200Sremote yineatedAt = nulteif (1 empty(Spropenties['createdate')) s& strtotine(Sproperties[ 'gneatedate' I)) 4Saate = Sthis->mnneee cantnterine tonopertieel"coeatedate"oeScerotel vireatedAt & Scnter->tonatd tomet "Yonod Hitee"=17121713SclosedStades & Sthiiso>aete osedient StacosiolSisWon = in array(Sprcberties( 'dealstage']. SclosedStages('won')):Sislost = in array(Sproperties( 'dealstage'], SclosedStages( 'lost']):Sdata = 1itonnAlnGondIAwnon A"name= Sthis->tean-sgetido=> Sonerid,=> Sname=> ! empty(Sanount) ? Samount : null1771724close dateas closed= scloseuare= Sisiion I| SisLost→ Siswonmiroraly oresnedtessroe yinee= Sthis-snesolveDes1ProbabfLity(Sonooentsiesf"he deslst= Sthic-snesolveFonconetCatcgory(Sonopenticsf"he. nanunl)FROM users uSiNER o acomdies a 1eos.n oh uisd e a.usen idWHERE a.type LIKE 'sms%AND ACReSTedST> DATE SUBCNONOY INTERVAL XODAYO6ROUP BY u.id, u.email, u.nane, u.softphone_numberMonse tyene count hesSELECT DISTENCT u.id, u.email, u.nane, u.team_id, t.name as tean_nane,t.tuilio_sms_sid, t.twilio_nessaging.sioEonMneanenINNER JOIN teans t 1..n<->1: ON u.team id = t.idWHERE (t.tuilio sms sid IS NOT NULL OR t.twilio messaging sid IS NOT NULL)AND u.status = 1ORDER BY t.name, u.email:SELECT * FROM teams WHERE name LIKE "%Tourlane%': # 187, 289, 8150, [EMAIL](U,1O, CASE WHEN u,1d = t,ounerid THEN • (ouner)• ELSE ** END) AS usen1dlsa.*thouner 1d FROM socilal accounts seJ0TN usens u on unid = sa,sociable 1aJOTN teans + 1.nc->1: on tuid = u,team soNHERE u,tean 10 = 187 and sa,onowiden = 'salesforce':select * fron actaivitaies where 1id = 31264367,salect *hon contaces whend id = 63341639.select * fron accounts where id = 4156632;sclect * fron onnontunitias nhere $d = 4843610:# update 'activities" set 'account_id' = 4156632, "contact_id' = 6331639,"opportunity_id' = 4843610staaeid = 13y2k.l"activities" 'uodated at' = 2626-85-22 87-16:17 nhonel"$d' = 31264367)4sollect * tron text relavs where created at > 12026-85-81*-select * fron activities order by id desc:colont & Lrn mcong nhond nand vo leSuho.t.CSIEN & CONK AnnANtInStOG NHSOS WUSd TAUhND OhRONEONNNRTHLIET-O0TDDAROhZRANEeN"TE MISA1732 vhecauntaidSdataf 'account_id'1 = SaccountIdsi4 (Sethao)dAntity Il Mew oul reouest trodas 18:10)Thu 28 May 18:10:34+0.Cecsdales Orcnnworceoeionhtoreachsoartcnants as coarticioant// Line 144-150: If no enail natch, try DOMAIN matchleoryisrconsSrecords a Sthis=sfindCrmDomainRecords(crmService: ScrmService, ...):M d This nay call Salesforce::matchByDomain()Steo 7: Domain Search Triaaers Doportunity Syncnownthirthnoenotoudt@hyatdca"wiithrantadonodrtunIl To get cocortunity details, it calls:Scraservice-syncopoortunttyScrProviderid// Calls importOpportunity()Step 8: The Bug - ImportOpportunitvß) Creates Temporary RecoreTaloh.a/users/ws/Toinay/aoo/apn/Services/cra/Salestorce/Service.ono:143%-1448private function inportOpportunity(ScreData): ?OpportunityM 8s. Restore tron trash Cline 1430)Sthis->restoreAnyTrashedEntity(Sthis→>config=>opportunities(), ScrmData('Id']):M%r leennr- weoortuniity now sxri with valbidiot ibnasuchetstsopportunity = sthis→config-sopportunitiesoodeirererelter onouderoseritasdsotaJCAt thie caaat CANMCtInTNAC VALTO CAO 17005257Mhoor ed artnsind the th ebns 1442Sthicastemethooortintterfioldhata /Cerhath ComBlalde. ConnoctunttvesfaleI1 8A. MOM Celeta se nonín (ina 1444)Sthis-shandle0biectDeletion(Sopportunity, Scrnbata)// 8e. Return null (Lines 1446-1448)socoortuny-o"rasheco)ff Mathod returne onll. puir.Ctan a.tha Cheesdad nalatadttnisoue to/detvis codh$ AdhotsW Wodtur Teams 1002-31 UTE-яautend...
|
PhpStorm
|
faVsco.js – OpportunitySyncTrait.php
|
NULL
|
86832
|
|
88764
|
rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 o rapstomViewNeweNNCCoocWindowFV faVsco.|s ~#12121 on JY-20963-fx-lProinet vCSamviceTestonMEINSTALLMOUmacurayscrict.on© RecordSelector.phg© Activity.prpC) Team.phdMEINTERNALWEBHOOKSETUUP maliminny storacewowswo.moocea.cokicontoensynostooo.nC) PayloadBulider.oho© CrmEntitvReoository.ohdMalicenses.maMakere0 package-lock.jsonphpstan.neon.distF phpstan-baseline.neonphpunit.xmlraw.sol query.saMAesNeiMs macachedelosedbealstaaesx5 C20.11.25 Kovalik1864trait UpportunitySynciraitprivate function resolveBusinessProcess(?string Spipelineld): ?BusinessProcess18.11.25 Kovalik18.11.25 Kovalr18.11.25 Kovaliki sonar-project properties18.11.25 KovalREtest.py17.04.20 man<> Untitied Diagram.xml17.04.26 ilianus vetur.config.is17.04.20 manAWISANOOK SITSOINGMOSUNT13.02.26 Kovalrnt. Sytemallloranesv =0 Cemtches and Consolosv @ Database ConsolesV AEU13.02.26 Kovalik18.11.25 KovalR if (Spipelineld =a= null)return null.ScacheKey = Sthis->getBusinessProcessCacheKey(SpipeLineld):if Gisset(Sthis->cachedBusinessProcesses(ScacheKey))) 4recurn schis->cacheobusznessProcessesscachckcy.SousinessProcess = sthis-roc.8ustnessprocesssotoclne.dor18.11.25 Kovali+ ( SbusinessProcess instanceot Businessprocess) 1# console cUihisownoor tr acesiosA DEAL RISKS (EU1970shus neseproce Notaltuo Bus anessProcess (soineineo ameutsunSarvicaei+oc|ex7) Outputjiminny.opportunitiesIID fiminny stages1D Result 34(l fiminny.stages 2 x Tx,vontameANrnuewAo500am id Tan uuid:un tean id M: Ie cra confiquration id M:I crm provider id yconeolle 7m.ui users 1 $ 548 msy2liminny@localhostA HSJJocalA SFV A PROD# ConcalaV A STAGINGH Concal"noakor• I name T• (0 label T(m probability M:Atype MПОИІЕ ИРеНР+0C00k•Imis selectable MAccept allPawauina menite di tha cuarhard le miod smount lowr d9rar huhenat annartun tide with emotst ionisadlie man chAccept Reject=custom.logsraveloeSF jminny@localhost)# HS local [liminny@localhost# СОЛЬОС PHUA console (EU) x iii users (EU)# console (STAGING1757-175)-1700=1761704=170- 17001765=1764=1765=12691769=177e—17711772+773₴177417752So liminnyvRE team id = 555 AND stage 1d = 28 =ER BY updated at DESC031 A9 A29 3 V111 A VECT o.id, o.crn provider id, o.is won, o.is closed, o.stage ids.crn provider id AS stage crn provider id, s.probability.o,scage updareo ac, o.upoareo au, o.teaneM opportunities oN stagess 1..n<->1: ON s.id = o.stage idN crn_configurations cc 1.nc->1: ON cc.id = s.crn_configuration_iahexe ccrorowceruosooRE o,tean 1d = 416NO saorobability = 188)ND o.is_won = END s.deleted_at IS NULLla: By o,uodatedat destreet * ihon stages whers tennsid e 46:1570mTO0У L7Inu Lo moy kuisoiseServiceTestmeesdales OrchancworeeoeionhHuosoooooorunty+0.This joins through stages crn_configurations to filter only HubSpot teams, and finds all non-deleted opportunities where the stage has probability 100-If you want to scope it to team 555 onlyWHERE o.tean 1d = 555AND S.orobabilty =Jho.fewaEAND o.deleted_at IS NULLJAND s.deleted at ts NuulGl -:Am sequence:Im created at Y:im updated at "CSVvTTO0Im deleted at y**Cnedlo STNCSISeTAiN AAm MAlNXMNud Tosme 1775:11 lITSg ensa....
|
PhpStorm
|
faVsco.js – console [EU]
|
NULL
|
88764
|