|
CodeFlleselectionViewlerminalWindowmelpfinance [SS CodeFlleselectionViewlerminalWindowmelpfinance [SSH: nas• .envreport(2).csv( sms export.ison•2 C3›* Desian new pavment-logge.Implement Authentik integration with sec..=*= Implement Authentik inte…V FINANCE [SSH: NAS]y finance-huhl/ Dackenetrontend> mcp> scripts4 .env.env.example• gitianore# docker-compose.vmlO README.md() sms export.isonNOTIFIER URL=[URL_WITH_CREDENTIALS] 040 hl100% CSat 9 May 20:57:19*mA .•<> Edit automaticallybash +v M m ... I rr x8 Sign In...
|
iTerm2
|
NULL
|
NULL
|
|
CodeSelectionViewRurTerminalWindowHelr40 hl# Prepa CodeSelectionViewRurTerminalWindowHelr40 hl# Preparation for Refi... in 21 ntinance SSH: nas100% C7. Q. Mon 11 May 14:39:11I8 0•M•2 CImplement Authentik inte…..XV FINANCE ISSH• NAS1The editor could not he anened due to an uneynected error Dloacecoulc not estaplish connectionto "nas"Close RemoteRetryMore Actions…VX= 8 .. | c. x.[14:39:06.338]out/extension.is:2:818374)at asyncat async P (/Users/lukas/.vscode/extensions/ms-vscode-remote.remote-ssh-0.118.0/out/extension.is:2:786650)at asynct.resolveWithLocalServer (/Users/lukas/.vscode/extensions/ms-vscode-remote.remote-ssh-0.118.0/out/extension.is:2:788147)atasvncR/Users/lukas/.vscode/extensions/ms-vscode-remote.remote-ssh-0.118.0/out/extension.1s:2:811477)atasvnc_t.resolve (/Users/lukas/.vscode/extensions/ms-vscode-remote.remote-ssh-0.118.0/out/extension.1s:2:815775)atasvnc /lsers/lukas/.vscode/extensions/ms-vscode-remote.remote-ssh-0.118.0/out/extension.is:2:1102718114:39:06.351)|—=4OUTIINElwkptlindin thh ropant caecian@0A0|...
|
Code
|
|
NULL
|
|
CodeSelectionViewlerminalWindowHelr( app settings. CodeSelectionViewlerminalWindowHelr( app settings.isonapp > @ .env• .envANTHROPIC AP1 KEY=SK-ant-ap103-SYnLRApkSmNwY7SYdrHa38Rdm/N0dLTEdDw9UcwMJrC1-z1P0-T41cq1xvTNQaVR5u1U3LL86CP1aGTLWHAGm0-L8mQTOAPDPOBLEMSnepue cANcoLe•Adm1nadxP4800PLUS-B5F8:/volumel/screenoilnesTEOMINALPORTS">SSH: nas 8 master* @@0A01helscreenpipe SSH: nas•4 LxY100% LzFri 8 May 20:20:57O8 W 0a*I .* Implement and run pipe I...Implement and run pipe logicAdm1n@DXP4800PLUS-B5F8:/volume1/screenpipe/app$ sudo docker exec -it screenpipe-app python cli.pv pipe dav-recap --date 2026-04-20Running pipe 'day-recap' for 2026-04-20...• The container started before you updated the .env , so it's using the old placeholder key. Restart it to pick up the new one:ca /vo lumel/screenpipe/appsudo docker compose restart screenpipe-appThen try againsudo docker exec -it screenpipe-app python cli.py pipe day-recap --date 2026-04-26Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe/app$ sudo docker exec -it screenpipe-app python cli.pv pipe day-recap --date 2026-04-20Running pipe 'day-recap' for 2026-04-20..<>envkey is there now but Admin@DXP4800PLUS-B5F8:/volume1/screenpipe/app$ sudo docker exec -it screenpipe-app python cli.py pipe day-recap --date [EMAIL] crediits.go.to.console.anthropic.com=/Plans.&Billina.andladdlsome.crecits.(affew dollarsiis.enouchlfor testinaOnce tooped un. rerun the same command and it should work* Esc to focus or unfocus Claudeis Edit automaticallyabash +v M M •| s? x418 x 27Ln 2, Col 1 Spaces: 4 UTF-8 LF ( Dotenv ? Signed out...
|
iTerm2
|
NULL
|
NULL
|
|
CodeV SCR>#K> c> s→ oirarc= dbE dbselecti CodeV SCR>#K> c> s→ oirarc= dbE dbselectionViewNew Text FileNew Flle..A19NNew WindowNew Window with ProfiletdNOnen…Open Folder...Onen Worksnace from File…Onen RecentAdd Folder to Workspace…Duolicate WorksoacesaveSave As.Save AllShareAuto SaveRevert SileClose Editor 199k 98.1.1Close Folder [&K F]Close Remote ConnectionhceMinteleSscreennine cvnc shE screennine dhlerminalWindowmelp$0100% 2Fri 8 May 20:21:03screenpipe SSH: nasapo_settinas.isonscreenpipe_sync.sh•pipe.md• .envapp > @ .envANTHROPIC [ENV_SECRET] ..23 Implement and run pipe l...Implement and run pipe logicAdmin@DXP4800PLs-B578volumell screenoipelapos sudo docker exec - screenoipe-apo ouihon clioy pipe day-recap --dare 240240-04-4Running pipe 'day-recap' for 2026-04-20...cd /volumel/screenpipe/appsudo docker compose restart screenpipe-appThen try again:sudo docker exec -it screenpipe-apo python cli.oy pipe dav-recap =date 2626-04-26Admin@DXP4800PLUS-B5F8:/volume1/screenpipe/app$ sudo docker exec -it screenpipe-app python cli.py pipe day-recap --date 2026-04-20< .envkey is there now.but Admin@DXP4800PLUS-B5E8:/volume1/screenoioe/aooS.sudo_docker exec.-it screenoine-aoo.ovthon.cli.ny.nine dav-recan--date 2026-04-20Running pipe 'day-recap' for 2026-04-20• The key works - it authenticated successfully. The error is just that your Anthropic account has no credits. Go to console.anthropic.com Plans & Billing and add some credits (a few dollars is enough fortesting).Once toooed uo. rerun the same command and it should work% Esc to focus or unfocus Claude+0<> Edit automaticallyPROBLEMSOUTPUTaeollewaneale•Adm1nadxP4800PLUS-B5F8:/volumel/screenoiinesTERMINALPORTS1bash +vM M •|s? xOUTIING>TIMELINE*SSH: nas 8 master* ©@0A0 (1Spaces:4 UTF-8 LF( Dotenv ? Signed out...
|
iTerm2
|
NULL
|
NULL
|
|
Codelibl# Preparation for Refi... in 22 m100% CDEV Codelibl# Preparation for Refi... in 22 m100% CDEV (docker)-zshDOCKERO ₴1DEV (docker)882APP (-zsh)H3compiledeventsroutesviewsJiminny-worker-processing-2:j1minny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00: stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00:stoppedworker-analytics:worker-analytics_00: stoppedworker-audio:worker-audio_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-download:worker-download_00: stoppedworker-nudges:worker-nudges_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker:worker_00: stoppedworker-calendar:worker-calendar_00: stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-emails:worker-emails_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00:startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny#php artisan jiminny:debugDispatching 100 MatchActivityCrmDatajobs (portal=2)Done.Watch logs and runjiminny:debug observeRateLimit to inspect cachestate.root@docker_lamp_1:/home/jiminny# ]84-zshX58• Mon 11 May 14:38:551881-zsh+screenpipe"O ₴61.79ms DONE2.06ms DONE0.85ms DONE4.12ms DONEDEV...
|
Notion Calendar
|
NULL
|
NULL
|
|
CodeselectionViewEXPLORE:V DOCKER [SSH: NAS]> a CodeselectionViewEXPLORE:V DOCKER [SSH: NAS]> adguard> ai-stackapp-dbapprlowy> audiobookshelfauthbeszelbilwarden• dawarichdsk-uploadertlask-appgarmin-connector›giteahealth• health-trackerhomari> hstimmich> jellyfinht• kavital>libreoffice> linkwarden> location-logger› meeting-detectormindfulmamal) nQn> notifier-app> npmoauth> obsidian> ollama> open-webui>openttdNew Flle….New Folder...outfit-Ooen in maces Preview› owntraOpen in Intearated Terminall> paperlSind in SolderY paymer> claud› backefronte• .envAdd Folder jo ChatCutCopy• .env.e•gitigDownload.1 ADI.n* dockeCopy PathA DEANCopy Relative PathOUTLINE1 TIMEIINERename...Delete PermanentlySSH: nas Pô mlerminalWindowmelp* Claude Code XUntitleddocker SSH: nasreview+0PROBLEMSOUTPUTaeollewanealeAdm1nADXP4800PLUS-B5F8:/volume2/dockersTERMINALTOF2e C2e VTAжC•1|C*Claude CodeReady to code?Let's write something worth deploying1 Drofor tho To« Elit automaticaly100% C48Fri8 May 20:26:5008000*@@...Cabash +vMM •|^ x8 Sign In...
|
iTerm2
|
NULL
|
NULL
|
|
CodeselectionViewEXPLORERV DOCKER [SSH: NAS]> a CodeselectionViewEXPLORERV DOCKER [SSH: NAS]> adguard> ai-stackapp-db>appflowy> audiobookshelfauth> beszelbilwarden• dawarichdsk-uploadertlask-appgarmin-connector> giteahealth• health-trackerhomari> hstimmich> jellyfinhtkavital>libreoffice> linkwarden> location-logger› meeting-detector) mindfulmamal>n8n> notifier-app> npmoauth> obsidian> ollama> open-webui>openttdopenv› orcheNew File…New Folder..Ooen in maces Preview→owntOoen in Intearated Terminali→papelFind in Folder...y рауть• claiAdd Folder to Chat› backtronCutCODy• .enveni• gitiDownload.1 ADIICopy PathdockA DEAICopy Relative Path> OUTLINITIMEIINRename…..Delete Permanently›‹ SSH: nas | 9a.lerminalWindowmelp* Claude Code XUntitledPROBLEMSOUTPUTaeollewaneale•_Adm1nadXP4800PLUS-B5F8:/vo lume2/dockersTERMINALTOFTAжCdocker SSH: nasClaude CodeReady to code?Let's write something worth deploying.Prefer the Terreview•1|Ces Edit automatically*@@ ...100% C4Fri 8 May 20:26:5808000CHAT+v • c? xSESSIONSCaPo• Debug location tracker 502 error and co..Cabash +v M M . |6? XX & pavments-loagerNocoriho whot to huildAuto =Q Local SianIn@...
|
iTerm2
|
NULL
|
NULL
|
|
CodeselectionViewlerminalWindowmelp$0100% 2Fri 8 M CodeselectionViewlerminalWindowmelp$0100% 2Fri 8 May 20:20:55screenpipe SSH: nasV SCREENPIPE [SSH: NAS]#reeyclevapoconsumers> static4 .env& cli.py# db.pvdocker-compose.vmli# Dockertile# main.pvE reguirements.txt• dataoinec• aitianore*aoo settinas.ison=archive.db= db saliteE db salite-shm= do salite-wallSscreennine cunc shE screennine dbiapo_settinas.isons screenpipe sync.sh•pipe.md@.envapp> @.envANTHROPIC [ENV_SECRET] ..23 Implement and run pipe l...Implement and run pipe logicAdm1n@DXP4800PLUS-B5F8:/volume1/screenpipe/app$ sudo docker exec -it screenpipe-app python cli.py pipe dav-recap --date 2026-04-20Running pipe 'day-recap' for 2026-04-20..333cd /volumel/screenpipe/appsudo docker compose restart screenpipe-appThen try again:sudo docker exec -it screenpipe-apo python cli.oy pipe dav-recap --date 2026-04-26Admin@DXP4800PLUS-B5F8:/volume1/screenpipe/app$ sudo docker exec -it screenpipe-app python cli.py pipe day-recap --date 2026-04-20< .envkey is there now.but Admin@DXP4800PLUS-B5E8:/volume1/screenoioe/aooS.sudo_docker exec.-it screenoine-aoo.ovthon.cli.ny.nine dav-recan--date 2026-04-20• The key works - it authenticated successfully. The error is just that your Anthropic account has no credits. Go to console.anthropic.com Plans & Billing and add some credits (a few dollars is enough fortesting)Once toooed uo. rerun the same command and it should work% Esc to focus or unfocus Claude+0<> Edit automaticallyPROBLEMSOUTPUTDEBUG CONSOLEAdm1nadxP4800PLUS-B5F8:/volume1/screenoiinesTERMINALPORTSDbash +vM M •|s? xOUTIING>TIMELINE>SSH: nas 8 master* @@0A0 (@1tee caaSpaces:4 UTF-8 LF( Dotenv ? Signed out...
|
iTerm2
|
NULL
|
NULL
|
|
CodeselectionViewlerminalWindowmelp$0100% 2Fri 8 M CodeselectionViewlerminalWindowmelp$0100% 2Fri 8 May 20:20:58screenpipe SSH: nasSCREENPIPE ISSH: NASI> #recyclevapoconsumers> static.env& cli.py# db.pvdocker-compose.vml# Dockertile# main.pv=requirements.txt• data→oinesaitianore*aoo settinas.isonE archive.db= db saliteE db salite-shm= do salite-wallSscreennine cunc shE screennine dbis apo settinas.isons screenpipe sync.sh•pipe.md• .envapp> @.envANTHROPIC [ENV_SECRET] ..33323 Implement and run pipe l...Implement and run pipe logicAdm1n@DXP4800PLUS-B5F8:/volume1/screenpipe/app$ sudo docker exec -it screenpipe-app python cli.py pipe dav-recap --date 2026-04-20Running pipe 'day-recap' for 2026-04-20...cd /volume1/screenpipe/appsudo docker compose restart screenpipe-appThen try again:sudo docker exec -it screenpipe-apo python cli.oy pipe dav-recap --date 2026-04-26Admin@DXP4800PLUS-B5F8:/volume1/screenpipe/app$ sudo docker exec -it screenpipe-app python cli.py pipe day-recap --date 2026-04-20< .envkey is there now.but Admin@DXP4800PLUS-B5E8:/volume1/screenoioe/aooS.sudo_docker exec.-it screenoine-aoo.ovthon.cli.ny.nine dav-recan--date 2026-04-20• The key works - it authenticated successfully. The error is just that your Anthropic account has no credits. Go to console.anthropic.com Plans & Billing and add some credits (a few dollars is enough fortesting).Once toooed uo. rerun the same command and it should work% Esc to focus or unfocus Claude+0<> Edit automaticallyPROBLEMSOUTPUTaeollewaneale•Adm1nadxP4800PLUS-B5F8:/volumel/screenoiinesTERMINALPORTSDbash +v M M • |6} X375 x 27OUTIINGTIMELINE*SSH: nas 8 master* @@0A0 (@1Spaces:4 UTF-8 LF( Dotenv ? Signed out...
|
iTerm2
|
NULL
|
NULL
|
|
CodeselectionViewlerminalWindowmelp0 hll100% 5Mon CodeselectionViewlerminalWindowmelp0 hll100% 5Mon 11 May 14:41:37•2 | C;vEXPLORERV APPV appv JobsVCrm# MatchActivitiesToNewOpportunity.phw MatchacuivilvcrmData.onp## NoteObject.phpw SaveActivity.phpwSavelranscription.phpw [EMAIL]#SvncObiects.oho#SvncOpoortunities.lob.ohv# SvncOpportunitv.ohol# SvncProfileMetadata.ohv#SvncTeamFieldc.loh.nhn#. SvncTeamMetadata.nhnl# UpdateOpportunitySpecifications.php# UpdateStage.phpDealPicksMailboxMeetinaRotlV MiddlowarolHandleHubspotRateLimit.phpRR RateLimited.php> Streamind> Team> Telephony>UsenR# BaseProcessingJob.phpDummyJob.phpwmoortRecallA Recordinas.oo.onv#ImoortRemotetrack.Job.onv# Job.oho# JobDisoatcher.oho# JobDispatcherinterface.ohv#[EMAIL]#SasVisibilitvControl.nhnl> MailV ModelsiActivitvi>AF• AckAnvthinalCalondarConnoctionTIMELINGiê JY-20725-handle-HS-search-rate-limit*+ C# MatchActivitvCrmData.ohpMm RateLimitException.oho mHandleHubspotRateLimit.php MGenerate code (xI), or select a lanquage (XK M). Start typing to dismiss or don't show thisE Untitled-1 X*m ..® You have Docker installed on vour svstem. Do you want toinstall the recommended extensions from Microsoft for itaShow Recommendationstelcal4 ChonderAute.of1 Dioin Tovt00 Cinn Inl...
|
Code
|
Untitled-1 — app
|
NULL
|
|
CodeselectionViewlerminalWindowmelp100% C4Fri 8 Ma CodeselectionViewlerminalWindowmelp100% C4Fri 8 May 20:22:03+ → payments-logger SSH: nasO README.moдePAYMENTS-LOGGER ISSH• NAS1>.claudebackendv prisma>migrationsA schema.prismaV SrCroutess auth.lsJs index.sJS parser.is.dockerianoreDockertiley package.isontrontendip.envenv examole• «gitignoreAPI.mdlw docker-comoose.vmllG README.mdliJS index.is× Release Notes: 1.119.0 XVisual Studio Code 1.119Show release notes after an updateFollow us on Linkedin, X. Bluesky View online lRelease date: May 6, 2026Welcomerorneur ipreleaseoMsuar udo code nistel ease ocusesion smoo neradeni un eractions, enhanced ooservabln vand more eliicien arust tancsecurity controls•Agent-browser interaction: Let agents discover and ask tor Integrated browser access.• Optimized token usage: Use a lichtweiaht model to manage agent todo lists.• Opentelemetry tracina: Monitor agent sessions with OpenTelemetrv.• Trust and developer efficiency: Get less interrupted by requests for network access or temo folder writes• Markdown preview: @uicklv switch between Markdown source and preview.Hapoy Coding.Vs Code is rolllina out araduallv to all users. Use Check tor Updates in Vs Code to der the latest version immediatel v.To try new features as soon as possible, download the niahtlv Insiders build, which includes the latest undates as soon as they are available* M ...23 1. Message that arrives ... XIN THIS UPDATEAdent eynerienceChat experienceAdent experienceSharing browser tabs with agentsWhen agents can access a live browser, they validate changes in real time and iterate faster. For web development, an agent can editPROBLEMSOUTPUTaeollewalwaleTERMINAL•Adm1nadxP4800PLUS-B5F8:/volume2/docker/pavments-loggersCabash +v M M |^? x> OUTLINE> TIMELINE*SSH: nas @0 A0 (#0 ^ Activating Extensions0 cinninC...
|
iTerm2
|
NULL
|
NULL
|
|
CodeselectionViewlerminalWindowmelpS0 l of Prepara CodeselectionViewlerminalWindowmelpS0 l of Preparation for Refi... in 22m100% C4 & • Mon 11 May 14:38:57E .envii export notion 2023.csvXfinance (SSH: nas)i export notion 2025.csE sms export.isonImplement Authentik inte... Xm8 .V FINANCE [SSH: NAS]OUTPUTPORTS+.0u.laxSõ3> OUTLINE> TIMELINE8 SignInA...
|
Notion Calendar
|
NULL
|
NULL
|
|
CodeselectionViewlerminalWindowmelpS0 l of Prepara CodeselectionViewlerminalWindowmelpS0 l of Preparation for Refi... in 22m100% C4 & • Mon 11 May 14:38:59E .envii export notion 2023.csvXfinance [SSH: nasli export notion 2025.csvE sms export.ison•2 C3Implement Authentik inte... Xm8 .V FINANCE [SSH: NAS]дeOUTPUTPORTS+v0u.lax> OUTLINESõ3TIMELINE(Opening Remote... ® o A o8 SignInA...
|
Notion Calendar
|
NULL
|
NULL
|
|
CodeselectionViewlerminalWindowmelpV NO FOLDER OPE CodeselectionViewlerminalWindowmelpV NO FOLDER OPENEDConnected to remoteYou can clone a repository locally.Clone RepositoryTo learn more about how to use Git andsource contro, in Us code read our docs.a) DXFV ОптичAFFiNE - 1AA All docs • AFFPayments LoaaelM[NirDiamant/GenAL_ANew Tab@ Location Loggel Finance Hub%Finance Hub— New TabOAdElNeAYOAQORDL NE PEERENENTINGTINEIINEOpen ChatShow All CommandslOnen RecentOnen Sile or SolderNew Untitled Text FileC < >0 ll • | Alexieva kids - in 4h 19 m100% CSat 9 May 9:41:44O 00W•*Р.ARAbssh +v M M ... /6 x...
|
iTerm2
|
NULL
|
NULL
|
|
CodeselectionViewlerminalWindowmelpapo_settinas.is CodeselectionViewlerminalWindowmelpapo_settinas.isonsscreenpipe sync.she•pipe.md@.envapp> @.envANTHROPIC [ENV_SECRET] LzFri 8 May 20:21:18Onen FoldenV SCREENPIPE [SSH: NAS]#reeyclevapoconsumers> static.env& cli.py# db.pvdocker-compose.vml# Dockertile# main.pvE reguirements.txt• dataoinec• aitianoreaoo settinas.ison=archive.db= db saliteE db salite-shm= do salite-wallSscreennine cunc shE screennine dh/volume2/docker/payments-logger/•claudebackendfrontend333Show Locd!un pipe l... Xpipe logicDOPLUS-B5r8:/volumel/screenoipelapos sudo docker exec -it screenoipe-aoo ovthon cli.oy pipe dav-recao --date 2020-04-2ay-recap' for 2026-04-20...cd /volume1/screenpipe/appsudo docker compose restart screenpipe-appThen try again:sudo docker exec -it screenpipe-apo python cli.oy pipe dav-recap =date 2626-04-26Admin@DXP4800PLUS-B5F8:/volume1/screenpipe/app$ sudo docker exec -it screenpipe-app python cli.py pipe day-recap --date 2026-04-20< .envkey is there now.but Admin@DXP4800PLUS-B5E8:/volume1/screenoioe/aooS.sudo_docker exec.-it screenoine-aoo.ovthon.cli.ny.nine dav-recan--date 2026-04-20• The key works - it authenticated successfully. The error is just that your Anthropic account has no credits. Go to console.anthropic.com Plans & Billing and add some credits (a few dollars is enough fortesting).Once toooed uo. rerun the same command and it should work% Esc to focus or unfocus Claude+0<> Edit automaticallyPROBLEMSOUTPUTDEBUG CONSOLE•Adm1nadxP4800PLUS-B5F8:/volumel/screenoiinesTERMINALPORTSDbash +v M M • |6} XOUTIING, TIMELINE*SSH: nas 8 master* @@0A0 (@1tee caaSpaces:4 UTF-8 LF( Dotenv ? Signed out...
|
iTerm2
|
NULL
|
NULL
|
|
CodeselectionViewlerminalWindowmelpapo_settinas.is CodeselectionViewlerminalWindowmelpapo_settinas.isonsscreenpipe sync.sh•pipe.md@.envapp> @.envANTHROPIC [ENV_SECRET] LzFri 8 May 20:21:06Open FolderV SCREENPIPE [SSH: NAS]#reeyclevapoconsumers> static.env& cli.py# db.pvdocker-compose.vmli# Dockertile# main.pvE reguirements.txt• dataoinec• aitianore*aoo settinas.ison=archive.db= db saliteE db salite-shm= do salite-wallSscreennine cunc shE screennine dh333volume1/@exifiSwrhemdhlagel@iscsi@media_cache@music@search@thumbnail@tmpaversion explorer cache@video@video webAudiobooksBackupbackuosdockerDocumentsFamily tree documentsGoogleShow Localun pipe l... Xpipe logicJoPLus-B5r8:/volumel/screenoipelapos sudo docker exec -it screenoipe-aoo ovthon cli.oy pipe dav-recao --date 2020-04-2hy-recap' for 2026-04-20..1/screenpipe/appir compose restart screenpipe-appr exec =it screenpioe-aop python cli.oy pipe day-recao -date 2026-04-26IOPLUS-B5F8:/volume1/screenpipe/app$ sudo docker exec -it screenpipe-app python cli.py pipe day-recap --date 2026-04-20but Admin@DXP4800PLUS-B5F8:/volume1/screenoioe/aoos sudo docker exec -it screenoioe-aop ovthon cli.ov pioe dav-recao --date 2026-04-20• The key works - it authenticated successfully. The error is just that your Anthropic account has no credits. Go to console.anthropic.com Plans & Billing and add some credits (a few dollars is enough fortesting).Once toooed uo. rerun the same command and it should work% Esc to focus or unfocus Claude+0<> Edit automaticallyPROBLEMSOUTPUTDEBUG CONSOLE•Adm1nadxP4800PLUS-B5F8:/volumel/screenoilnesTERMINALPORTSDbash +v M M • |6} XOUTIING, TIMELINE>SSH: nas 8 master* @@0A0 (@1tee caaSpaces:4 UTF-8 LF( Dotenv P Signed out...
|
iTerm2
|
NULL
|
NULL
|
|
CodeselectionViewlerminalWindowmelpdocker SSH: nas CodeselectionViewlerminalWindowmelpdocker SSH: nasEXPLORE:V DOCKER [SSH: NAS]> adguard> ai-stackapp-dbapprlowy> audiobookshelfauth> beszelbilwardendawarichdsk-uploadertlask-appgarmin-connector> giteahealth• health-trackerhomari> hstimmich> jellyfinht• kavital>libreoffice> linkwarden> location-logger› meeting-detectormindfulmama) nQn> notifier-app> npmoauth> obsidian> ollama> open-webui> openttd> openvon-client* Claude Code XUntitledreview+0PROBLEMSOUTPUTaeollewanealeTERMINALAdm1nadXP4800PLUS-B5F8:/volume2/dockersowntracks-stack•paperlessnayY paymegts-logger> claude•backenditrontend• .env&: env eyamnle• gitignore1 Api.modocker-compose.ymlA PSADMS mdOUTLINE1 TIMELINESSH: nas f& main* ©DOAO (O•1|C*Claude CodeReady to code?Let's write something worth deploying1 Drofor tho To« Elit automaticaly100% C48Fri8 May 20:26:4900O0*@@...C bash +v MM •| S? X8 Sign In...
|
iTerm2
|
NULL
|
NULL
|
|
CodeselectionViewlerminalWindowmelpdocker SSH: nas CodeselectionViewlerminalWindowmelpdocker SSH: nasEXPLORE:V DOCKER [SSH: NAS]> adguard> ai-stackapp-dbapprlowy> audiobookshelfauthbeszelbilwardendawarichdsk-uploadertlask-appgarmin-connector> giteahealthhealth-trackenhomari> hstimmich> jellyfinht> kavita>libreoffice> linkwarden> location-logger› meeting-detectormindfulmamal>n8n> notifier-app> npm>oauth> obsidian> ollama> open-webuiopenttd• openvon-clientClaude Code#* Debua location tracker 5... XDebug location tracker 502 error and co...% Esc to tocus or unfocus Claude+0PROBLEMSOUTPUTaeollewanealeTERMINAL•Adm1nadxP4800PLUS-B5F8:/volume2/dockers•paperlessnay• pavments-loager)•personal-loalnersonal-loa-svstem> playerportainernortnotedhreminders.annrommlsecond-brain> OUTLINE1 TIMEIINESSH: nas @0 A0 (20•1|CLoading...‹> Edit automaticaly100% C48Fri8 May 20:26:2108000*@@...@bash +.M @ ... |i: x8 SignIn@...
|
iTerm2
|
NULL
|
NULL
|
|
CodeselectionViewlerminalWindowmelpdocker SSH: nas CodeselectionViewlerminalWindowmelpdocker SSH: nasEXPLORERV DOCKER [SSH: NAS]> adguard> ai-stackapp-dbapprlowy> audiobookshelfauth> beszelbitwarden• dawarichdsk-uploadertlask-appgarmin-connectorgiteahealth• health-trackerhomari> hstimmich> jellyfinht• kavital>libreoffice> linkwarden> location-logger› meeting-detectormindfulmama) nQn> notifier-appnomoauth> obsidian> ollama> open-webuiopenvon-clientClaude Code XUntitledreview+0PROBLEMSOUTPUTaeollewanealeTERMINAL•Adm1nadxP4800PLUS-B5F8:/volume2/dockersclaude•backenditrontend• .env&: env eyamnle• gitignore1 Api.modocker-compose.ymlA PSADMS mdOUTLINE1 TIMELINESSH: nas f& main* ©DOAO (O•1|C*Claude CodeReady to code?Let's write something worth deploying.Prefer the Terminal experience? Switch back in Settings. X‹> Edit automaticaly100% C48Fri8 May 20:28:0608000*m@...@bash +.M @ ... |i: x8 SignIn@...
|
Code
|
|
NULL
|
|
CodeselectionViewlerminalWindowmelpenv — screenpip CodeselectionViewlerminalWindowmelpenv — screenpipe SSH: naslV SCREENPIPE [SSH: NAS]• #recycieconsumers> static.env* cli.py# db.pv# docker-compose.vml# Dockertile# main.pyE requirements.txt• data→ oinedaitianoreaoo settinas.ison=archive.db= db salite=db.salite-shm= do salite-wallSscreennine cunc shE screennine dbis apo settinas.isons screenpipe sync.sh•pipe.md@.envapp> @.envANTHROPIC [ENV_SECRET] vou want to save the chandesscreenulimadyne.sh?Your changes will be lost if you don'tPROBLEMSOUTPUTaeollewalnWalTERMINAL•Adm1nadxP4800PLUS-B5F8:/volume1/screenoilnesPORTS1OUTIING> TIMELINE*SSH: nas & master* @@0д01100% 2Fri 8 May 20:21:2823 Implement and run pipe I...Implement and run pipe logicAdmin@DXP4800PLs-Bozovolumellscreenoipelapo, sudo docker exec -i screenoine-aoo ouinon clloy pine cay-recao --dare 2020-04-4Running pipe 'day-recap' for 2026-04-20.]cd /volumel/screenpipe/appsudo docker compose restart screenpipe-appThen try again:sudo docker exec -it screenpipe-apo python cli.oy pipe dav-recap =date 2626-04-26Admin@DXP4800PLUS-B5F8:/volume1/screenpipe/app$ sudo docker exec -it screenpipe-app python cli.py pipe day-recap --date 2026-04-20< .envkey.is. there now.but Adm1n@DXP48002LUS-B558:/wolvme1/screenoinelaooS.sudo_dockerexec.-itscreenoine-aoo.ovthon_cli.ny.nine.dav-recan_-=date. 2026-04-20• The key works - it authenticated successfully. The error is just that your Anthropic account has no credits. Go to console.anthropic.com Plans & Billing and add some credits (a few dollars is enough fortesting).Once toooed uo. rerun the same command and it should work* Esc to focus or unfocus ClaudeJbash +vO@ •|&x® Screen reader usage detected. Do vou want to enableeditor.accessibilitvSupport to optimize the editor for screenChodsesAltr.o...
|
Code
|
Visual Studio Code
|
NULL
|
|
CodeselectionViewlerminalWindowmelppayments-logger CodeselectionViewlerminalWindowmelppayments-logger SSH: nas•1|0.3 Claude Code XEXPLORERV PAYMENTS-LOGGER [SSH: NAS]>.claudev backendv prisma> migrationsA schema.prismaVSrO> routesJS auth.isJs index.jsJS parser.isDockertilepackage.isontrontendD .envenv examole* gitignoreAPI.mdl# docker-compose.ymlG) README mdliO README.mdXis indgy.is® README.md › abe # Payments Logger › abe ## Database145*Claude CodeThe DB port is **not** exposed to the host. To connect directly:"bashdocker compose exec db psql -U paynents -d payments_loggerUse planning mode to talk through bigchanges before a commit. Press Shift TabE Prefer the Teri% Esc to focus or unfocus Claude+0README.mdPROBLEMSOUTPUTaellewanealeTERMINALAdm1nadxP4800PLUS-B5F8:/volume2/docker/oavments-loagers> OUTLINETIMELINESSH: nas @oA0 (o$0 N O100% LzFri 8 May 20:22:2508 000> Edit automaticallyObash +O@|axLn 154, Col 1 Spaces: 2 UTF-8 LF () Markdown SignInA...
|
iTerm2
|
NULL
|
NULL
|
|
CodeselectionViewlerminalWindowmelppayments-logger CodeselectionViewlerminalWindowmelppayments-logger SSH: nas•1|C3 Claude Code XEXPLORERV PAYMENTS-LOGGER [SSH: NAS]>.claudev backendv prisma> migrationsA schema.prismaVSrO> routesJS auth.isJs index.jsJS parser.isDockertilepackage.isontrontendD .envenv examole* gitignoreAPI.mdl# docker-compose.ymlG) README mdliO RJMDME.mo XJS index.is*Claude CodePostgreSQL runs inside Docker. Data persists in the pgdata named volumeThe DB port is **not** exposed to the host. To connect directly:"bashdocker compose exec db psql -U paynents -d payments_loggerUse planning mode to talk through bigchanges before a commit. Press Shift TabE Prefer the Teri* Esc to focus or unfocus Claude+0PROBLEMSOUTPUTaellewanealeTERMINALAdm1nadxP4800PLUS-B5F8:/volume2/docker/oavments-loagers> OUTLINE1 TIMEIINESSH: nas @oA0 (o$0 N O100% LzFri 8 May 20:22:2308 000> Edit automaticallyQbash +vO@•|&xLn 154, Col 1 Spaces: 2 UTF-8 LF () Markdown SignInA...
|
iTerm2
|
NULL
|
NULL
|
|
Commit and Push…
PhostormProiectVIewINavigarecodeL Commit and Push…
PhostormProiectVIewINavigarecodeLaravelKeractorWindowmelprTavsco.s°9 JY-20725-handle-HS-search-rateRematchActivityOnCrmObjectDetach.php© HubspotPaginationService.phpC) TrackAutomated Revori Generaledeventonp>@ Mailbo›v D Middlewareo handleruospotkal>@ Streaming>D Team_ lelepnony> DUser© ImportRecallAlRecordiC) UserAutomatedReportscontroller.ong© Hubspot/Service.phpOhubspot/service.pnp© SyncCrmEntitiesTrait.phpC) CachedCrmServiceDecorator.ong©) HandleHubspotRateLimitTest.php x© CheckAndRetryRemoteMatch.php© MatchActivityCrmData.phpCrmactivityservice.png ol<?ohpdeclarelstrict tyoess.o:c) SasVisibilitycontrolTe:v W Listeners> @ Activities>D Audio• AutomatedReportsaAutoscore17 CrmM DealRisks17 ElasticSearchlGrouosImport• M Mailbosnamespace Tests Unit Jobs MiddLeware:› use ...18 VA#[CoversClass(HandleHubspotRateLimit::class)]class HandleluhsnotRatel imitTest extends Tecttaseprivate HandleHubspotRateLimit $middleware;Local ChangesCancola yLog X• Chanaes & files= env.local aor.C) Client.oho aon/Services/Crm/Hubsoot8 02d5214b app/Exc ClientTect nhn tectc/Unit/Services/Crm/Huhsnotuse Ihrowable© HandleHubspotRateLimitTest.php tests/Unit/Jobs/Middleware© JiminnyDebugCommand.php app/Console/Commandsphp logging.php config© MatchActivityCrmData.php app/Jobs/Crm© RateLimitException.php app/Exceptions• Iinvorcinnod Siloc @ filacclass ratelimitpublic funstrindE.env.nikilocal appE.env.other app© CanAccessAiReportsTest.php tests/Unit/Policies?Throwanarent© CreateMockAskJiminnyReportResultCommand.php app/Console/Commands/RlCommit ChanaesChangelist: Changes• M Exceptions 1 fileAuthor:RateLimitException.phpvaJobs/Crm 1 fileAmend commitSian-oft commitV © MatchActivityCrmData.php5 modifiedCommit checksCommit MessageJY-20725 code revlew suggestionsiUpdate copvriahiPoformat codeRearrange codeOouimize impor'sv Diftside-oy-slde viewerDo notignoreHighlight woras@ 02d5214b app/Exceptions/RateLimitException.phCurrent versioryuse Inrowableruse Throwahl p:4 omerencesclass RateLimitException extends RuntimeExceptionclass RateLimitException extends RuntimeExceptionpublic function __construct(string Smessage = "'private readonly int SretryAfter = 1?Throwable Sprevious = nullO' 1111 Mprivate readonly int SretryAfter;public function __construct(string $message = "'parent:: construct(Smessage. 0, Sprevious):Int srecryAtter = 1Thnownbla Cnnovioue - nulllCancei tavicon.ico public=ids.txt apdTa raw sal querv.sal app© SimulateWebhooksCommand.php app/Console/Commands/Crm/Hubspotnublic function aetRetrvAftero. intreturn max(Sthis->retryAfter, 1)M.WEBTOOK FILTERING IMPLEMENTATION.mo a00100% Lz• Mon 11 May 19:00:53A SF [jiminny@localhost]4 HS_local [jiminny@localhost]A console [PROD]« console [EU]A console [STAGING]"Set-Cookie":["__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-[IP_ADDRESS]-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEs0kXi ~07-May-26 14:51:15 GMT: domain=.hubapi.com:Http0nly: Secure: SameSite=None"].w19A"кeрoгс-1о"."?ppoints":li-":1"https:(VAVa.nel.cloudfLare.com/V/report\V/v4?s=NYALsVTP0fYm52qrsDJxYE4sd2RWRq15p5wHSmd=g<LzoYdx1x2B1XVpHmsKnS0x2BKVA5mFLJ2m/YRECD65M62BW2LYT206FM4/2l vbupl": l"cf-nel!",kage ":604800"n:["€pcess_fraction\":0.01,bort to ": "cf-nel".k ade":604800-"ver": ["cloudflare"]t 1elation_id":"95236535-ec98-4541-b92a-adfa73b69eab",he id"."c7ab8365-903f-46d4-9403-0e5b551e3545"}4 differencescurrent versionclass RateLimitException extends RuntimeExceptionprivate readonly int SretrvAfter:public function __construct(strina Smessage = "'int SretryAfter = 1,2Throwable Sorevious = null.Show drop-down menu (T0+)narent.• construet(Smessaae. A. Sorevious):Sthis->retrvAften = max(1. SretrvAfter)•public function getRetryAfterQ: intreturn $this->retryAfter:W Windsurf Teamsfo 4 spaces 0...
|
PhpStorm
|
|
NULL
|
|
Commit and Push…
iTerm2ShellEditViewSessionScripts Commit and Push…
iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDOCKERAPP (-zsh)-zsh+ +- ₴81DEV (docker)₴2APP (-zsh)ScrmService->syncOpportunity('374720564');ScrmService-›matchByName('Robot');-zsh> 0 hhl*5screenpipe"100% <78• Mon 11 May 19:00:53T₴1O ₴6-zsh*7 |+end diffAPPFixed 4 of 5666 files in 146.870 seconds, 60.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistentdebugging tools in any container or image → docker debug docker_lamp_1Learn moreat [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ csfixdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diffPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHP runtime: 8.3.30Running 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!Loadedconfig default from".php-cs-fixer.dist.php".5666/5666 [100%Fixed 0 of 5666 files in 66.457 seconds, 60.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image » docker debug docker_1amp_1Learn more at https://docs.docker.com/go/debug-cli/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ I...
|
PhpStorm
|
|
NULL
|
|
Commit and Push…
⌥⌘K
PhostormProiectINavigarecodec Commit and Push…
⌥⌘K
PhostormProiectINavigarecodec) SvncRelatedActC) CrmActivityService.onpWebhookSvncB:IntegrationAppm lictenerc_ ripearive_ salestorce> @ FieldsImportBatchJobTrait.php(c) [EMAIL]• @ OpportunityMatiC) MatchCrmData.ohoC) Activity.pho() DeraultUpdateCrmDataReOpportunitySyncclass_AutomatedRenortsCallbackServiceTest extends> D ProspectSearchoublic function testPushiolatadogo: void• C ServiceTraits© ClientTest.php© DecorateActivityC DeleteObiectsTrC FieldDefinitions1 123SautomatedReport->shouldRece1vedSresult->shouldRecenveciC) GetActivitvFieldiDatadoo: :shoul dReceive('increment')PavloadBuilderT->oncedQuervBuilderTesC QuervHandlerTe->withdaras: DatadoaConstants: AUTOMATEI(c) Querv teratoriie:natadoaConstants.•Slll SAMPIS RAT:c) QuervResultste:c) ServiceTest.ohoInenont +vnel => leyec summanc SvncBatchRedis'onaanization' => Itest-team'c) BaseServiceTest.of"Trequency = "weeklyc) CachedCrmService'media_type' => 'pdf'ch CrmActivitvService© CrmConfigurationSConsole,Chanaes 4 filed= env.local anol812295204 app/S@ AutomatedRenortsCallbackService.pho ano/Services/Kiosk/AutomatedRenorts |X ,Min© AutomatedReportsCallbackServiceTest.php tests/Unit/Services/Kiosk/Automate9) Constants.oho ann/Comnonent/Datadodlinvercioned Silec Q filacpublic funE .env.nikilocal appE.env.other app@ CanAccessAiReportsTest.php tests/Unit/Policiesnatadoo:: incrementDotododconstants: :AUTONATED REPORTS.© CreateMockAskJiminnyReportResultCommand.php app/Console/Commands/RepDatadoaconstants::FULL SAMPLE RATE.E favicon.ico public= ids.txt appTa raw sal_query.sgl app© SimulateWebhooksCommand.php app/Console/Commands/Crm/HubspotM+ WEBHOOK_FILTERING_IMPLEMENTATION.md app© MatchActivityCrmData.php© ProviderRateLimiter.php= custom.logElaravel.log4 SF jiminny@localhost]& ho_local Uiminny@localnostc) Client.onp• Automatedkeponkesuitonptiò accounts jiminny@localhost]# console [Pkol)# console [eu)A console [STAGING] X©) Automatedkeport.pnpD 691 liminny020 A18 V13 ^Commit ChanaesChangelist:Changes• M Component/Datadoa 1 fileAuthor1N018. 5504v © Constants.phpV 0 Services/Kiosk/AutomatedReports 1 filev (C AutomatedReoortsCallbackService.ohoAmend commitSian-off commitbarch id = 1093212 modifiodCommit checksCommit MessageUodate copvrichiJY-20818 move ask Jiminny reports to its own datadog metricPeformat codeRearrange codeOpuimize imporisv Dift)6a75-afd2-476f-aadc-14d4057bdda2') = uuid:in ('582d4b50-8cd3-42a9-9819-d676ff8f3b43') = uuid;Do notignoreHighlight woras812295204public const string ACTIVITIES_DIALERS_TRACK_IMPORnublic const strina ACTTVTTTES NTALEpS TRAcK nIIRATpublic const string AI_AUTOMATION_CRM_WRITE_EXECUTpublic const string AUTOMATED_REPORTS = 'jiminny.apublic const string HUBSPOT_WEBHOOK_SYNC = 'jiminnpublic const string AI_ACTIVITY_TYPE = 'jiminny.aipublic const string AI_CALL_SCORING = 'jiminny.ailpublic const string WEBHOOK_DELIVERY_SUCCESS = 'j:41X1581olmerenceCurrent versionpublic const string ACTIVITIES_DIALERS_TRACK_IMPORpublic const string ACTIVITIES_DIALERS_TRACK_DURATpublic const string AI_AUTOMATION_CRM_WRITE_EXECU]public const string AUTOMATED_REPORTS = 'jiminny.apublic const string ASK_JIMINNY_REPORTS = 'jiminnypublic const string HUBSPOT_WEBHOOK_SYNC = 'jiminrpublic const string AI_ACTIVITY_TYPE = 'jiminny.aipublic const string AI_CALL_SCORING = 'jiminny.ailpublic const string WEBHOOK_DELIVERY_SUCCESS = 'j=CancelCommit and Push..T-9?Ksuppont Dally • In zn 40m100% LzFri 8 May 12:12:11CascadeHubspot Rate LimitingHubSpot Rate Limit HDatadog Metric Condr+0 ..Checked coinougntsThe tests pass but show as risky because Mockerv expectations aren't counted as assertions. Let me fix this.• AutomatedReportsCallbackServiceTest.php• AutomatedReportsCallbackServiceTest.phpdestsr nxe/ drvkces/Kosk/AutonatedReports/Auzoma+eoueportscal1backServiceTest. php 2561PHPUnit 11.5.55 by Sebastian Bergmann and contributorsPHP 8.3.30contiquration:home/1iminny/phpunit.xml10 / 10 (199%)Iime: 66:61.618, Memory: 66.66 MBAsk anytning (atl<> CodeS Adaptive1 differenceCurront vorcionpublic function pushToDatadog(AutomatedReport SautomatedReport. AutomatedReportResult Sresult): void1f (SautomatedReport->isAskJiminnyReport) {Datadoo: : uncrement.DatadogConstants::ASK_JIMINNY_REPORTSDatadoaconstants::FULL SAMPLE RATEI'organization' => SautomatedRenort->getTeamO->aetSlugou'frequency' => $automatedReport->getFrequency(),return;natadon. • incnomontdDatadogConstants::AUTOMATED_REPORTS,PAenadod...
|
PhpStorm
|
|
NULL
|
|
Commit and Push…
⌥⌘K
PhostormProiectVIewINavigarec Commit and Push…
⌥⌘K
PhostormProiectVIewINavigarecodeLaravelKeractorWindowmelprTavsco.s°9 JY-20725-handle-HS-search-rateRematchActivityOnCrmObjectDetach.php© HubspotPaginationService.phpC) TrackAutomated Revori Generaledeventonp> @ Mailbo>v D Middlewareo handleruospotkal>@ Streaming>D Team_ lelepnony> DUser© ImportRecallAlRecordiC) UserAutomatedReportscontroller.ong© Hubspot/Service.phpOhubspot/service.pnp© SyncCrmEntitiesTrait.phpC) CachedCrmServiceDecorator.ong© MatchActivityCrmData.php<?ohpdeclarelstrict tyoessi:c) SasVisibilitycontrolTe:v W Listeners> @ Activities>D Audio• AutomatedReportsAutoscore17 CrmM DealRisks17 ElasticSearchlGrouosImport• M Mailbosnamespace Tests Unit Jobs MiddLeware:› use ...18 VA#[CoversClass(HandleHubspotRateLimit::class)]class HandleluhsnotRatel imitTest extends Tecttaseprivate HandleHubspotRateLimit $middleware;Local ChangesCancola yLog X• Chanaes & files= env.local aor.C) Client.oho aon/Services/Crm/Hubsoot8 02d5214b app/Exc ClientTect nhn tectc/Unit/Services/Crm/Huhsnotuse Ihrowable© HandleHubspotRateLimitTest.php tests/Unit/Jobs/Middleware© JiminnyDebugCommand.php app/Console/Commandsphp logging.php config© MatchActivityCrmData.php app/Jobs/Crm© RateLimitException.php app/Exceptions• Iinvorcinnod Siloc @ filacclass ratelimitpublic funstrindE.env.nikilocal ap!E.env.other app© CanAccessAiReportsTest.php tests/Unit/Policies?Throwanarent© CreateMockAskJiminnyReportResultCommand.php app/Console/Commands/Rl© HandleHubspotRateLimitTest.php X© CheckAndRetryRemoteMatch.phpCommit ChanaesChangelist: Changes• M Exceptions 1 fileRateLimitException.phpvaJobs/Crm 1 fileAuthor:Amend commitSian-oft commitV © MatchActivityCrmData.php5 modifiedCommit checksCommit MessageUpdate copvriahiJY-20725 code revlew suggestionsPoformat codeRearrange codeOouimize impor'sv Diftside-oy-slde viewerDo notignoreHighlight woras@ 02d5214b app/Exceptions/RateLimitException.phCurrent versioryuse Inrowableruse Throwahl p:?4 omerencesclass RateLimitException extends RuntimeExceptionclass RateLimitException extends RuntimeExceptionpublic function __construct(string Smessage = "'private readonly int SretryAfter = 1?Throwable Sprevious = nullO' 1111 Vprivate readonly int SretryAfter;public function __construct(string $message = "'parent:: construct(Smessage. 0, Sprevious):Int srecryAtter = 1Thnownbla Cnnovioue - nulllCancelCommitCommit and Push..i tavicon.ico public=ids.txt apdTa raw sal querv.sal app© SimulateWebhooksCommand.php app/Console/Commands/Crm/Hubspotnublic function aetRetrvAftero. intreturn max(Sthis->retryAfter, 1)M.WEBTOOK FILTERING IMPLEMENTATION.mo a00100% Lz• Mon 11 May 19:00:55A SF [jiminny@localhost]4 HS_local [jiminny@localhost]A console [PROD]« console [EU]A console [STAGING]"Set-Cookie":["__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-[IP_ADDRESS]-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEs0kXi ~07-May-26 14:51:15 GMT: domain=.hubapi.com:Http0nly: Secure: SameSite=None"].w19A"кeрoгс-1о"."?ppoints":li-":1"https:(VAVa.nel.cloudfLare.com/V/report\V/v4?s=NYALsVTP0fYm52qrsDJxYE4sd2RWRq15p5wHSmd=g<LzoYdx1x2B1XVpHmsKnS0x2BKVA5mFLJ2m/YRECD65M62BW2LYT206FM4/2l vbupl": l"cf-nel!",kage ":604800"n:["€pcess_fraction\":0.01,bort to ": "cf-nel".k ade":604800-"Ven":"cloudflare">elation_id":"95236535-ec98-4541-b92a-adfa73b69eab",he id"."c7ab8365-903f-46d4-9403-0e5b551e3545"}4 differencesT-9?Kcurrent versionclass RateLimitException extends RuntimeExceptionprivate readonly int SretrvAfter:public function __construct(strina Smessage = "'int SretryAfter = 1,¿Throwable Sorevious = null.narent.• construet(Smessage. A. Sorevious):Sthis->retrvAften = max(l. SretrvAfter)•public function getRetryAfterQ: intreturn $this->retryAfter:W Windsurf Teamsfo 4 spaces 0...
|
PhpStorm
|
|
NULL
|
|
Commit and Push…
⌥⌘K
PhostormVIeWINavicarecodemelp Commit and Push…
⌥⌘K
PhostormVIeWINavicarecodemelprTavsco.s?9 JY-20725-handle-HS-searcProiect v© MatchActivityCrmDataTest.php >RematchActivityOnCrmObjectDetach.php‹›>© ImportOpportunityBa© MatchActivitiesToNe© HubspotPaginationService.phpУ пгасклutоmаtedкeportceneratedeventonp©UserAutomatedReportsController.php© Hubspot/service.ongС маchаcuvitycrmDa© SaveActivityTest.phg© SaveTranscriptionTeT DeleteCrmEntityTrait.php© VerseluoLavoutlest.ongC SubscribeForEvents.RateLimitException.pho© SyncActivity Test.phf © CrmObiectsResolver.phpc) SyncHubspotObiects(C) HandleHubspotRateLimit.php© Clien(C) ProviderRateLimiter.php(C) Paqinatic<?phpc) SvncLeadstest.phpc) Svncobiectstest.ohdeclare(strict tyoessio%c) SvncOpportunitiesJoC SvncOpportunitvTesnamespace Tests Unit obs Crm.c) SuncProflleLeadstresC SvncProfileMetadata› use ...c) SvncProfile@pportunC SvncTeamFields Jobiclass MatchActivityCrmDataTest extends TestCasec) SvncTeamMetadatan( Teaminitia|Svnc lobT20 usagesc UindateProfileRelatecprivate ActivityRepository|Mock0bject SactivitLocal ChangesLog XChanaes 5 files= env.local ano8 44d5678c tests/Lc) HubsootPadinationServiceTest.oho tests/Unit/Services/Crm/Hubsoot/Padinat© JiminnyDebugCommand.php app/Console/Commandsphp logging.php config© MatchActivityCrmDataTest.php tests/Unit/Jobs/CrmUnversioned Files 9 files.env.nikilocal appE .env.other apr© CanAccessAiReportsTest.php tests/Unit/Policies© CreateMockAskJiminnyReportResultCommand.php app/Console/Commands/Re& favicon.ico publicE ids.txt appT raw sal_querv.sal app© SimulateWebhooksCommand.php app/Console/Commands/Crm/HubspotM+ WEBHOOK_FILTERING_IMPLEMENTATION.md appSthis-v V M.Jobs/Crm 1 filev (C MatchActivitvCrmDatallest.onoV Services/Crm/Hubspot/Pagination 1 file© HubspotPaginationServiceTest.php2 modifiedCommit MessageJY-20725 add testsv DiftI@¢→Side-by-side viewerDo notignore@ 44d5678c tests/Unit/Jobs/Crm/MatchActMiycmmbatalest.ongTroncontigoracson. noct,remoteSearch: false,$this->assertSame(3, Sjob->tries):$this->assertSame(300, Sjob->timeoutO):$this->assertSame(360, Sjob->uniqueForO):$this->assertSame([30, 90, 180], Sjob->backofpublic function testUniqueldO: voidsthis-sassertznotycresults):Sthis-›assertEquals(0, $total);Sthis->assertNul1($lastRecordId):orivate function createHubspotResoonse(arrav Sdata): HubsootResoonsereturn new HubspotResponse(new Response(200, [], json_encode($data)));* [Platform] Refinemen... 49 m left100% 5• Mon 11 May 16:11:54+0 ..=custom.log=laravel.log X 4 SF (jiminny@localhost]4 HS_local jiminny@localhost]# console [PKol)# console [eu)© PlaybackController.phpA console [STAGING]Hubspot Rate Limit Re429x 5 CcW .*231242JY:Ok Where is it used, will I break something it is replace LogicException with RuntimeException in RateLimitException?Commit ChanaesChangelist:ChangesSearched RateLimitException in ~/iminnylapp (php) (44)AuthorAmend commitSian-off commitocuing No aalaf"correlation.id": "954d156d-8a4f-45.°l Pollingl Maximum empty results reached, stopping {"empty.l Pollingl Maximum empty results reached, stopping {"empty.lollingl Service ending {"runtime_seconds":57, "total_cyclesPollingl Saved offset to database on cleanup {"offset":"019€'ollingl Released polling lock {"correlation_ id"."954d156đmmands\ Command::run Memory usage before starting command {Inoughttor 2s>Searched throw new RateLimit Excention and pertormed 1 other auervY2, 11n0 AM Giiy usage quota is exhausted. Purchase extra usage to continue using premium models. Quota resets Mayal "Commit checksUodate copvrichiPeformat codeRearrange codeOpuimize imporisARTING batch process ?"host":"docker_Lamp_1"} 1"correlatiINISHED batch process ""host":"docker_lamp_1""processed":0mmands\Command::run Memory usage for command {"command":mmands Command::run Memory usage before startina commandmmands\Command: :run Memory usage for command {"command" : "CIs Startind sunc <"team":"020115e0-95ce-4010-929c-175757078int not connected for user {"userId":"33e34a7a-1c02-4f04-87Intearation owner is not connected. attemotina team membenNo team members found with active crm connection {"crm_pYour inciuded dally usage quota is ex.. urchase extra usage to continue using premium models. Quota resets Mav 12, 11:00)Ask anything (&AL)<> CodeS AdaptiveHighlight woras4 omerences• current versionfromConfiguration: null,nemoteSeanch• false.27 differencescurrent version178 MSthis->assertSame(3, Sjob->maxExceptions):Sthis-saccentSame (300 Sinh->timenuto)•Sjob->uniqueFor());Sthis->assertSame([30, 90, 180], Sjob->backof- IEIUUT METOS->with('[Hubspot] Pagination completed', Sthis->anythingO):\Tests|Unit|Services|Crm\Hubspot\Pagination > HubspotPaginationServiceTest > testGetPaginatedDataGeneratorWithEmptyResults() ~Stype = 'contacts':$total = 0:ClactRecordId = null:public function testUniqueld: voidCanceCommitSthis->clientMock->expects(Sthis->onceo)->method ('se->w1LlReturn('results' =>=>0%Commit and Push..T-9?KSthis-> loogerlock->expects(Sthis->once@)->method('info')Sthis->assertEmotv(Sresults):Sthis-sassentsqualls(l StotaibsSthis-›assertNull($lastRecordId);fo 4 spaces...
|
PhpStorm
|
|
NULL
|
|
Commit and Push…
⌥⌘K
PhostormVIewavigateCodeLarave Commit and Push…
⌥⌘K
PhostormVIewavigateCodeLaravelKeractorWindowmelp°9 JY-20725-handle-HS-search-rateProleteyC) TrackAutomated ReportGeneratedzventonp© UserAutomatedReportsController.phpC) Hubspot/Service.onp(c) HubSpot/Service.onp© BatchSyncCollectolT SyncCrmEntitiesTrait.phpC) CachedCrmServiceDecorator.ongJiminnyDeougcommana.ongDeleteCrmEntityTrait.phpoveryaetviycrmlaskJoo.phpc) RateLimitExceptionlest.onpe balchsynckealsse© CheckAndRetryRemoteMatch.php© CrmActivityService.php© ClosedDealStagesS © RateLimitException.phpCommit ChanaesDealrielasservice.gc)Decorateacuivilv.or© FieldDefinitions.phrChangelist:Changesclass Cllent extends Baseclient 1mpLements HubspoC) FieldT vpeconvertepublic const string BASE_URL = 'https:lapi.e Hubspotclientinterc) Hubspot lokenmanC) PavloadBuilder.phppublic const int ASSOCIATIONS_BATCH_SIZE_LIMI• M Exceptions 1 fileRateLimitException.phpC Jobs 2 filesv Crm 1 file3 added 6 modifiedAuthorAmend commitSian-off commitC) RemotecrmobiectrP ResponseNormalizec) Service.onrC)SvncFieldAction.onCommit checksCommit MessageZusagesZusagesprivate HubspotPaginationService SpaginationJY-20725 add HS rate Limit nanduino on actavitles rematchinaUodate copvrichiPeformat codeC) SvncRelatedActivitprivate HubspotTokenManager $tokenManagerRearrange codeC) WebhookSvncBatclv MintearationAor49 đOpuimize imporisM Acceccorspublic function -_constructlSoc1aLAccountservice ssoc1alAccountserV1cv DiftHubspotPaginationService SpaginationServiLocal ChangesCancola yLog XI@¢→Side-by-side viewerDo notignoreHighlight worasX mlê8 35f036acculrent versiony dectarelstrdct-lypes-t)rdeclare(strict_types=1);LomerencesChanaes 12 files= env.local aor.8 35f036ac app/Senamesnace liminnv Fxcentions.namespace Jiminny Exceptions;C) Client.oho aon/Services/Crm/Hubsoot© HandleHubspotRateLimit.php app/Jobs/MiddlewareC HandleHubspotRateLimitTest.php tests/Unit/Jobs/Middleware© HubspotClientinterface.php app/Services/Crm/Hubspot© HubspotPaginationService.php app/Services/Crm/Hubspot/Pagination© JiminnyDebugCommand.php app/Console/Commandsphp logging.php config(©) MatchActivitvCrmData.php app/Joos/cmuUse Hubspot ll1class RateLimitException extends LogicExceptionuse Throwable:Use Hubspot ll1use Hubspot ibisuse Jaminny x0class RateLimitException extends RuntimeExceptioruse Jaminny Excpublic function __construct(use Jiminny oruse Jiminny Modprivate readonly int SretryAfter = 1.© PaginationState.php app/Services/Crm/Hubspot/PaginationRateLimitException.php app/Exceptions© RateLimitExceptionTest.php tests/Unit/ExceptionsUnversioned Files 9 filesE.env.nikilocal appE.env.other app© CanAccessAiReportsTest.php tests/Unit/Policies© CreateMockAskJiminnyReportResultCommand.php app/Console/Commands/Ruse Jiminny SerCancelCommituse SevenShoresuse SevenShones Hubsnot Factory:Commit and Push..SevenShores Hubsnot Httn Resnonse:use Jiminny\Services\Crm \Hubspot \Pagination \HubspotPaginationService:use Throwable:kravicon.ico puolic=ids.txt a0d1araw sal querv sal aool@ SimulateWebhooksCommand.ohn app/Console/Commands/Crm/Hubspot* @phpstan-tupe CrmFieldOption arrayfid:string, label:string, value?:string}Cthic-scotRacolin1(colf.•RASE HIPI).M4 WEBHOOK FILTERING IMPLEMENTATION.md aoolSthis->setVersion(self::MIN_API_VERSION):public function getMinimumApiVersion(: stringreturn selt::MIN API VEKSTON:Preparation for Refi... 23 m left100% 1?.Mon 11 May 15:37:25= laravel.log X 4 SF (jiminny@localhost]4 HS_local [jiminny@localhost]* console PROD1& console lEUllA console [STAGING]Q- 429w.*2026-05-11 11•21•451 1ocol TNS0• THuhSnot lounnal Pollinal No datafwponnelation #au.1054d156d_Ra4f-4500-2046-e16e5ddTdZhfi ltnace #du-HlencTachS-ahef m226-05-11 11:21:45] LocaZ.WARNTNG: [HubSpot Journal Polling) Maximum empty results reached, stopping {"empty_results":5, "nax empty-results":5} ("correlation. D14O-UOF1YAN40 LUCULVARwOhoospot Jourat pocenenraxemon empuytesuces teacheur scoppanememstyNesucusmenmaX emguy_results":5} {"correlation w926-05-11 11:21:45] local.INF0: [HubSpot Journal Pollingl Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_926-05-11 11:21:46] local.INF0: [HubSpot Journal Pollingl Saved offset to database on cleanup {"offset":"019e15a9-9ea0-7da7-87bc-82592e3ccf0d"} {"correlatio20-05-11 11.21.40 LoCaL.INFU. LHUDSpot JournaL PoLLing keLeased poLLing lock1"correlation_1d• У5401500-8a4T-4572-a040-e1ocsdd/a50t, Crace_1d", "ecc/ael926-05-11 11:21:48] local.INF0: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process", "memoryBeforeC126-05-11 11:21:48 LocaL.INFU: Emallschedule STAKlING bacch processockerLamp1" 1 "correlacion 10": 2414210e-/45e-44a5-a05t-5//010502410C126-05-11 11:21.48 LocaL.INrU: cmanuschedulel rinishcu bacchl126-05-11 11:21:48 LocaL.LNFU:Jiminny console conmoryberorecommanolnmd926-05-11 11:21:59] local.INFO: Jiminny\Console\Commands\Command: :run Memory usage before starting command {"command" : "crm: sync-hubspot-objects", "memoryBef]26-05-11 11:22:001 Local.INF0:Jiminny Console commands Conmand::run Memory usage for command "command": "crm:sync-hubspot-obnects", "memoryBeforecommandinMi926-05-11 11:22:00] Local.INFO: [SyncHubspot0bjects] Starting sync {"team": "b2b115eb-93ce-4d1b-929c-173757df8fba", "usage": 23350336, "real_usage" :62914560 , "pit26-05-11 11:22:00 Local.WARNING:Hubspot Account not connected for user luserd': 55es4ara-1002-4104-87aс-22c5as85ebes", "account"AWAminny Wodel sASo326-05-11 11:22:001 Local.INFU: LCrmOwnerResolverJ Integration owner is not connected, attempting team members ?"crm_provider": "hubspot", "crm_owner":109, "te16-05-11 11:22:001 LocoL INF0:crmownerResolverNo team members Found with active erm connection "erm providen"*"hubspot""team 1d":2% "correlation 1dCrmOwnerResolver]No team member found with active crm connection {"crm_provider": "hubspot", "team_id":29} {"correlation_id"26-05-11 11:22:00] local.INFO: [SyncHubspot0bjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba", "provider":"hubspot","status":"disconnecter4 differencescurrent versionuse HubSpot\ Client\Crm\Pipelines Model\PipelineStage:use Hubspot Lllent Crm Properties Model Propertyuse HubSpot\Discovery\Discovery:use Jaminny xceotions Crmexceotzon:Jiminny\Exceptions\RateLimitExceptionuse Jiminny Exceotions SocialAccountTokenInval1dExceotion:use Jiminny\Jobs\Crm\Note0bject;use Jiminny Models Crm Field:use JiminnyServices\Crm\BaseClient;use SevenShores|Hubsnot\Excentions|HubsnotEycention!T-9?Kuse SevenShores Hubsnot Factory:use SevenShores\Hubspot\Http\Response;use Jiminnv Services Crm Hubsnot Pagination HubsnotPaginationService:use Tlluminate| Sunnont| Facades| Pedis:luce Thnowahle./*** @phpstan-tupe CrmFieldOption arrayfid:string, label:string, value?:string}Sthis->setBaseUrl(self::BASE_URL):Sthis->setVersion(self::MIN_API_VERSION) :»* Execute a HubSoot APT call with rate limit handlina.fo 4 spaces...
|
PhpStorm
|
|
NULL
|
|
Commit and Push…
⌥⌘K
SlackFileEditViewGoHistoryWin Commit and Push…
⌥⌘K
SlackFileEditViewGoHistoryWindowHelpAPPDOCKER- ₴81DEV (docker)₴2APP (-zsh)-zsh* @param string SobjectType The object type('deals''companies''contacts''cal)* @param array<string, mixed>Spayload Thesearch payload with filters, sorts, prop‹* @return array The search response with'results''total''paging'keys* @throws RateLimitException When rate limit is hit* @throws HubspotException On API errors* @return array The search response with 'results', 'total', 'paging' keys*/public function search(string SobjectType, array Spayload): arrayend diff4) app/Console/Commands/JiminnyDebugCommand.php (statement_indentation)begin diff --/home/jiminny/app/Console/Commands/JiminnyDebugCommand.php+++/home/jiminny/app/Console/Commands/JiminnyDebugCommand.php-359,11+359,11 @ScrmService = ScrmResolver->prepareCrmService);-//-/1for ($i = 0; si < 3; Si++) {if (Si % 250) {Sthis->info("Syncing opportunity {Si}");Sthis->info("Matching contact {$i}");-1/-1/.+++++ScrmService->syncOpportunity('374720564');if ($i % 25=0{//Sthis->info("Syncing opportunity {$i}");Sthis->info("Matching contact {$i}");////}ScrmService->syncOpportunity('374720564');$crmService->matchByName('Robot');end diffFixed 4 of 5666 files in 146.870 seconds, 60.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any containeror image →Learn more at https://docs.docker.com/go/debug-cli/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-lirHomeDMsActivityFilesLater..•More•[Platform) Refinemen.. 49 m left100% C8• Mon 11 May 16:11:54ED-→Describe what you are looking forJiminny ...# contusion-clinic# curiosity_lab# engineering# general# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of_jimi...^ Direct messagesP. Aneliya Angelova®. Galya DimitrovaPetko Kashinski&. Stefka StoyanovaVasil Vasilev&. Nikolay IvanovAneliya Angelova, ...Stoyan Tanev• VesE Lukas Kovalik y... 0E:: AppsS Jira CloudToastGanala Cala# releases8 226 0• Messages+C Files• Bookmarks20832): RemoveToday ~ ok 4.0 and 4.1 models(#506) (steliyan-g)NewGitHub APP 2:13 PM9 new commits pushed to master by ilian-jiminny861859d2 - Stop sending signals to datadog forincresed/ decreased workers.23ad2bb1 - Drop usage of RunForSeconds.3aedca4a - Generage Workerld on the fly.86cb0855 - ignore-missing-request-id-on-transcript Handle wrong format for assemblytranscriptions, this happends for old activitiesthat had a different provider and were updatedto point to Assembly when the providers weredeleted49ca4dfe - ignore-missing-request-id-on-transcript added log importShow morejiminny/app| Added by GitHubCircleCI APP 2:38 PMDeployment Successful!Project: appWhen:05/11/202611:38:14Tag:View JobMessage #releases+..•...
|
PhpStorm
|
|
NULL
|
|
Commit and Push…
⌥⌘K
iTerm2ShellEditViewSessionScr Commit and Push…
⌥⌘K
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp<$ 0APP (docker)-zsh84§ Preparation for Refi... 23 m leftDOCKER© *1DEV (docker)₴2APP (docker)*3worker-calendar:worker-calendar_00:stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-crm-sync:worker-crm-sync_00:worker-audio:worker-audio_00: stoppedstopped rocessing sul stoppecworker-conferences:worker-conferences_00:stoppedworker-es-update:worker-es-update_00:stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00:startedworker-analytics:worker-analytics_00:startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00:startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: started-zshWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ csfixdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.php -v --using-cache=no --diffPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminskiand contributors.PHP runtime: 8.3.30Running 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".4261/5666 [875%*5Affmpeg100% <78• Mon 11 May 15:37:25T81O ₴6-zsh*7 |+APP...
|
PhpStorm
|
|
NULL
|
|
Commit and Push…
⌥⌘K
iTerm2ShellEditViewSessionScr Commit and Push…
⌥⌘K
iTerm2ShellEditViewSessionScriptsProfilesWindowHelpAPP (docker)APP (docker)-zsh++DOCKER-232,9 +235,11© *1DEV (docker)₴284* @param string SobjectType The object type ('deals', 'companies', 'contacts', 'calls')* @param array<string, mixed› Spayload The search payload with filters, sorts, properties, etc.ereturn array Thesearch response with'results'total', 'paging'keys* @throws RateLimitException When rate limit is hit* @throws HubspotException On API errors* @return array The search response with 'results', 'total','paging' keyspublic function search(string SobjectType, array Spayload): array-zsh> 0 Ilol*5screenpipe"100% <78• Mon 11 May 17:30:03T81O 886-zsh*7 |+APPend diff4) app/Console/Commands/JiminnyDebugCommand.php (statement_indentation)begin diff--- /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php+++/home/jiminny/app/Console/Commands/JiminnyDebugCommand.php-359,11 +359,11 @ScrmService = ScrmResolver->prepareCrmService();-//-//for (Si = 0; si < 3; Si++) {if (Si%25 ===0) {Sthis->info("Syncing opportunity {$1}");Sthis->info("Matching contact {$i}");-//-//.ScrmService->syncOpportunity('374720564');if ($i % 25 === 0) {Sthis->info("Syncing opportunity {$1}");Sthis->info("Matching contact {Si}");////ScrmService-›syncOpportunity('374720564');ScrmService-›matchByName('Robot');end diffFixed 4 of 5666 files in 146.870 seconds, 60.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1...
|
PhpStorm
|
|
NULL
|
|
Commit and Push…
⌥⌘K
iTerm2ShellEditViewSessionScr Commit and Push…
⌥⌘K
iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDOCKERAPP (-zsh)-zsh+€ 881DEV (docker)₴2APP (-zsh)ScrmService->syncOpportunity('374720564');ScrmService-›matchByName('Robot');-zsh> 0 hhl*5screenpipe"100% <78• Mon 11 May 19:00:55T₴1O ₴6-zsh*7 |+end diffAPPFixed 4 of 5666 files in 146.870 seconds, 60.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistentdebugging tools in any container or image → docker debug docker_lamp_1Learn moreat [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ csfixdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diffPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHP runtime: 8.3.30Running 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!Loadedconfig default from".php-cs-fixer.dist.php".5666/5666 [100%Fixed 0 of 5666 files in 66.457 seconds, 60.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image » docker debug docker_1amp_1Learn more at https://docs.docker.com/go/debug-cli/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ I...
|
PhpStorm
|
|
NULL
|
|
Commit and Push…
⌥⌘K
iTerm2ShellEditViewSessionScr Commit and Push…
⌥⌘K
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• Support Daily • in 2h 48 m100% C8APP (-zsh)|DOCKER₴1DEV (docker)882APP (-zsh)jiminny-worker-processing-2:jiminny-worker-processing-2_00:startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00:startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00:startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00:startedworker-nudges:worker-nudges_00: started-zsh• 84What's next:Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20818-move-AJ-reports-to-separated-datadog-metric) $ csfixdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diffPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHP runtime: 8.3.30Running 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!Loadedconfig default from".php-cs-fixer.dist.php".5663/5663100%screenpipe"•$5-zshFri 8 May 12:12:10T₴1|₴6APPFixed 0 of 5663 files in 42.875 seconds, 60.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image + docker debug docker_lamp_1Learn more at https://docs.docker.com/go/debug-cli/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20818-move-AJ-reports-to-separated-datadog-metric) $ I...
|
PhpStorm
|
|
NULL
|
|
Committing…
Project: faVsco.js, menu
JY-20725-hand Committing…
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
PhostormINavigarecodeFV faVsco.js°9 JY-20725-handle-HS-search-rate-linRematchActivityOnCrmObjectDetach.phpHelpers_ huospot>@ ActionsODTO0 FieldsC) UserAutomatedReportscontroller.ong© MatchActivityCrmData.php*RateLimitexception.phpW JournalOpportunitySyncStrateacLassseererest extenuselestease cootv _ Pagination© HubspotPaginationSe 100gc) PaginationContiatespublic function testSearchThrowsRateLimitExceptionWhenCircuitBreakerActive: void{...}ProspectSearchStrateg)M ServiceTraits1849 %public function testSearchThrowsRateLimitExceptionAndSetsNx0nFresh4290: void{...}Webhool@ BatchSvncCollectorTest 1871880 %C) BatchSvncRedisServicepublic function testSearchPropagatesNonRateLimitExceptionO: void{..c) ClientTest.oho( ClosedDea|StaaecServic 1903 Cpublic function testSearchCircuitBreakerRetryAfterComputedFromStoredTimestamp@: void{...}© DealFieldsServiceTest.p( Decorate ActivitvTest nh 192Cancola yLog XChandes 4 files= env.local ano(c) ClientTest.oho tests/Unit/Services/Crm/Hubsool© JiminnyDebugCommand.php app/Console/Commandsphp logging.php config• v Unversioned Files 9 filesE.env.nikilocal appE.env.other app© CanAccessAiReportsTest.php tests/Unit/Policies© CreateMockAskJiminnyReportResultCommand.php app/Console/Commands/ReE favicon.ico publicE ids.txt appT raw sal_query.sal app© SimulateWebhooksCommand.php app/Console/Commands/Crm/Hubspolm+ WEBHOOK_FILTErING_IMPLEMEnTATION.md appwrex?UnomtiicekcoolccnerieoievenieoinlelcheckAnaketrykemotematch.pngA17 A136 X11 ^ v 1/431744174517401747=1748= 174917521753175417561757TJ0 + → = Side-by-side viewer •Do not ignoreBchodbron toctc/linit/Services/crm//=uosoot/Clientlest.onoHighlight wordsXB ?use HubSpot\Client\ Crm Associations Api\ BatchApi:HubSpot\Client\Crm Associations Model\BatchInputPublic0biectId:use "uosoot Lurent crm.Associations ModelBarchresponseruoucassoczat1onMUut7srubsoot Cuent Crm Associations Model Puolicuonect.d.HubSpot\CLient\ Crm\Deals\Api BasicApi as DealsBasicApiuse HubSoot Client crm Deals Model SimolePuolicobiectwithassociations as DealWithAssociations:use HubSpot \Client\Crm Pipelines \Api PipelinesApiuse HubSoot Client Crm Pinelines Model CollectionPesponsePineline:use HubSoot Client Crm Pinelines Model Error:use HubSpot \Client\Crm\Properties \Api\CoreApi;use HubSpot\Client\Crm\Properties\Model\Property:use HubSpot\Discovery as HubSpotDiscovery:use HubSpot\Discovery \Crm\Deals \Discovery as DealsDiscovery:use Jiminny Models\Crm\Configuration;use Jiminny Models\Crm\Field;Luco liminnv Modole CocialAccount.uco liminnvlSonvicoc|Cnml Hubenot|Client.use Jiminny Services\Crm Hubspot \HubspotTokenManager:use Jiminny\Services\Crm Hubspot \Pagination HubspotPaginationService:Use Jiminny services soc1alAccountservice*use Leaque OAuth2 CLient| Token AececcTokoneuse PHPUnit\Framework\Mock0bject \Mock0biect:use PHPUnit\Framework\ TestCase:Psr Loo nulcloggersevenshores huospor nopoints cnoagementsTacts naccod: 80 (4 minutes add• Mon 11 May 17:31:03=laravel.log ~A SF [jiminny@localhost]4 HS_local [jiminny@localhost]console [pRODl& console lEUllA console [STAGING]W.*[2026-05-11 11:21:45] local.INF0: [HubSpot Journal Polling] No data(2026-05-11 11:21:451 Locat.WARNENG: [HubSpot Journal Polling) Maximun empty results reached, stopping ("empty_results".5, "max empty-results":5) ("connelation[2026-05-11 11:21:45] local.WARNING: [HubSpot Journal Polling) Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation[2026-05-11 11:21:45] local.INF0: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other.[2026-05-11 11:21:46] Local.INFO: [HubSpot Journal Polling] Saved offset to database on cleanup {"offset":"019e15a9-9ea0-7da7-87bc-82592e3ccf0d"} {"correlatiol[2026-05-11 11:21:46] local.INF0: [HubSpot Journal Polling] Released polling loch{"correlation_id":"954d156d-8a4f-4592-a046-e16c5dd7d3bf" "trace_id":"ecc7a[2026-05-11 11:21:48] local.INF0: Jiminny\Console\Commands\Command::run Memoryusage betore starting command 1 command": "mailbox. batch:process", "memoryberorecy12026-05-11 11:21:48 LocaL.INFU: Emallschedule STAklINb bacch process[2026-05-11 11:21:48] local.INF0: [EmailSchedulel FINISHED batch2026-05-11 11:21:48 LocaL.LNrU: Jaminny Lonsole con2026-05-11 11:21:59 Local.INF0: Jiminny Console commands comMemory usage befone starting comnand ("connand","ern:syne-hubspot-objects", "memoryße fesnmand": "crm:sync-hubspot-obnects". "memoryBeforecommandinm2026-05-11 11:22:001 Local.INF0:Jiminny Console con[2026-05-11 11:22:00] Local.INFO: [SyncHubspot0bjects] Starting sync {"team2026-05-11 11:22:001 Local.WARNING:HubSpot Account not connected for user -"useriid":"33e34a7a-1c02-4f84-87ac-22c3a385e6e3", "account":"JaminnyModels12026-05-11 11:22:00J Local.INF0: LCrmOwnerResolverJIntegration owner is not connected, attempting team members ?"crm_provider": "hubspot", "crm_owner":109,'2026-05-11 11:22:001 LocoL TNF0: crmownerResolverNo team members found with active erm connection "erm providen"«"hubspot" "team 1d":2% <"correlation[2026-05-11 11:22:001 local.INFO:CrmOwnerResolver]]member found with active crm connection {"crm_provider":"hubspot" "team_id":29} {"correlation id[2026-05-11 11:22:001 local INF0: [SvncHubspot0biectsl Svnc finished {"team"."b2b115eb-93ce-4d1b-929c-173757df8fba" "providen"."hubspot" "status"."disconnecte6 differencesTeirront vorcianuse HubSpot\Client\Crm Associations\Api\BatchApi:Hubspot Cllent Crm Assoclations Model BatchlnputPubl1cubnectlduse HubSpot\Client\Crm\Associations\Model\BatchResponsePublicAssociationMultisuse iubspot cent Crm Associations Model Puouicuonectduse HubSpot\Client\Crm\Companies\ApiException as CompanyApiException;use HubSoot cuient Crm Contacts ApiExcention as ContactaniExcentionsuse HubSpot\Client\Crm\Deals\Api\BasicApi as DealsBasicApi;HubSoot Cuient Crm Deals ApiExcention as DealAoiExcentionuse HubSpot\Client\Crm\Deals\Model\SimpLePublic0bjectWithAssoCiations as DealWithAssociations;use HubSnot euient erm Pinelines Ant Pinellinesani.use HubSpot \Client\Crm \Pipelines Model\CollectionResponsePipeline;use HubSnot Client Com Pinelines Model Erron:use HubSnot Client Com Pronenties Ani CoreAni:use HubSpot \Client\Crm \Properties \Model\Property:use HubSpot Discovery as HubSpotDiscovery:use HubSpot \Discovery \Crm \Deals Discovery as DealsDiscovery:uce liminnvl Gycontione|Patol imi+fycontion•use Jiminny \Models\Crm\Configuration:use Jiminny Models\Crm\Field:use Jiminny Models\SocialAccount:uco liminnv|Sonvicoc|CnmlHubeno+lCijen+.use Jiminny|Services\Crm Hubspot\HubspotTokenManager:use Jiminny Services\ Crm Hubspot\Paqination HubspotPaqinationService:use Jiminnv|Services|SocialAccountService:use Leaque\OAuth2\Client\ Token\AccessToken:W Windsurf Teams 1847:6 UTF-8 ( 4 spaces...
|
PhpStorm
|
faVsco.js – ClientTest.php
|
NULL
|
|
Committing…
Project: faVsco.js, menu
JY-20725-hand Committing…
Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
HandleHubspotRateLimitTest
Run 'HandleHubspotRateLimitTest'
Debug 'HandleHubspotRateLimitTest'
PhpStormVIewINavicareCodeLaravelKeractorTOOISWindowFV faVsco.js?9 JY-20725-handle-HS-search-rate-limitroledey© BatchSyncCollectolT SyncCrmEntitiesTrait.phpC) CachedCrmServiceDecorator.onge balchsynckealsse© ClosedDealStagesS © RateLimitException.phpDealrielasservice.gc)Decorateacuivilv.or© FieldDefinitions.phrclass Cllent extends Baseclient 1mpLements HubspotclientintertaceC) FieldT vpeconvertepublic const string BASE_URL ='https:/Lapi.hubapi.com' ;e Hubspotclientinterc) Hubspot lokenmanC) PavloadBuilder.phpnublic const int AssoctaTtoNs raTcH st7E LтмIT = 1000•C) RemotecrmobiectrP ResponseNormalizec) Service.onrprivate HubspotPaginationService $paginationService:C)SvncFieldAction.onZusagesC) SvncRelatedActivitprivate HubspotTokenManager $tokenManagerC) WebhookSvncBatclv MintearationAor49 đpublic tunction constructM AcceccorsSoc1aLAccountservice ssoc1alAccountserviceHubspotPaginationService SpaginationService.Local ChangesCancolayLog X• Chanaes 12 files→ = Side-by-side viewerDo not ignoreHighlight wordsXBB ?= env.local aor.8 35f036ac app/Services/Crm/Hubspot/Client.phgC) Client.oho aon/Services/Crm/Hubsoot© HandleHubspotRateLimit.php app/Jobs/Middleware© HandleHubspotRateLimitTest.php tests/Unit/Jobs/Middleware© HubspotClientinterface.php app/Services/Crm/Hubspotuse HubSpot\Client\ Crm\Pipelines Model\ PipelineStaqeuse Hubspot Cllent Crm Properties Model Propertyuse Hubspot biscovery biscovery;© HubspotPaginationService.php app/Services/Crm/Hubspot/Paginationuse Jaminny xceotions Crmexceotzon:© JiminnyDebugCommand.php app/Console/Commandsphp logging.php configuse Jiminny\Exceptions\SocialAccountTokenInvalidException;use Jiminny Joos Crm Notelbiect:© MatchActivityCrmData.php app/Jobs/Crnuse Jiminny Models Crm Field:© PaginationState.php app/Services/Crm/Hubspot/PaginationRateLimitException.php app/Exceptions© RateLimitExceptionTest.php tests/Unit/Exceptionsuse Jiminny Services Crm Basecuient:use SevenShores.HubsnotExcentions.HubsnotExcent.ionUnversioned Files 9 filesuse SevenShores Hubsnot Factory.E.env.nikilocal appSevenShores Hubsnot Httn Resnonse.E.env.other appuse Jiminny\Services\Crm \Hubspot \Pagination \HubspotPaginationService:© CanAccessAiReportsTest.php tests/Unit/PoliciesThrowable© CreateMockAskJiminnvReportResultCommand.php app/Console/Commands/Rnravicon.ico puolicEids.txt apd* @phpstan-tupe CrmFieldOption arrayfid:string, label:string, value?:string}1araw sal querv sal aool@ SimulateWebhooksCommand.ohn app/Console/Commands/Crm/HubspotCthic-scotRacolin1(colf.•RASE HIPI).M4 WEBHOOK FILTERING IMPLEMENTATION.md aoolSthis->setVersion(self::MIN_API_VERSION):public function getMinimumApiVersionO: stringreturn selt::MIN API VEKSTON:Tacts naccod. 12 (todav 12:02Hudspol/serwice.pnp© ProviderkateLimiter.png1745m A2 467 M3 л V117451746- 17471748=1/49=175.-1751— 1753—175=175%1756E 1757Preparation for Refi... 23 m left100% 5• Mon 11 May 15:37:47HandlenubspotkateLimiclest vlaravel.logxA SF [jiminny@localhost]4 HS_local [jiminny@localhost]* console PROD1& console lEUllA console [STAGING]w.*2026-05-11 11•21•451 1ocol TNS0• THuhSnot lounnal Pollinal No data[2026-05-11 11:21:45] Local. WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5, "max_empty_results":5} {"correlation. D[2026-05-11 11:21:45] local.WARNING: [HubSpot Journal Polling) Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation, w[2026-05-11 11:21:45] local.INF0: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total cycles":5,"files_downloaded":0,"empty_ files":0,"other_[2026-05-11 11:21:46] local.INF0: [HubSpot Journal Polling] Saved offset to database on cleanup {"offset":"019e15a9-9ea0-7da7-87bc-82592e3ccf0d"} {"correlatio[2026-05-11 11:21:46] local.INF0: [HubSpot Journal Polling] Released polling lock1"correlation_1d• У5401500-8a4T-4572-a040-e1ocsdd/a50t, Crace_1d", "ecc/ael[2026-05-11 11:21:48] local.INF0: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch: process", "memoryBeforeC12026-05-11 11:21:48 Local. LNFU:tmallschedule stAklinG bacch process2026-05-11 11:21.48 LocaL.LNFU:cmaruschedulel rinishcu bauchcker Lamp1"r 1correlacion 10": 2414210e-745e-4485-a05t-5/7010502410Tessed":0r "correlation_id":"241421de-745e-44a3-a65f.3772026-05-11 11:21:48 LocaL.LNPU:Jiminny console con[2026-05-11 11:21:591 local.INF0: Jiminny Console\ Comnmoryberorecommanolnmdbefore starting command {"command": "crm: sync-hubspot-objects", "memoryBef2026-05-11 11:22:001 Local.INF0:Jiminny console.commands Command::run Memory usage for command *"command": "crm:sync-hubspot-obnects", "memorvBeforecommandinMi12026-05-11 11:22:00] Local. INF0:[SyncHubspot0biectsl Starting sync {"team"."b2b115eb-93ce-4d1b-929c-173757df8fba" "usage":23350336, "real_usage":62914560. "u2026-05-11 11:22:001 Local.WARNING:HubSpot Account not connected for user wuserd': "S5es4ara-1002-4104-81ac-22c5ab85ebe3", "account"AWAminnyWodel sSe[2026-05-11 11:22:00] local. INF0: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider": "hubspot", "crm_owner":109, "tz2026-05-11 11:22:001 LocoL TNF0: crmownerResolverNo team members found with active crm connection 1"crm_provider": "hubspot", "team_1d":295 1"correlation_ja[2026-05-11 11:22:001 local.INFO:CrmOwnerResolver]]No team member found with active crm connection {"crm_provider": "hubspot", "team_id":29} {"correlation_id"[2026-05-11 11:22:00] local.INFO: [SyncHubspot0bjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba", "provider":"hubspot", "status":"disconnecte4 differencescurrent versionuse HubSpot\ Client\Crm\Pipelines Model\PipelineStage:use Hubspot Lllent Crm Properties Model Propertyuse HubSpot\Discovery\Discovery:use Jaminny xceotions Crmexcentzon:Jiminny Exceptions (RateLimitExceptionJaminny Excentions SocialAccountTokenInval1dExceotion:use Jiminny\Jobs\Crm\Note0bject;use Jiminny Models Crm Field:use JiminnyServices\Crm\BaseClient;luse SevenShores|Hubsnot\Eycentions|HubsnotExcentionuse SevenShores Hubsnot Factory:use SevenShores\Hubspot\Http\Response;use Jiminnv Services Crm Hubsnot Paaination HuhsnotPaginationService:use Tlluminate Sunnort Facades Redis.luce Thnowahle./*** @phpstan-tupe CrmFieldOption arrayfid:string, label:string, value?:string}Sthis->setBaseUrl(self::BASE_URL):Sthis->setVersion(self::MIN_API_VERSION) :Evoonto a HubSoo+ APT coll with rate Limit handlinaW Windsurf TeamsA6.57UTE.8io 4 spaces...
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
|
Committing…
Project: faVsco.js, menu
JY-20725-hand Committing…
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,
);
}
}
Show Replace Field
Search History
429
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
23/242
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-11 11:17:21] local.NOTICE: Monitoring start {"correlation_id":"885fde59-3852-4120-a620-af3da7ecce17","trace_id":"4cc10f53-5d39-418d-8e98-fe53d9bbff5f"}
[2026-05-11 11:17:21] local.NOTICE: Monitoring end {"correlation_id":"885fde59-3852-4120-a620-af3da7ecce17","trace_id":"4cc10f53-5d39-418d-8e98-fe53d9bbff5f"}
[2026-05-11 11:17:34] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"a773fb28-5a0c-4b8f-a1b5-d57e6b81db90","trace_id":"fb6d8028-db7d-4ef2-b175-740f0a7b8b39"}
[2026-05-11 11:17:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"a773fb28-5a0c-4b8f-a1b5-d57e6b81db90","trace_id":"fb6d8028-db7d-4ef2-b175-740f0a7b8b39"}
[2026-05-11 11:17:37] local.INFO: [MatchActivityCrmData] Starting CRM data matching {"activity":615092,"remote_search":true,"set_configuration":2,"old_state":{"lead_id":null,"contact_id":null,"account_id":26,"opportunity_id":22,"stage_id":89}} {"correlation_id":"01554272-3758-416d-bcd8-0b07cf17fce3","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:37] local.INFO: [ EsUpdateTarget ] Update single target {"target":"activities","purpose":"searchable-observer-update","entityId":615092} {"correlation_id":"01554272-3758-416d-bcd8-0b07cf17fce3","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:37] local.INFO: [ AsyncUpdateElasticSearch ] Entity added to Redis list {"entityType":"activities","entityId":615092,"collectionKey":"activities-for-update-priority","withPriority":true} {"correlation_id":"01554272-3758-416d-bcd8-0b07cf17fce3","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:37] local.INFO: [MatchActivityCrmData] Participants old state {"activity":615092,"participants":[{"id":1004102,"user_id":null,"contact_id":null,"lead_id":null},{"id":1004103,"user_id":89,"contact_id":null,"lead_id":null}]} {"correlation_id":"01554272-3758-416d-bcd8-0b07cf17fce3","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:37] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"01554272-3758-416d-bcd8-0b07cf17fce3","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:37] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"01554272-3758-416d-bcd8-0b07cf17fce3","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:37] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"01554272-3758-416d-bcd8-0b07cf17fce3","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:37] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"01554272-3758-416d-bcd8-0b07cf17fce3","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:37] local.INFO: [Prospect match] Cache miss, calling the API {"identifier_type":"email","identifier":"[EMAIL]"} {"correlation_id":"01554272-3758-416d-bcd8-0b07cf17fce3","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:38] local.INFO: [Hubspot] Failed to fetch contact {"email":"[EMAIL]","reason":"[404] Client error: `GET https://api.hubapi.com/crm/v3/objects/contacts/nikolay.nikolov%40jiminny.com?properties=email%2Cfirstname%2Clastname%2Ccountry%2Cphone%2Cmobilephone%2Cjobtitle%2Chubspot_owner_id%2Cassociatedcompanyid%2Cphoto&archived=0&idProperty=email` resulted in a `404 Not Found` response"} {"correlation_id":"01554272-3758-416d-bcd8-0b07cf17fce3","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:38] local.INFO: [Prospect match] API returned empty result, caching the miss with empty prospect data {"identifier_type":"email","identifier":"[EMAIL]"} {"correlation_id":"01554272-3758-416d-bcd8-0b07cf17fce3","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:38] local.WARNING: [Hubspot] Received 429 from API {"team_id":2,"config_id":2,"retry_after":1,"reason":"Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e16c1-c (truncated...)
"} {"correlation_id":"01554272-3758-416d-bcd8-0b07cf17fce3","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:38] local.INFO: [HandleHubspotRateLimit] Rate limit caught, releasing job with delay {"job_class":"Jiminny\\Jobs\\Crm\\MatchActivityCrmData","attempts":1,"retry_after":1,"delay":4} {"correlation_id":"01554272-3758-416d-bcd8-0b07cf17fce3","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:38] local.INFO: [MatchActivityCrmData] Starting CRM data matching {"activity":614436,"remote_search":true,"set_configuration":2,"old_state":{"lead_id":null,"contact_id":null,"account_id":26,"opportunity_id":22,"stage_id":89}} {"correlation_id":"6f97c580-31f1-4723-80d8-b1046a615d37","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:38] local.INFO: [ EsUpdateTarget ] Update single target {"target":"activities","purpose":"searchable-observer-update","entityId":614436} {"correlation_id":"6f97c580-31f1-4723-80d8-b1046a615d37","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:38] local.INFO: [ AsyncUpdateElasticSearch ] Entity added to Redis list {"entityType":"activities","entityId":614436,"collectionKey":"activities-for-update-priority","withPriority":true} {"correlation_id":"6f97c580-31f1-4723-80d8-b1046a615d37","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:38] local.INFO: [MatchActivityCrmData] Participants old state {"activity":614436,"participants":[{"id":1002751,"user_id":null,"contact_id":null,"lead_id":null},{"id":1002752,"user_id":89,"contact_id":null,"lead_id":null}]} {"correlation_id":"6f97c580-31f1-4723-80d8-b1046a615d37","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:38] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"6f97c580-31f1-4723-80d8-b1046a615d37","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:38] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"6f97c580-31f1-4723-80d8-b1046a615d37","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:38] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"6f97c580-31f1-4723-80d8-b1046a615d37","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:38] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"6f97c580-31f1-4723-80d8-b1046a615d37","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:38] local.INFO: [Prospect match] Cache / local search hit {"identifier_type":"email","identifier":"[EMAIL]"} {"correlation_id":"6f97c580-31f1-4723-80d8-b1046a615d37","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:38] local.INFO: [Prospect match] cached empty result - no API calls, try next matching method {"identifier_type":"email","identifier":"[EMAIL]"} {"correlation_id":"6f97c580-31f1-4723-80d8-b1046a615d37","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [HandleHubspotRateLimit] Rate limit caught, releasing job with delay {"job_class":"Jiminny\\Jobs\\Crm\\MatchActivityCrmData","attempts":1,"retry_after":1,"delay":3} {"correlation_id":"6f97c580-31f1-4723-80d8-b1046a615d37","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [MatchActivityCrmData] Starting CRM data matching {"activity":614382,"remote_search":true,"set_configuration":2,"old_state":{"lead_id":null,"contact_id":null,"account_id":26,"opportunity_id":22,"stage_id":89}} {"correlation_id":"80fe8576-047a-495f-b42a-d75cb83d9591","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [ EsUpdateTarget ] Update single target {"target":"activities","purpose":"searchable-observer-update","entityId":614382} {"correlation_id":"80fe8576-047a-495f-b42a-d75cb83d9591","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [ AsyncUpdateElasticSearch ] Entity added to Redis list {"entityType":"activities","entityId":614382,"collectionKey":"activities-for-update-priority","withPriority":true} {"correlation_id":"80fe8576-047a-495f-b42a-d75cb83d9591","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [MatchActivityCrmData] Participants old state {"activity":614382,"participants":[{"id":1002632,"user_id":null,"contact_id":null,"lead_id":null},{"id":1002633,"user_id":89,"contact_id":null,"lead_id":null}]} {"correlation_id":"80fe8576-047a-495f-b42a-d75cb83d9591","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"80fe8576-047a-495f-b42a-d75cb83d9591","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"80fe8576-047a-495f-b42a-d75cb83d9591","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"80fe8576-047a-495f-b42a-d75cb83d9591","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"80fe8576-047a-495f-b42a-d75cb83d9591","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [Prospect match] Cache / local search hit {"identifier_type":"email","identifier":"[EMAIL]"} {"correlation_id":"80fe8576-047a-495f-b42a-d75cb83d9591","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [Prospect match] cached empty result - no API calls, try next matching method {"identifier_type":"email","identifier":"[EMAIL]"} {"correlation_id":"80fe8576-047a-495f-b42a-d75cb83d9591","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [HandleHubspotRateLimit] Rate limit caught, releasing job with delay {"job_class":"Jiminny\\Jobs\\Crm\\MatchActivityCrmData","attempts":1,"retry_after":1,"delay":1} {"correlation_id":"80fe8576-047a-495f-b42a-d75cb83d9591","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [MatchActivityCrmData] Starting CRM data matching {"activity":614381,"remote_search":true,"set_configuration":2,"old_state":{"lead_id":null,"contact_id":null,"account_id":26,"opportunity_id":22,"stage_id":89}} {"correlation_id":"55cd98de-2b2f-4dd6-b0d5-36af698ea32d","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [ EsUpdateTarget ] Update single target {"target":"activities","purpose":"searchable-observer-update","entityId":614381} {"correlation_id":"55cd98de-2b2f-4dd6-b0d5-36af698ea32d","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [ AsyncUpdateElasticSearch ] Entity added to Redis list {"entityType":"activities","entityId":614381,"collectionKey":"activities-for-update-priority","withPriority":true} {"correlation_id":"55cd98de-2b2f-4dd6-b0d5-36af698ea32d","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [MatchActivityCrmData] Participants old state {"activity":614381,"participants":[{"id":1002630,"user_id":null,"contact_id":null,"lead_id":null},{"id":1002631,"user_id":89,"contact_id":null,"lead_id":null}]} {"correlation_id":"55cd98de-2b2f-4dd6-b0d5-36af698ea32d","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"55cd98de-2b2f-4dd6-b0d5-36af698ea32d","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"55cd98de-2b2f-4dd6-b0d5-36af698ea32d","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55cd98de-2b2f-4dd6-b0d5-36af698ea32d","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"55cd98de-2b2f-4dd6-b0d5-36af698ea32d","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [Prospect match] Cache / local search hit {"identifier_type":"email","identifier":"[EMAIL]"} {"correlation_id":"55cd98de-2b2f-4dd6-b0d5-36af698ea32d","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [Prospect match] cached empty result - no API calls, try next matching method {"identifier_type":"email","identifier":"[EMAIL]"} {"correlation_id":"55cd98de-2b2f-4dd6-b0d5-36af698ea32d","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.WARNING: [Hubspot] Received 429 from API {"team_id":2,"config_id":2,"retry_after":1,"reason":"Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e16c1-c (truncated...)
"} {"correlation_id":"55cd98de-2b2f-4dd6-b0d5-36af698ea32d","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [HandleHubspotRateLimit] Rate limit caught, releasing job with delay {"job_class":"Jiminny\\Jobs\\Crm\\MatchActivityCrmData","attempts":1,"retry_after":1,"delay":2} {"correlation_id":"55cd98de-2b2f-4dd6-b0d5-36af698ea32d","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [MatchActivityCrmData] Starting CRM data matching {"activity":614378,"remote_search":true,"set_configuration":2,"old_state":{"lead_id":null,"contact_id":6167,"account_id":null,"opportunity_id":null,"stage_id":null}} {"correlation_id":"05cfe3c8-6fd4-4a49-ab3c-70dfd05e457b","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [ EsUpdateTarget ] Update single target {"target":"activities","purpose":"searchable-observer-update","entityId":614378} {"correlation_id":"05cfe3c8-6fd4-4a49-ab3c-70dfd05e457b","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [ AsyncUpdateElasticSearch ] Entity added to Redis list {"entityType":"activities","entityId":614378,"collectionKey":"activities-for-update-priority","withPriority":true} {"correlation_id":"05cfe3c8-6fd4-4a49-ab3c-70dfd05e457b","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [MatchActivityCrmData] Participants old state {"activity":614378,"participants":[{"id":1002623,"user_id":null,"contact_id":null,"lead_id":null},{"id":1002624,"user_id":null,"contact_id":6167,"lead_id":null},{"id":1002625,"user_id":89,"contact_id":null,"lead_id":null}]} {"correlation_id":"05cfe3c8-6fd4-4a49-ab3c-70dfd05e457b","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"05cfe3c8-6fd4-4a49-ab3c-70dfd05e457b","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"05cfe3c8-6fd4-4a49-ab3c-70dfd05e457b","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"05cfe3c8-6fd4-4a49-ab3c-70dfd05e457b","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"05cfe3c8-6fd4-4a49-ab3c-70dfd05e457b","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [Prospect match] Cache / local search hit {"identifier_type":"email","identifier":"[EMAIL]"} {"correlation_id":"05cfe3c8-6fd4-4a49-ab3c-70dfd05e457b","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:39] local.INFO: [Prospect match] cached empty result - no API calls, try next matching method {"identifier_type":"email","identifier":"[EMAIL]"} {"correlation_id":"05cfe3c8-6fd4-4a49-ab3c-70dfd05e457b","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [HandleHubspotRateLimit] Rate limit caught, releasing job with delay {"job_class":"Jiminny\\Jobs\\Crm\\MatchActivityCrmData","attempts":1,"retry_after":1,"delay":3} {"correlation_id":"05cfe3c8-6fd4-4a49-ab3c-70dfd05e457b","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [MatchActivityCrmData] Starting CRM data matching {"activity":613840,"remote_search":true,"set_configuration":2,"old_state":{"lead_id":null,"contact_id":4487,"account_id":244,"opportunity_id":299,"stage_id":36}} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ EsUpdateTarget ] Update single target {"target":"activities","purpose":"searchable-observer-update","entityId":613840} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ AsyncUpdateElasticSearch ] Entity added to Redis list {"entityType":"activities","entityId":613840,"collectionKey":"activities-for-update-priority","withPriority":true} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [MatchActivityCrmData] Participants old state {"activity":613840,"participants":[{"id":1001764,"user_id":null,"contact_id":4487,"lead_id":null},{"id":1001765,"user_id":261,"contact_id":null,"lead_id":null}]} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: ProspectCache - Searching DB for opportunity by owner {"account_id":244,"contact_id":4487,"owner_id":261} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: ProspectCache - Opportunity DB search results {"account_id":244,"contact_id":4487,"opportunity_id":299} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [Prospect match] Cache / local search hit {"identifier_type":"email","identifier":"[EMAIL]"} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [CrmActivityService] Email domain belongs to the team, skipping crm lookup {"activity_id":613840,"team_id":2,"email":"[EMAIL]"} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [CrmActivityService] CRM matching completed {"activity_id":613840,"participants_processed":2,"exact_matches":1,"domain_matches":0,"best_match_found":true} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ EsUpdateTarget ] Update single target {"target":"activities","purpose":"searchable-observer-update","entityId":613840} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ AsyncUpdateElasticSearch ] Entity added to Redis list {"entityType":"activities","entityId":613840,"collectionKey":"activities-for-update-priority","withPriority":true} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [MatchActivityCrmData] Successfully matched CRM data {"activity":613840,"remote_search":true,"lead_id":null,"contact_id":4487,"account_id":244,"opportunity_id":299,"stage_id":36} {"correlation_id":"8ccfe9b2-ef68-4a3d-95a5-5ca1667f2a59","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [MatchActivityCrmData] Starting CRM data matching {"activity":613833,"remote_search":true,"set_configuration":2,"old_state":{"lead_id":null,"contact_id":4487,"account_id":244,"opportunity_id":299,"stage_id":36}} {"correlation_id":"41fb906c-1cf1-4cdb-b1bd-c638f6abc0fe","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ EsUpdateTarget ] Update single target {"target":"activities","purpose":"searchable-observer-update","entityId":613833} {"correlation_id":"41fb906c-1cf1-4cdb-b1bd-c638f6abc0fe","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ AsyncUpdateElasticSearch ] Entity added to Redis list {"entityType":"activities","entityId":613833,"collectionKey":"activities-for-update-priority","withPriority":true} {"correlation_id":"41fb906c-1cf1-4cdb-b1bd-c638f6abc0fe","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [MatchActivityCrmData] Participants old state {"activity":613833,"participants":[{"id":1001750,"user_id":null,"contact_id":4487,"lead_id":null},{"id":1001751,"user_id":261,"contact_id":null,"lead_id":null}]} {"correlation_id":"41fb906c-1cf1-4cdb-b1bd-c638f6abc0fe","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ EsUpdateProcessManager ] Finished updating entities in ES {"worker":"","peak_memory":"99.73 MB","elapsed_seconds":1.0,"update_target":"activities","should_iterate_again":false} {"correlation_id":"8c24420c-db53-4450-9cd8-db5d2426bd57","trace_id":"5406d133-f6cd-4f5a-b463-9146e1dfb021"}
[2026-05-11 11:17:40] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"41fb906c-1cf1-4cdb-b1bd-c638f6abc0fe","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"41fb906c-1cf1-4cdb-b1bd-c638f6abc0fe","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"41fb906c-1cf1-4cdb-b1bd-c638f6abc0fe","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"41fb906c-1cf1-4cdb-b1bd-c638f6abc0fe","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [Prospect match] Cache / local search hit {"identifier_type":"email","identifier":"[EMAIL]"} {"correlation_id":"41fb906c-1cf1-4cdb-b1bd-c638f6abc0fe","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [CrmActivityService] Email domain belongs to the team, skipping crm lookup {"activity_id":613833,"team_id":2,"email":"[EMAIL]"} {"correlation_id":"41fb906c-1cf1-4cdb-b1bd-c638f6abc0fe","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [CrmActivityService] CRM matching completed {"activity_id":613833,"participants_processed":2,"exact_matches":1,"domain_matches":0,"best_match_found":true} {"correlation_id":"41fb906c-1cf1-4cdb-b1bd-c638f6abc0fe","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ EsUpdateTarget ] Update single target {"target":"activities","purpose":"searchable-observer-update","entityId":613833} {"correlation_id":"41fb906c-1cf1-4cdb-b1bd-c638f6abc0fe","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ AsyncUpdateElasticSearch ] Entity added to Redis list {"entityType":"activities","entityId":613833,"collectionKey":"activities-for-update-priority","withPriority":true} {"correlation_id":"41fb906c-1cf1-4cdb-b1bd-c638f6abc0fe","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [MatchActivityCrmData] Successfully matched CRM data {"activity":613833,"remote_search":true,"lead_id":null,"contact_id":4487,"account_id":244,"opportunity_id":299,"stage_id":36} {"correlation_id":"41fb906c-1cf1-4cdb-b1bd-c638f6abc0fe","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [MatchActivityCrmData] Starting CRM data matching {"activity":613827,"remote_search":true,"set_configuration":2,"old_state":{"lead_id":null,"contact_id":4487,"account_id":244,"opportunity_id":299,"stage_id":36}} {"correlation_id":"d1d42ab0-5c87-42e8-a91f-a56b538619ce","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ EsUpdateTarget ] Update single target {"target":"activities","purpose":"searchable-observer-update","entityId":613827} {"correlation_id":"d1d42ab0-5c87-42e8-a91f-a56b538619ce","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ AsyncUpdateElasticSearch ] Entity added to Redis list {"entityType":"activities","entityId":613827,"collectionKey":"activities-for-update-priority","withPriority":true} {"correlation_id":"d1d42ab0-5c87-42e8-a91f-a56b538619ce","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [MatchActivityCrmData] Participants old state {"activity":613827,"participants":[{"id":1001734,"user_id":null,"contact_id":4487,"lead_id":null},{"id":1001735,"user_id":261,"contact_id":null,"lead_id":null}]} {"correlation_id":"d1d42ab0-5c87-42e8-a91f-a56b538619ce","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"d1d42ab0-5c87-42e8-a91f-a56b538619ce","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"d1d42ab0-5c87-42e8-a91f-a56b538619ce","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d1d42ab0-5c87-42e8-a91f-a56b538619ce","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"d1d42ab0-5c87-42e8-a91f-a56b538619ce","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [Prospect match] Cache / local search hit {"identifier_type":"email","identifier":"[EMAIL]"} {"correlation_id":"d1d42ab0-5c87-42e8-a91f-a56b538619ce","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [CrmActivityService] Email domain belongs to the team, skipping crm lookup {"activity_id":613827,"team_id":2,"email":"[EMAIL]"} {"correlation_id":"d1d42ab0-5c87-42e8-a91f-a56b538619ce","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [CrmActivityService] CRM matching completed {"activity_id":613827,"participants_processed":2,"exact_matches":1,"domain_matches":0,"best_match_found":true} {"correlation_id":"d1d42ab0-5c87-42e8-a91f-a56b538619ce","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ EsUpdateTarget ] Update single target {"target":"activities","purpose":"searchable-observer-update","entityId":613827} {"correlation_id":"d1d42ab0-5c87-42e8-a91f-a56b538619ce","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ AsyncUpdateElasticSearch ] Entity added to Redis list {"entityType":"activities","entityId":613827,"collectionKey":"activities-for-update-priority","withPriority":true} {"correlation_id":"d1d42ab0-5c87-42e8-a91f-a56b538619ce","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [MatchActivityCrmData] Successfully matched CRM data {"activity":613827,"remote_search":true,"lead_id":null,"contact_id":4487,"account_id":244,"opportunity_id":299,"stage_id":36} {"correlation_id":"d1d42ab0-5c87-42e8-a91f-a56b538619ce","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [MatchActivityCrmData] Starting CRM data matching {"activity":613826,"remote_search":true,"set_configuration":2,"old_state":{"lead_id":null,"contact_id":4487,"account_id":244,"opportunity_id":299,"stage_id":36}} {"correlation_id":"861e79c7-b5d3-4476-b429-0f1b4cf196a4","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ EsUpdateTarget ] Update single target {"target":"activities","purpose":"searchable-observer-update","entityId":613826} {"correlation_id":"861e79c7-b5d3-4476-b429-0f1b4cf196a4","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ AsyncUpdateElasticSearch ] Entity added to Redis list {"entityType":"activities","entityId":613826,"collectionKey":"activities-for-update-priority","withPriority":true} {"correlation_id":"861e79c7-b5d3-4476-b429-0f1b4cf196a4","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [MatchActivityCrmData] Participants old state {"activity":613826,"participants":[{"id":1001732,"user_id":null,"contact_id":4487,"lead_id":null},{"id":1001733,"user_id":261,"contact_id":null,"lead_id":null}]} {"correlation_id":"861e79c7-b5d3-4476-b429-0f1b4cf196a4","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"861e79c7-b5d3-4476-b429-0f1b4cf196a4","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"861e79c7-b5d3-4476-b429-0f1b4cf196a4","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"861e79c7-b5d3-4476-b429-0f1b4cf196a4","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"861e79c7-b5d3-4476-b429-0f1b4cf196a4","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [Prospect match] Cache / local search hit {"identifier_type":"email","identifier":"[EMAIL]"} {"correlation_id":"861e79c7-b5d3-4476-b429-0f1b4cf196a4","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [CrmActivityService] Email domain belongs to the team, skipping crm lookup {"activity_id":613826,"team_id":2,"email":"[EMAIL]"} {"correlation_id":"861e79c7-b5d3-4476-b429-0f1b4cf196a4","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [CrmActivityService] CRM matching completed {"activity_id":613826,"participants_processed":2,"exact_matches":1,"domain_matches":0,"best_match_found":true} {"correlation_id":"861e79c7-b5d3-4476-b429-0f1b4cf196a4","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ EsUpdateTarget ] Update single target {"target":"activities","purpose":"searchable-observer-update","entityId":613826} {"correlation_id":"861e79c7-b5d3-4476-b429-0f1b4cf196a4","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ AsyncUpdateElasticSearch ] Entity added to Redis list {"entityType":"activities","entityId":613826,"collectionKey":"activities-for-update-priority","withPriority":true} {"correlation_id":"861e79c7-b5d3-4476-b429-0f1b4cf196a4","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [MatchActivityCrmData] Successfully matched CRM data {"activity":613826,"remote_search":true,"lead_id":null,"contact_id":4487,"account_id":244,"opportunity_id":299,"stage_id":36} {"correlation_id":"861e79c7-b5d3-4476-b429-0f1b4cf196a4","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [MatchActivityCrmData] Starting CRM data matching {"activity":613820,"remote_search":true,"set_configuration":2,"old_state":{"lead_id":null,"contact_id":4487,"account_id":244,"opportunity_id":299,"stage_id":36}} {"correlation_id":"97a99ff2-5956-4d77-837b-790c01b09967","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ EsUpdateTarget ] Update single target {"target":"activities","purpose":"searchable-observer-update","entityId":613820} {"correlation_id":"97a99ff2-5956-4d77-837b-790c01b09967","trace_id":"6cee2988-85fe-44ce-ba47-56fc0392669c"}
[2026-05-11 11:17:40] local.INFO: [ AsyncUpdateElasticSearch ] Entity added to Redis list {"entityType":"activities","entityId":613820,"collectionKey":"activities-for-update-priority","withPriority":true} {"correlation_id":"97a99ff2-5956-4d77-837b-790c01b09967","trace_id"...
|
PhpStorm
|
faVsco.js – MatchActivityCrmDataTest.php
|
NULL
|
|
Computing annotation for CrmActivityService.php
Pr Computing annotation for CrmActivityService.php
Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
19
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 14:21:15] local.INFO: [Hubspot] DEBUG Getting headers {
"headers":{
"Date":["Thu,07 May 2026 14:21:15 GMT"],
"Content-Type":["application/json;charset=utf-8"],
"Transfer-Encoding":["chunked"],
"Connection":["keep-alive"],
"CF-Ray":["9f80deb8db60dc3a-SOF"],
"CF-Cache-Status":["DYNAMIC"],
"Strict-Transport-Security":["max-age=31536000; includeSubDomains; preload"],
"Vary":["origin,
accept-encoding"],
"access-control-allow-credentials":["false"],
"server-timing":["hcid;desc=\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\",
cfr;desc=\"9f80deb8e7c6dc3a-IAD\""],
"x-content-type-options":["nosniff"],
"x-hubspot-correlation-id":["019e02d0-6fd8-7812-bdba-885b7ccb3ee3"],
"Set-Cookie":["__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-[IP_ADDRESS]-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEsOkXMSEShjK0hGYxNhUGM1ZoBpX7BcFZcHEjA7Cs_.SMUhUnd2nYjko; path=/; expires=Thu,
07-May-26 14:51:15 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None"],
"Report-To":["{
\"endpoints\":[{
\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RWRqiSp3wHsmdEgZlzoYdxI%2BIxVpHmsKn3O%2BKVA3mFIJ2m7YRECDGSM%2BW2IYTzo6FM4%2BdUIjURO8srzKSvJgZ%2BQ6R79arKQw3uHLlX\"}],
\"group\":\"cf-nel\",
\"max_age\":604800}"],
"NEL":["{
\"success_fraction\":0.01,
\"report_to\":\"cf-nel\",
\"max_age\":604800}"],
"Server":["cloudflare"]}} {
"correlation_id":"95236535-ec98-4541-b92a-adfa73b69eab",
"trace_id":"c7ab8365-903f-46d4-9403-0e5b551e3545"}...
|
PhpStorm
|
faVsco.js – CrmActivityService.php
|
NULL
|
|
Computing annotation for Service.php
Project: faVs Computing annotation for Service.php
Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
19
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 14:21:15] local.INFO: [Hubspot] DEBUG Getting headers {
"headers":{
"Date":["Thu,07 May 2026 14:21:15 GMT"],
"Content-Type":["application/json;charset=utf-8"],
"Transfer-Encoding":["chunked"],
"Connection":["keep-alive"],
"CF-Ray":["9f80deb8db60dc3a-SOF"],
"CF-Cache-Status":["DYNAMIC"],
"Strict-Transport-Security":["max-age=31536000; includeSubDomains; preload"],
"Vary":["origin,
accept-encoding"],
"access-control-allow-credentials":["false"],
"server-timing":["hcid;desc=\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\",
cfr;desc=\"9f80deb8e7c6dc3a-IAD\""],
"x-content-type-options":["nosniff"],
"x-hubspot-correlation-id":["019e02d0-6fd8-7812-bdba-885b7ccb3ee3"],
"Set-Cookie":["__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-[IP_ADDRESS]-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEsOkXMSEShjK0hGYxNhUGM1ZoBpX7BcFZcHEjA7Cs_.SMUhUnd2nYjko; path=/; expires=Thu,
07-May-26 14:51:15 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None"],
"Report-To":["{
\"endpoints\":[{
\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RWRqiSp3wHsmdEgZlzoYdxI%2BIxVpHmsKn3O%2BKVA3mFIJ2m7YRECDGSM%2BW2IYTzo6FM4%2BdUIjURO8srzKSvJgZ%2BQ6R79arKQw3uHLlX\"}],
\"group\":\"cf-nel\",
\"max_age\":604800}"],
"NEL":["{
\"success_fraction\":0.01,
\"report_to\":\"cf-nel\",
\"max_age\":604800}"],
"Server":["cloudflare"]}} {
"correlation_id":"95236535-ec98-4541-b92a-adfa73b69eab",
"trace_id":"c7ab8365-903f-46d4-9403-0e5b551e3545"}
Sync Changes
Hide This Notification...
|
PhpStorm
|
faVsco.js – Service.php
|
NULL
|
|
Computing annotation for Service.php
Project: faVs Computing annotation for Service.php
Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
19
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 14:21:15] local.INFO: [Hubspot] DEBUG Getting headers {
"headers":{
"Date":["Thu,07 May 2026 14:21:15 GMT"],
"Content-Type":["application/json;charset=utf-8"],
"Transfer-Encoding":["chunked"],
"Connection":["keep-alive"],
"CF-Ray":["9f80deb8db60dc3a-SOF"],
"CF-Cache-Status":["DYNAMIC"],
"Strict-Transport-Security":["max-age=31536000; includeSubDomains; preload"],
"Vary":["origin,
accept-encoding"],
"access-control-allow-credentials":["false"],
"server-timing":["hcid;desc=\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\",
cfr;desc=\"9f80deb8e7c6dc3a-IAD\""],
"x-content-type-options":["nosniff"],
"x-hubspot-correlation-id":["019e02d0-6fd8-7812-bdba-885b7ccb3ee3"],
"Set-Cookie":["__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-[IP_ADDRESS]-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEsOkXMSEShjK0hGYxNhUGM1ZoBpX7BcFZcHEjA7Cs_.SMUhUnd2nYjko; path=/; expires=Thu,
07-May-26 14:51:15 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None"],
"Report-To":["{
\"endpoints\":[{
\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RWRqiSp3wHsmdEgZlzoYdxI%2BIxVpHmsKn3O%2BKVA3mFIJ2m7YRECDGSM%2BW2IYTzo6FM4%2BdUIjURO8srzKSvJgZ%2BQ6R79arKQw3uHLlX\"}],
\"group\":\"cf-nel\",
\"max_age\":604800}"],
"NEL":["{
\"success_fraction\":0.01,
\"report_to\":\"cf-nel\",
\"max_age\":604800}"],
"Server":["cloudflare"]}} {
"correlation_id":"95236535-ec98-4541-b92a-adfa73b69eab",
"trace_id":"c7ab8365-903f-46d4-9403-0e5b551e3545"}
Sync Changes
Hide This Notification
Code changed:
Hide
7
48
1
33
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Services\Crm\Hubspot;
use Carbon\Carbon;
use Exception;
use Generator;
use GuzzleHttp\Exception\RequestException;
use Illuminate\Support\Facades\Cache;
use InvalidArgumentException;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Contracts\Services\Crm\ClientInterface;
use Jiminny\Contracts\Services\Crm\FetchRelatedActivityInterface;
use Jiminny\Contracts\Services\Crm\LayoutManagementInterface;
use Jiminny\Contracts\Services\Crm\MatchCrmEntitiesInterface;
use Jiminny\Contracts\Services\Crm\Provider\HubspotInterface;
use Jiminny\Contracts\Services\Crm\RemoteEntityLookupInterface;
use Jiminny\Contracts\Services\Crm\RemoteEntityManipulationInterface;
use Jiminny\Contracts\Services\Crm\SavePlaybackLinkToCrmInterface;
use Jiminny\Contracts\Services\Crm\SendSummaryToCrmInterface;
use Jiminny\Contracts\Services\Crm\SettingsInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmMetadataInterface;
use Jiminny\Contracts\Services\Crm\VerifyTaskExistsInterface;
use Jiminny\Exceptions\CrmException;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Jobs\Crm\NoteObject;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Contact;
use Jiminny\Models\Contracts\ActivityContract;
use Jiminny\Models\Crm\BusinessProcess;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\Profile;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Jiminny\Models\Participant;
use Jiminny\Models\Playbook;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\Stage;
use Jiminny\Models\User;
use Jiminny\Repositories\Crm\CrmEntityRepository;
use Jiminny\Repositories\Crm\FieldRepository;
use Jiminny\Repositories\Crm\ProfileRepository;
use Jiminny\Repositories\ParticipantRepository;
use Jiminny\Services\Avatar\ProspectPhotoPathService;
use Jiminny\Services\Crm\BaseService;
use Jiminny\Services\Crm\Hubspot\Actions\SyncArchivedProfilesAction;
use Jiminny\Services\Crm\Hubspot\Fields\ValueNormalizer;
use Jiminny\Services\Crm\Hubspot\ServiceTraits\OpportunitySyncTrait;
use Jiminny\Services\Crm\Hubspot\ServiceTraits\SyncCrmEntitiesTrait;
use Jiminny\Services\Crm\Hubspot\ServiceTraits\SyncFieldsTrait;
use Jiminny\Services\Crm\Hubspot\ServiceTraits\WriteCrmTrait;
use Jiminny\Services\Crm\MatchDomainByEmailInterface;
use Jiminny\Services\Crm\OpportunitySyncStrategyResolver;
use Jiminny\Services\Crm\ResolveCompanyNameByEmailTrait;
use Jiminny\Utils\PlaybackUrlBuilder;
use Sentry;
use SevenShores\Hubspot\Exceptions\BadRequest;
use Throwable;
use UnexpectedValueException;
/**
* @phpstan-type CrmFieldDefinition array{
* name: string,
* label: string,
* description: string,
* type: string,
* fieldType: string,
* hidden: bool,
* showCurrencySymbol: bool,
* options: array<array{
* id: string,
* label: string,
* value?: string,
* }
*/
class Service extends BaseService implements
HubspotInterface,
SyncCrmEntitiesInterface,
SyncCrmMetadataInterface,
SendSummaryToCrmInterface,
MatchDomainByEmailInterface,
SavePlaybackLinkToCrmInterface,
RemoteEntityManipulationInterface,
FetchRelatedActivityInterface,
LayoutManagementInterface,
SettingsInterface,
MatchCrmEntitiesInterface,
RemoteEntityLookupInterface,
VerifyTaskExistsInterface
{
use ResolveCompanyNameByEmailTrait;
use SyncCrmEntitiesTrait;
use WriteCrmTrait;
use SyncFieldsTrait;
use OpportunitySyncTrait;
private const int ENGAGEMENT_BODY_MAX_LENGTH = 65536;
private const string LOG_DATE_FORMAT = 'Y-m-d H:i:s';
private const int BATCH_UPDATE_LIMIT = 100;
private const string TEN_SECONDLY_ROLLING_POLICY = 'TEN_SECONDLY_ROLLING';
private const int TEN_SECONDLY_ROLLING_LIMIT = 10;
private const string CALLS_SEARCH_ENDPOINT = '[URL_WITH_CREDENTIALS] ClientInterface|Client
*/
protected $client;
protected OpportunitySyncStrategyResolver $opportunitySyncStrategyResolver;
protected CrmEntityRepository $crmEntityRepository;
protected ProspectPhotoPathService $prospectPhotoPathService;
private SyncFieldAction $syncFieldAction;
private PayloadBuilder $payloadBuilder;
private SyncRelatedActivityManager $syncRelatedActivityManager;
private SyncArchivedProfilesAction $syncArchivedProfilesAction;
private WebhookSyncBatchProcessor $batchProcessor;
public function __construct(
Client $client,
SyncFieldAction $syncFieldAction,
PayloadBuilder $payloadBuilder,
ProspectPhotoPathService $prospectPhotoPathService,
SyncArchivedProfilesAction $syncArchivedProfilesAction,
WebhookSyncBatchProcessor $batchProcessor,
) {
parent::__construct();
$this->client = $client;
$this->syncFieldAction = $syncFieldAction;
$this->prospectPhotoPathService = $prospectPhotoPathService;
$this->payloadBuilder = $payloadBuilder;
$this->syncArchivedProfilesAction = $syncArchivedProfilesAction;
$this->batchProcessor = $batchProcessor;
$this->opportunitySyncStrategyResolver = app(OpportunitySyncStrategyResolver::class, [
'client' => $this->client,
]);
$this->syncRelatedActivityManager = app(SyncRelatedActivityManager::class, [
'client' => $this->client,
'payloadBuilder' => $this->payloadBuilder,
'logger' => $this->logger,
]);
$this->crmEntityRepository = app(CrmEntityRepository::class);
$this->dealFieldsService = app(DealFieldsService::class);
}
public function getDisplayName(): string
{
return 'HubSpot';
}
protected function getOAuthAccount(User $user): ?SocialAccount
{
// In this case, the Account Owner is always the connection for any API operations.
$owner = $user->team->owner;
return $owner->getSocialAccount(SocialAccount::PROVIDER_HUBSPOT);
}
public function getClient(): Client
{
/** @var Client */
return $this->client;
}
/**
* Convert raw field data into a format compatible with CRM APIs.
*
* @param bool $internal Direction of the conversion.
* True is pulling from CRM, false normalize before sending to CRM.
*/
public function normalizeValue(string $fieldType, string $fieldValue, bool $internal = false): string
{
return ValueNormalizer::normalize(
fieldType: $fieldType,
fieldValue: $fieldValue,
isInbound: $internal,
);
}
/**
* @inheritdoc
*/
public function getDefaultFields(string $activityType): array
{
$fields = [];
if ($activityType === Playbook::ACTIVITY_TYPE_TASK) {
$defaultFields = FieldDefinitions::defaultTaskFields();
// This lazy creates these fields if not already setup.
foreach ($defaultFields as $defaultField) {
$fields[] = $this->config->fields()->firstOrCreate($defaultField);
}
}
return $fields;
}
/**
* @inheritdoc
*/
public function getDefaultActivityField(string $activityType): Field
{
/** @var Field $activityField */
$activityField = $this->config->fields()->where([
'crm_provider_id' => 'activityType',
'object_type' => $activityType,
])->first();
return $activityField;
}
/**
* @inheritdoc
*/
public function getSupportedPlaybookTypes(): array
{
return [Playbook::ACTIVITY_TYPE_TASK];
}
/**
* @inheritdoc
*/
public function getDefaultActivityLayoutFields(string $activityType, string $layoutType): array
{
$fields = [];
if ($activityType === Playbook::ACTIVITY_TYPE_TASK) {
// Outcome should always be provided calls/meetings.
$fieldData = [
[
'crm_provider_id' => $layoutType === Layout::TYPE_SOFTPHONE_SUMMARY ? 'disposition' : 'meetingOutcome',
'object_type' => Field::OBJECT_TASK,
],
];
foreach ($fieldData as $data) {
$field = $this->config->fields()->where($data)->first();
// Only add the field if it is created, which it should be.
if ($field) {
$fields[] = $field;
}
}
}
return $fields;
}
public function getDealInsightsFields(): array
{
return FieldDefinitions::dealInsightsFields();
}
protected function getDefaultFollowupLayoutFields(string $activityType): array
{
$fields = [];
$fieldRepo = app(FieldRepository::class);
$fieldData = FieldDefinitions::followupFieldsFilter();
foreach ($fieldData as $data) {
$field = $fieldRepo->findOneConfigurationFieldByProperties($this->config, $data);
// Only add the field if it is created, which it should be.
if ($field) {
$fields[] = $field;
}
}
return $fields;
}
/**
* @inheritdoc
*/
public function syncField(Field $field): void
{
switch ($field->object_type) {
case Field::OBJECT_ACCOUNT:
$crmField = $this->client->getInstance()->companyProperties()->get($field->crm_provider_id);
break;
case Field::OBJECT_CONTACT:
$crmField = $this->client->getInstance()->contactProperties()->get($field->crm_provider_id);
break;
case Field::OBJECT_OPPORTUNITY:
$crmField = $this->client->getInstance()->dealProperties()->get($field->crm_provider_id);
break;
case Field::OBJECT_TASK:
$this->syncSingleTaskField($field);
return;
default:
return;
}
$this->syncFieldAction->execute($field, $crmField->toArray());
}
/**
* @param array<array{
* id:string,
* label:string,
* value?:string
* }> $options
*
* @throws CrmException
*
* @return FieldData[]
*
*/
public function importPicklistValues(
Field $field,
array $options = [['id' => '', 'label' => '', 'value' => '']],
): array {
if (! empty($options[0]['id']) || ! empty($options[0]['value'])) {
// We already have the options, no need to fetch them again
return $this->importOptions($field, $options);
}
$options = [];
switch ($field->getObjectType()) {
case Field::OBJECT_ACCOUNT:
$options = $this->getClient()->fetchPropertyOptions('company', $field->getCrmProviderId());
break;
case Field::OBJECT_CONTACT:
$options = $this->getClient()->fetchPropertyOptions('contact', $field->getCrmProviderId());
break;
case Field::OBJECT_OPPORTUNITY:
// Hubspot has different endpoint for stages
$options = $this->getClient()->fetchOpportunityFieldOptions($field);
break;
case Field::OBJECT_TASK:
if ($field->getCrmProviderId() === 'disposition') {
$options = $this->getClient()->fetchDispositionFieldOptions();
} elseif (in_array($field->getCrmProviderId(), ['meetingOutcome', 'activityType'])) {
$options = $this->getClient()->fetchMeetingOutcomeFieldOptions($field);
}
break;
default:
$this->logger->warning('Invalid object type', [
'object_type' => $field->getObjectType(),
'field_id' => $field->getId(),
]);
throw new CrmException('Invalid object type');
}
return $this->importOptions($field, $options);
}
/**
* @inheritdoc
*/
public function importStages(?array $types = null, ?string $missingStageName = null): ?Stage
{
$missingStage = null;
try {
// Use the HubSpot API client instead of the SDK crmPipelines() method
$endpoint = self::getDealsPipelinesEndpoint();
$pipelinesResponse = $this->client->getInstance()->getClient()->request('GET', $endpoint);
$pipelines = $pipelinesResponse->data->results;
} catch (RequestException|BadRequest $exception) {
throw $exception;
}
foreach ($pipelines as $pipeline) {
$stages = [];
// We create a business process to contain the pipeline, and store all stages against it.
$p = ResponseNormalize::normalizePipeline($pipeline);
// Create/update business process for this pipeline
$businessProcess = $this->config->businessProcesses()->updateOrCreate([
'crm_provider_id' => $p['id'],
], [
'team_id' => $this->team->id,
'name' => mb_strimwidth($p['label'], 0, 150),
'type' => BusinessProcess::TYPE_OPPORTUNITY,
'is_selectable' => $p['active'],
]);
// A record type is really a clone of the business process, used to store which record uses which pipeline.
// Create/update record type clone
$this->config->recordTypes()->updateOrCreate([
'crm_provider_id' => $p['id'],
], [
'team_id' => $this->team->id,
'name' => mb_strimwidth($p['label'], 0, 150),
'is_selectable' => $p['active'],
'business_process_id' => $businessProcess->id ?? null,
]);
// Stages - fetch all existing stages upfront to avoid N+1 queries
$existingStages = $this->config->stages()
->withTrashed()
->where('type', Stage::TYPE_OPPORTUNITY)
->get()
->keyBy('crm_provider_id');
foreach ($p['stages'] as $dealStage) {
$s = ResponseNormalize::normalizeDealStage($dealStage);
/** @var ?Stage $existingStage */
$existingStage = $existingStages->get($s['id']);
// Restore soft-deleted stages that are now active in HubSpot
if ($existingStage?->trashed() && $s['active']) {
$existingStage->restore();
}
// Upsert stage (updates soft-deleted records without restoring them)
$stage = $this->config->stages()->withTrashed()->updateOrCreate([
'crm_provider_id' => $s['id'],
], [
'team_id' => $this->team->id,
'name' => mb_strimwidth($s['label'], 0, 50),
'label' => mb_strimwidth($s['label'], 0, 191),
'type' => Stage::TYPE_OPPORTUNITY,
'sequence' => $s['displayOrder'],
'is_selectable' => $s['active'],
'probability' => $s['probability'] * 100,
]);
if ($missingStageName === $s['id']) {
$missingStage = $stage;
}
$stages[] = $stage->id;
}
$businessProcess->stages()->sync($stages);
}
return $missingStage;
}
/**
* @inheritdoc
*/
public function syncOrganization(): void
{
try {
$endpoint = '[URL_WITH_CREDENTIALS]
*/
public function find(string $name, array $scopes): array
{
$count = $this->limit ?? 20;
$offset = $this->offset ?? 0;
/** @var array<int, array<string, mixed>> */
return Cache::remember(
key: $this->team->getId() . $name . $count . $offset,
ttl: 300,
callback: function () use ($name, $offset, $count): array {
$data = [];
// Use the new V3 API to find contacts based on additional fields.
foreach (['companies', 'contacts'] as $objectType) {
$endpoint = '[URL_WITH_CREDENTIALS]
*/
public function findOpportunities(?string $crmAccountId, ?string $crmContactId, ?int $userId = null): array
{
$data = [];
$ownerData = [];
$ownerId = null;
if ($crmAccountId === null) {
return $data;
}
if ($userId) {
$profileRepository = app(ProfileRepository::class);
$profile = $profileRepository->findProfileByUserId($this->config, $userId);
$ownerId = $profile instanceof Profile ? $profile->getCrmProviderId() : null;
}
$closedStages = $this->getClosedDealStages();
$payload = $this->payloadBuilder->generateOpportunitiesSearchPayload(
$this->config,
$crmAccountId,
$closedStages,
);
$results = $this->client->getPaginatedData($payload, 'deals');
foreach ($results['results'] as $object) {
$properties = $object['properties'];
$amount = null;
if (empty($properties['amount']) === false) {
$currency = $properties['deal_currency_code'] ?? $this->config->default_currency;
// Values can contain commas and any junk so strip them.
$value = (float) preg_replace('/[^\d.]/', '', $properties['amount']);
$amount = formatCurrency($value, $currency);
}
$businessProcess = $this->config
->businessProcesses()
->where('crm_provider_id', $properties['pipeline'])
->first();
if ($businessProcess === null) {
// Import it.
$stage = $this->importStages([Stage::TYPE_OPPORTUNITY], $properties['dealstage']);
$businessProcess = $this->config
->businessProcesses()
->where('crm_provider_id', $properties['pipeline'])
->first();
} else {
$stage = $businessProcess
->stages()
->where('crm_provider_id', $properties['dealstage'])
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
if ($stage === null) {
// Import it.
$stage = $this->importStages(null, $properties['dealstage']);
}
}
$recordType = null;
if ($businessProcess) {
$recordType = $businessProcess->recordTypes()->first();
}
$isWon = in_array($properties['dealstage'], $closedStages['won']);
$isLost = in_array($properties['dealstage'], $closedStages['lost']);
$record = [
'crmId' => $object['id'],
'name' => $properties['dealname'] ?? 'Unknown Deal',
'value' => $amount,
'won' => $isWon,
'closed' => $isWon || $isLost,
'stage' => [
'id' => $stage?->getUuid() ?? '',
'name' => $stage?->getName() ?? '',
],
];
if ($recordType) {
$record += [
'recordType' => [
'id' => $recordType->id_string,
'name' => $recordType->name,
],
];
}
if ($ownerId && isset($properties['hubspot_owner_id']) && $properties['hubspot_owner_id'] === $ownerId) {
$ownerData[] = $record;
}
$data[] = $record;
}
if (! empty($ownerData)) {
return $ownerData;
}
return $data;
}
/**
* @inheritdoc
*/
public function getTasks(?string $objectType, string $objectId, ?string $opportunityId): array
{
$data = [];
switch ($objectType) {
case 'contact':
$hsObject = 'contact';
break;
case 'account':
$hsObject = 'company';
break;
default:
// This is a hack to prioritise and override a contact/company with a deal.
if ($opportunityId) {
$hsObject = 'deal';
$objectId = $opportunityId;
} else {
throw new InvalidArgumentException('Object type not supported.');
}
}
$engagementTypes = ['meetings', 'tasks'];
foreach ($engagementTypes as $engagementType) {
$payload = $this->payloadBuilder->getLinkToTaskPayload($hsObject, $objectId, $engagementType);
$this->logger->info('[HubSpot] CRM Search requested', [
'request' => $payload,
]);
$engagements = $this->client->getPaginatedData($payload, $engagementType);
foreach ($engagements['results'] as $engagement) {
if ($engagementType == 'meetings') {
$title = $engagement['properties']['hs_meeting_title'] ?? 'Scheduled meeting';
} elseif ($engagementType == 'tasks') {
$title = $engagement['properties']['hs_task_subject'];
} else {
$title = 'Scheduled meeting';
}
$data[] = [
'crmId' => $engagement['id'],
'subject' => $title,
'due' => $engagement['properties']['hs_timestamp'],
'type' => $engagement['properties']['hs_activity_type'] ?? null,
];
}
}
usort($data, function ($item1, $item2) {
return $item2['due'] <=> $item1['due'];
});
return $data;
}
/**
* Try to find CRM Objects using email address
*
* @return null|array{
* Lead|null,
* Account|null,
* Opportunity|null,
* Contact|null,
* Stage|null,
* string|null
* }
*/
public function matchExactlyByEmail(string $email, ?int $userId = null): ?array
{
$contactProperties = [
'email',
'firstname',
'lastname',
'country',
'phone',
'mobilephone',
'jobtitle',
'hubspot_owner_id',
'associatedcompanyid',
'photo',
];
$contact = null;
$account = null;
try {
$hsContact = $this->getClient()->getContactByEmail($email, $contactProperties);
if ($hsContact) {
$contact = $this->importContact($hsContact);
$account = $contact->account;
}
$data = $this->convertCrmData($contact, $account, $userId);
return ! empty(array_filter($data)) ? $data : null;
} catch (BadRequest $e) {
$this->logger->warning('[HubSpot] Search failed', [
'team_id' => $this->team->getId(),
'search_identifier' => $email,
'reason' => $e->getMessage(),
]);
}
return null;
}
public function getDomain(string $email): ?string
{
return $this->getDomainFromEmail($email);
}
/**
* Try to find CRM objects using domain name of the email address
*
* @return null|array{
* Lead|null,
* Account|null,
* Opportunity|null,
* Contact|null,
* Stage|null,
* string|null
* }
*/
public function matchByDomain(string $domain, ?int $userId = null): ?array
{
$companyName = $domain;
// Try to find a company matching their email domain.
$companyProperties = [
'country',
'phone',
'name',
'hs_avatar_filemanager_key',
'industry',
'hubspot_owner_id',
'domain',
];
try {
$hsAccounts = $this->client
->getInstance()
->companies()
->searchByDomain($companyName, $companyProperties);
} catch (Throwable $e) {
$this->logger->info('[HubSpot] Search failed', [
'error' => $e->getMessage(),
'domain' => $domain,
]);
return null;
}
$account = null;
// If there are multiple accounts, don't guess, we'll ask later.
if (\count($hsAccounts->data->results) === 1) {
// Persist this remote object.
$account = $this->syncAccount($hsAccounts->data->results[0]->companyId);
}
$data = $this->convertCrmData(null, $account, $userId);
return ! empty(array_filter($data)) ? $data : null;
}
/**
* @return array{
* Lead|null,
* Account|null,
* Opportunity|null,
* Contact|null,
* Stage|null,
* string|null
* }
*/
protected function convertCrmData(?Contact $contact, ?Account $account, ?int $userId = null): array
{
$countryCode = null;
if ($contact && $contact->country_code) {
$countryCode = $contact->country_code;
} elseif ($account && $account->country_code) {
$countryCode = $account->country_code;
}
try {
$hsOpportunities = $this->findOpportunities(
$account ? $account->crm_provider_id : null,
$contact ? $contact->crm_provider_id : null,
$userId
);
} catch (Exception $e) {
$hsOpportunities = [];
}
// If there are multiple opportunities, don't guess, we'll ask later.
$opportunity = null;
$stage = null;
if (! empty($hsOpportunities)) {
// Persist this remote object.
$opportunity = $this->syncOpportunity($hsOpportunities[0]['crmId']);
$stage = $opportunity?->getStage();
}
return [
null,
$account,
$opportunity,
$contact,
$stage,
$countryCode,
];
}
protected function getCacheKey(string $object, ?int $userId = null): ?string
{
$key = $this->team->getId() . $object;
$keySuffix = $this->getOwnerKeySuffix($userId);
return $key . $keySuffix;
}
private function getOwnerKeySuffix(?int $userId = null): string
{
return $userId === null ? '' : (string) $userId;
}
/**
* @return null|array{
* Lead|null,
* Account|null,
* Opportunity|null,
* Contact|null,
* Stage|null,
* string|null
*}
*/
public function matchByPhone(string $phone, ?string $rawPhoneNumber = null, ?int $userId = null): ?array
{
if (str_contains($phone, '**')) {
return null;
}
// trim all whitespaces if present so the lookup doesn't fail
$phone = str_replace(' ', '', $phone);
// Check if the user is internal.
if ($this->isPhoneNumberOfTeamMember($phone)) {
return null;
}
$response = $this->searchForPhoneNumber($phone);
if (empty($response)) {
return null;
}
// This would ideally importContact instead but the response type differs.
$contact = $this->findAndSyncContact($response['results'][0]['id']);
if (! $contact instanceof Contact) {
return null;
}
$account = $contact->account;
$countryCode = $contact->country_code ?? $account->country_code ?? null;
try {
$hsOpportunities = $this->findOpportunities(
$account?->crm_provider_id,
$contact->crm_provider_id,
$userId
);
} catch (Exception $e) {
$hsOpportunities = [];
}
$opportunity = null;
$stage = null;
try {
if (! empty($hsOpportunities)) {
// Persist this remote object.
$opportunity = $this->syncOpportunity($hsOpportunities[0]['crmId']);
$stage = $opportunity?->getStage();
}
} catch (Exception $e) {
$this->logger->debug('[HubSpot] Opportunity failed to sync.', [
'reason' => $e->getMessage(),
]);
}
return [
null,
$account,
$opportunity,
$contact,
$stage,
$countryCode,
];
}
private function isPhoneNumberOfTeamMember(string $phone): bool
{
$teamRepository = app(TeamRepository::class);
$user = $teamRepository->findTeamMemberByPhone($this->team, $phone);
if ($user instanceof User) {
return true;
}
return false;
}
private function findAndSyncContact(string $crmId): ?Contact
{
try {
return $this->syncContact($crmId);
} catch (Exception $exception) {
$this->logger->info('[HubSpot] Phone match failed', [
'reason' => $exception->getMessage(),
]);
return null;
}
}
private function hasResults(array $response): bool
{
return isset($response['total']) && is_numeric($response['total']) && $response['total'] > 0;
}
private function searchForPhoneNumber(string $phone): array
{
// Normalizes the provided phone number for the API search.
$normalizedPhone = $this->normalizePhoneNumber($phone);
$payload = $this->payloadBuilder->generatePhoneSearchPayload($normalizedPhone);
$this->logger->info('[HubSpot] Phone match search triggered', [
'phone' => $phone,
'normalizedPhone' => $normalizedPhone,
'payload' => $payload,
]);
$response = $this->handlePhoneSearchRequest($normalizedPhone, $payload);
if (! $this->hasResults($response)) {
$nationalPhone = preg_replace('/\D/', '', phone_national(null, $phone));
$payload = $this->payloadBuilder->generatePhoneSearchPayload($nationalPhone);
$this->logger->info('[HubSpot] Phone match national number search triggered', [
'phone' => $phone,
'nationalPhone' => $nationalPhone,
'payload' => $payload,
]);
$response = $this->handlePhoneSearchRequest($phone, $payload);
}
if (! $this->hasResults($response)) {
$payload = $this->payloadBuilder->generatePhoneSearchPayload($normalizedPhone, true);
$this->logger->info('[HubSpot] Phone match alternative search triggered', [
'phone' => $phone,
'normalizedPhone' => $normalizedPhone,
'payload' => $payload,
]);
$response = $this->handlePhoneSearchRequest($phone, $payload);
}
return $this->hasResults($response) ? $response : [];
}
private function handlePhoneSearchRequest(string $phone, array $payload): array
{
$endpoint = '[URL_WITH_CREDENTIALS] null|array{
* Lead|null,
* Account|null,
* Opportunity|null,
* Contact|null,
* Stage|null,
* string|null
* }
*/
public function matchByName(string $name, ?int $userId = null): ?array
{
// Don't waste time searching for single character strings.
if (\strlen($name) <= 1) {
return null;
}
$cacheKey = $this->getCacheKey($name, $userId);
$result = Cache::remember($cacheKey, 60, function () use ($name, $userId) {
$payload = $this->payloadBuilder->generateSearchContactsByNamePayload(
$name,
$this->getContactFields()
);
$hsContacts = $this->client->getPaginatedData($payload, 'contact');
if (empty($hsContacts['results'])) {
return false;
}
$contact = $this->importContact($hsContacts['results'][0]);
if ($contact === null) {
return false;
}
$account = $contact->account;
$countryCode = $contact->country_code ?? $account->country_code ?? null;
try {
$hsOpportunities = $this->findOpportunities(
$account ? $account->crm_provider_id : null,
$contact->crm_provider_id,
$userId
);
} catch (Exception $e) {
$hsOpportunities = [];
}
$opportunity = null;
$stage = null;
if (! empty($hsOpportunities)) {
// Persist this remote object.
$opportunity = $this->syncOpportunity($hsOpportunities[0]['crmId']);
$stage = $opportunity?->getStage();
}
return [
null,
$account,
$opportunity,
$contact,
$stage,
$countryCode,
];
});
return is_array($result) ? $result : null;
}
private function convertActivityAssociations(Activity $activity): array
{
return [
'contactIds' => $this->getParticipantsIds($activity),
'companyIds' => $activity->hasAccount() ? [$activity->account->crm_provider_id] : [],
'dealIds' => $activity->hasOpportunity() ? [$activity->opportunity->crm_provider_id] : [],
'ownerIds' => [],
];
}
private function getParticipantsIds(Activity $activity): array
{
$attendees = [];
$participantRepository = app(ParticipantRepository::class);
$participants = $participantRepository->getParticipantsWhoEnteredMeeting($activity);
foreach ($participants as $participant) {
if ($participant->user_id || $participant->isCoach()) {
continue;
}
$contact = $participant->contact()->first();
if ($contact && $contact->crm_provider_id) {
$attendees[] = $contact->crm_provider_id;
} else {
if (! empty($participant->name)) {
$attendeeData = $this->fetchMissingAttendeeInfo($participant);
}
if (! empty($attendeeData['id'])) {
$attendees[] = $attendeeData['id'];
}
}
}
if ($activity->hasContact()) {
$attendees[] = $activity->contact->crm_provider_id;
}
return array_unique($attendees);
}
private function fetchMissingAttendeeInfo(Participant $participant): array
{
// Check if we need to look inside an account context.
$activity = $participant->getActivity();
$companyId = $activity->hasAccount() ? $activity->getAccount()->crm_provider_id : null;
// First check the local data.
/** @var Contact[] $contacts */
$contacts = $this->team->contacts()
->with('account')
->where('name', $participant->name)
->whereNotNull('email')
->get();
foreach ($contacts as $contact) {
// If we have a company in scope, check the contact is associated to it.
if (
$companyId !== null
&& ($contact->account_id === null || $companyId !== $contact->account->crm_provider_id)
) {
continue;
}
return [
'id' => $contact->crm_provider_id,
'email' => $contact->email,
];
}
$payload = $this->generateNameSearchPayload($participant->name, 0, 20);
try {
$response = $this->client->getNewInstance()->crm()->contacts()->searchApi()->doSearch($payload);
// TODO add some logic to choose the most suitable contact if multiple
foreach ($response['results'] as $object) {
$properties = $object['properties'];
if (empty($object['properties']) === false) {
// Check the company matches the contact.
// Todo: Move this check inside the API search.
if ($companyId !== null && $companyId !== $properties['associatedcompanyid']) {
continue;
}
return [
'id' => $object['id'],
'email' => $properties['email'],
];
}
}
} catch (Exception $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Search failed', [
'teamId' => $this->team->id_string,
'request' => $payload,
'reason' => $e->getMessage(),
]);
}
return [];
}
/**
* Store transcripts as note engagement.
*
* @throws Exception
*/
public function createTranscriptNotes(Activity $activity): void
{
// For HS no need to check if Crm profile - Log Notes field is enabled
// We only check if store_transcript toggle is enabled on crm profile.
$engagement = [
'active' => true,
'ownerId' => $this->profile->crm_provider_id,
'timestamp' => $activity->created_at->tz($activity->user->timezone)->getTimestamp() * 1000,
'type' => 'NOTE',
];
// Generate activity transcription.
$transcriptionData = $this->generateTranscription($activity);
// Truncate Notes with max notes length because transcription text could be very long.
$transcripts = mb_strimwidth($transcriptionData, 0, static::ENGAGEMENT_BODY_MAX_LENGTH);
$metadata = [
'body' => $transcripts,
];
$associations = $this->convertActivityAssociations($activity);
try {
$hsEngagement = $this->client
->getInstance()
->engagements()
->create($engagement, $associations, $metadata);
$this->logCrmEngagementManipulation(self::ACTION_CREATE, $engagement, $metadata, $associations);
$noteId = $hsEngagement->data->engagement->id;
// Store crm logged id in transcription.
$transcription = $activity->getTranscription();
$transcription->crm_activity_id = $noteId;
$transcription->save();
} catch (Exception $e) {
Sentry::captureException($e);
}
}
/*
* @inheritdoc
*/
public function updateRecord(string $objectType, string $objectId, array $data, array $headers = []): void
{
$payload = [
'properties' => $data,
];
try {
switch ($objectType) {
case FieldData::OBJECT_OPPORTUNITY:
$this->client->getNewInstance()->crm()->deals()->basicApi()->update($objectId, $payload);
break;
case FieldData::OBJECT_CONTACT:
$this->client->getNewInstance()->crm()->contacts()->basicApi()->update($objectId, $payload);
...
|
PhpStorm
|
faVsco.js – Service.php
|
NULL
|
|
Copy to
Screenpipe — Archive
Screenpipe — Archive
Copy to
Screenpipe — Archive
Screenpipe — Archive
Activity°MorerireroxToolsHelpcalVIewMistorJiminny ...TMore unreads# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...o Direct messagesD. Galya Dimitrova. Steliyan Georgiev E&. Petko Kashinski. Aneliya Angelova •a. Stefka StoyanovaC. Vasil Vasilev.. Nikolay Ivanov3 Aneliva Angelova, .•.. Stoyan Tanev&. Lukas Kovalik y...::: Apps© Jira Cloud• ToastbookmarksProtllesWindowJY-207... Sira Clo...Automated report - sentryJira Cloud CDetailsConversations 4DescriptionWe still get Sentry error when attempting to sendreport resuit witnout per un.•vve need to mark such a report as Tallea so luis not picked up for sending again in one hour•nx the issue so we can have a generatedreport for the customenStatusBack ogAssigneeNoneKeporterlukas KovallkWork TypeBugPriorityOpen in Jira©ProfileController.phpc) Searchcontroller.ohr> D Settings→E Telenhonv~ D Webhook• M Hubsoot> D IntegrationAppSubsc 136(C) ActivitvProviderCont(C) ActivitvtranscriotionC) BaseController.oho© CalendarController.pC) RenortController nho* SoftphoneWebhookCC. AbstractController nhn• TrackAutomatedReportGeneratedEvent.phpPlaybackController.phpcontroLlerest: JsonkesponsegetFrequency() === AutomatedReportsService::FREQUENCY_ONE_OFF) €batch(new SendReportJob($reportUuid));port if it set and generatedSreportPodcast->getStatus() === AutomatedReportResult::STATUS_GENERATED) {•dispatch(new SendReportJob(reportUuid: $reportPodcast->getUuid()));or aucomaced reporusгдескерогс)иsnlovaradoe саuсomасeакерort, «rерorc•>pushlovatadoa saucomatedkeport, sreportroacast^OG_PREFIX . ' Triggering Event for UserPilot tracking', InatedReport->getUuid(),rtuuid.spatchinew AutomatedRedortGeneratedSautomatedRenort:h $exception) {LOG_PREFIX •" Report not found', L›detMessade Oi.istatus' →> 'error', 'message' => 'Report not found'], status: 404);SummariseLOG_PREFIX . ' Failed to update report status', ['error' => $exception-›getMessage(),return response()->json(['status' => 'error', 'message' => 'Failed to update report status'], status: 500);return response()->json(['status' => 'ok']);C PlanhaTypeError: League|Flysystem|FileCloudWatch | us-east-2O Pipelines - jiminny/app(UY-20725) (HubSpot) Optimise CIJY-20725 add HS rate limit handlin7 wuy-207731 User Pilot not rece X@Jy-20773 fix user pilot tracking for(JY-20776] Automated report - seJY-20725 add HS rate limit handlir$ (SRD-6793] Les Mills activity typePlatform Team - Backlog - Jirau Userpilot | Automated Report Gene(UY-20776] Automated report - ser-7 Platform Sorint 3 02 - Platform Te— New TabO JIMINNY@ For you(• Recent# Starred8$ Apps• Spaces+...Jiminny (New)ul Plarorm leamIID Capture TeamWD Enterprise Stability I…..I Processing TeamMl SE Kanban( Service-Desk= More spaces— FiltersB DashboardsC÷ OperationsI2 Confluence:ã Teams"= Customise sidebarB < 50hl# Retro - Platform • nowninny.atlassian.net/browse/JY-20773Q Search |+ CreateSpaces / Jiminny (New) / & JY-19240 / ** JY-20773User Pilot not receiving events on report generated~ Key detailsDescriptionWhen new report is generated User Pilot should receive tracking event. The event is still inpending meaning no new event has arrived.Steps to reproduceNoneActual outcomeAdd text IExpected outcomeAdd textSubtasksAdd subtaskLinked work itemsAdd linked work item~ ActivityAllComments HistoryWork logTtvBI..|Type /ại for Atlassian Intelligence or@ to mention and notify someone.CancelLukas Kovalik8 hours agoThe issue is most probably AutomatedReportGenerated event and not listener sendingdata to UP. The PR should address it.100% C42 & • Tue 12 May 17:07:25Ask RovoIn Devv* Improve Bug~ DetailsAssignee@ Lukas KovalikReporterLukas KovalikDevelopmentQ Open with VS Code8S Create branch4 commits1 pull request3 builds3 hours agoMERGEDLabelsNoneSub-ProductAdd optionsStory PointsOrganisationsNoneComponentsPlatformFix versionsNoneParent# JY-19240 AJ ReportsSprintPlatform Sprint 3 Q2...
|
Firefox
|
DXP4800PLUS-B5F8 — Personal
|
nas.lakylak.xyz/desktop/#/
|
|
Copy to
Screenpipe — Archive
Screenpipe — Archive
Copy to
Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8...
|
Firefox
|
DXP4800PLUS-B5F8 — Personal
|
nas.lakylak.xyz/desktop/#/
|
|
Copying “CleanShot 2026-05-07 at 09.45.40.mp4” to Copying “CleanShot 2026-05-07 at 09.45.40.mp4” to “2026”
stop progress
134,2 MB of 931,7 MB - Estimating time remaining…...
|
Finder
|
Copy
|
NULL
|
|
Copying “CleanShot 2026-05-07 at 09.45.40.mp4” to Copying “CleanShot 2026-05-07 at 09.45.40.mp4” to “2026”
stop progress
134,2 MB of 931,7 MB - Estimating time remaining…...
|
Finder
|
Copy
|
NULL
|
|
Copying “CleanShot 2026-05-07 at 17.30.37.mp4” to Copying “CleanShot 2026-05-07 at 17.30.37.mp4” to “2026”
stop progress
134,2 MB of 1,55 GB - Estimating time remaining…...
|
Finder
|
Copy
|
NULL
|
|
Copying “CleanShot 2026-05-07 at 17.30.37.mp4” to Copying “CleanShot 2026-05-07 at 17.30.37.mp4” to “2026”
stop progress
134,2 MB of 1,55 GB - Estimating time remaining…...
|
Finder
|
Copy
|
NULL
|
|
Copying “CleanShot 2026-05-08 at 09.45.15.mp4” to Copying “CleanShot 2026-05-08 at 09.45.15.mp4” to “2026”
stop progress
1,20 GB of 1,37 GB - About 5 seconds...
|
Finder
|
Copy
|
NULL
|
|
Copying “CleanShot 2026-05-08 at 09.45.15.mp4” to Copying “CleanShot 2026-05-08 at 09.45.15.mp4” to “2026”
stop progress
134,2 MB of 1,37 GB - Estimating time remaining…...
|
Finder
|
Copy
|
NULL
|
|
Copying “CleanShot 2026-05-08 at 09.45.15.mp4” to Copying “CleanShot 2026-05-08 at 09.45.15.mp4” to “2026”
stop progress
134,2 MB of 1,37 GB - Estimating time remaining…...
|
Finder
|
Copy
|
NULL
|
|
Copying “CleanShot 2026-05-11 at 09.48.23.mp4” to Copying “CleanShot 2026-05-11 at 09.48.23.mp4” to “2026”
stop progress
134,2 MB of 491,3 MB - Estimating time remaining…...
|
Finder
|
Copy
|
NULL
|
|
Copying “CleanShot 2026-05-11 at 09.48.23.mp4” to Copying “CleanShot 2026-05-11 at 09.48.23.mp4” to “2026”
stop progress
201,3 MB of 491,3 MB - About 10 seconds...
|
Finder
|
Copy
|
NULL
|