|
16338
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
SlackFileEditViewGoHistoryWindowHelpDOCKERO 81DEV (docker)882DEV (d)APP (-zsh)• xзmasterJY-20818-move-AJ-reports-to-separated-datadog-metricJY-20773-fix-automated-reports-user-pilot-trackingJY-20157-AJ-report-not-send-notificationJY-20508-notify-before-AJ-report-expirationJY-20372-ai-reports-promotion-pagesJY-20352-sync-opportunities-without-a-local-owner-user-id-is-nullJY-20738-debug-AJ-tracking-UPJY-18909-automated-reports-ask-jiminnyJY-20692-fix-integration-app-[API_KEY] laysJY-20698-fix-SF-activity-types-on-new-playbookJY-20543-AJ-report-trackingJY-20384-handle-auto-sync-with-no-access-to-event-typeJY-20458-ask-Jiminny-user-definitionsJY-19666-fix-import-contacts-account-associationJY-19666-HS-import-contacts-and-accounts-batch-jobJY-20458-Ask-Jiminny-ReportsJY-20200-batch-update-CRM-objects-SalesforceJY-19666-HS-webhooks-add-contact-and-companyJY-20348-trigger-setup-DI-layout-on-team-creationJY-20326-refactor-info-message-in-commandJY-20317-fix-auto-log-delay-issue-on-all-channels-disabledJY-20312-remove-on-update-change-last-synced-at-crm-configurationsJY-20306-SF-skip-auto-sync-for-task-based-playbookJY-20192-remove-deleted-team-from-saved-search-filtersJY-20197-import-opportunity-batch-jobJY-20293-enable-status-field-for-pipedrive-dealsJY-20191-remove-commands-interactive-promptsJY-20118-change-default-sync-strategyJY-20183-add-cache-on-auto-log-delayJY-20197-add-import-opportunity-batch-job20118-hs-opportunity-make-webhook-strategy-defaultJY-20118-make-default-hs-opportunity-sync-strategy-webhook-basedJY-20196-handle-opportunity-without-noteJY-20118-improve-opportunity-importJY-20189-handle-activity-search-on-deleted-groupsJY-20145-filter-out-converted-leads-when-matchingJY-20150-skip-push-summary-on-summary-ready-1f-autologJY-20132-fix-note-encodingJY-19792-clean-logslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-Lirroot@docker_lamp_1:/home/jiminny# ]•HomeDMsActivityFilesLater..•More(wb)§ Support Daily • in 3 h 16 m100% <78• Mon 11 May 11:44:02ED→Describe what you are looking forJiminny ...Chsmechuus# general# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of_jimi...# releases8 226 0• Messages+• Direct messagesa. Stefka Stoyano...€. Vasil VasilevNikolay Ivanov. Galya DimitrovaAneliya Angelova, .... Stoyan Tanev@ Ves®. Aneliya Angelova& James GrahamLukas Kovalik y…..::: AppsC FilesBookmarksclaude-great-arToday~Show more(jiminny/app Added by GitHubCircleCl APP 10:35 AMDeployment Successful!Project: appWhen:05/11/202607:35:21Tag:View JobNewToastJira CloudGoogle Cale...CircleCl APP11:00 AMNew commits deployed to Prophet Prod-US:[e568c4f](https://github.com/jiminny/prophet/commit/e568c4f3b57c9392883f81974b6db3dd09a23a1e) - [JY-20832](https://jiminny.atlassian.net/browse/JY-20832): Remove usage of grok 4.0 and 4.1 models(#506) (steliyan-g)New commits deployed to Prophet Prod-EU:[e568c4f](https://github.com/jiminny/prophet/commit/e568c4f3b57c9392883f81974b6db3dd09a23ale)- [JY-20832](https://jiminny.atlassian.net/browse/JY-20832): Remove usage of grok 4.0 and 4.1 models(#506) (steliyan-g)Message #releases1+Aa..•...
|
PhpStorm
|
faVsco.js – MatchActivityCrmData.php
|
NULL
|
16338
|
|
25975
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
SlackFileEditViewGoHistoryWindowHelpDOCKERO ₴1DEV (-zsh)O $2APP (-zsh)883ec2-user@ip-10--rw-r--r--1 lukasstaff462011May09:29soundcore AeroClip(input)_2026-05-11_6lukasstaff881711May09:29-rw-r--r---rw-r--r---rw-r--r---rw-r--r---rw-r--r---rw-r--r---W-r=-r---rw-r--r---rw-r--r--lukasstaff581211soundcore AeroClip(input)_2026-05-11_0Маy09:30soundcore AeroClip (input)_2026-05-11_0111lukasstaff567111May09:30soundcore AeroClip (input)_2026-05-11_0lukasstaff796311May09:31soundcore AeroCliplukasstaff661411May09:32(input)_2026-05-11_soundcore AeroClip(input)_2026-05-11_9lukasstaff560611May09:32soundcore AeroClip(input)_2026-05-11_/lukasstaff639011May09:33soundcore AeroClip(input)_2026-05-11_/lukasstaff6031311Мaylukasstaff09:33soundcore AeroClip (input)_2026-05-11_08843311May09:34soundcore AeroClip (input)_2026-05-11_01lukasstaff12524911May09:34soundcore AeroClip(input)_2026-05-11_lukasstaff10297511May09:35soundcore AeroClip-rw-r--r---rw-r--r---rw-r--r---rw-r--r---rw-r--r---rw-r--r---rw-r--r---rw-r--r---rw-r--r--lukasstaff2139911(input)_2026-05-11_May09:35soundcore AeroClip(input)_2026-05-11_lukasstaff3937911May09:36soundcore AeroClip(input)_2026-05-11_0lukasstaff995711May09:37soundcore AeroClip1lukasstaff8814811May09:37(input)_2026-05-11_soundcore AeroClip(input)_2026-05-11_0lukasstaff13584011May09:38soundcore AeroClip (input)_2026-05-11_lukasstaff3477011May09:38soundcore AeroClip(input)_2026-05-11_1lukasstafflukasstaff5273711 May09:39soundcore AeroClip (input)_2026-05-11_(7007011May09:39soundcore AeroClip (input)_2026-05-11_01lukasstaff5062811May09:40soundcore AeroClip(input)_2026-05-11_lukasstaff7683811May09:40soundcore AeroClip(input)_2026-05-11_0-rw-r--r---W-r--T---rw-r--r---rw-r--r---rw-r--r---rw-r--r---W-r--r---rw-r--r---rw-r--r--lukasstaff6673311May09:41-soundcore AeroClip (input)_2026-05-11_(1lukasstaff77887 11 May09:41soundcore AeroClip (input)_2026-05-11_1lukasstaff6392211May09:42soundcore AeroClip1lukasstaff1888411May09:42(input)_2026-05-11_soundcore AeroClip(input)_2026-05-11_0lukasstaff1394211May09:43soundcore AeroClip(input)_2026-05-11_(lukasstaff565011May09:44soundcore AeroClip(input)_2026-05-11_/lukasstaff462011May09:45soundcore AeroCliplukasstaff(input)_2026-05-11_685111May09:45soundcore AeroClip (input)_2026-05-11_1lukasstaff110711May09:45soundcore AeroClip(input)_2026-05-11_lukasstaff1780011May19:18soundcore AeroClip-rw-r--r---=---e-rw-r--r---rw-r--r---rw-r--r---rw-r--r---rw-r--r---rw-r--r---Ver-=--lukasstaff1273211May19:19(input)_2026-05-11.soundcore AeroClip(input)_2026-05-11.lukasstaff736111May19:19soundcore AeroClip(input)_2026-05-11lukasstaff1662211May19:20soundcore AeroClip1lukasstaff15093611May19:21(input)_2026-05-11soundcore AeroClip (input)_2026-05-11lukasstaff13473211May19:21soundcore AeroClip (input)_2026-05-111lukasstaff2369011May19:22soundcore AeroClip(input)_2026-05-11lukasstaff1665111May19:22soundcore AeroClip1lukasstaff(input)_2026-05-11_6922111 lukasstaffMay19:23soundcore AeroClip (input)_2026-05-11.560311 May19:23soundcore AeroClip(input)_2026-05-11.1lukasstaff4950911May19:24soundcore AeroClip-rw-r--r--1lukasstaff3446211(input)_2026-05-11_May19:24soundcore AeroClip (input)_2026-05-11.lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe/data $ cd ..lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ UHomeDMsActivityFilesLaterMore> 0(allSupport Daily • in 3 m100% C3• Tue 12 May 14:57:32→Describe what you are looking forJiminny ...CHSIICCTIS# general# jiminny-bg#platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of_jimi...0 Direct messages®. Galya DimitrovaR. Steliyan GeorgievPetko Kashinski®. Aneliya Angelova&. Stefka StoyanovaVasil VasilevNikolay IvanovAneliya Angelova, .... Stoyan TanevLukas Kovalik y…..AppsJira CloudToastGoogle Cale…..# releases8 226 0• MessagesC FilesBookmarks+trackinga8b76812 - Mt.Today ~-quest #12024 fromjiminny/JY-20773-fix-automated-reports-user-pilot-trackingjiminny/app| Added by GitHubCircleCI APP 2:41 PMDeployment Successful!Project: appWhen:05/12/202611:41:02Tag:View JobNewGitHub APP 2:50 PM5 new commits pushed tomaster byilian-jiminny1162b043 - fix(security): bump dependencies(alerts #477)2f0ca3a0 - Merge branch 'master' intosecfix/composer-20260507f861c9e7 - Merge branch 'master' intosecfix/composer-202605079b89679e - Merge branch 'master' intosecfix/composer-202605074cb55bd1 - Merge pull request #12049 fromjiminny/secfix/composer-20260507jiminny/app| Added by GitHubMessage #releases+......
|
PhpStorm
|
faVsco.js – console [PROD]
|
NULL
|
25975
|
|
18168
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
SlackFileEditViewGoHistoryWindowHelpDOCKERO ₴1DEV (docker)$2APP (-zsh)883viewsjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00: stoppedjiminny-worker-processing-4: jiminny-worker-processing-4_00: stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00:jiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-download:worker-download_00: stoppedworker-emails:worker-emails_00:worker-nudges:worker-nudges_00: stoppedworker:worker_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_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:jiminny-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 MatchActivityCrmData jobs (portal=2)Done. Watch logs and run jiminny:debug observeRateLimit to inspect cache state.root@docker_lamp_1:/home/jiminny# php artisan jiminny:debugDispatching 100 MatchActivityCrmData jobs (portal=2)Done. Watch logs and run jiminny:debug observeRateLimit to inspect cache state.root@docker_lamp_1:/home/jiminny# ]DEV (d)-zshHomeDMsActivityLater...alo)Preparation for Refi... in 59 m100% <78• Mon 11 May 14:01:22→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...ToastHomeMessages^ Direct messages®. Aneliya Angelova®. Galya Dimitrova I& Petko Kashinski&. Stefka StoyanovaVasil Vasilev&. Nikolay IvanovAneliya Angelova, ...Stoyan Tanev®. VesE Lukas Kovalik y... 0AboutFriday, May 8th~iminnyAdded by Toast for GitHubToday ~Toast APP10:00 AMReviewapp#12059 Jy 20820 es reindexstream model hydration2 days old • 12 files changed •@Vasil VasilevAdded by Toast for GitHubResolve Conflictsapp#11443 Test hublets latency5 months old • 20 files changed#11327 JY-19501 webhookbased opportunity syncShow moreAdded by Toast for GitHubNeeds Loveapp#12024 JY-20773 fix user pilottracking ofr automated reportgenerated12 days old • 1 file changedE:: AppsMessage ToastJira CloudToast+AaConala CalaNew...
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
18168
|
|
17906
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
SlackFileEditViewGoHistoryWindowHelpDOCKERO ₴1DEV (docker)Last login: Sun May 10 21:10:26 on ttys013₴2APP (-zsh)883Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 0-zshHomeDMsActivityFilesLater..•More(allSupport Daily • in 1h 19 m100% <78• Mon 11 May 13:41:14ED→Describe what you are looking forJiminny ...Toast# conrusion-clinic# curiosity_lab# engineering# general# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...HomeMessages^ Direct messages®. Aneliya Angelova®. Galya Dimitrova& Petko Kashinski&. Stefka StoyanovaVasil Vasilev el&. Nikolay IvanovAneliya Angelova, ...Stoyan Tanev• VesE Lukas Kovalik y... 0AboutiminnyFriday, May 8th ~Added by Toast for GitHubToday ~Toast APP10:00 AMReviewapp#12059 Jy 20820 es reindexstream model hydration2 days old • 12 files changed •@Vasil VasilevAdded by Toast for GitHubResolve Conflictsapp#11443 Test hublets latency5 months old • 20 files changed#11327 JY-19501 webhookbased opportunity syncShow moreAdded by Toast for GitHubNeeds Loveapp#12024 JY-20773 fix user pilottracking ofr automated reportgenerated12 days old • 1 file changed::: AppsS Jira CloudMessage ToastToast+AaGanala CalaNew...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
17906
|
|
17994
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
SlackFileEditViewGoHistoryWindowHelpDOCKER₴81DEV (docker)$2APP (-zsh)883viewsjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00: stoppedjiminny-worker-processing-4: jiminny-worker-processing-4_00: stoppedJiminny-worker-processing-5:j1minny-worker-processing-5_00:jiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-download:worker-download_00: stoppedworker-emails:worker-emails_00: stoppedworker-nudges:worker-nudges_00: stoppedworker:worker_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_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:jiminny-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 MatchActivityCrmData jobs (portal=2)Done. Watch logs and run jiminny:debug observeRateLimit to inspect cache state.root@docker_lamp_1:/home/jiminny# php artisan jiminny:debugDispatching 100 MatchActivityCrmData jobs (portal=2)Done. Watch logs and run jiminny:debug observeRateLimit to inspect cache state.root@docker_lamp_1:/home/jiminny# ]DEV (d)-zshHomeDMsActivityFilesLater...MorelallSupport Daily • in 1h 16 m100% <78• Mon 11 May 13:44:49ED→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...ToastHomeMessages^ Direct messages®. Aneliya Angelova®. Galya Dimitrova& Petko Kashinski&. Stefka StoyanovaVasil Vasilev OlC. Nikolay IvanovAneliya Angelova, ...Stoyan Tanev®. VesE Lukas Kovalik y... 0AboutiminnyFriday, May 8th ~Added by Toast for GitHubToday ~Toast APP10:00 AMReviewapp#12059 Jy 20820 es reindexstream model hydration2 days old • 12 files changed •@Vasil VasilevAdded by Toast for GitHubResolve Conflictsapp#11443 Test hublets latency5 months old • 20 files changed#11327 JY-19501 webhookbased opportunity syncShow moreAdded by Toast for GitHubNeeds Loveapp#12024 JY-20773 fix user pilottracking ofr automated reportgenerated12 days old • 1 file changedE:: AppsMessage ToastJira CloudToast+AaConala CalaNew...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
17994
|
|
18228
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
SlackFileEditViewGoHistoryWindowHelp• 0DOCKERcompiledeventsroutesviewsO ₴1DEV (docker)$2APP (-zsh)883Jiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00:stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5: jiminny-worker-processing-5_00:stoppedworker-analytics:worker-analytics_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:worker-conferences:worker-conferences_00:worker-crm-sync:worker-crm-sync_00: stoppedworker-es-update:worker-es-update_00:worker-emails:worker-emails_00: stoppedworker-audio:worker-audio_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 cache state.root@docker_lamp_1:/home/jiminny# ]DEV (dl-zshHomeDMsActivityFilesLater...Morealo)• Preparation for Refi... in 55 m100% <78• Mon 11 May 14:05:31→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 Dimitrova& Petko Kashinski&. Stefka StoyanovaVasil Vasilev&. Nikolay IvanovAneliya Angelova, ...Stoyan Tanev• VesE Lukas Kovalik y…..::: AppsS Jira CloudToastGanala Cala# thank-yous406 0Messagest* Add canvas+O FilesWednesday, May 6th~It shows increaiuie skir tu jump into Supportand not miss a beat.More importantly, itshows great heart and helped delight ourcustomers on two ways at the same time:Support and Trials.You embodied so many of our values duringthis period.#selflessness #lowego #customerfocus#positiveattitudeView Recognition Moment05 01 X1011 reply 5 days agoToday ~Greg 1:31 PMShout out to engineering/infrastructure teamand their stability work. Did you know ... last weekour Product had 100% uptime? ..not99.9999999% but /2 %!lots of little things (and a few big things) make thathappen. well done all!81#1NewKara Jones 1:54 PM100!!!!!! That is amazing!!! Power team!!Message #thank-yous+...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
18228
|
|
15443
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
+FirefoxEdit$FileViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=[EMAIL] Yankov (Presenting)C Jy 20451 Servic83 Jminr8 PromoO AttentC Cals -0 Abeei(a Transp*0$6000* CiaudeX MOPhttps://fminny.atlassian.net/jira/software/c/projects/JY/boards/37?selectedissue=JY-206254 S5H8E Datadog* Ciaude3 CirclechSentryL tsкa Insights & Coachin0 DerPlatform Team %.Q Search board§ sy-20739 / Q JY-20625[POC)Jiminny MCP ConnectorIn Progress-Ix Improve SpikeAJ Panorama for CallScoring n ouEAUTOMATED AT SCORE~ DetailsP Jy-20361serup test concrare rorProphet in SonarMAINTENANCSBacklogE 3Y-10951DescriptionCustomers are starting to use Al tool (like Claude and GPT) to connect the information from all f their platform into oneplace. Which they then use to interrogate and perform different analysis on their data. We want to create a Jiminny MCPwhich will enable them to connect their Jiminny data to Claude/GPT.• create a POC to demonstrate the approach• determine form where the data needs to be fetched - long term we want to fetch everything from Elastic Search but inorder to release it faster we can consider a temporary mixed approach with the DBAssignee• Nikolay NkolowAssign to meReporter& Galya Dimitrova• Getermine what toe aucreriicaton necos to d0 lacep in moo teout cmieriano nthe epproderftnongo shourd be contrmed wan surtkd ane trye• product requirements - E Jiminny MCP ConnectorDevelopmentQ Open with VS CodeJ Create branch61 commits1 pull request1 build incomplete4 days agoorthComponentsPlatform••+33% DonePrioctyASSiOusAdd optionsauy0lsCiedeyoe= м.O N...IN DEV -Labels% JY-20743tools/listResearch Competitor's MCP= м.• N...story pont estmateDaily - Platform - now100% 12Mon 11 May 9:50:479Nikolay IvanovNikolay YankovMon 11 May 9:50• appіoL Al BookmarksGroup: QueriesAi Reports > Empty pagedesign and promobonAJREPORTSDeployedД -20372 1 1 •***=GrOK Va AZUre-20726 1 • •***=Allow users to delete SSSNTEMeT WODDwhen those are used in a...AJREPORTSDeployed-20770 21 9000Retease AJ PanoramaAJREPORTSDeployed20740 05 12 •=*0:summary in the CRM4 othersSteliyan Georgievalleaale.9:50 AM | Daily - Platform...Lukas Kovalik2:20...
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
15443
|
|
23724
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
=+SlackFileEditViewGoHistoryWindowHelp→ws.planhat.com/jiminny/home/data-explorer/usageJiminnySearch JiminnyContent Explorer7 Metric |Datasetautomated-reports-traEnd UserData ExplorerQ autactivities.automated-reports-CalendarNotificationsNameOverviewRaw DataTral*• Morev EndUser 1Metricsautomated-reports-track-Sections +CS Day-to-day2 Getting started GuideJust CS Data* Daily Operations05 May06 May07• Weekly prep© Renewals and Upsell:= € Risk and Churn An...Implementation -Impl ProjectsTrial Opps (Under Rev...Stoyan's clientsCommentsAdd a commentHomeDMsActivityFilesLater..•More(aolSupport Daily • in 3 h 36 m100% C73• Tue 12 May 11:24:06→Describe what you are looking forJiminny ...eam+ More unreadsChannels# ai-chapter# alerts# backend# bugs# confusion-clinic# curiosity_lab# engineering# general# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi..0 Direct messagesPetko KashinskiR. Steliyan Georgiev%. Galya Dimitrovae. Aneliya Angelova&. Stefka Stoyanova€. Vasil Vasilev. Nikolay IvanovSteliyan Georgiev6 0Messagest Add canvasO Files+AutomaTodayPreview in wawnStatusBacklogPriority= MediumAssigneeUnassignedAs of today at 10:46 AM RefreshOpen in JiraSummariseпроблем беше че няма pdf_url сега ще серазровя за конкретен репорти идеята е на РНР да не го пробваме през час ноГаля попита за регенериранепредполагам че е нещо случайно най-вероятносамо един репортза бъдеще може да в самия пропхет има липроверка дали има всичко преди да върнеresponse, или пак от РНР да се провери предипращане и да се пусне отновоSteliyan Georgiev 10:51 AMможе да направя профет ако няма pdf_url, даврьща грешка за пхп?Lukas Kovalik 10:51 AMпо-скоро да се регенерираMessage Steliyan Georgiev+...
|
PhpStorm
|
faVsco.js – console [PROD]
|
NULL
|
23724
|
|
23796
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
=+SlackFileEditViewGoHistoryWindowHelp→ws.planhat.com/jiminny/home/data-explorer/usageJiminnySearch JiminnyContent Explorer7 Metric |Datasetautomated-reports-traEnd UserData ExplorerQ autactivities.automated-reports-CalendarNotificationsNameOverviewRaw DataTral*• Morev EndUser 1Metricsautomated-reports-track-Sections +CS Day-to-day2 Getting started GuideJust CS Data* Daily Operations05 May06 May07• Weekly prep© Renewals and Upsell:= € Risk and Churn An...Implementation -Impl ProjectsTrial Opps (Under Rev...Stoyan's clientsCommentsAdd a commentHomeDMsActivityFilesLater..•More(aol• Support Daily • in 3 h 34 m100% C78• Tue 12 May 11:26:57→Describe what you are looking forJiminny ...eam+ More unreadsChannels# ai-chapter# alerts# backend# bugs# confusion-clinic# curiosity _lab# engineering# general# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi..0 Direct messagesPetko KashinskiR. Steliyan Georgiev%. Galya Dimitrovae. Aneliya Angelova&. Stefka Stoyanova€. Vasil Vasilev. Nikolay IvanovSteliyan Georgiev6 0MessagesAdd canvasO Files+AutomaTodayPreview in wawnStatusBacklogPriority= MediumAssigneeUnassignedAs of today at 10:46 AM RefreshOpen in JiraSummariseпроблем беше че няма pdf_url сега ще серазровя за конкретен репорти идеята е на РНР да не го пробваме през час ноГаля попита за регенериранепредполагам че е нещо случайно най-вероятносамо един репортза бъдеще може да в самия пропхет има липроверка дали има всичко преди да върнеresponse, или пак от РНР да се провери предипращане и да се пусне отновоSteliyan Georgiev 10:51 AMможе да направя профет ако няма pdf_url, даврьща грешка за пхп?Lukas Kovalik 10:51 AMпо-скоро да се регенерираMessage Steliyan Georgiev+...
|
PhpStorm
|
faVsco.js – console [PROD]
|
NULL
|
23796
|
|
23713
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
=+SlackFileEditViewGoHistoryWindowHelp→ws.planhat.com/jiminny/home/data-explorer/usageJiminnySearch JiminnyContent Explorer7 Metric |Datasetautomated-reports-traEnd UserData ExplorerQ autactivities.automated-reports-CalendarNotificationsNameOverviewRaw DataTral*• Morev EndUser 1Metricsautomated-reports-track-Sections +CS Day-to-day32 Getting started GuideJust CS Data* Daily Operations05 May06 May07• Weekly prep© Renewals and Upsell:= € Risk and Churn An...Implementation -Impl ProjectsTrial Opps (Under Rev...Stoyan's clientsCommentsAdd a commentHomeDMsActivityFilesLater..•More(ahlSupport Daily • in 3 h 37 m100% C73• Tue 12 May 11:23:54→Describe what you are looking forJiminny ...eam+ More unreadsChannels# ai-chapter# alerts# backend# bugs# confusion-clinic# curiosity_lab# engineering# general# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi..0 Direct messagesPetko KashinskiR. Steliyan Georgiev%. Galya Dimitrovae. Aneliya Angelova&. Stefka Stoyanova€. Vasil Vasilev. Nikolay IvanovSteliyan Georgiev6 0Messagest Add canvasO Files+AutomaTodayPreview in wawnStatusBacklogPriority= MediumAssigneeUnassignedAs of today at 10:46 AM RefreshOpen in JiraSummariseпроблем беше че няма pdf_url сега ще серазровя за конкретен репорти идеята е на РНР да не го пробваме през час ноГаля попита за регенериранепредполагам че е нещо случайно най-вероятносамо един репортза бъдеще може да в самия пропхет има липроверка дали има всичко преди да върнеresponse, или пак от РНР да се провери предипращане и да се пусне отновоSteliyan Georgiev 10:51 AMможе да направя профет ако няма pdf_url, даврьща грешка за пхп?Lukas Kovalik 10:51 AMпо-скоро да се регенерираMessage Steliyan Georgiev+...
|
PhpStorm
|
faVsco.js – console [PROD]
|
NULL
|
23713
|
|
16864
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
FinderFileEditViewGoWindowHelpDEV (docker)• жз>0.-zshlabol• Support Daily • in 2h 22 mDOCKER-₴81DEV (docker)882APP (-zsh)|masterJY-20818-move-AJ-reports-to-separated-datadog-metricJY-20773-fix-automated-reports-user-pilot-trackingJY-20157-AJ-report-not-send-notificationJY-20508-notify-before-AJ-report-expirationJY-20372-ai-reports-promotion-pagesJY-20352-sync-opportunities-without-a-local-owner-user-id-is-nullJY-20738-debug-AJ-tracking-UPJY-18909-automated-reports-ask-jiminnyJY-20692-fix-integration-app-[API_KEY]@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ devroot@docker_lamp_1:/home/jiminny# ]84-zsh885100%8• Mon 11 May 12:38:18181screenpipe"0 ₴6DEV...
|
PhpStorm
|
faVsco.js – DeleteCrmEntityTrait.php
|
NULL
|
16864
|
|
15909
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Firefox FileEditViewHistoryBookmarksProfilesToolsWindowHelp<DEV (docker)• жз• Support Daily • in 4h 23 mDOCKERO 81DEV (docker)882APP (-zsh)masterJY-20818-move-AJ-reports-to-separated-datadog-metricJY-20773-fix-automated-reports-user-pilot-trackingJY-20157-AJ-report-not-send-notificationJY-20508-notify-before-AJ-report-expirationJY-20372-ai-reports-promotion-pagesJY-20352-sync-opportunities-without-a-local-owner-user-id-is-nullJY-20738-debug-AJ-tracking-UPJY-18909-automated-reports-ask-jiminnyJY-20692-fix-integration-app-[API_KEY] laysJY-20698-fix-SF-activity-types-on-new-playbookJY-20543-AJ-report-trackingJY-20384-handle-auto-sync-with-no-access-to-event-typeJY-20458-ask-Jiminny-user-definitionsJY-19666-fix-import-contacts-account-associationJY-19666-HS-import-contacts-and-accounts-batch-jobJY-20458-Ask-Jiminny-ReportsJY-20200-batch-update-CRM-objects-SalesforceJY-19666-HS-webhooks-add-contact-and-companyJY-20348-trigger-setup-DI-layout-on-team-creationJY-20326-refactor-info-message-in-commandJY-20317-fix-auto-log-delay-issue-on-all-channels-disabledJY-20312-remove-on-update-change-last-synced-at-crm-configurationsJY-20306-SF-skip-auto-sync-for-task-based-playbookJY-20192-remove-deleted-team-from-saved-search-filtersJY-20197-import-opportunity-batch-jobJY-20293-enable-status-field-for-pipedrive-dealsJY-20191-remove-commands-interactive-promptsJY-20118-change-default-sync-strategyJY-20183-add-cache-on-auto-log-delayJY-20197-add-import-opportunity-batch-job20118-hs-opportunity-make-webhook-strategy-defaultJY-20118-make-default-hs-opportunity-sync-strategy-webhook-basedJY-20196-handle-opportunity-without-noteJY-20118-improve-opportunity-importJY-20189-handle-activity-search-on-deleted-groupsJY-20160JY-20145-filter-out-converted-leads-when-matchingJY-20150-skip-push-summary-on-summary-ready-1f-autologJY-20132-fix-note-encodingJY-19792-clean-logslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ devroot@docker_lamp_1:/home/jiminny# ]-zsh84-zsh885100% <78• Mon 11 May 10:37:31181screenpipe"0 ₴6DEV...
|
PhpStorm
|
faVsco.js – JiminnyDebugCommand.php
|
NULL
|
15909
|
|
15462
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=[EMAIL] Yankov (Presenting)+Platform Team %.Q Search boardAJ Panorama for CallScoring in 0o(AUTOMATEO AT EGORINGKeedyorDoy( Jy-20301Setup test coverage forProonoricherMASNTENANCSBacklogE 3-10951C Jy 20451 Servic83 Jmier8 Promohttps://jiminny.atlassian.net/jira/software/c/projects/JY/boards/37?selectedissue=JY-20625E SSHsY-20739 / Q JY-20625[POC)Jiminny MCP Connector~ DescriptionCustomers are starting to use AI tool (like Claude and GPT) to connect the information from all f their platform into oneplace. Which they then use to interrogate and perform different analysis on their data. We want to create a Jminny MCPwhich will enable them to connect their Jiminny data to Claude/GPT.• create a POC to demonstrate the approach• determine form where the data needs to be fetched - long term we want to fetch everything from Elastic Search but inorder to release il faster we can consider a temporary mixed approach with the DB• Getermine what te aucreriacaton necos to d0 lxcep in mao teout cmentano /nthe epprosertnong snourd be contamed wan surtkd ane wrya• product requirements - E Jiminny MCP Connector••+33% DoneWOTKPriortyASSIOusouy0/s. Ciedeyoe= м.ON...IN DEV -%JY-20743tools/listResearch Competitor's MCP= м.N...O Attent0 Cals -0 AttensCa Transp*0*0000$* CiaudeJmineX MCPE Datadog* Claude9 CirciechSentryL tasкInsights & Coachin0 DerDaily - Platform - now100% L2Mon 11 May 9:51:549Nikolay NikolovNikolay YankovIn ProgressDetailsAssignee• Nikolay NkolowAssign to meReporter& Galya DimitrovaDevelopmentQ Open with VS CodeJ Create branch61 commits1 pull request1 build incompleteComponentsPlatformSub-ProductAdd optionsLabelsstory pont estmateIx Improve Spike4 days agoorthMon 11 May 9:51• эpрібкL Al BockmarxsGroup: QueriesAI Reports > Empty pagedesign and promotionAJREPORTSDeployed8 20372 11 0e00 =JrOK Và ALUICД -20726 1 • •***=Allow users to delete SSand Panorama promptswhen those are used in a...AJREPORTSDeployedRelease AJ PanoramaAJREPORTSDeployedR-20740 05 1) ..0•=summary in the CRM4 othersSteliyan GeorgievMalr9:51 AM | Daily - Platform...Lukas Kovalik3:28...
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
15462
|
|
15705
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
PhostormFV faVsco.jsVIewINavicareCode%9 JY-20725-handle-HS-search-rate-limitroledey© BatchSyncCollector© HubspotSyncStrategyBase.phpe balchsynckealssec clientoneo closeaDealstagess)MatchactivitycrmData.ong© CrmActivityService.phgDealrielasservice.g© CrmObiectsResolver.phpc)Decorateacuivilv.or© FieldDefinitions.phpC) FieldT vpeconvertee Hubspotclientinterc) Hubspotlokenman© PayloadBuilder.phpC) Remotecrmobiectr© ResponseNormalizec) Service.ono© SyncFieldAction.phcontinueC) SvncRelatedActivitC) WebhookSvncBatclv O IntegrationApp> O AccessorsCachedcrmservicebecorator.onp© SyncRelatedActivityManager.php© ProspectCache.phpС Cпескапокetrукemotematch.ongclass Cllent extends Baseclient 1mpLements Hubspotclientintertaceououc tunction cetuwnersArchivedcoool Sarchaved = true): arrav$owners[] = Owner: :create($result);} catch (Throwable $e) {Sthis->log-›error(' [HubSpot] Failed to process owner data', ("result = sresulc= se->gechessage=| A2 A65 X1X1AIL MlDEncatch Throwable se) &Sthis->log->error('HubSpotl Failed to fetch owners'. [935Configarchived' => Sarchived.=> se->detlessadeOrODTOI):FiltersD JobsDProspectSearchStrareturn []:W service lralts© DataClient.phpreturn $owners;Console xLog xChanaes 10 filles= .env.local app→ E Side-by-side viewer -© 35f036ac app/Services/Crm/Hubspot/Client.phpDo not ignoreHighight words -X 1 ?© HandleHubspotRateLimit.php app/Jobs/Middleware(1HubsootClientinterface.oho aon/Services/Crm/Hubsootl© HubspotPaginationService.php app/Services/Crm/Hubspot/PaginationC).liminnvDebuaCommand.nhn ann/Console/Commandsphe logging.php config©MatchActivityCrmData.php app/Jobs/Crm© PaginationState.php app/Services/Crm/Hubspot/Pagination© RateLimitException.php app/ExceptionsUnversioned Files 9 filesE .env.nikilocal appE .env.other app© CanAccessAiReportsTest.php tests/Unit/Policies© CreateMockAskJiminnyReportResultCommand.php app/Console/Commands/RepE favicon.ico publicE ids.txt appT6raw_sql_query.sql app@ SimulateWebhooksCommand.php app/Console/Commands/Crm/HubspotM+ WEBHOOK_FILTERING_IMPLEMENTATION.md app} else {return Sthis-›qetInstance()->qetClient()->request(Smethod. Sendpoint."json' => ($payload),* @throws BadRequest/ Uiminnv|ServiceslCrm| Hubsnot > Client > aetAscociationsDatal 10 AAAAAJ, $toAssociations);} catch (\Exception $e) {Sthis->log-›error('[Hubspot] Failed to fetch associations', ['from_object' => $fromObject,'to_object' => $to0bject,elper Code will help IDE to understand your Laravel app code. // Generate // Don't Show Anymore (1 hour ago)E custom.log xE laravel.logA SF jiminny@localhost]A HS_Jocal (jiminny@localhost]# console [PKOb.# console [euJ# console [slAGiNg)[2026-05-07 14:21:15] Local. INFO: [Hubspot] DEBUG Getting headers {"neaders".?"Uace":L"Inu,or May 2020 14.21.15 6Ml"Jn"Concent-lvoe". "apolicacionison charser=utt-on"Transter-Encod1nq":"chunked")."Connection":"keep-alive""CF-Ray" : ["9f80deb8db60dc3a-SOF"],"Strict-Transport-Secur1ty":"max-aqe=31536008* 1ncLudeSubDomains: preload")naccept-encoding"],"access-control-allow-credentials": ["false"],"server-timing": ["hcid;desc=\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\","x-hubspot-correlation-id":["019e02d0-6fd8-7812-bdba-885b7ccb3ee3"],"Set-Cookie":["__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtmOY-1778163675-[IP_ADDRESS]-May-26 14:51:15 GMT; domain=.hubapj.com; Http0nly; Secure; SameSite=None"],"Report-To" : ["(\"endpoints\": I\"urz\":\"https:|\/\\/a.nel.cloudflare.com\\/report\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RW\"group\" :\"cf-nell",\"max_age\":604800}"],"NEL" : ["{success_traccion.0.01rreportto. "cr-nel,Curront vorcionhel• suppont Dally • In 4h 01mU AskJiminnyReportActivityServiceTest~100% Lz&• Mon 11 May 10:09:12CascadeHubspot Rate Limit Re+0 ..3. We just made an additional API call while already rate-limited - amplifying the pressure4. If matchByPhone returns nothing too, the activity gets persisted as "no CRM match" even though the contact exists in HubSpot. Wrong data, no signal to retry.The middleware on MatchActivityCrmData cannot help, because the 429 was already swallowed before any RateLimitException could be raisedhow serious is it reallv?In practice - probably rare, but still wrong. The GET-by-email endpoint shares HubSpot's portal-wide burst quota (100/10s on Free/Starter, 150/10s on Pro+200/10s with the API add-on), which is much more generous than the search endpoint (5 RPS). 429s on this endpoint are uncommon. But:• During heavy backfills they do happen — the same worker pool that's hammering search will also be hammering getContactByEmail• When it does happen, the cost is silent data corruption (wrong CRM match) plus extra wasted API calls falling through the cascade.What you should decideGiven vour simplification (only Client::searcho raises RateLimitException, onlv MatchActivityCrmData middleware handles it, vou have two reasonableoptions:Option A - Accept the gap, document it. The PR's scope is "handle search endpoint rate limits" since that's where 429s actually hurt. Email-by-id 429s are rareand currently treated as "not found" — same as before this PR. Nothing breaks, you just don't fix this particular gap. Add a TODO/follow-up ticketOntion B - Wrao_netContactByEmaillin executeRenest@_too.Five-line chance. then the email-match.sten_would also_throw.RateldimitExcention middlewarereleases the job. This is cheap and removes the silent-corruption risk for that one method. You don't need to touch getContactById/getOpportunityById/etc.because those aren't on the MatchActivityCrmData hot path.Mwrecommendation:Option B.tsattinvaddition.that closes.the matchina cascade.stirststeo.whichls.the.most@hitpath. withouttt.thelnew.midoleware missethe most common entry point of MatchActivityCrmData's CRM lookups.O phpAsk anything (2AL)+ <> CodeClaude Opus 4.7 Medium8 differencesyuciyeoeidmy. pyoclyocidnySresponse = sthis->getiinstance@->qetc.iento->requestmethod. sendooint..'json' => ($payload),Smax= $response->getHeaderLine('X-HubSpot-RateLimit-Max');// "110"Sremaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining');// "109"Sinterval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // "10000"$body= json_decode((string) $response->getBody(), true);\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$max".PHP_EOL print_r($max, true));(Illuminate\Support\Facades\Log::channel('custom_channel')->info('$remaining' . PHP_EOL . print_r($remaining, true));(Illuminate\Support\Facades\Log::channel('custom_channel')->info('$interval' . PHP_EOL . print_r($interval, true));(Illuminate\Support\Facades\Log: :channel('custom_channel')->info('$body'PHP_EOL print_r($body, true));return sresponse:WN Windsurf Toams 020-1UTF.8f?4 spaces...
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
15705
|
|
16030
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
PhostormINavicarecodeFV faVsco.jsroledeyc) DeleteLeadJob.ongoveleleopportunity.© VerifyActivityCrmT:m Huhsnot* RateLimitexc>@ Salesforce© AutologDelayedToCrm© CheckAndRetryRemotr) PaqinationContia.phg© CreateFollowupActivitc createnotes.pnp© MatchActivitiesToNewmaxExcentionsX P Cc W .*гI Y:class MatchActivityCrmData extends Job implements ShouldQueue, ShouldBeUniqueM1V8AVс) масhaсuvivcrmDalapubuic tunccion handlelE) NoteObiect.php:vo1d -C) SaveActivitv.ohpSactivity = sactivityrepository->findByld($th1s->activityld);1+ Sactivity s== nulurcC) Setuplavout.oho@ SvncActivitv.phpthrow new InvalidArgumentExcentione messaae'MatchActivitvCrmDatal Cannot find activitv.'n:c svncFieldMetadata.on© SvncHubspotObiects.rtry© SyncLeads.php© SvncObiects.phnSconnection->transaction(function ( use (Sactivity, ScrmActivityService, SactivityRepository)loa. •infod messade›'[MatchActivityCrmData] Starting CRM data matching', [© SyncOpportunitiesJob.lactivitvl => Sthis-sactivitvtdl© SvncOpportunitv.ohn© SyncProfileMetadata.p 1a2@ SvncTeamFieldsJob.pl 103© SyncTeamMetadata.pl 104(c) Uodateopportunitysot 1a5C UodateStage.ong> @ DealRisksh Mailhoy'remote_search' => $this->remoteSearch,'set_configuration' => Sthis->fromConfiguration?->getIdO,'old_state' => ['lead_id' => Sactivity->getLead?->getId.'contact_id' => $activity->getContact?->getIdO'account_id' => $activity->getAccount?->getIdO'opportunity id' => Sactivity->qetOpportunityO?-›qetIdO.scace 1d = saccivity-›cerscace:-decla.D MeetingBotMiddleware© HandleHubspotRateLir 111c) kateLimrea.ono> C Streamingsth1s->resetcrmmappingsSactiv1ty, Sactivitykepos1toryTeamC TelephonvC Usersthas->swatchcrmcontzqurat.iontreededsactzvitv):115)Sactivitv->refresho:c) ChangeEmailjob.phpDeactivateUserJob.ph 118© DeletescheduledUser/ 119© SetupDefaultSavedSe: 120l@ SvncTolntercom.php@ SvncToPlanhat.ohpScrmActivitvService-›updateCrmData(activity: Sactivity,remoteSearch: Sthis->remoteSearch.C) SvncToUserPilot.ohocRaseProceccing.loh.nhnShasMatch = $activity->getLead !== nullSactivitv->aetcontac+o 1==nul7(cDummv.loh.nhrCactivitv->aetAccount0 1== nul1l© ImportRecallAlRecordings 124© ImportRemoteTrackJob.pC..loh nhnCactivitv->aet0nnontunitvo 1==null•i4 (ChacMatchid(C).lohDisnatcher nhnLog:: info( message: '[MatchActivityCrmDatal Successfully matched CRM data'. [JobDispatcherinterface.p 1zclactivitut es Sthic-santivitutd(c DuraoCoftDolotadOnnorti..)coancht ey Cthic-snomntoSonnchlelner Code will hoin INF to underctand vour Laravel ann code II Generate II Don't Show Anvmore (todav Q•08)A SF (jiminny@localhost]4 HS_local (jiminny@localhost]# console [PKob.# console [euJ# console [slAGiNg)2026-05-07 14:21:15] local.INF0: [Hubspot] DEBUG Getting headers {Vace". "Inu,ur May 2020 14.21.15 bMl"Jn"Loncent-lvoe". "apolicacionison charser=utt-o"Transfer-Encoding": ["chunked"],"Connection":"keep-alive"."CF-Ray":"9t80deb8dbo0dcsa-S0F"n"CF-Cache-Status": L"DYNAMIC"J,"Strict-Transport-Secur1ty":"max-aqe=31536008* 1ncLudeSubDomans: preload")"access-control-allow-credentials":["false"]."server-timing": ["hcid;desc=\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\",cfr;desc=|"9f80deb8e7c6dc3a-IAD\""],"x-content-tvoe-ootions":"nosniff"."x-hubspot-correlation-id":["019e02d0-6fd8-7812-bdba-885b7ccb3ee3"],"Set-Cookie"." c+hm-Stlirtd0aXVr.kSandas6hzVVKhzTn0BidvMaheCtmoV-1778163675-[IP_ADDRESS]-May-26 14:51:15 GMT; domain=.hubapi.com; Http0nly; Secure; SameSite=None"],"Renont-To". "s"endpoints)":[{"url"."httns:a.nel.cloudflane.com./nenon+/v42c=NVA1cVTPQfVm32anS0axVF/sd2R"group\":\"cf-nel\","max_age\":604800}"],"NEL":["{"success_fraction\":0.01,report to. "cr-nel"max age ":604800}"].'Server":["cloudflare"]}} {correlation_1d":"95256555-ec78-4541-b9za-adta/sboYeab"trace_10":"C/AD8565-905t-4604-9405-0e5b551e5545S0 hl 7 # Support Daily • in 4h 7 m100% 47. • Mon 11 May 10:53:34AskJiminnyReportActivityServiceTestvCascadeHubspot Rate Limit Re+0 ..Worker.php:559-571wproteetdr tunet2on markJobAstau teulTAlreacyaxcecdswaxattemptstsconnectzonName, 3900, siaxirses$maxTries = ! is null(sjob->maxTries()) ? Sjob->maxTries() : $maxTries;srecryuntil = 300-recryonot;if (Sretrvüntil &s Carbon::nou()-sgetTimestamo") <= SretrvUntil)<if (! SretryUntil && (SmaxTries === 0 || Siob->attempts() <= SmaxTries)) {return:The cascade is1. If retryUntil() returns a future time → bypass stries, don't fail.2. Else if Stries issetand attemots() « Stries → don't fail.3. Else if $tries is 0 (Laravel treats 0 as unlimited) → don't fail4. Else → fail the job.If you remove retryUntil() entirely from your job, the worker uses whatever Stries is set on the class (or the queue worker's --tries=N CLI flag, default 1 ifneither is provided).So practically:Manringuntst and ho stries → -triestl from pip artisan queueiwork → dfaults to 1 attemp: → fist falure = permanent falure. Bad for rate-im• No retryUntil, $tries = 3 → 3 attempts (your previous setup; rate-limit retries consume stries ).•retryUntil = 30min, no stries → unlimited retries until 30 min elapse (vour current setup: rate-limit retries don't consume any counter).You .can also_override retrylntillner-instance.instead.of. as a methodlaravel willread sinh-sretrylntilnronertv.if the methodlisnit defined)..but.the methodNote: retryUntil is frozen at dispatch time — it's serialized into the job payload as a Unix timestamp, not re-evaluated on each retry. So now()->addMinutes(30) isanchored to when the iob was first dispatched, not when each retry starts. After the first dispatch. the deadline is fixed. This is correct behavior for a rate-limitceilingSummaryHWAWTTATATMEISEOATABONEEE TETOE7TAT-TTWATAVTULE TNVA TOTOT-13EFE AHEBSWIIAMEWEY SOTOTATOTOT SOTOTIEIISITOTORTOTORENOIEBETOWAEMEOITOTIEO EIAT-TATTAВE• Not a rename - stries and SmaxExceptions count different things. Keeping stries = 3 alongside retryUntil would be misleading dead code.•uniqueFor bumped to keen the deduo lock alive for the full retry window, otherwise duolicate dispatches can race durina rate-limit retries.• Default retryUntil is null. Without it, Laravel uses stries (which itself defaults to 1 if not set on the class or worker).r.nl .Ask anvthing (84D)+ « CodeClaude Onus 4.7 MediumWN Windsurf Toams 12.52UTF.8io 4 spaces...
|
PhpStorm
|
faVsco.js – MatchActivityCrmData.php
|
NULL
|
16030
|
|
16319
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
PhostormVIewINavicareCodeFV faVsco.js°9 JY-20725-handle-HS-search-rate-linroledey© TrackRecordingFileSiz© TrackRecordingSizeEnT. ValidateSmitProspect:yhuospotsyncstrategybase.ong© ProspectCache.php• D AjReports© MatchActivityCrmData.php*RateLimitexception.pr© HandleHubspotRateLimit.php xW Avatar0 CalendarConference0 Crm>@ Bullhorn> OJ CloseC Copper© Client.php(C)PaqinationContia.phg* Job middleware that catches RateLimitException from HubSpot API calls* and releases the job back to the queue with the appropriate delay>J Crmobiects07 DecorateActivitv• DummyC Helpersv h Hubspotclass HandleHubspotRateLimitAccountSyncStrate> Actionsprivate const int MAX_RETRY_DELAY = 600ContactSyncStrate! ,private const Int MIN KEIKY UELAY = 1orivate const int MAX RATE LIMIT ATTEMPTS = 201ACCept Renectm Fields• M lournal1 usaae1 Metadatalorivate const int JITTER SECONDS = 5:v OpportunitySyncSti 1°> D Concernspublic function handle(object Sjob, callable Snext): voidC HubspotLastMor 22(C) Hubsnotl actMoi 23try 1Snext(Siob):© HubspotLastMor 24(C) Hubsnotl actMo} catch (RateLimitException $e) {if (Siob->attempts• >= self::MAX RATE LIMIT ATTEMPTS) {Loa::error('[HandleHubspotRateLimitl Rate Limit attemot Limit reached. giving up'. [l(C) HubsnotSinaleS'10b class' => $i00::class.o UnhenotCunaCtrlattemntsi => Sioh->attemntso© HubspotWebhoo'rate_limit_message' => $e->getMessageO,• M Pagination© HubspotPaginatthrow Se© PaginationConfi(C) PaqinationState> D ProspectSearchStra› D Redis$delay = max( value: self::MIN_RETRY_DELAY, min($e->getRetryAfterO.$delay += random_int(0, self::JITTER_SECONDS):values: colf.-MAY PETRY NEIAV).v D ServiceTraits() OpportunitvSvnc() SvncCrmEntitiesSretrvAften = Se->aetRetrvAfteroeSdelav = maxself.«MTN RETRY DELAY min SretrvAften self:«MAX RETRY DELAV))•T SuncFieldstirait.T. WriteCrmTrait.oLog: : info('[HandLeHubspotRateLimit] Rate limit caught, releasing job with delay', I• M UtilsM WebhookC) BatchSvncCollecto'rate Limit message' => Se->qetMessage@).(c) RatchSvncRedisSe(C) ClocedDea|StadecS no@ DoalFieldsService r noSattemots = s10b->attemotsoiif (Sattemots <=°zul Sattemots & 10 === 0) $=custom.log ^A SF (jiminny@localhost]4 HS_local (jiminny@localhost]# console [PKob.# console [euJ# console [slAGiNg)2026-05-07 14:21:15] local.INF0: [Hubspot] DEBUG Getting headers {MMI9AYheaders'1"Vace". "Inu,ur May 2020 14.21.19 6Ml"Jn"concenc-lyoe. apolicacion/ison.charser=utt-on"Transfer-Encoding": ["chunked"]."CF-Ray":"9t80deb8dbo0dcsa-S0F""CF-Cache-Status": L"DYNAMIC"J,"Strict-Transport-Secur1ty":"max-aqe=31536000* 1ncludeSubDomains: preload")acceot-encodino"."access-control-allow-credentials": "false"i."server-timing": ["hcid;desc=\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\",cfr;desc=|"9f80deb8e7c6dc3a-IAD\""],"x-content-tvoe-ootions":"nosniff"."x-hubspot-correlation-id":["019e02d0-6fd8-7812-bdba-885b7ccb3ee3"],"Set-Cookip"." c+hm=Stlirtd0aXVr.kSandas6hzVVKhzTn0BidvMaheCtm0V-1778163675-1.0.107-May-26 14:51:15 GMT; domain=.hubapi.com; Http0nly; Secure; SameSite=None"],"Report-To":["{"endnoints".("url\":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RV("group\":\"cf-nel\".("max_age\":604800}"],"NEL"L"1"success_fraction\":0.01,reportto. "cr-nel,"max agel ":604800}"].'Server": ["cloudflare"]}} {"correlation_1d":"95256555-ec98-4541-b9za-adta/Sboyeab","trace_10":"C/AD8565-905t-4604-9405-0e5b551e554540• suppont Dally • In 3h 20m100% C47 • Mon 11 May 11:40:29AskJiminnyReportActivityServiceTestvCascade• Hubspot Rate Limi+0 ..• DAILY LIMIT 429 tires → cache pooulated tor retry after seconds (clamped to 600 = 10 min in parseRetrvatter)• All workers fast-fail via cache for 10 min• Anter 10 min, cache expires: one worker probes, geis DAILY LIMIl again, repopulates cache• Jobs hit retryUntil deadline at T+30min → permanent fail naturallyThe only thing the explicit $job->fail() saved was ~20 minutes of cache-blocked fast-fails. Those are basically free (one Redis GET each). Not worth the extracompiexity, extra excepton neid, extrd oranehConclusion: drop the DAILY LIMIT special case. Drop policy from RateLimitException. The retry-after value alone is sufticient.2. Why MIN_RETRY_DELAY = 5 ?l added it to reduce queue churn. It's wrong - let me explain why:• HubSpot's signal is retry_after = 1 for SECONDLY. By overriding to 5, we ignore the actual signal.•he cache circui-breaker a ready preventsiwasted AP calls he min=delay was trvind oalso prevent wasted queue cycles, out that sa diiterent prob em Withh?alnetencollmei lumerer• With MIN_RETRY_DELAY = 5, by the time a job retries, the cache TTL (1s) has long expired → the worker makes a fresh API call → if multiple workers retry neareach other, thundering herd returns• With MIN_RETRY_DELAY = 1 + jitter 0-5s → jobs spread across a 1-6s window, cache absorbs them, only one or two probe HubSpot per cycle.The right approach: honor the HubSpot signal (1s) and rely on jitter for spread.3. The empty catch (RateLimitException Se) { throw Se: }ladded it to prevent the next catch (Throwable Se) from generatina a 5-50KB stack-trace loa on everv rate-limit retry, PHP's catch orderina means specific-before-general, so l needed this to come first.You're right that it looks weird. A cleaner pattern is a single catch with conditional logging:• php} catch (Throwable $e) {if (! Se instanceof RateLimitException) {Loa::error MatchActivitvormbatal Falled to match ORM data'. ..:throw seSame outcome, more readable, no dead-looking throw se branch.Implementing all three changesRateLimitException.oho• Client.php+7 -12Now tho middlowaro — dron DAIl V LIMIT branch dron MTN PETPY DELAY t01 koon littor.Sur HandleHlubspotRateLimit.phpJ 638 tokens3 files +67 -37)Accent alliAsk anvthina (&4L)Claude Onus 4.7 MediumW Windsurf Toams 18.1 (15 charc)lUTE.Rio 4 spaces...
|
PhpStorm
|
faVsco.js – HandleHubspotRateLimit.php
|
NULL
|
16319
|
|
15779
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
PhostormVIewINavicareCodeLaravelKeractorFV faVsco.js?9 JY-20725-handle-HS-search-rate-limitProiect v>M lustCalli© HubspotSyncStrategyBase.phpCachedcrmservicebecorator.ongm PushSummarvToCrm> D RingCentral>• ZoomPhone© ActivityChangeCatego© AssignOwnership.php© ConferenceCrmMatch© DeleteActivities.php© DeleteTeamChurnData© DeleteTeamsRetentior© HardDeleteActivities.p© HardDeleteActivity.ph©) MatchActivitvCrmData.pnp© ermactivilyservice.phgc MatchermData.onoc) keindexroraccouniJo!© ReindexForContact.JotC) ReindexForGrouoJob.r© ReindexForLead.Job.pl(C) ReindexForOpportunit@ ReindexForUser.Job.oh(C) RetrvActivitvsvnc.loo.@ SyncActivity.php(C) TeardownStream.ohoM Ai AutomationM A Renorts> Audiov AutomatedRenorts(c) ReauectGenerateAck.1© RequestGenerateRepo© SendReportExpiringSo(C) SendPenart lnh nhn.© SendReportMailJob.ph© SendReportNotGenera> @ Calendarv D Crmv 0 Delete© DeleteAccountJob.© DeleteContact.Job.r€ DeleteCrmEntityTra© DeleteLeadJob.phpC) DeleteOpportunitvJ© VerifvActivitvCrmTa>MHubspot> M Salesforce© AutoloaDelavedToCrmC) CheckAndRetrvRemott© CreateFollowunActivit.C) CreateNotes.oho(C) MatchActivitvCrmbateuse ILLuminate \Contracts \Queue \ShouLdBeUnique;use "Luminate contracts Queve Shoul doveve:use Illuminate Database Connection;use ilLuminate Queue interactsWithQueue:use Illuminate\Queue\SerializesModelsuse iluminate Suoport Facades Loa:use Jiminny Component \Queue \Constants;use Jiminny Excentions InvalidArgumentExcentionsuse Jiminny Jobs \Job;use Jiminny (Jobs \Middleware \HandleHubspotRateLimit;use Jiminny Models Activity:use Jiminny Models\Crm\Configuration;use Jiminny Repositories ActivityRepository:use Jiminny\Services\Crm\CrmActivityService;use Psr\Container\ContainerExceptionInterface;use Psr\Container\NotFoundExceptionInterface;use Throwable:class MatchActivityCrmData extends Job implements ShouldQueue, ShouldBeUniqueuse InteractsWithQueve:use SerializesModels:public int Stries = 3:10 usagesprivate int Sactivitvid:private ?Confiauration sfronConfiauration:orivate hool SremoteSearch.public function middleware: arrayt...}public function __construct(int SactivityId,?Configuration $fromConfiguration = null,bool SremoteSearch = false,public function uniqueldo: stringf...}public function timeouto: intf...}1 usage(C) SaveActivitv nhn(@ SaveTranccrintion nhrpublic function uniqueFor0: intf...}lelner Code will hoin INF to underctand vour Laravel ann code II Generate II Don't Show Anvmore (todav Q•08)© ProspectCache.phpС Cпескапокetrукemotematch.ong=custom.log~=laravel.logA SF (jiminny@localhost]4 HS_local [jiminny@localhost]# console [PKob.# console leu)# console [slAGiNG)22NN[2026-05-07 14:21:15] local.INF0: [Hubspot] DEBUG Getting headers {"neaders".?"Uace":L"Inu,or May 2020 14.21.15 6Ml"Jn"Transter-Encod1nq":"chunked")."Connection":"keep-alive""CF-Ray" : ["9f80deb8db60dc3a-SOF"],"Strict-Transport-Secur1ty":"max-aqe=31536008* 1ncludeSubDomains: preload")n"Vary"*"orioin.accent-encodino""access-control-allow-credentials": ["false"]."server-timing": ["hcid;desc=\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\","x-hubspot-correlation-id":["019e02d0-6fd8-7812-bdba-885b7ccb3ee3"],"Set-Cookie":["__cf_bm=SrUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-1.0.107-May-26 14:51:15 GMT; domain=.hubapi.com; Http0nly; Secure; SameSite=None"],"Renont-To"."","endpoints\":[{"unl".httns:la.nel.cloudflane.com./renon+W/v42c=NVA1cVTPQfVm32anS0#xVF/sd2RN\"group)":\"cf-nel\","max_age\":604800}"],"NEL":["{\"success_fraction\":0.01,reportto. "cr-nel,"max age":604800}"]"Server": ["cloudflare"]}} {"correlation_1d":"95256555-ec98-4541-b9za-adta/SboYeab"."trace_10":"C/AD8565-905t-4604-9405-0e50551e5545supoont Dally • In 4h 40m100% L2• Mon 11 May 10:14:28AskJiminnyReportActivityServiceTest vCascadeHubspot Rate Limit Re+0 ..(a) Silent rate limit treated as "no contact found". The job moves on, calls matchByPhone(), then matchByDomain(), etc. - making more HubSpot API calls underrate limit pressure. We're amplitving the problem instead of backing oft.(b) Wrong CRM matching outcome. A 429 is now indistinguishable from a legit "email not in HubSpot" response. The activity gets matched to wrong (or no) CRMdata and is persisted that way —(c) MatchActivityCrmData's middleware is a no-op for this path. You added HandleHubspotRateLimit to the job - but since getContactByEmail swallows the429, the middleware never sees a RateLimitException. The middleware only fires for code paths that go through executeRequest (), which today is only search().So for the email-match flow (the most common path in CrmObjectsResolver: : resolveFromCall), the rate limit handling is effectively dead code(d) getContactById, getOpportunityById, getAccountById have the same problem. They catch the typed ApiException and rethrow it (not wrap as RateLimitE›ception). And batchRead0biects catches evervthing in handleBatchErroro and rethrows as CrmException, also losina the 429 signal.The fixWrap the SDK calls in executeRequest() so they convert 429 → RateLimitException consistently. Sketch;•phppublic function getContactByEnail(string semail, array sfields = (l): arraytry{fn 0 = Sthil->getNewInstance()->crm()->contacts()->basicApi(->getbyld(Semall, 1mplodel, Stields), null, talse,'email')return ('id' => Scontact->getId(), 'properties' = $contact->getProperties()]:} catch (RateLimitException Se) {throw $e;middleware handle} catch (ContactApiException Se) {/ genuine 404 / not-found: current behavion$this->log->info('[Hubspot) Failed to fetch contact', [...]);Note executeRequest's current 1sHubspotRateLimt already includes contactApiException, so this works as-is - you just need to actually route the call throughit. Same pattern for getContactById, getOpportunityById, getAccountById, get0wners, batchRead0bjects, and the makeRequest() raw HTTP path.Why this matters with the rate-limiter increment in MatchCrmDataYou moved thisMatchCrmData.nho:112-113)ScrmObjects = $crmObjectsResolver->resolveFromCall($this->crmService, $this->calU);SrateLimiter->incrementRequestCount(Sactivity->getCrm()):resolveFromCall may issue 2-4 HubSpot API calls (email + phone + domain + identifier matches). The job-level limiter still counts that as 1. Today this was OKbecause there was no client-side limit at all. Once the new reactive limit is in place:• If any inner call 429s, RateLimitException bubbles middleware releases the job → incrementRequestCount is never called for that attempt• The job-level counter stays low; the next attempt fires immediately when middleware delay expiresNet effect. the client@level reacfivellimitlis doinc.the reallbackoff.thelioh-levelllimiterlis.now.amuch.coarser.secondarv.quardTihistis/iine.but.means.the.DrovderRateLimiter quota numbers should probably be relaxed (or the increment moved closer to each underlving APl call. e.a. inside executeRequesto itselfStrong suggestion: if you want the job-level limiter to remain meaningful, increment it from inside Client:: executeRequest() once per actual HTTP call, not onceper resolveFromCal1(). Otherwise the two lavers are calibrated against different units (1 iob vs 1-4 HTTP calls) and tunina becomes quesswork!Ok now I simplified it. There is only passing through aClient.php#L75-95 if it is call from @HubspotPaginationService.php#L26-84 And only place where thePateLimitExcention is handled is in @MatchActivitvCrmData.oho Review it carefullv. Is there some potential issue about this flow. What will hannen with antheClaude Qnus 4.7 MediumW Windsurf Toams 26.1 (6809 charc 194 line hreakc)lUTE.8io 4 space:...
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
15779
|
|
15015
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
PhostormVIewINavicareCodeLaravelKeractorFV faVsco.jsroledey+.© HubspotWebhorv @ Pagination© HubspotSyC HuospotraginatCloseclose oter laosClose All Tabs In Groupclose unmoaitied laos in GroupCachedcrmservicebecorator.onp© ProspectCache.phpС Cпескапокetrукemotematch.ongC Paginationcontig.onp natchacui(C) Paginationstate.•_ Prospectsearchstr> D Redisv D ServiceTraits© OpportunitySync+ SyncermEntities© SyncFieldsTrait./T Writecrmtrait.p•DUtsWeohook© BatchSyncCollectorC) BatchSvncRedisSerl© Client.php© ClosedDealStagesS© DealFieldsService.f© DecorateActivity.pr©FieldDefinitions.phf© FieldTypeConvertel(0) HubsnotClientinter(C) HubsnotTokenMan©Payloadbullder.ono• RemoteCrmObjectn• ResponseNormalizec) service.ono© SyncFieldAction.ph© SyncRelatedActivityc) WebhooksyncBatcIntegrationApp› Accessors•D ApI• contio> DDTO•D Filtersaobs> D ProspectSearchStr: 105)• ServiceTraitsC) Dataclient.oho© DecorateActivity.pt 134C LocalSearch.nhn© LocalSearchinterfac 135© RemoteSearch.php 153© Service.phpv D Listeners© ConvertLeadActivit 161©PurgeLookupCache> Metadata• M Miaration* RateLimitexception.pngClose Tabs to the RiahtCopy Path/Reference…..m A12 ^ |# Split Rightsolil anc Move KicntB Split Downsolit anc Move DownMove to Opposite GroupOpen in Opposite GroupChange Splitter OrientationUnsolispocexcepcion,KenenvacroexcepcionyPin TabOpen lab in New windowConfigure Editor Tabs...idExceotionBookmarksOverride File TypeneratordRuniÔ DebugMore Run/DebugOpen InLocal HistoryRename File..Create Gist...ion(PaginationState $state, int $teamId): boolf...}1usageprivate function handlePaginationStrategy(array spayloadarray $defaultFilter,raonaclonstare sscace.int $resultsPerPage,int Steamid): array f..private function shouldSwitchToKeysetPagination(PaginationState $state, int SresultsPerPage): boolf...}private function validateTokenIfNeeded(CLient Sclient. PaginationState Sstate)• voidf...?nnivate function eyecuteSearchRenuestment Scilfient strina Sohiectivne, annav Snavinad. PaginationState Clelper Code will help IDE to understand your Laravel app code. // Generate // Don't Show Anymore (moments ago)E custom.log xA SF jiminny@localhost]A HS_Jocal (jiminny@localhost]# console [PKob.# console [euJ# console [slAGiNg)[2026-05-07 14:21:15] Local. INFO: [Hubspot] DEBUG Getting headers {W19лV"neaders".?"Uace":L"Inu,or May 2020 14.21.15 6Ml"Jn"Concent-lvoe". "apolicacionison charser=utt-on"Transter-Encod1nq":"chunked")."Connection":"keep-alive""CF-Ray" : ["9f80deb8db60dc3a-SOF"],"Strict-Transport-Security":["max-aqe=31536000: includeSubDomains: preload"].accent-encodino""access-control-allow-credentials": ["false"],"server-timing": ["hcid;desc=\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\","x-hubspot-correlation-id":["019e02d0-6fd8-7812-bdba-885b7ccb3ee3"],"Set-Cookie":["__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtmOY-1778163675-[IP_ADDRESS]-May-26 14:51:15 GMT; domain=.hubapj.com; Http0nly; Secure; SameSite=None"],"Report-To":["{\"endpoints)":[{\"urz\":\"https:\V/\V/a.nel.cloudflare.com\\/report\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RW\"group\" :\"cf-nell",\"max_age\":604800}"],"NEL" : ["{\"success_fraction\":0.01,\"report_to\":\"cf-nel\",\"max_age\":604800}"],"Server": ["cLoudflare"]H} {"correlation_1d":"95256555-ec78-4541-b9za-adta/SboYeab"."trace_10":C/AD8565-905t-4604-9405-0e5b551e5545"CascadeNew Cascadec, HubSpot CRM Call ReviewC Investigating Rate Limit Errors© HubSpot Rate Limit ReviewReview+ « CodeC AdantiveSO lыoDally - Platrorm • In 3om100% Lz•8• Mon 11 May 9:09:14AskJiminnyReportActivityServiceTestv+0 ..Cascade CodexKick off a new project. Make changesacross your entre codedase.WN Windsurf Toams 26-21UTF.80 +]f?4 spaces...
|
PhpStorm
|
faVsco.js – HubspotPaginationService.php
|
NULL
|
15015
|
|
15167
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
PhostormVIewINavicarecodeFV faVsco.js?9 JY-20725-handle-HS-search-rate-limitroledeyC) HubsootPaginationService.ong© SyncRelatedActivityManager.php© BatchSyncCollector© HubspotSyncStrategyBase.phpCachedcrmservicebecorator.onp© ProspectCache.phpe balchsynckealsseo cllent.onp© ClosedDealStagesS © MatchActivityCrmData.php© ermactivilyservice.phpDealrielasservice.gc)Decorateacuivilv.or© FieldDefinitions.phr10.02.23 VasilevC) FieldT vpeconvertee Hubspotclientinterl11.06.24 Stamatov9.11.2323.10,23 Stamatovc) Hubspot TokenmanC) PavloadBuilder.phpC) RemotecrmobiecthP ResponseNormalize23.11.23 StamatovC) Service.ondC)SvncFieldAction.on21.11.2321.11.23C) SvncRelatedActivit21.11.23C) WebhookSvncBatclv MintearationAor6.11.236.11.22M Acceccors• DAp)> D ConfigD DTO> D Filters611 22811 22611 22112_ Joos• M ProcnectSoarchStreW sevice lraits© DataClient.php30.09.24 Paoazov© DecorateActivity.ph6.11.23c Localsearch.one© LocalSearchInterfac 6.11.23© RemoteSearch.php21.11.23 Stamatovc) Service.php6.11.2322.11.23 Stamatovv W Listeners© ConvertLeadActivit 21.11.23 Stamatov@ PuraeLookupCache 21.11.23 Stamatov> M Metadata24.01.25 Paoazov> Miarationi21.11.23 Stamatova Pioedrive21.11.23 |v Salesforce• # Fields|> MOnnortunitvMatche | 6.11.23M OnnortunitvSvneSti6.11.23> M ProsnectSearchStri 6.11.23• M ServiceTraitc6.11.23C) Client nhr611250Л 10(C) DecorateActivitv.nh. Delete@biectsTrait7.05.1950110© FieldDefinitions.php© PayloadBuilder.php© Profile.php70510 ival() QuorvRuildor nhr10.06 20 Crahamclass Service extends Baseservice 1mplementsm A7 A48 X1 ×33 21 A1666 G >bulkaddPlaybackurLTodescr1pt1on(array ScrmUpdatedata: arrav.....• n bulkAddPLaybackURLToDescriptionRequest(array $payload, bool Sretry = true): bool17141715have secondly rate limit error, then retry request after 1 second1717 @17181719searchCallByRecordingURLToken(string $playbackURLToken, bool Sretry = true): arraSthis->payLoadBuilder->generateSearchCallByTokenPayload(SplaybackURLToken);1721er->info('[HubSpot] CRM Search by playback URL token requested', [=15E191/24t' => $payload,1IZOse = Sthis->client->search( objectType: 'calls'. $payload):ception Sexception) {1728logger->info('[HubSpot] Search by playback URL token failed'. [aybackUrLloken' = SplaybackurLloken.173017311752ason' => sexception->qetmessaqeo.=29173₫trv)<epd seconds: :17311737 Curn Sthis->searchcal BvRecordingURLToken(SolavbackURLToken.retry: false):174217431742171512141v(Snesnonsel'results'l ? • Srecnonsef"resultstlial»nscription for the activity.› n generateTranscription(Activity Sactivity): string{...}lelner Code will hoin INF to underctand vour Laravel ann code II Generate II Don't Show Anvmore (16 minutes aao)Dally - Platrorm • In 21h100% S2. Mon 11 May 9:24:24AskJiminnyReportActivityServiceTest v+0 ..=custom.log~=laravel.logA SF (jiminny@localhost]4 HS_local (jiminny@localhost]# console [PKOb.# console leu)# console [slAGiNg)2026-05-07 14:21:15] local.INF0: [Hubspot] DEBUG Getting headers {Jate": ["Thu,07 May 2026 14:21:15 GMT"]"concent-lvoe". "apolicacionison charser=utt-o",'Transfer-Encoding": ["chunked"]."CF-Ray":"9t80deb8dbo0dcsa-SOF"*CF-Cache-Status": L"DYNAMIC"J,"Strict-Transport-Security":L"max-age=31536000; incLudesubbomains; preload"J,acceot-encodino""access-control-allow-credentials": "false"]."server-timing": ["hcid;desc=\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\",cfr:desc= "9f80deb8e7c6dc3a-TAD ""."x-content-type-options": ["nosniff"l,"x-hubsoot-correlation-id":"019e02d0-6fd8-7812-bdba-885b7ccb3ee3"7."Set-Cookip"." c+hm-Stlirtd0aXVr.kSandas6hzVVKhzTn0BidvMaheCtmoV-1778163675-100.7.107-May-26 14:51:15 GMT; domain=.hubapi.com; Http0nly; Secure; SameSite=None"]."Renont-To".f",'endnaints".lunl". "httnc:a.nel.cloudflane.com./nenon+/v42c=NVA1cVTPQfYm32anS0#xVF/sd2PWP'group\":\"cf-nel\",'max_age\":604800}"],VEL":["success_traccion.0.0lmreporcco. "cr-nel,'max age":604800}"].Server":["cloudflare"]}} {correlation_1d":"95256555-ec98-4541-b9za-adta/SboYeab",crace_10":C/AD8565-905t-4604-9405-0e5b551e5545CascadeHubspot Rate Limit Reclient->searcht) can now throw RateLimitexception (wnich extends LogicException, not Badkecquest . The catch block only catches BadRequest . RateLimittxception will bubble out of the Cache:: remember callback - which then caches the exception throw-path with the bad result (Laravel's Cache: : remember doesnot cache exceptions, but the exception will propagate up uncaught past anything expecting find to return an array). Any caller of find the CRM prospectsearch used in the Ul/extension) will get an unhandled exception. This is inconsistent with the intent — those callers don't have Hand leHubspotRateLimitmiddlewarez. searchcaulsrorper1odbypage searchcallsrorper1od searchcallbyRecordingURLToken eat the RateL1m1texceptionAll three catch Exception:• Service.php:1584} catch (Exception Sexception) {RateLimitException extends LogicException which extends Exception ? Let me verify:Searched claRateLimitException extends LogicException extends \LogicException extends \Exception. So all catch (Exception $e) blocks in Service. php will swallow theKateLimicexcepcion - rate limit events are silenty treated as call-not-round and processing contnues, losing the ability to back on. This includes• searchCallsForPeriodByPage → calls sleep(1) and retries once with no back-off awareness• searchcal BvRecordingURLToken → same patterni• The do-while loop in getCalls() (line 1561) - continues to next page as if the page returned emptyapp/Jobs/Crm/MatchActivityCrmData.php2MatchActivitvCrmhata hac HandleHubsnotPatel imit middleware hut the actunl CPM call nath mav not throw Patel imi+Fycention>undatecrmDatao, which eventuallv calls matchExact vBvEmailo → detcontactBvEna1Lo. That method doesnot go through executeRequest — it uses the sDK directly with no rate limit wrapping:• Client.php:503-523puotze tunczzon getcontacttyimazttstring senally array sizetos E ll: arratry{Scontact = sthis->aetNewinstanceo->crmo->contactso->oasicao1o->oetBvld..The middleware is attached but the underlying path doesn't propagate RateLimitException for that method. It will only fire if something along the way uses executeRequest search. The middleware is only partially eftectiveAnetAssociationsData catchesPateLimitEycent.ion.and.re-throwsit-but.the.wrannedcatch//Sxcentzion_se/_that follows.would.still.catch.it.before.there-throw if the order were different. Order is currently correct, but the separate re-throw for RateLimitException is redundant boilerplate since the next catch is\Exception - the intent is correct but it means callers of getAssociationsData will get a RateLimitException thrown without the HandleHubspotRateLimitmiddlleware being in that call oath. Worth contirmina the callers handle it.5. batchRead0bjects calls $this->ensureValidToken() but does NOT go through executeRequest ()#Client.php:282-293Sthis->ensureValidToken():trvfSresponse = Shatchconfial'an'=readShatchReadRequest)A 429.from the batch APlwillthrow aDealAn#Excentzion/GontactAn/Excent.ionetc..but since.hatchRead0biectswrans.in.handleBatchFrror@_which.rethrows.asCrmException - the RateLimitException will never be raised for batch operations. This is inconsistent with search(), where 429 - RateLimitExceptionAsk anvthina (&4L)+ « CodeC° AdantiveW Windsurf Team1726•661io 4 space:...
|
PhpStorm
|
faVsco.js – Hubspot/Service.php
|
NULL
|
15167
|
|
15438
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
+FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelplah|meet.google.com/mie-gawc-dsi?authuser=[EMAIL] Yankov (Presenting)Jy 20451 ServicXJmim8 PromoO Attent0 Cals -AtsenlCa TranspJmine* MCPIhttps://fiminny.atlassian.net/jira/software/c/projects/JY/boards/37?selectedissue=JY-205668E Datadog* Clauón• crоeс.Platform Team %Q Search boardP JY-TLOTT HST-Z0SAI Review - Q1 - Summary/Action items/Key PointsIn Dev vi Improve StoryAJ Panorama for CallScoring n ou(AUTOMATED AT SGORINGKedoy torDuVA Jy-20301DetailsSetup test coverage forProonoricherMAINTENANCISBacklogE 3-199511****=DescriptionRun AI evaluations for all Al services against the latest versions of trending LLMs and store the results in Google Drive. Wewant to see how our features are tracking comparing to new models that are coming out.• Summary on Call• Action Items on Call |*Key Points on Cal• AA on Call•AAOU• Identity participants foe mono calisAssignee3 Stellyan GeorgievAssign to meReporter& Galya DimitrovaUpdate the test-set. Remove the deleted activities.DevelopmentQ Open with VS Code1 branch14 commits1 pull request4 bullds6 days agoMEROEOSubtasks|••+66% DoneReleases) Productiont7 See all deploymentsWorkPrlocity= MediumCh JY-20568 CLONE - Action items evaluation= Medium% JY-20569 CLONE - Key points evaluaton= Mediumi Stellyan...i2 Stellyan...8 Unassign...ComponentsPlatformSub-ProductNowOdooDaily - Platform - now100% L2Mon 11 May 9:50:129C DerappіoL Al BookmarxsGroup: QueriesAI Reports > Empty pagedesign and promotonAJREPORTSDeployed-20372 1 02 •*** = |JOK V ALUICDeployed0 -20726 |1 • ****=Allow users to delete SSand Panorama promptswhen those are used in a...AarokisDeployedRelease AJ PanoramaAJREPORTSR -20740 05 11 ...0:summary in the CRMNikolay IvanovNikolay Yankov4 othersAneliya Angelova9:50 AM | Daily - Platform→Lukas Kovalik1:45...
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
15438
|
|
15469
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
+FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(ah)meet.google.com/mie-gawc-dsi?authuser=[EMAIL]*O Attent0 Calls -Ca Transp*xIDaily - Platform - now100% L28• Mon 11 May 9:52:249**Nikolay Yankov (Presenting)Edit1PlalC Jy 20451 Servic© PlanhaX Jmim83 Promehttps://fiminny.atlassian.net/jira/software/c/projects/JY/boards/37D Projects4 55H• Home | SalesforcePlatform Team %Q Search board2800018EpicvТуре ~Quick filtersAJ Panorama for CallScoring n ou(AUTOMATED AT EGORINGKowoy torDUV( Jy-2036125 ****=Upgrade to PHP 8.5PHP &S UPGRADEIn DeyЗ 3-18001|310a0.Smart Instant Nudge Pre-TesoringCOST-EFFECTIVE AND FASTER NU.Code Review0 3:.20123 15 1 •= 0Setup test coverage forProphet in SonarMASNTENANCSBacklog#3-109511 ***= 3Al Review - O1-summary Acoon kems,NeyPointsGROWTH - MAINTAIN OUR CONINIn Dev0 20506 2 • ****= 3(POC) Jiminny MCPConnector EJIMEN WEYCOMRESIOIn Progress• 20625 10 1 •.0o .ehchiineonoehehubspot accounts/contactsPLATFORM STARRLTTYIn DevC JY-20725* MCPI0 DerComplete sprintSync opportunities withoutCCATFORM STARTUTYIn QAE -20352 (5 11 •* = OMon 11 May 9:52• эррібкL Al BockmarxsGroup: QueriesAI Reports > Empty pagedesign and promotionAJREPORTSDeployed0 -20372 |1 П •***=Grok via AzureDeployedД-207261 0 •**=|Allow users to delete SSand Panorama promptswhen those are used in a...AJREPORTSDeployedX8 -20770 /1 01 .0*0 =Release AJ Panoramareports to customersAJREPORTSDeployed0 -20740 05 1) •***=Wrong formatting forsummary in the CRMNikolay YankovNikolay Nikolov4 othersStefka Stoyanova9:52 AM | Daily - PlatformLộ3Lukas Kovalik3:58...
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
15469
|
|
16879
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
FinderFileEditViewGoWindowHelp•00DEV (docker)DOCKERO ₴1DEV (docker)882APP (-zsh)|• жзmasterJY-20818-move-AJ-reports-to-separated-datadog-metricJY-20773-fix-automated-reports-user-pilot-trackingJY-20157-AJ-report-not-send-notificationJY-20508-notify-before-AJ-report-expirationJY-20372-ai-reports-promotion-pagesJY-20352-sync-opportunities-without-a-local-owner-user-id-is-nullJY-20738-debug-AJ-tracking-UPJY-18909-automated-reports-ask-jiminnyJY-20692-fix-integration-app-[API_KEY]@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ devroot@docker_lamp_1:/home/jiminny# ]>0.-zshlabol• Support Daily • in 2h 22 m84-zsh885100%8• Mon 11 May 12:38:50181screenpipe"O ₴6DEV...
|
PhpStorm
|
faVsco.js – DeleteCrmEntityTrait.php
|
NULL
|
16879
|
|
15653
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
Firefox FileEditViewHistoryBookmarksProfilesToolsWindowHelp<DEV (docker)• *з.• Support Daily - in 4h 53 mDOCKER881DEV (docker)882APP (-zsh)masterJY-20818-move-AJ-reports-to-separated-datadog-metricJY-20773-fix-automated-reports-user-pilot-trackingJY-20157-AJ-report-not-send-notificationJY-20508-notify-before-AJ-report-expirationJY-20372-ai-reports-promotion-pagesJY-20352-sync-opportunities-without-a-local-owner-user-id-is-nullJY-20738-debug-AJ-tracking-UPJY-18909-automated-reports-ask-jiminnyJY-20692-fix-integration-app-[API_KEY]@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ devroot@docker_lamp_1:/home/jiminny# ]-zsh84-zsh885100% <78• Mon 11 May 10:07:16181screenpipe™#6DEV...
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
15653
|
|
16410
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
Firefox FileEditViewHistoryBookmarksProfilesToolsWindowHelpDOCKERO 81DEV (docker)882APP (-zsh)DEV (d)• хз.masterJY-20818-move-AJ-reports-to-separated-datadog-metricJY-20773-fix-automated-reports-user-pilot-trackingJY-20157-AJ-report-not-send-notificationJY-20508-notify-before-AJ-report-expirationJY-20372-ai-reports-promotion-pagesJY-20352-sync-opportunities-without-a-local-owner-user-id-is-nullJY-20738-debug-AJ-tracking-UPJY-18909-automated-reports-ask-jiminnyJY-20692-fix-integration-app-[API_KEY] laysJY-20698-fix-SF-activity-types-on-new-playbookJY-20543-AJ-report-trackingJY-20384-handle-auto-sync-with-no-access-to-event-typeJY-20458-ask-Jiminny-user-definitionsJY-19666-fix-import-contacts-account-associationJY-19666-HS-import-contacts-and-accounts-batch-jobJY-20458-Ask-Jiminny-ReportsJY-20200-batch-update-CRM-objects-SalesforceJY-19666-HS-webhooks-add-contact-and-companyJY-20348-trigger-setup-DI-layout-on-team-creationJY-20326-refactor-info-message-in-commandJY-20317-fix-auto-log-delay-issue-on-all-channels-disabledJY-20312-remove-on-update-change-last-synced-at-crm-configurationsJY-20306-SF-skip-auto-sync-for-task-based-playbookJY-20192-remove-deleted-team-from-saved-search-filtersJY-20197-import-opportunity-batch-jobJY-20293-enable-status-field-for-pipedrive-dealsJY-20191-remove-commands-interactive-promptsJY-20118-change-default-sync-strategyJY-20183-add-cache-on-auto-log-delayJY-20197-add-import-opportunity-batch-job20118-hs-opportunity-make-webhook-strategy-defaultJY-20118-make-default-hs-opportunity-sync-strategy-webhook-basedJY-20196-handle-opportunity-without-noteJY-20118-improve-opportunity-importJY-20189-handle-activity-search-on-deleted-groupsJY-20145-filter-out-converted-leads-when-matchingJY-20150-skip-push-summary-on-summary-ready-1f-autologJY-20132-fix-note-encodingJY-19792-clean-logslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-Lirroot@docker_lamp_1:/home/jiminny# ]•HomeDMsActivityFilesLater..•Moreal]Support Daily • in 3 h 11 m100% <78• Mon 11 May 11:49:25ED→Describe what you are looking forJiminny ...Stefka Stoyanova6 0Cnsmechuus# general# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of_jimi...7 Untitled+0 Direct messagesa. Stefka Stoyanova€. Vasil VasilevNikolay Ivanov®. Galya DimitrovaAneliya Angelova, .... Stoyan TanevVes®. Aneliya Angelova& James GrahamE Lukas Kovalik y...:: AppsJira Cloud• MessagesC Files@ UntitledLukas KovalK k-44 PMблагодаряTuesday, April 28th~Today ~Stefka Stoyanova 10:08 AMЛукаш, щом пре-рефайнмънта и рефайнмьнтаще са само за МСР ако искаш не идвай да сигубиш времетоLukas Kovalik 10:12 AMда, няма да идвамStefka Stoyanova 11:35 AMЛукаш, ще сложиш ли естимейт наhttps://jiminny.atlassian.net/browse/JY-20818Jira Cloud -Move Ask Jiminny reports to separate...Bug JY-20818 in Jira CloudStatusDeployedPriority= MediumAssigneeLukas Koval...As of today at 11:35 AMOpen in JiraSummariseLToastMessage Stefka StoyanovaGoogle Cale.........
|
PhpStorm
|
faVsco.js – HandleHubspotRateLimit.php
|
NULL
|
16410
|
|
15446
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelplah|meet.google.com/mie-gawc-dsi?authuser=[EMAIL] - Platform • now100% L28•Mon 11 May 9:50:569Nikolay Yankov (Presenting)FleEditSelectioncirciecicurse• sonarsnt |Ceu oм еxате -бminпиосе/послткр11 error_response json11 request jsoncrm-task-verification.md# HUBSPOT_WEBHOOK_WORKFLOW.md# INTERNAL_WEBHOOK_CONFIGURATION.mdnuoge-performance-analysis.ndM api.phpconsoe.ons• customer_api.phpsmocooed.one•*090000:0Q8• Mon 11 May 9:5011 activity-examole.json1) activities-listjson() toois-lstjson mesdoes › mep > 11 100ls-list.|s0n › () result › [ ]tools > () 0 › () inputSchema › () properties › () date_from(7 tools-list.json docs/11LP70U2025000000A"jsoorpc": "2,0",KNCESCOULIETERHLWDdescription search and brovse recoroto vosce catts and vioco beetungs (pnone catts, 200, Google Meet, Vacrosort Teass), Use "query" to search by wat was discussed - €.."Teseripon')* Seares by vwut vas discussed, Natural Lngunge or keyveres, Ecangless 'pricing ebjections, "conpetitor Salesterce nentienes', "BANT buéget discussion'.GatetrotLype! "strue"type"t "string""Return conversations that started on or before this date. IS0 8601 fornat (YMVY-vM-00).*|duration sin"t"description": "Mininun conversation duration in minutes.""description":SonarQubeЭтд +-15-reindex-streas-node(-hydrationор-аррortain Verpeetnaeoerceeundte-eorelieeiy ebeind-Queyerat.ion/COOte/ COAtA/ FoCKE/Cte. teActivityTrackoCcomasvd,sheportsCallbackService.phpcedReportsCallbackServiceTest.phpNikolay IvanovNikolay Yankov4 othersSteliyan Georgiev9:50 AM | Daily - PlatformLukas Kovalik• 2:30...
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
15446
|
|
16841
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
FinderFileEditViewGoWindowHelp•00DEV (docker)DOCKERO ₴1DEV (docker)882APP (-zsh)|• жзmasterJY-20818-move-AJ-reports-to-separated-datadog-metricJY-20773-fix-automated-reports-user-pilot-trackingJY-20157-AJ-report-not-send-notificationJY-20508-notify-before-AJ-report-expirationJY-20372-ai-reports-promotion-pagesJY-20352-sync-opportunities-without-a-local-owner-user-id-is-nullJY-20738-debug-AJ-tracking-UPJY-18909-automated-reports-ask-jiminnyJY-20692-fix-integration-app-[API_KEY]@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ devroot@docker_lamp_1:/home/jiminny# ]labol# Support Daily - in 2 h 27 m-zsh84-zsh885100%8• Mon 11 May 12:33:50181screenpipe"0 ₴6DEV...
|
PhpStorm
|
faVsco.js – custom.log
|
NULL
|
16841
|
|
15681
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Firefox FileEditViewHistoryBookmarksProfilesToolsWindowHelp<DEV (docker)• *з.• Support Daily • in 4h 52 mDOCKERO 81DEV (docker)882APP (-zsh)masterJY-20818-move-AJ-reports-to-separated-datadog-metricJY-20773-fix-automated-reports-user-pilot-trackingJY-20157-AJ-report-not-send-notificationJY-20508-notify-before-AJ-report-expirationJY-20372-ai-reports-promotion-pagesJY-20352-sync-opportunities-without-a-local-owner-user-id-is-nullJY-20738-debug-AJ-tracking-UPJY-18909-automated-reports-ask-jiminnyJY-20692-fix-integration-app-[API_KEY] laysJY-20698-fix-SF-activity-types-on-new-playbookJY-20543-AJ-report-trackingJY-20384-handle-auto-sync-with-no-access-to-event-typeJY-20458-ask-Jiminny-user-definitionsJY-19666-fix-import-contacts-account-associationJY-19666-HS-import-contacts-and-accounts-batch-jobJY-20458-Ask-Jiminny-ReportsJY-20200-batch-update-CRM-objects-SalesforceJY-19666-HS-webhooks-add-contact-and-companyJY-20348-trigger-setup-DI-layout-on-team-creationJY-20326-refactor-info-message-in-commandJY-20317-fix-auto-log-delay-issue-on-all-channels-disabledJY-20312-remove-on-update-change-last-synced-at-crm-configurationsJY-20306-SF-skip-auto-sync-for-task-based-playbookJY-20192-remove-deleted-team-from-saved-search-filtersJY-20197-import-opportunity-batch-jobJY-20293-enable-status-field-for-pipedrive-dealsJY-20191-remove-commands-interactive-promptsJY-20118-change-default-sync-strategyJY-20183-add-cache-on-auto-log-delayJY-20197-add-import-opportunity-batch-job20118-hs-opportunity-make-webhook-strategy-defaultJY-20118-make-default-hs-opportunity-sync-strategy-webhook-basedJY-20196-handle-opportunity-without-noteJY-20118-improve-opportunity-importJY-20189-handle-activity-search-on-deleted-groupsJY-20160JY-20145-filter-out-converted-leads-when-matchingJY-20150-skip-push-summary-on-summary-ready-1f-autologJY-20132-fix-note-encodingJY-19792-clean-logslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ devroot@docker_lamp_1:/home/jiminny# ]-zsh84-zsh885100% C8• Mon 11 May 10:08:21181screenpipe"#6DEV...
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
15681
|
|
16865
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
PhostormINavicarecodeFV faVsco.js°9 JY-20725-handle-HS-search-rate-linroledey© UserAutomatedReportsController.php(C) DeleteAccount lob 1l© SyncRelatedActivityManager.phpC DelerecontactJob.0 DeleteCrmEntityTraC DeleteleaaJoo.onpT DeleteCrmEntityTrait.php >С) Cпескапакеtгукemotematch.phgc Deleteopportunity( RateLimitException.phpc) Verivacuvitycrmi>@ Hubspot> C Salesforce© Client.phpphpidehelper.ph©) PaqinationState.phoC) MatchCrmData.php© CrmObiectsResolver.phc©) PaqinationConfia.php(c) AutoloaDelavedToermtrait DeletecrmentitviraitA2. vC) CheckAndRetrvRemoti© CreateFollowupActivitprotected function handleActivitiesSentitvIdField = $crm0biect->value ' id'.c) CreateNotes.oho© MatchActivitiesToNew 43(C) MatchActivivermDatal(E) [EMAIL] (Activity Sactivity) use (Sdispatcher, $logger, SentityIdField, ScrmObject, SemitEvent): vo:23Sstageld = Sactivitv->aetStage@?->getido:C) SaveActivitv.oho@ SaveTranscription.phpC) Setuolavout.oho© SyncActivity.php© SyncFieldMetadata.ph© SyncHubspotObjects.r© SyncLeads.php© SyncObjects.php© SyncOpportunitiesJob© SyncOpportunity.php© SyncProfileMetadata.p© SyncTeamFieldsJob.plSloaData = 1Sermihrect->value => Sthis->id.'activity' => $activity->getId.'emitEvent' => $emitEvent,SupdateData = [ContitvTdCio1d = nul1lror leaas and opporcunicles,also nululry the stace 10Concole yLog Xv Chanaes 10 files= env.local apolTJ0 + → Side-by-side viewer •8 35f036ac app/Exceptions/RateLimitException.phpDo not ignoreHighlight wordsx 13 B?C) Client.nho aon/Services/crm/=ubsoot© HandleHubspotRateLimit.php app/Jobs/Middleware(1HubsootClientintertace.oho aon/Services/Crm/Hubsootl© HubspotPaginationService.php app/Services/Crm/Hubspot/PaginationC.liminnvDebuaCommand.nho ann/Console/Commandsldeclare(strict types=1)namespace Jiminny Exceptionsphp logging.php config© MatchActivityCrmData.php app/Jobs/Crm©PaginationState.php app/Services/Crm/Hubspot/Pagination© RateLimitException.php app/ExceptigUinvercionod Silec Q filocclass RateLimitException extends LoqicExceptionE.env.nikilocal app=.env.other app© CanAccessAiReportsTest.php tests/Unit/Policies© CreateMockAskJiminnyReportResultCommand.php app/Console/Commands/RedCo fovinan inn nuhiAE ids.txt apdTraw sal query.sal app© SimulateWebhooksCommand.php app/Console/Commands/Crm/HubspotM+ WEBHOOK FILTERING_IMPLEMENTATION.md aprolner Code will hoin INF to underctand vour Laravel ann code II Generate II Don't Show Anvmore (todav Q•08)"suppont Dally • In zn 42m100% Lz• Mon 11 May 12:38:18AskJiminnyReportActivityServiceTest v=custom.log ^=laravel.logA SF (jiminny@localhost]4 HS_local (jiminny@localhost]# console [PKOb.A console [EU]A console [STAGING]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"],W19лV"x-nuDspor-correlac1on-1d:l "0ryeuzdu-or0o-/812-baba-oosl/ccbsees"Set-Cookie":["_cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-1.0.107-May-26 14:51:15 GMT: domain=.hubapi.com;: Http0nly: Secure: SameSite=None"]."керогс-10":"1enapolnus"."url":nccos:a.nel.cloudtlare.comredorcV4.S=NYALSVIPorymszorSUnxY24S0ZKh"aroup": "cf-nel"."max_age\":6048005"J,"NEL":["{"success fraction":0.01.N"report_to\":\"cf-nel\","max ade".604800-""Serven". ["cloudflare"1?}"correlation_id":"95236535-ec98-4541-b92a-adfa73b69eab" ,"trace id"."c7ab8365-903f-46d4-9403-0e5b551e3545"}Cascade0 HubSpot Rate LimitTnoughtsRead DeleteCrmEntitvTrait.phrSailindok what about adding something to @DeleteCrmEntityTrait.phpAsk anything (&AL)+ <> CodeClaude Opus 4.7 Medium2 differencescurrent versionpublic function construct(string Smessage ="private readonly int SretrvAfter = 1.nrowable sorevzous = nuuu.parent:: construct(Smessaae. 0. Sorevious):public function getRetryAfter(: intreturn max(Sthis->retryAfter, 1);W Windsurf Toams A6-1UTF.8io 4 spaces...
|
PhpStorm
|
faVsco.js – DeleteCrmEntityTrait.php
|
NULL
|
16865
|
|
17015
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
PhostormVIewavigatecodeFV faVsco.js°9 JY-20725-handle-HS-search-rate-Iiyroledey© UserAutomatedReportsController.php>M lustCalli© PlaybackController.php© SyncRelatedActivityManager.phpm PushSummarvToCrm© HubspotSyncStrategyBase.phRingCentral> M ZoomPhone© JiminnyDebugColO Acuvilycnangeudtege© HandleHubspoAssienownersnip.ong© ConferenceCrmMatchi© MatchActivityCrmData.php x © Job.php(C) CrmActivityService.phRateLimitException.pho© HandleHubspotRateLimit.phpC DeleteActivities.pnpC) Client.phpphpidehelper.php©) PaqinationState.phoC) MatchCrmData.php(C) CrmObiectsResolver.phoC) Delete leamenurnDataC) ProviderRateLimiter.ohoC) Delete l eamsketentioC) HaraDeleteAcuivities.oC PaginationConfig.phgpublic function retryUntilo:Datelimeinterfaceclass Matchactiv1tycrmbata extends Job 1mplements Shouldoueue. ShouldBeUniquelЛIV8AVc) keindexroraccouniJo(C) ReindexForOpportunit© ReindeyForlJser.Job.ph(C) RetrvActivitvSvnc.00.1l© SyncActivity.php© TeardownStream.php>M A AutomationM A Renorts> Audiov AutomatedRenorts© RequestGenerateAskJ© RequestGenerateRepo© SendReportExpiringSo© SendReportJob.php© SendReportMailJob.ph© SendReportNotGenera> @ Calendarv D Crmv 0 Delete© DeleteAccountJob.| 102© DeleteContactJob.r 102( DeleteCrmEntityTra 105© DeleteLeadJob.php 104© DeleteOpportunityJ 103@ VerifvActivitvCrmT: 106>MHubspot> MSalesforce© AutoloaDelavedToCrm 109© CheckAndRetrvRemoti 116© CreateFollowunActivits 113C) CreateNotes.oho@ MatchActivitiesToNew 113@ MatchActivitvCrmDate 114(6 Note@biect nhn(C) SaveActivitv nhnpubuac function backoffo: arravreturn 30 90. 18014*athrows_ContainerExcentionInterface*athrowsNotFoundExcentionInterface*athrows Sycention/Throwahl epublic function handle(ActivityRepository $activityRepository.CrmActivityService $crmActivityServiceConnection $connection: void 1Sactivity = SactivityRepository->findById(Sthis->activityId):if (Sactivity === null) {chrow new InvalldAroumencexcepcionl messag'[MatchActivityCrmDatal Cannot find activity.'):try {Sconnection->transaction(function ( use (Sactivity. ScrmActivityService. SactivityRepository) {Loq:: info( message:'[MatchActivityCrmDatal Starting CRM data matching'. ['activity' => Sthis->activ1tyld'remote search' => sthis-›remotesearch."set confiquration' => Sthis->fromcontzauration?->cetiido'lead id' => Sactivity->aetLeador->getido'contact id' => Sactivitv->getContact@2->get1d@.'account id' => Sactivity->aetAccount0?->getiidol'onnontunitv d' = Sactivitv->aetinnontunitv02->dettdorIstade id' = Sactivitv->ne+Stage07->aettdlo.Sthis->resetCrmMappings(Sactivity, SactivityRepository);Sthis->switchCrmConfigurationIfNeeded(Sactivity):hel0 # Support Daily - in 2 h 3 m100% 4. • Mon 11 May 12:57:26AskJiminnyReportActivityServiceTest v+0 ..=laravel.logA SF (jiminny@localhost]4 HS_local (jiminny@localhost]# console [PKob.# console leu)# console [slAGiNg)[2026-05-07 14:21:15] local.INF0: [Hubspot] DEBUG Getting headers {"neaders".?"Uace":L"Inu,or May 2020 14.21.15 6Ml"Jn"concent-lvoe. "apolicacionison.charser=utt-on"Transter-Encod1nq":"chunked")."Connection":"keep-alive""CF-Ray":L"9t80debödb60dcsa-S0F"J,"Strict-Transport-Secur1ty":"max-aqe=31536008* 1ncLudeSubDomains: preload")n"Vary":"orioin.accent-encodino""access-control-allow-credentials": ["false"]."server-timing": ["hcid;desc=\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\","x-hubspot-correlation-id":["019e02d0-6fd8-7812-bdba-885b7ccb3ee3"],"Set-Cookie":["__cf_bm=StUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-1.0.107-May-26 14:51:15 GMT; domain=.hubapi.com; Http0nly; Secure; SameSite=None"],"Renont-To".r"*"endnoints"."unl".httns:la.nel.cloudflane.com./renon+W/v42c=NVA1cVTPQfVm32anS0#xVF/sd2RN\"group)":\"cf-nel\","max_age\":604800}"],"NEL": ["1\"success_fraction\":0.01,"report to":|"cf-nel\"."max age":604800}"]"Server": ["cloudflare"]}} {"correlation_id":"95236535-ec98-4541-b92a-adfa73b69eab""trace_10":C/AD8565-905t-4604-9405-0e5b551e5545"Cascade0 HubSpot Rate LimiThought for 1sRead JiminnyDebugCommand.phpskJob directly instead of dealing with soft-deleted entities. When the rate limit hits, I should see the first few requests succeed or fail with 429, then the client logsthe rate limit response with retry after and policy, Redis caches the limit window, and subsequent reguests within that TTL hit the cache and throw RateLimitExceptionThe middleware catches that exception and releases the iob with a delav—loagina onlv on the first 3 attempts and then every 10th-while the iob re-queues with &1-6 second delay. This cycles until either the jobs complete or retryUntil expires. I shouldn't see stack traces from actual failures, verbose logs after attempt 3or hundreds of 429 responses ner second since the cache prevents APl calls L can verity this by checking Redis for the rate limit key fillterina laravellloas for therelevant tags, watching Horizon for job state changes, and optionally checking the HubSpot dashboard for API call counts.Now l'm thinking about what the user actually needs: helper methods in the debug command to dispatch batches of jobs and observe the rate limit state. I shouldcreate methods that simulate the MatchActivityCrmData storm, the VerifyActivityCrmlaskJob tan-out, and a way to inspect the current Redis cache state forportals. The user is also running Postman performance tests simultaneously to burn through the rate limit quota, so combining that with our job dispatchesWriting helper methods./M RateL.imitEycentionTest.nhn 156e/MHandleHubsootPateLimitTest.ohv +155lAsk anvthina (84L)+ « CodeClaude Onus 4.7 Medium•Reiect allWN Windsurf Toams 18.6UTF.8Accent allio 4 spaces...
|
PhpStorm
|
faVsco.js – MatchActivityCrmData.php
|
NULL
|
17015
|
|
15459
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
+FirefoxEditDaily - Platform - nowFileViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=[EMAIL] Yankov (Presenting)*0.Mon 11 May 9:51C Jy 20451 Servic83 Jmier8 PromoO Attent0 Cals -AtsentiCa TranspJmine* MCPI• эррібкhttps://jiminny.atlassian.net/jira/software/c/projects/JY/boards/37?selectedissue=JY-20625E Datadog* Claude3 CircleciSentry*xIL tasкInsights & Coachin…0 DerL Al BockmarxsPlatform Team %.Q Search boardsY-20739 / Q JY-20625[POC)Jiminny MCP ConnectorIn Progress -Ix Improve SpikeAJ Panorama for CallScoring nn 0o(AUTOMATED AT SCOREKewdyorDy( Jy-20301Setup test coverage forProonorocherMASNTENANCESBacklogE 3-10951DescriptionCustomers are starting to use AI tool (like Claude and GPT) to connect the information from all f their platform into oneplace. Which they then use to interrogate and perform different analysis on their data. We want to create a Jiminny MCPwhich will enable them to connect their Jiminny data to Claude/GPT.• create a POC to demonstrate the approach• determine form where the data needs to be fetched - long term we want to fetch everything from Elastic Search but inorder to release it faster we can consider a temporary mixed approach with the DBAI Reports > Empty pageDetailsdesign and promotonAJREPORTSAssigneeDeployed• Nikolay Nkolow8 20372 10 0000 =Assign to meJrOK Và ALUICReporter& Galya Dimitrova• Gctermine what tre uceracaton necos to de lacep in moo teout cmeritaro nthe epprosertnongo snood be contamed wan surtkd ane warye• product requirements - E Jiminny MCP ConnectorDevelopmentQ Open with VS CodeJ Create branch61 commits1 pull request1 build incomplete-20728 |1 • •***=Allow users to delete SSand Panorama prompts4 days agoorthAJREPORTSDeployedComponentsPlatform••+33% DoneRelease AJ PanoramaWOTKPriortyASSIOusMatимSub-ProductAdd optionsAJREPORTSDeployedR-20740 05 12 ..0•=ouy0/s. Ciedeyoe= м.IN DEV -Labels%JY-20743tools/listResearch Competitor's MCP= M.N...story pont estmatsummary in the CRM9:51 AM | Daily - Platform...100% 12Nikolay NikolovSteliyan GeorgievLukas Kovalik3:15Mon 11 May 9:51:42Nikolay lankov4 others...
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
15459
|
|
16910
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
FinderFileEditViewGoWindowHelp•00DEV (docker)DOCKERO ₴1DEV (docker)882APP (-zsh)|• жзmasterJY-20818-move-AJ-reports-to-separated-datadog-metricJY-20773-fix-automated-reports-user-pilot-trackingJY-20157-AJ-report-not-send-notificationJY-20508-notify-before-AJ-report-expirationJY-20372-ai-reports-promotion-pagesJY-20352-sync-opportunities-without-a-local-owner-user-id-is-nullJY-20738-debug-AJ-tracking-UPJY-18909-automated-reports-ask-jiminnyJY-20692-fix-integration-app-[API_KEY]@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ devroot@docker_lamp_1:/home/jiminny# ]>0.-zshlabol• Support Daily - in 2h 20 m84-zsh885100%8• Mon 11 May 12:41:001881screenpipe"O 86DEV...
|
PhpStorm
|
faVsco.js – MatchActivityCrmData.php
|
NULL
|
16910
|
|
15804
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
Firefox FileEditViewHistoryBookmarksProfilesToolsWindowHelp<DEV (docker)• жзSupport Daily - in 4 h 44 mDOCKERO 81DEV (docker)882APP (-zsh)masterJY-20818-move-AJ-reports-to-separated-datadog-metricJY-20773-fix-automated-reports-user-pilot-trackingJY-20157-AJ-report-not-send-notificationJY-20508-notify-before-AJ-report-expirationJY-20372-ai-reports-promotion-pagesJY-20352-sync-opportunities-without-a-local-owner-user-id-is-nullJY-20738-debug-AJ-tracking-UPJY-18909-automated-reports-ask-jiminnyJY-20692-fix-integration-app-[API_KEY] laysJY-20698-fix-SF-activity-types-on-new-playbookJY-20543-AJ-report-trackingJY-20384-handle-auto-sync-with-no-access-to-event-typeJY-20458-ask-Jiminny-user-definitionsJY-19666-fix-import-contacts-account-associationJY-19666-HS-import-contacts-and-accounts-batch-jobJY-20458-Ask-Jiminny-ReportsJY-20200-batch-update-CRM-objects-SalesforceJY-19666-HS-webhooks-add-contact-and-companyJY-20348-trigger-setup-DI-layout-on-team-creationJY-20326-refactor-info-message-in-commandJY-20317-fix-auto-log-delay-issue-on-all-channels-disabledJY-20312-remove-on-update-change-last-synced-at-crm-configurationsJY-20306-SF-skip-auto-sync-for-task-based-playbookJY-20192-remove-deleted-team-from-saved-search-filtersJY-20197-import-opportunity-batch-jobJY-20293-enable-status-field-for-pipedrive-dealsJY-20191-remove-commands-interactive-promptsJY-20118-change-default-sync-strategyJY-20183-add-cache-on-auto-log-delayJY-20197-add-import-opportunity-batch-job20118-hs-opportunity-make-webhook-strategy-defaultJY-20118-make-default-hs-opportunity-sync-strategy-webhook-basedJY-20196-handle-opportunity-without-noteJY-20118-improve-opportunity-importJY-20189-handle-activity-search-on-deleted-groupsJY-20160JY-20145-filter-out-converted-leads-when-matchingJY-20150-skip-push-summary-on-summary-ready-1f-autologJY-20132-fix-note-encodingJY-19792-clean-logslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ devroot@docker_lamp_1:/home/jiminny# ]-zsh84-zsh885100% C8• Mon 11 May 10:16:54181screenpipe"0 ₴6DEV...
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
15804
|
|
15444
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpDaily - Platform - now100% L2Mon 11 May 9:50:50meet.google.com/mie-gawc-dsi?authuser=[EMAIL] Yankov (Presenting)9+Platform Team %.Q Search boardA.J Panorama for CallScoring n coAUTOMATED AT ECOREKowdyoDVJy-20361Setup test coverage forProphet in SonarMAINTENANCSBacklogE 3-109519:50 AM | Daily - Platform*0.Mon 11 May 9:50C Jy 20451 ServicX Jmim8 ProoAttentC Calls -AtsenlCa Transp* MCPIО эррібкhttps://fminny.atlassian.net/jira/software/c/projects/JY/boards/37?selectedissue=JY-206258E Datadog* Claude3 CirclechSentryL tasInsights & Coachin…Al BookmarxssY-20739 / Q JY-20625[POC)Jiminny MCP Connector~ DescriptionCustomers are starting to use AI tool (like Claude and GPT) to connect the information from all f their platform into oneplace. Which they then ufe to interrogate and perform different analysis on their data. We want to create a Jiminny MCPwhich will enable them to connect their Jiminny data to Claude/GPT.• create a POC to demonstrate the approach• determine form where the data needs to be fetched - long term we want to fetch everything from Elastic Search but inorder to release il faster we can consider a temporary mixed approach with the DB"hewittteesnetnokernetthooe• determine what the authentication needs to be (keep in mind requirement 1 and 7)the epproderfnongo snoure de contrmed wan surtkd ane uaya• product requirements - E Jiminny MCP Connector••+33% DonePrioctyASSiOusouy 0/s.Ciedeyoe= м.ON....INDEV -% JY-20743tools/listResearch Competitor's MCP= м.- N...*xI0 DerIn ProgressIx Improve SpikeDetailsAssignee• Nikolay NkolowAssign to meReporter2 Galya DimitrovaDevelopmentQ Open with VS CodeJ Create branch61 commits1 pull request1 build incompleteComponentsPlatformSub-ProductAdd optionsLabelsstory pont estma4 days agoorth0 UxGroup: QueriesAl Reports > Empty pagedesign and promotonAJREPORTSDeployed0 -20372 1 1 •***=SrOK VO ALUIC-207261 @ ••0=Allow users to delete SSand Panorama promptsAКаrОКISDeployedRelease AJ PanoramaAJREPORTS0 -20740 05 1) .00:summary in the CRM...Nikolay IvanovNikolay Yankov4 othersSteliyan GeorgievLukas Kovalik2:23...
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
15444
|
|
16364
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
/* @noinspection ALL */
// @formatter:off
// phpcs:ignoreFile
/**
* A helper file for Laravel, to provide autocomplete information to your IDE
* Generated for Laravel 12.33.0.
*
* This file should not be included in your code, only analyzed by your IDE!
*
* @author Barry vd. Heuvel <[EMAIL]>
* @see [URL_WITH_CREDENTIALS] string
* @static
*/
public static function inferBasePath()
{
return \Illuminate\Foundation\Application::inferBasePath();
}
/**
* Get the version number of the application.
*
* @return string
* @static
*/
public static function version()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->version();
}
/**
* Run the given array of bootstrap classes.
*
* @param string[] $bootstrappers
* @return void
* @static
*/
public static function bootstrapWith($bootstrappers)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->bootstrapWith($bootstrappers);
}
/**
* Register a callback to run after loading the environment.
*
* @param \Closure $callback
* @return void
* @static
*/
public static function afterLoadingEnvironment($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->afterLoadingEnvironment($callback);
}
/**
* Register a callback to run before a bootstrapper.
*
* @param string $bootstrapper
* @param \Closure $callback
* @return void
* @static
*/
public static function beforeBootstrapping($bootstrapper, $callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->beforeBootstrapping($bootstrapper, $callback);
}
/**
* Register a callback to run after a bootstrapper.
*
* @param string $bootstrapper
* @param \Closure $callback
* @return void
* @static
*/
public static function afterBootstrapping($bootstrapper, $callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->afterBootstrapping($bootstrapper, $callback);
}
/**
* Determine if the application has been bootstrapped before.
*
* @return bool
* @static
*/
public static function hasBeenBootstrapped()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasBeenBootstrapped();
}
/**
* Set the base path for the application.
*
* @param string $basePath
* @return \Illuminate\Foundation\Application
* @static
*/
public static function setBasePath($basePath)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->setBasePath($basePath);
}
/**
* Get the path to the application "app" directory.
*
* @param string $path
* @return string
* @static
*/
public static function path($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->path($path);
}
/**
* Set the application directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useAppPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useAppPath($path);
}
/**
* Get the base path of the Laravel installation.
*
* @param string $path
* @return string
* @static
*/
public static function basePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->basePath($path);
}
/**
* Get the path to the bootstrap directory.
*
* @param string $path
* @return string
* @static
*/
public static function bootstrapPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->bootstrapPath($path);
}
/**
* Get the path to the service provider list in the bootstrap directory.
*
* @return string
* @static
*/
public static function getBootstrapProvidersPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getBootstrapProvidersPath();
}
/**
* Set the bootstrap file directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useBootstrapPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useBootstrapPath($path);
}
/**
* Get the path to the application configuration files.
*
* @param string $path
* @return string
* @static
*/
public static function configPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->configPath($path);
}
/**
* Set the configuration directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useConfigPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useConfigPath($path);
}
/**
* Get the path to the database directory.
*
* @param string $path
* @return string
* @static
*/
public static function databasePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->databasePath($path);
}
/**
* Set the database directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useDatabasePath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useDatabasePath($path);
}
/**
* Get the path to the language files.
*
* @param string $path
* @return string
* @static
*/
public static function langPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->langPath($path);
}
/**
* Set the language file directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useLangPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useLangPath($path);
}
/**
* Get the path to the public / web directory.
*
* @param string $path
* @return string
* @static
*/
public static function publicPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->publicPath($path);
}
/**
* Set the public / web directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function usePublicPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->usePublicPath($path);
}
/**
* Get the path to the storage directory.
*
* @param string $path
* @return string
* @static
*/
public static function storagePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->storagePath($path);
}
/**
* Set the storage directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useStoragePath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useStoragePath($path);
}
/**
* Get the path to the resources directory.
*
* @param string $path
* @return string
* @static
*/
public static function resourcePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resourcePath($path);
}
/**
* Get the path to the views directory.
*
* This method returns the first configured path in the array of view paths.
*
* @param string $path
* @return string
* @static
*/
public static function viewPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->viewPath($path);
}
/**
* Join the given paths together.
*
* @param string $basePath
* @param string $path
* @return string
* @static
*/
public static function joinPaths($basePath, $path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->joinPaths($basePath, $path);
}
/**
* Get the path to the environment file directory.
*
* @return string
* @static
*/
public static function environmentPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentPath();
}
/**
* Set the directory for the environment file.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useEnvironmentPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useEnvironmentPath($path);
}
/**
* Set the environment file to be loaded during bootstrapping.
*
* @param string $file
* @return \Illuminate\Foundation\Application
* @static
*/
public static function loadEnvironmentFrom($file)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->loadEnvironmentFrom($file);
}
/**
* Get the environment file the application is using.
*
* @return string
* @static
*/
public static function environmentFile()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentFile();
}
/**
* Get the fully qualified path to the environment file.
*
* @return string
* @static
*/
public static function environmentFilePath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentFilePath();
}
/**
* Get or check the current application environment.
*
* @param string|array $environments
* @return string|bool
* @static
*/
public static function environment(...$environments)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environment(...$environments);
}
/**
* Determine if the application is in the local environment.
*
* @return bool
* @static
*/
public static function isLocal()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isLocal();
}
/**
* Determine if the application is in the production environment.
*
* @return bool
* @static
*/
public static function isProduction()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isProduction();
}
/**
* Detect the application's current environment.
*
* @param \Closure $callback
* @return string
* @static
*/
public static function detectEnvironment($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->detectEnvironment($callback);
}
/**
* Determine if the application is running in the console.
*
* @return bool
* @static
*/
public static function runningInConsole()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningInConsole();
}
/**
* Determine if the application is running any of the given console commands.
*
* @param string|array $commands
* @return bool
* @static
*/
public static function runningConsoleCommand(...$commands)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningConsoleCommand(...$commands);
}
/**
* Determine if the application is running unit tests.
*
* @return bool
* @static
*/
public static function runningUnitTests()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningUnitTests();
}
/**
* Determine if the application is running with debug mode enabled.
*
* @return bool
* @static
*/
public static function hasDebugModeEnabled()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasDebugModeEnabled();
}
/**
* Register a new registered listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function registered($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registered($callback);
}
/**
* Register all of the configured providers.
*
* @return void
* @static
*/
public static function registerConfiguredProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerConfiguredProviders();
}
/**
* Register a service provider with the application.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @param bool $force
* @return \Illuminate\Support\ServiceProvider
* @static
*/
public static function register($provider, $force = false)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->register($provider, $force);
}
/**
* Get the registered service provider instance if it exists.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @return \Illuminate\Support\ServiceProvider|null
* @static
*/
public static function getProvider($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getProvider($provider);
}
/**
* Get the registered service provider instances if any exist.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @return array
* @static
*/
public static function getProviders($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getProviders($provider);
}
/**
* Resolve a service provider instance from the class name.
*
* @param string $provider
* @return \Illuminate\Support\ServiceProvider
* @static
*/
public static function resolveProvider($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resolveProvider($provider);
}
/**
* Load and boot all of the remaining deferred providers.
*
* @return void
* @static
*/
public static function loadDeferredProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->loadDeferredProviders();
}
/**
* Load the provider for a deferred service.
*
* @param string $service
* @return void
* @static
*/
public static function loadDeferredProvider($service)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->loadDeferredProvider($service);
}
/**
* Register a deferred provider and service.
*
* @param string $provider
* @param string|null $service
* @return void
* @static
*/
public static function registerDeferredProvider($provider, $service = null)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerDeferredProvider($provider, $service);
}
/**
* Resolve the given type from the container.
*
* @template TClass of object
* @param string|class-string<TClass> $abstract
* @param array $parameters
* @return ($abstract is class-string<TClass> ? TClass : mixed)
* @throws \Illuminate\Contracts\Container\BindingResolutionException
* @static
*/
public static function make($abstract, $parameters = [])
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->make($abstract, $parameters);
}
/**
* Determine if the given abstract type has been bound.
*
* @param string $abstract
* @return bool
* @static
*/
public static function bound($abstract)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->bound($abstract);
}
/**
* Determine if the application has booted.
*
* @return bool
* @static
*/
public static function isBooted()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isBooted();
}
/**
* Boot the application's service providers.
*
* @return void
* @static
*/
public static function boot()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->boot();
}
/**
* Register a new boot listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function booting($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->booting($callback);
}
/**
* Register a new "booted" listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function booted($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->booted($callback);
}
/**
* {@inheritdoc}
*
* @return \Symfony\Component\HttpFoundation\Response
* @static
*/
public static function handle($request, $type = 1, $catch = true)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->handle($request, $type, $catch);
}
/**
* Handle the incoming HTTP request and send the response to the browser.
*
* @param \Illuminate\Http\Request $request
* @return void
* @static
*/
public static function handleRequest($request)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->handleRequest($request);
}
/**
* Handle the incoming Artisan command.
*
* @param \Symfony\Component\Console\Input\InputInterface $input
* @return int
* @static
*/
public static function handleCommand($input)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->handleCommand($input);
}
/**
* Determine if the framework's base configuration should be merged.
*
* @return bool
* @static
*/
public static function shouldMergeFrameworkConfiguration()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->shouldMergeFrameworkConfiguration();
}
/**
* Indicate that the framework's base configuration should not be merged.
*
* @return \Illuminate\Foundation\Application
* @static
*/
public static function dontMergeFrameworkConfiguration()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->dontMergeFrameworkConfiguration();
}
/**
* Determine if middleware has been disabled for the application.
*
* @return bool
* @static
*/
public static function shouldSkipMiddleware()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->shouldSkipMiddleware();
}
/**
* Get the path to the cached services.php file.
*
* @return string
* @static
*/
public static function getCachedServicesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedServicesPath();
}
/**
* Get the path to the cached packages.php file.
*
* @return string
* @static
*/
public static function getCachedPackagesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedPackagesPath();
}
/**
* Determine if the application configuration is cached.
*
* @return bool
* @static
*/
public static function configurationIsCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->configurationIsCached();
}
/**
* Get the path to the configuration cache file.
*
* @return string
* @static
*/
public static function getCachedConfigPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedConfigPath();
}
/**
* Determine if the application routes are cached.
*
* @return bool
* @static
*/
public static function routesAreCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->routesAreCached();
}
/**
* Get the path to the routes cache file.
*
* @return string
* @static
*/
public static function getCachedRoutesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedRoutesPath();
}
/**
* Determine if the application events are cached.
*
* @return bool
* @static
*/
public static function eventsAreCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->eventsAreCached();
}
/**
* Get the path to the events cache file.
*
* @return string
* @static
*/
public static function getCachedEventsPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedEventsPath();
}
/**
* Add new prefix to list of absolute path prefixes.
*
* @param string $prefix
* @return \Illuminate\Foundation\Application
* @static
*/
public static function addAbsoluteCachePathPrefix($prefix)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->addAbsoluteCachePathPrefix($prefix);
}
/**
* Get an instance of the maintenance mode manager implementation.
*
* @return \Illuminate\Contracts\Foundation\MaintenanceMode
* @static
*/
public static function maintenanceMode()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->maintenanceMode();
}
/**
* Determine if the application is currently down for maintenance.
*
* @return bool
* @static
*/
public static function isDownForMaintenance()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isDownForMaintenance();
}
/**
* Throw an HttpException with the given data.
*
* @param int $code
* @param string $message
* @param array $headers
* @return never
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
* @static
*/
public static function abort($code, $message = '', $headers = [])
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->abort($code, $message, $headers);
}
/**
* Register a terminating callback with the application.
*
* @param callable|string $callback
* @return \Illuminate\Foundation\Application
* @static
*/
public static function terminating($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->terminating($callback);
}
/**
* Terminate the application.
*
* @return void
* @static
*/
public static function terminate()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->terminate();
}
/**
* Get the service providers that have been loaded.
*
* @return array<string, bool>
* @static
*/
public static function getLoadedProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getLoadedProviders();
}
/**
* Determine if the given service provider is loaded.
*
* @param string $provider
* @return bool
* @static
*/
public static function providerIsLoaded($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->providerIsLoaded($provider);
}
/**
* Get the application's deferred services.
*
* @return array
* @static
*/
public static function getDeferredServices()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getDeferredServices();
}
/**
* Set the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function setDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setDeferredServices($services);
}
/**
* Determine if the given service is a deferred service.
*
* @param string $service
* @return bool
* @static
*/
public static function isDeferredService($service)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isDeferredService($service);
}
/**
* Add an array of services to the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function addDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->addDeferredServices($services);
}
/**
* Remove an array of services from the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function removeDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->removeDeferredServices($services);
}
/**
* Configure the real-time facade namespace.
*
* @param string $namespace
* @return void
* @static
*/
public static function provideFacades($namespace)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->provideFacades($namespace);
}
/**
* Get the current application locale.
*
* @return string
* @static
*/
public static function getLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getLocale();
}
/**
* Get the current application locale.
*
* @return string
* @static
*/
public static function currentLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->currentLocale();
}
/**
* Get the current application fallback locale.
*
* @return string
* @static
*/
public static function getFallbackLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getFallbackLocale();
}
/**
* Set the current application locale.
*
* @param string $locale
* @return void
* @static
*/
public static function setLocale($locale)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setLocale($locale);
}
/**
* Set the current application fallback locale.
*
* @param string $fallbackLocale
* @return void
* @static
*/
public static function setFallbackLocale($fallbackLocale)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setFallbackLocale($fallbackLocale);
}
/**
* Determine if the application locale is the given locale.
*
* @param string $locale
* @return bool
* @static
*/
public static function isLocale($locale)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isLocale($locale);
}
/**
* Register the core class aliases in the container.
*
* @return void
* @static
*/
public static function registerCoreContainerAliases()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerCoreContainerAliases();
}
/**
* Flush the container of all bindings and resolved instances.
*
* @return void
* @static
*/
public static function flush()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->flush();
}
/**
* Get the application namespace.
*
* @return string
* @throws \RuntimeException
* @static
*/
public static function getNamespace()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getNamespace();
}
/**
* Define a contextual binding.
*
* @param array|string $concrete
* @return \Illuminate\Contracts\Container\ContextualBindingBuilder
* @static
*/
public static function when($concrete)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->when($concrete);
}
/**
* Define a contextual binding based on an attribute.
*
* @param string $attribute
* @param \Closure $handler
* @return void
* @static
*/
public static function whenHasAttribute($attribute, $handler)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->whenHasAttribute($attribute, $handler);
}
/**
* Returns true if the container can return an entry for the given identifier.
*
* Returns false otherwise.
*
* `has($id)` returning true does not mean that `get($id)` will not throw an exception.
* It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
*
* @return bool
* @param string $id Identifier of the entry to look for.
* @return bool
* @static
*/
public static function has($id)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->has($id);
}
/**
* Determine if the given abstract type has been resolved.
*
* @param string $abstract
* @return bool
* @static
*/
public static function resolved($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resolved($abstract);
}
/**
* Determine if a given type is shared.
*
* @param string $abstract
* @return bool
* @static
*/
public static function isShared($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isShared($abstract);
}
/**
* Determine if a given string is an alias.
*
* @param string $name
* @return bool
* @static
*/
public static function isAlias($name)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isAlias($name);
}
/**
* Register a binding with the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @param bool $shared
* @return void
* @throws \TypeError
* @throws ReflectionException
* @static
*/
public static function bind($abstract, $concrete = null, $shared = false)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bind($abstract, $concrete, $shared);
}
/**
* Determine if the container has a method binding.
*
* @param string $method
* @return bool
* @static
*/
public static function hasMethodBinding($method)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasMethodBinding($method);
}
/**
* Bind a callback to resolve with Container::call.
*
* @param array|string $method
* @param \Closure $callback
* @return void
* @static
*/
public static function bindMethod($method, $callback)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bindMethod($method, $callback);
}
/**
* Get the method binding for the given method.
*
* @param string $method
* @param mixed $instance
* @return mixed
* @static
*/
public static function callMethodBinding($method, $instance)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->callMethodBinding($method, $instance);
}
/**
* Add a contextual binding to the container.
*
* @param string $concrete
* @param \Closure|string $abstract
* @param \Closure|string $implementation
* @return void
* @static
*/
public static function addContextualBinding($concrete, $abstract, $implementation)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->addContextualBinding($concrete, $abstract, $implementation);
}
/**
* Register a binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @param bool $shared
* @return void
* @static
*/
public static function bindIf($abstract, $concrete = null, $shared = false)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bindIf($abstract, $concrete, $shared);
}
/**
* Register a shared binding in the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function singleton($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->singleton($abstract, $concrete);
}
/**
* Register a shared binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function singletonIf($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->singletonIf($abstract, $concrete);
}
/**
* Register a scoped binding in the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function scoped($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->scoped($abstract, $concrete);
}
/**
* Register a scoped binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function scopedIf($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->scopedIf($abstract, $concrete);
}
/**
* "Extend" an abstract type in the container.
*
* @param string $abstract
* @param \Closure $closure
* @return void
* @throws \InvalidArgumentException
* @static
*/
public static function extend($abstract, $closure)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->extend($abstract, $closure);
}
/**
* Register an existing instance as shared in the container.
*
* @template TInstance of mixed
* @param string $abstract
* @param TInstance $instance
* @return TInstance
* @static
*/
public static function instance($abstract, $instance)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->instance($abstract, $instance);
}
/**
* Assign a set of tags to a given binding.
*
* @param array|string $abstracts
* @param mixed $tags
* @return void
* @static
*/
public static function tag($abstracts, $tags)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->tag($abstracts, $tags);
}
/**
* Resolve all of the bindings for a given tag.
*
* @param string $tag
* @return iterable
* @static
*/
public static function tagged($tag)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->tagged($tag);
}
/**
* Alias a type to a different name.
*
* @param string $abstract
* @param string $alias
* @return void
* @throws \LogicException
* @static
*/
public static function alias($abstract, $alias)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->alias($abstract, $alias);
}
/**
* Bind a new callback to an abstract's rebind event.
*
* @param string $abstract
* @param \Closure $callback
* @return mixed
* @static
*/
public static function rebinding($abstract, $callback)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->rebinding($abstract, $callback);
}
/**
* Refresh an instance on the given target and method.
*
* @param string $abstract
* @param mixed $target
* @param string $method
* @return mixed
* @static
*/
public static function refresh($abstract, $target, $method)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->refresh($abstract, $target, $method);
}
/**
* Wrap the given closure such that its dependencies will be injected when executed.
*
* @param \Closure $callback
* @param array $parameters
* @return \Closure
* @static
*/
public static function wrap($callback, $parameters = [])
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->wrap($callback, $parameters);
}
/**
* Call the given Closure / class@method and inject its dependencies.
*
* @param callable|string $callback
* @param array<string, mixed> $parameters
* @param string|null $defaultMethod
* @return mixed
* @throws \InvalidArgumentException
* @static
*/
public static function call($callback, $parameters = [], $defaultMethod = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->call($callback, $parameters, $defaultMethod);
}
/**
* Get a closure to resolve the given type from the container.
*
* @template TClass of object
* @param string|class-string<TClass> $abstract
* @return ($abstract is class-string<TClass> ? \Closure(): TClass : \Closure(): mixed)
* @static
*/
public static function factory($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->factory($abstract);
}
/**
* An alias function name for make().
*
* @template TClass of object
* @param string|class-string<TClass>|callable $abstract
* @param array $parameters
* @return ($abstract is class-string<TClass> ? TClass : mixed)
* @throws \Illuminate\Contracts\Container\BindingResolutionException
* @static
*/
public static function makeWith($abstract, $parameters = [])
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->makeWith($abstract, $parameters);
}
/**
* {@inheritdoc}
*
* @template TClass of object
* @param string|class-string<TClass> $id
* @return ($id is class-string<TClass> ? TClass : mixed)
* @static
*/
public static function get($id)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
...
|
PhpStorm
|
faVsco.js – _ide_helper.php
|
NULL
|
16364
|
|
16365
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
Hide This Notification
Code changed:
Hide
Analyzing…
<?php
/* @noinspection ALL */
// @formatter:off
// phpcs:ignoreFile
/**
* A helper file for Laravel, to provide autocomplete information to your IDE
* Generated for Laravel 12.33.0.
*
* This file should not be included in your code, only analyzed by your IDE!
*
* @author Barry vd. Heuvel <[EMAIL]>
* @see [URL_WITH_CREDENTIALS] string
* @static
*/
public static function inferBasePath()
{
return \Illuminate\Foundation\Application::inferBasePath();
}
/**
* Get the version number of the application.
*
* @return string
* @static
*/
public static function version()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->version();
}
/**
* Run the given array of bootstrap classes.
*
* @param string[] $bootstrappers
* @return void
* @static
*/
public static function bootstrapWith($bootstrappers)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->bootstrapWith($bootstrappers);
}
/**
* Register a callback to run after loading the environment.
*
* @param \Closure $callback
* @return void
* @static
*/
public static function afterLoadingEnvironment($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->afterLoadingEnvironment($callback);
}
/**
* Register a callback to run before a bootstrapper.
*
* @param string $bootstrapper
* @param \Closure $callback
* @return void
* @static
*/
public static function beforeBootstrapping($bootstrapper, $callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->beforeBootstrapping($bootstrapper, $callback);
}
/**
* Register a callback to run after a bootstrapper.
*
* @param string $bootstrapper
* @param \Closure $callback
* @return void
* @static
*/
public static function afterBootstrapping($bootstrapper, $callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->afterBootstrapping($bootstrapper, $callback);
}
/**
* Determine if the application has been bootstrapped before.
*
* @return bool
* @static
*/
public static function hasBeenBootstrapped()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasBeenBootstrapped();
}
/**
* Set the base path for the application.
*
* @param string $basePath
* @return \Illuminate\Foundation\Application
* @static
*/
public static function setBasePath($basePath)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->setBasePath($basePath);
}
/**
* Get the path to the application "app" directory.
*
* @param string $path
* @return string
* @static
*/
public static function path($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->path($path);
}
/**
* Set the application directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useAppPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useAppPath($path);
}
/**
* Get the base path of the Laravel installation.
*
* @param string $path
* @return string
* @static
*/
public static function basePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->basePath($path);
}
/**
* Get the path to the bootstrap directory.
*
* @param string $path
* @return string
* @static
*/
public static function bootstrapPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->bootstrapPath($path);
}
/**
* Get the path to the service provider list in the bootstrap directory.
*
* @return string
* @static
*/
public static function getBootstrapProvidersPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getBootstrapProvidersPath();
}
/**
* Set the bootstrap file directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useBootstrapPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useBootstrapPath($path);
}
/**
* Get the path to the application configuration files.
*
* @param string $path
* @return string
* @static
*/
public static function configPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->configPath($path);
}
/**
* Set the configuration directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useConfigPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useConfigPath($path);
}
/**
* Get the path to the database directory.
*
* @param string $path
* @return string
* @static
*/
public static function databasePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->databasePath($path);
}
/**
* Set the database directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useDatabasePath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useDatabasePath($path);
}
/**
* Get the path to the language files.
*
* @param string $path
* @return string
* @static
*/
public static function langPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->langPath($path);
}
/**
* Set the language file directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useLangPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useLangPath($path);
}
/**
* Get the path to the public / web directory.
*
* @param string $path
* @return string
* @static
*/
public static function publicPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->publicPath($path);
}
/**
* Set the public / web directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function usePublicPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->usePublicPath($path);
}
/**
* Get the path to the storage directory.
*
* @param string $path
* @return string
* @static
*/
public static function storagePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->storagePath($path);
}
/**
* Set the storage directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useStoragePath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useStoragePath($path);
}
/**
* Get the path to the resources directory.
*
* @param string $path
* @return string
* @static
*/
public static function resourcePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resourcePath($path);
}
/**
* Get the path to the views directory.
*
* This method returns the first configured path in the array of view paths.
*
* @param string $path
* @return string
* @static
*/
public static function viewPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->viewPath($path);
}
/**
* Join the given paths together.
*
* @param string $basePath
* @param string $path
* @return string
* @static
*/
public static function joinPaths($basePath, $path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->joinPaths($basePath, $path);
}
/**
* Get the path to the environment file directory.
*
* @return string
* @static
*/
public static function environmentPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentPath();
}
/**
* Set the directory for the environment file.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useEnvironmentPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useEnvironmentPath($path);
}
/**
* Set the environment file to be loaded during bootstrapping.
*
* @param string $file
* @return \Illuminate\Foundation\Application
* @static
*/
public static function loadEnvironmentFrom($file)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->loadEnvironmentFrom($file);
}
/**
* Get the environment file the application is using.
*
* @return string
* @static
*/
public static function environmentFile()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentFile();
}
/**
* Get the fully qualified path to the environment file.
*
* @return string
* @static
*/
public static function environmentFilePath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentFilePath();
}
/**
* Get or check the current application environment.
*
* @param string|array $environments
* @return string|bool
* @static
*/
public static function environment(...$environments)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environment(...$environments);
}
/**
* Determine if the application is in the local environment.
*
* @return bool
* @static
*/
public static function isLocal()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isLocal();
}
/**
* Determine if the application is in the production environment.
*
* @return bool
* @static
*/
public static function isProduction()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isProduction();
}
/**
* Detect the application's current environment.
*
* @param \Closure $callback
* @return string
* @static
*/
public static function detectEnvironment($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->detectEnvironment($callback);
}
/**
* Determine if the application is running in the console.
*
* @return bool
* @static
*/
public static function runningInConsole()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningInConsole();
}
/**
* Determine if the application is running any of the given console commands.
*
* @param string|array $commands
* @return bool
* @static
*/
public static function runningConsoleCommand(...$commands)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningConsoleCommand(...$commands);
}
/**
* Determine if the application is running unit tests.
*
* @return bool
* @static
*/
public static function runningUnitTests()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningUnitTests();
}
/**
* Determine if the application is running with debug mode enabled.
*
* @return bool
* @static
*/
public static function hasDebugModeEnabled()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasDebugModeEnabled();
}
/**
* Register a new registered listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function registered($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registered($callback);
}
/**
* Register all of the configured providers.
*
* @return void
* @static
*/
public static function registerConfiguredProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerConfiguredProviders();
}
/**
* Register a service provider with the application.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @param bool $force
* @return \Illuminate\Support\ServiceProvider
* @static
*/
public static function register($provider, $force = false)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->register($provider, $force);
}
/**
* Get the registered service provider instance if it exists.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @return \Illuminate\Support\ServiceProvider|null
* @static
*/
public static function getProvider($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getProvider($provider);
}
/**
* Get the registered service provider instances if any exist.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @return array
* @static
*/
public static function getProviders($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getProviders($provider);
}
/**
* Resolve a service provider instance from the class name.
*
* @param string $provider
* @return \Illuminate\Support\ServiceProvider
* @static
*/
public static function resolveProvider($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resolveProvider($provider);
}
/**
* Load and boot all of the remaining deferred providers.
*
* @return void
* @static
*/
public static function loadDeferredProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->loadDeferredProviders();
}
/**
* Load the provider for a deferred service.
*
* @param string $service
* @return void
* @static
*/
public static function loadDeferredProvider($service)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->loadDeferredProvider($service);
}
/**
* Register a deferred provider and service.
*
* @param string $provider
* @param string|null $service
* @return void
* @static
*/
public static function registerDeferredProvider($provider, $service = null)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerDeferredProvider($provider, $service);
}
/**
* Resolve the given type from the container.
*
* @template TClass of object
* @param string|class-string<TClass> $abstract
* @param array $parameters
* @return ($abstract is class-string<TClass> ? TClass : mixed)
* @throws \Illuminate\Contracts\Container\BindingResolutionException
* @static
*/
public static function make($abstract, $parameters = [])
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->make($abstract, $parameters);
}
/**
* Determine if the given abstract type has been bound.
*
* @param string $abstract
* @return bool
* @static
*/
public static function bound($abstract)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->bound($abstract);
}
/**
* Determine if the application has booted.
*
* @return bool
* @static
*/
public static function isBooted()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isBooted();
}
/**
* Boot the application's service providers.
*
* @return void
* @static
*/
public static function boot()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->boot();
}
/**
* Register a new boot listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function booting($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->booting($callback);
}
/**
* Register a new "booted" listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function booted($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->booted($callback);
}
/**
* {@inheritdoc}
*
* @return \Symfony\Component\HttpFoundation\Response
* @static
*/
public static function handle($request, $type = 1, $catch = true)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->handle($request, $type, $catch);
}
/**
* Handle the incoming HTTP request and send the response to the browser.
*
* @param \Illuminate\Http\Request $request
* @return void
* @static
*/
public static function handleRequest($request)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->handleRequest($request);
}
/**
* Handle the incoming Artisan command.
*
* @param \Symfony\Component\Console\Input\InputInterface $input
* @return int
* @static
*/
public static function handleCommand($input)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->handleCommand($input);
}
/**
* Determine if the framework's base configuration should be merged.
*
* @return bool
* @static
*/
public static function shouldMergeFrameworkConfiguration()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->shouldMergeFrameworkConfiguration();
}
/**
* Indicate that the framework's base configuration should not be merged.
*
* @return \Illuminate\Foundation\Application
* @static
*/
public static function dontMergeFrameworkConfiguration()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->dontMergeFrameworkConfiguration();
}
/**
* Determine if middleware has been disabled for the application.
*
* @return bool
* @static
*/
public static function shouldSkipMiddleware()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->shouldSkipMiddleware();
}
/**
* Get the path to the cached services.php file.
*
* @return string
* @static
*/
public static function getCachedServicesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedServicesPath();
}
/**
* Get the path to the cached packages.php file.
*
* @return string
* @static
*/
public static function getCachedPackagesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedPackagesPath();
}
/**
* Determine if the application configuration is cached.
*
* @return bool
* @static
*/
public static function configurationIsCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->configurationIsCached();
}
/**
* Get the path to the configuration cache file.
*
* @return string
* @static
*/
public static function getCachedConfigPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedConfigPath();
}
/**
* Determine if the application routes are cached.
*
* @return bool
* @static
*/
public static function routesAreCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->routesAreCached();
}
/**
* Get the path to the routes cache file.
*
* @return string
* @static
*/
public static function getCachedRoutesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedRoutesPath();
}
/**
* Determine if the application events are cached.
*
* @return bool
* @static
*/
public static function eventsAreCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->eventsAreCached();
}
/**
* Get the path to the events cache file.
*
* @return string
* @static
*/
public static function getCachedEventsPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedEventsPath();
}
/**
* Add new prefix to list of absolute path prefixes.
*
* @param string $prefix
* @return \Illuminate\Foundation\Application
* @static
*/
public static function addAbsoluteCachePathPrefix($prefix)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->addAbsoluteCachePathPrefix($prefix);
}
/**
* Get an instance of the maintenance mode manager implementation.
*
* @return \Illuminate\Contracts\Foundation\MaintenanceMode
* @static
*/
public static function maintenanceMode()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->maintenanceMode();
}
/**
* Determine if the application is currently down for maintenance.
*
* @return bool
* @static
*/
public static function isDownForMaintenance()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isDownForMaintenance();
}
/**
* Throw an HttpException with the given data.
*
* @param int $code
* @param string $message
* @param array $headers
* @return never
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
* @static
*/
public static function abort($code, $message = '', $headers = [])
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->abort($code, $message, $headers);
}
/**
* Register a terminating callback with the application.
*
* @param callable|string $callback
* @return \Illuminate\Foundation\Application
* @static
*/
public static function terminating($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->terminating($callback);
}
/**
* Terminate the application.
*
* @return void
* @static
*/
public static function terminate()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->terminate();
}
/**
* Get the service providers that have been loaded.
*
* @return array<string, bool>
* @static
*/
public static function getLoadedProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getLoadedProviders();
}
/**
* Determine if the given service provider is loaded.
*
* @param string $provider
* @return bool
* @static
*/
public static function providerIsLoaded($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->providerIsLoaded($provider);
}
/**
* Get the application's deferred services.
*
* @return array
* @static
*/
public static function getDeferredServices()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getDeferredServices();
}
/**
* Set the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function setDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setDeferredServices($services);
}
/**
* Determine if the given service is a deferred service.
*
* @param string $service
* @return bool
* @static
*/
public static function isDeferredService($service)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isDeferredService($service);
}
/**
* Add an array of services to the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function addDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->addDeferredServices($services);
}
/**
* Remove an array of services from the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function removeDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->removeDeferredServices($services);
}
/**
* Configure the real-time facade namespace.
*
* @param string $namespace
* @return void
* @static
*/
public static function provideFacades($namespace)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->provideFacades($namespace);
}
/**
* Get the current application locale.
*
* @return string
* @static
*/
public static function getLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getLocale();
}
/**
* Get the current application locale.
*
* @return string
* @static
*/
public static function currentLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->currentLocale();
}
/**
* Get the current application fallback locale.
*
* @return string
* @static
*/
public static function getFallbackLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getFallbackLocale();
}
/**
* Set the current application locale.
*
* @param string $locale
* @return void
* @static
*/
public static function setLocale($locale)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setLocale($locale);
}
/**
* Set the current application fallback locale.
*
* @param string $fallbackLocale
* @return void
* @static
*/
public static function setFallbackLocale($fallbackLocale)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setFallbackLocale($fallbackLocale);
}
/**
* Determine if the application locale is the given locale.
*
* @param string $locale
* @return bool
* @static
*/
public static function isLocale($locale)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isLocale($locale);
}
/**
* Register the core class aliases in the container.
*
* @return void
* @static
*/
public static function registerCoreContainerAliases()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerCoreContainerAliases();
}
/**
* Flush the container of all bindings and resolved instances.
*
* @return void
* @static
*/
public static function flush()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->flush();
}
/**
* Get the application namespace.
*
* @return string
* @throws \RuntimeException
* @static
*/
public static function getNamespace()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getNamespace();
}
/**
* Define a contextual binding.
*
* @param array|string $concrete
* @return \Illuminate\Contracts\Container\ContextualBindingBuilder
* @static
*/
public static function when($concrete)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->when($concrete);
}
/**
* Define a contextual binding based on an attribute.
*
* @param string $attribute
* @param \Closure $handler
* @return void
* @static
*/
public static function whenHasAttribute($attribute, $handler)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->whenHasAttribute($attribute, $handler);
}
/**
* Returns true if the container can return an entry for the given identifier.
*
* Returns false otherwise.
*
* `has($id)` returning true does not mean that `get($id)` will not throw an exception.
* It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
*
* @return bool
* @param string $id Identifier of the entry to look for.
* @return bool
* @static
*/
public static function has($id)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->has($id);
}
/**
* Determine if the given abstract type has been resolved.
*
* @param string $abstract
* @return bool
* @static
*/
public static function resolved($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resolved($abstract);
}
/**
* Determine if a given type is shared.
*
* @param string $abstract
* @return bool
* @static
*/
public static function isShared($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isShared($abstract);
}
/**
* Determine if a given string is an alias.
*
* @param string $name
* @return bool
* @static
*/
public static function isAlias($name)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isAlias($name);
}
/**
* Register a binding with the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @param bool $shared
* @return void
* @throws \TypeError
* @throws ReflectionException
* @static
*/
public static function bind($abstract, $concrete = null, $shared = false)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bind($abstract, $concrete, $shared);
}
/**
* Determine if the container has a method binding.
*
* @param string $method
* @return bool
* @static
*/
public static function hasMethodBinding($method)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasMethodBinding($method);
}
/**
* Bind a callback to resolve with Container::call.
*
* @param array|string $method
* @param \Closure $callback
* @return void
* @static
*/
public static function bindMethod($method, $callback)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bindMethod($method, $callback);
}
/**
* Get the method binding for the given method.
*
* @param string $method
* @param mixed $instance
* @return mixed
* @static
*/
public static function callMethodBinding($method, $instance)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->callMethodBinding($method, $instance);
}
/**
* Add a contextual binding to the container.
*
* @param string $concrete
* @param \Closure|string $abstract
* @param \Closure|string $implementation
* @return void
* @static
*/
public static function addContextualBinding($concrete, $abstract, $implementation)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->addContextualBinding($concrete, $abstract, $implementation);
}
/**
* Register a binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @param bool $shared
* @return void
* @static
*/
public static function bindIf($abstract, $concrete = null, $shared = false)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bindIf($abstract, $concrete, $shared);
}
/**
* Register a shared binding in the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function singleton($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->singleton($abstract, $concrete);
}
/**
* Register a shared binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function singletonIf($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->singletonIf($abstract, $concrete);
}
/**
* Register a scoped binding in the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function scoped($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->scoped($abstract, $concrete);
}
/**
* Register a scoped binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function scopedIf($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->scopedIf($abstract, $concrete);
}
/**
* "Extend" an abstract type in the container.
*
* @param string $abstract
* @param \Closure $closure
* @return void
* @throws \InvalidArgumentException
* @static
*/
public static function extend($abstract, $closure)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->extend($abstract, $closure);
}
/**
* Register an existing instance as shared in the container.
*
* @template TInstance of mixed
* @param string $abstract
* @param TInstance $instance
* @return TInstance
* @static
*/
public static function instance($abstract, $instance)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->instance($abstract, $instance);
}
/**
* Assign a set of tags to a given binding.
*
* @param array|string $abstracts
* @param mixed $tags
* @return void
* @static
*/
public static function tag($abstracts, $tags)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->tag($abstracts, $tags);
}
/**
* Resolve all of the bindings for a given tag.
*
* @param string $tag
* @return iterable
* @static
*/
public static function tagged($tag)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->tagged($tag);
}
/**
* Alias a type to a different name.
*
* @param string $abstract
* @param string $alias
* @return void
* @throws \LogicException
* @static
*/
public static function alias($abstract, $alias)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->alias($abstract, $alias);
}
/**
* Bind a new callback to an abstract's rebind event.
*
* @param string $abstract
* @param \Closure $callback
* @return mixed
* @static
*/
public static function rebinding($abstract, $callback)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->rebinding($abstract, $callback);
}
/**
* Refresh an instance on the given target and method.
*
* @param string $abstract
* @param mixed $target
* @param string $method
* @return mixed
* @static
*/
public static function refresh($abstract, $target, $method)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->refresh($abstract, $target, $method);
}
/**
* Wrap the given closure such that its dependencies will be injected when executed.
*
* @param \Closure $callback
* @param array $parameters
* @return \Closure
* @static
*/
public static function wrap($callback, $parameters = [])
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->wrap($callback, $parameters);
}
/**
* Call the given Closure / class@method and inject its dependencies.
*
* @param callable|string $callback
* @param array<string, mixed> $parameters
* @param string|null $defaultMethod
* @return mixed
* @throws \InvalidArgumentException
* @static
*/
public static function call($callback, $parameters = [], $defaultMethod = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->call($callback, $parameters, $defaultMethod);
}
/**
* Get a closure to resolve the given type from the container.
*
* @template TClass of object
* @param string|class-string<TClass> $abstract
* @return ($abstract is class-string<TClass> ? \Closure(): TClass : \Closure(): mixed)
* @static
*/
public static function factory($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->factory($abstract);
}
/**
* An alias function name for make().
*
* @template TClass of object
* @param string|class-string<TClass>|callable $abstract
* @param array $parameters
* @return ($abstract is class-string<TClass> ? TClass : mixed)
* @throws \Illuminate\Contracts\Container\BindingResolutionException
* @static
*/
public static function makeWith($abstract, $parameters = [])
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->makeWith($abstract, $parameters);
}
/**
* {@inheritdoc}
*
* @template TClass of object
* @param string|class-string<TClass> $id
* @return ($id is class-string<TClass> ? TClass : mixed)
* @static
*/
public static function get($id)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $i...
|
PhpStorm
|
faVsco.js – _ide_helper.php
|
NULL
|
16365
|
|
16875
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
FinderFileEditViewGoWindowHelp•00DEV (docker)DOCKERO ₴1DEV (docker)882APP (-zsh)|• жзmasterJY-20818-move-AJ-reports-to-separated-datadog-metricJY-20773-fix-automated-reports-user-pilot-trackingJY-20157-AJ-report-not-send-notificationJY-20508-notify-before-AJ-report-expirationJY-20372-ai-reports-promotion-pagesJY-20352-sync-opportunities-without-a-local-owner-user-id-is-nullJY-20738-debug-AJ-tracking-UPJY-18909-automated-reports-ask-jiminnyJY-20692-fix-integration-app-[API_KEY]@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ devroot@docker_lamp_1:/home/jiminny# ]>0.-zshlabol• Support Daily • in 2h 22 m84-zsh885100% <78• Mon 11 May 12:38:41181screenpipe"0 ₴6DEV...
|
PhpStorm
|
faVsco.js – DeleteCrmEntityTrait.php
|
NULL
|
16875
|
|
15952
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Firefox FileEditViewHistoryBookmarksProfilesToolsWindowHelp# Support Daily • in 4 h 14 mDEV (docker)• жзDOCKERO 81DEV (docker)882APP (-zsh)masterJY-20818-move-AJ-reports-to-separated-datadog-metricJY-20773-fix-automated-reports-user-pilot-trackingJY-20157-AJ-report-not-send-notificationJY-20508-notify-before-AJ-report-expirationJY-20372-ai-reports-promotion-pagesJY-20352-sync-opportunities-without-a-local-owner-user-id-is-nullJY-20738-debug-AJ-tracking-UPJY-18909-automated-reports-ask-jiminnyJY-20692-fix-integration-app-[API_KEY] laysJY-20698-fix-SF-activity-types-on-new-playbookJY-20543-AJ-report-trackingJY-20384-handle-auto-sync-with-no-access-to-event-typeJY-20458-ask-Jiminny-user-definitionsJY-19666-fix-import-contacts-account-associationJY-19666-HS-import-contacts-and-accounts-batch-jobJY-20458-Ask-Jiminny-ReportsJY-20200-batch-update-CRM-objects-SalesforceJY-19666-HS-webhooks-add-contact-and-companyJY-20348-trigger-setup-DI-layout-on-team-creationJY-20326-refactor-info-message-in-commandJY-20317-fix-auto-log-delay-issue-on-all-channels-disabledJY-20312-remove-on-update-change-last-synced-at-crm-configurationsJY-20306-SF-skip-auto-sync-for-task-based-playbookJY-20192-remove-deleted-team-from-saved-search-filtersJY-20197-import-opportunity-batch-jobJY-20293-enable-status-field-for-pipedrive-dealsJY-20191-remove-commands-interactive-promptsJY-20118-change-default-sync-strategyJY-20183-add-cache-on-auto-log-delayJY-20197-add-import-opportunity-batch-job20118-hs-opportunity-make-webhook-strategy-defaultJY-20118-make-default-hs-opportunity-sync-strategy-webhook-basedJY-20196-handle-opportunity-without-noteJY-20118-improve-opportunity-importJY-20189-handle-activity-search-on-deleted-groupsJY-20160JY-20145-filter-out-converted-leads-when-matchingJY-20150-skip-push-summary-on-summary-ready-1f-autologJY-20132-fix-note-encodingJY-19792-clean-logslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ devroot@docker_lamp_1:/home/jiminny# ]-zsh84-zsh885100% C8• Mon 11 May 10:46:58181screenpipe"0 ₴6DEV...
|
PhpStorm
|
faVsco.js – MatchActivityCrmData.php
|
NULL
|
15952
|
|
15059
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\DTO\ImportCall\Call;
use Jiminny\DTO\ImportCall\CrmIdentifier;
use Psr\Log\LoggerInterface;
class CrmObjectsResolver
{
private LoggerInterface $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function resolveFromCall(ServiceInterface $crmService, Call $call): array
{
$this->logger->info(sprintf('[%s] Resolving CRM objects', $call->getProvider()), [
'provider' => $call->getProvider(),
'callId' => $call->getCallId(),
'contactEmail' => $call->getContactEmail(),
'contactPhoneNumber' => $call->getOtherPartyPhoneNumber(),
]);
$decorator = resolve(CachedCrmServiceDecorator::class);
$decorator->setCrmService($crmService);
/**
* ArrayShape:
* $crmObjects = [$lead, $account, $opportunity, $contact, $stage]
*/
if (! empty($call->getContactEmail())) {
$crmObjects = $decorator->matchExactlyByEmail($call->getContactEmail(), $call->getUserId());
}
if (empty($crmObjects) && $call->getOtherPartyPhoneNumber() !== null) {
$crmObjects = $decorator->matchByPhone(
$call->getOtherPartyPhoneNumber(),
null,
$call->getUserId()
);
}
if ($call->hasCrmIdentifier()) {
$crmObjects = $this->matchCrmByObjectIds($crmService, $call);
}
if (empty($crmObjects) && ! empty($call->getContactEmail())) {
$crmObjects = $decorator->matchByDomain($call->getContactEmail(), $call->getUserId());
}
return ! empty($crmObjects)
? $crmObjects
: [];
}
/**
* Try to detect CRM data by using available Crm identifiers
*/
private function matchCrmByObjectIds(ServiceInterface $crmService, Call $call): array
{
$lead = $account = $opportunity = $contact = $stage = null;
$crmIdentifier = $call->getCrmIdentifier();
if (! $crmIdentifier instanceof CrmIdentifier) {
return [];
}
if ($crmIdentifier->hasClientId() || $crmIdentifier->hasActivityId()) {
try {
if ($crmIdentifier->hasClientId()) {
[$lead, , , $contact, $stage] = $crmService->parseRecords($crmIdentifier->getClientId());
}
if ($crmIdentifier->hasActivityId()) {
[ , , $opportunity, , $oppStage] = $crmService->parseRecords($crmIdentifier->getActivityId());
if ($stage === null) {
$stage = $oppStage;
}
}
if ($crmIdentifier->hasAccountId()) {
[ , $account, , , ] = $crmService->parseRecords($crmIdentifier->getAccountId());
}
} catch (\Exception $exception) {
$this->logger->warning('CRM lookup failed', [
'reason' => $exception->getMessage(),
'provider' => $call->getProvider(),
'call_id' => $call->getCallId(),
'payload' => $call,
]);
}
}
$data = [$lead, $account, $opportunity, $contact, $stage];
return ! empty(array_filter($data)) ? $data : [];
}
}
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"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – CrmObjectsResolver.php
|
NULL
|
15059
|
|
15060
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\DTO\ImportCall\Call;
use Jiminny\DTO\ImportCall\CrmIdentifier;
use Psr\Log\LoggerInterface;
class CrmObjectsResolver
{
private LoggerInterface $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function resolveFromCall(ServiceInterface $crmService, Call $call): array
{
$this->logger->info(sprintf('[%s] Resolving CRM objects', $call->getProvider()), [
'provider' => $call->getProvider(),
'callId' => $call->getCallId(),
'contactEmail' => $call->getContactEmail(),
'contactPhoneNumber' => $call->getOtherPartyPhoneNumber(),
]);
$decorator = resolve(CachedCrmServiceDecorator::class);
$decorator->setCrmService($crmService);
/**
* ArrayShape:
* $crmObjects = [$lead, $account, $opportunity, $contact, $stage]
*/
if (! empty($call->getContactEmail())) {
$crmObjects = $decorator->matchExactlyByEmail($call->getContactEmail(), $call->getUserId());
}
if (empty($crmObjects) && $call->getOtherPartyPhoneNumber() !== null) {
$crmObjects = $decorator->matchByPhone(
$call->getOtherPartyPhoneNumber(),
null,
$call->getUserId()
);
}
if ($call->hasCrmIdentifier()) {
$crmObjects = $this->matchCrmByObjectIds($crmService, $call);
}
if (empty($crmObjects) && ! empty($call->getContactEmail())) {
$crmObjects = $decorator->matchByDomain($call->getContactEmail(), $call->getUserId());
}
return ! empty($crmObjects)
? $crmObjects
: [];
}
/**
* Try to detect CRM data by using available Crm identifiers
*/
private function matchCrmByObjectIds(ServiceInterface $crmService, Call $call): array
{
$lead = $account = $opportunity = $contact = $stage = null;
$crmIdentifier = $call->getCrmIdentifier();
if (! $crmIdentifier instanceof CrmIdentifier) {
return [];
}
if ($crmIdentifier->hasClientId() || $crmIdentifier->hasActivityId()) {
try {
if ($crmIdentifier->hasClientId()) {
[$lead, , , $contact, $stage] = $crmService->parseRecords($crmIdentifier->getClientId());
}
if ($crmIdentifier->hasActivityId()) {
[ , , $opportunity, , $oppStage] = $crmService->parseRecords($crmIdentifier->getActivityId());
if ($stage === null) {
$stage = $oppStage;
}
}
if ($crmIdentifier->hasAccountId()) {
[ , $account, , , ] = $crmService->parseRecords($crmIdentifier->getAccountId());
}
} catch (\Exception $exception) {
$this->logger->warning('CRM lookup failed', [
'reason' => $exception->getMessage(),
'provider' => $call->getProvider(),
'call_id' => $call->getCallId(),
'payload' => $call,
]);
}
}
$data = [$lead, $account, $opportunity, $contact, $stage];
return ! empty(array_filter($data)) ? $data : [];
}
}
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"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – CrmObjectsResolver.php
|
NULL
|
15060
|
|
15061
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\DTO\ImportCall\Call;
use Jiminny\DTO\ImportCall\CrmIdentifier;
use Psr\Log\LoggerInterface;
class CrmObjectsResolver
{
private LoggerInterface $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function resolveFromCall(ServiceInterface $crmService, Call $call): array
{
$this->logger->info(sprintf('[%s] Resolving CRM objects', $call->getProvider()), [
'provider' => $call->getProvider(),
'callId' => $call->getCallId(),
'contactEmail' => $call->getContactEmail(),
'contactPhoneNumber' => $call->getOtherPartyPhoneNumber(),
]);
$decorator = resolve(CachedCrmServiceDecorator::class);
$decorator->setCrmService($crmService);
/**
* ArrayShape:
* $crmObjects = [$lead, $account, $opportunity, $contact, $stage]
*/
if (! empty($call->getContactEmail())) {
$crmObjects = $decorator->matchExactlyByEmail($call->getContactEmail(), $call->getUserId());
}
if (empty($crmObjects) && $call->getOtherPartyPhoneNumber() !== null) {
$crmObjects = $decorator->matchByPhone(
$call->getOtherPartyPhoneNumber(),
null,
$call->getUserId()
);
}
if ($call->hasCrmIdentifier()) {
$crmObjects = $this->matchCrmByObjectIds($crmService, $call);
}
if (empty($crmObjects) && ! empty($call->getContactEmail())) {
$crmObjects = $decorator->matchByDomain($call->getContactEmail(), $call->getUserId());
}
return ! empty($crmObjects)
? $crmObjects
: [];
}
/**
* Try to detect CRM data by using available Crm identifiers
*/
private function matchCrmByObjectIds(ServiceInterface $crmService, Call $call): array
{
$lead = $account = $opportunity = $contact = $stage = null;
$crmIdentifier = $call->getCrmIdentifier();
if (! $crmIdentifier instanceof CrmIdentifier) {
return [];
}
if ($crmIdentifier->hasClientId() || $crmIdentifier->hasActivityId()) {
try {
if ($crmIdentifier->hasClientId()) {
[$lead, , , $contact, $stage] = $crmService->parseRecords($crmIdentifier->getClientId());
}
if ($crmIdentifier->hasActivityId()) {
[ , , $opportunity, , $oppStage] = $crmService->parseRecords($crmIdentifier->getActivityId());
if ($stage === null) {
$stage = $oppStage;
}
}
if ($crmIdentifier->hasAccountId()) {
[ , $account, , , ] = $crmService->parseRecords($crmIdentifier->getAccountId());
}
} catch (\Exception $exception) {
$this->logger->warning('CRM lookup failed', [
'reason' => $exception->getMessage(),
'provider' => $call->getProvider(),
'call_id' => $call->getCallId(),
'payload' => $call,
]);
}
}
$data = [$lead, $account, $opportunity, $contact, $stage];
return ! empty(array_filter($data)) ? $data : [];
}
}
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"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – CrmObjectsResolver.php
|
NULL
|
15061
|
|
15062
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\DTO\ImportCall\Call;
use Jiminny\DTO\ImportCall\CrmIdentifier;
use Psr\Log\LoggerInterface;
class CrmObjectsResolver
{
private LoggerInterface $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function resolveFromCall(ServiceInterface $crmService, Call $call): array
{
$this->logger->info(sprintf('[%s] Resolving CRM objects', $call->getProvider()), [
'provider' => $call->getProvider(),
'callId' => $call->getCallId(),
'contactEmail' => $call->getContactEmail(),
'contactPhoneNumber' => $call->getOtherPartyPhoneNumber(),
]);
$decorator = resolve(CachedCrmServiceDecorator::class);
$decorator->setCrmService($crmService);
/**
* ArrayShape:
* $crmObjects = [$lead, $account, $opportunity, $contact, $stage]
*/
if (! empty($call->getContactEmail())) {
$crmObjects = $decorator->matchExactlyByEmail($call->getContactEmail(), $call->getUserId());
}
if (empty($crmObjects) && $call->getOtherPartyPhoneNumber() !== null) {
$crmObjects = $decorator->matchByPhone(
$call->getOtherPartyPhoneNumber(),
null,
$call->getUserId()
);
}
if ($call->hasCrmIdentifier()) {
$crmObjects = $this->matchCrmByObjectIds($crmService, $call);
}
if (empty($crmObjects) && ! empty($call->getContactEmail())) {
$crmObjects = $decorator->matchByDomain($call->getContactEmail(), $call->getUserId());
}
return ! empty($crmObjects)
? $crmObjects
: [];
}
/**
* Try to detect CRM data by using available Crm identifiers
*/
private function matchCrmByObjectIds(ServiceInterface $crmService, Call $call): array
{
$lead = $account = $opportunity = $contact = $stage = null;
$crmIdentifier = $call->getCrmIdentifier();
if (! $crmIdentifier instanceof CrmIdentifier) {
return [];
}
if ($crmIdentifier->hasClientId() || $crmIdentifier->hasActivityId()) {
try {
if ($crmIdentifier->hasClientId()) {
[$lead, , , $contact, $stage] = $crmService->parseRecords($crmIdentifier->getClientId());
}
if ($crmIdentifier->hasActivityId()) {
[ , , $opportunity, , $oppStage] = $crmService->parseRecords($crmIdentifier->getActivityId());
if ($stage === null) {
$stage = $oppStage;
}
}
if ($crmIdentifier->hasAccountId()) {
[ , $account, , , ] = $crmService->parseRecords($crmIdentifier->getAccountId());
}
} catch (\Exception $exception) {
$this->logger->warning('CRM lookup failed', [
'reason' => $exception->getMessage(),
'provider' => $call->getProvider(),
'call_id' => $call->getCallId(),
'payload' => $call,
]);
}
}
$data = [$lead, $account, $opportunity, $contact, $stage];
return ! empty(array_filter($data)) ? $data : [];
}
}
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"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – CrmObjectsResolver.php
|
NULL
|
15062
|
|
15063
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\DTO\ImportCall\Call;
use Jiminny\DTO\ImportCall\CrmIdentifier;
use Psr\Log\LoggerInterface;
class CrmObjectsResolver
{
private LoggerInterface $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function resolveFromCall(ServiceInterface $crmService, Call $call): array
{
$this->logger->info(sprintf('[%s] Resolving CRM objects', $call->getProvider()), [
'provider' => $call->getProvider(),
'callId' => $call->getCallId(),
'contactEmail' => $call->getContactEmail(),
'contactPhoneNumber' => $call->getOtherPartyPhoneNumber(),
]);
$decorator = resolve(CachedCrmServiceDecorator::class);
$decorator->setCrmService($crmService);
/**
* ArrayShape:
* $crmObjects = [$lead, $account, $opportunity, $contact, $stage]
*/
if (! empty($call->getContactEmail())) {
$crmObjects = $decorator->matchExactlyByEmail($call->getContactEmail(), $call->getUserId());
}
if (empty($crmObjects) && $call->getOtherPartyPhoneNumber() !== null) {
$crmObjects = $decorator->matchByPhone(
$call->getOtherPartyPhoneNumber(),
null,
$call->getUserId()
);
}
if ($call->hasCrmIdentifier()) {
$crmObjects = $this->matchCrmByObjectIds($crmService, $call);
}
if (empty($crmObjects) && ! empty($call->getContactEmail())) {
$crmObjects = $decorator->matchByDomain($call->getContactEmail(), $call->getUserId());
}
return ! empty($crmObjects)
? $crmObjects
: [];
}
/**
* Try to detect CRM data by using available Crm identifiers
*/
private function matchCrmByObjectIds(ServiceInterface $crmService, Call $call): array
{
$lead = $account = $opportunity = $contact = $stage = null;
$crmIdentifier = $call->getCrmIdentifier();
if (! $crmIdentifier instanceof CrmIdentifier) {
return [];
}
if ($crmIdentifier->hasClientId() || $crmIdentifier->hasActivityId()) {
try {
if ($crmIdentifier->hasClientId()) {
[$lead, , , $contact, $stage] = $crmService->parseRecords($crmIdentifier->getClientId());
}
if ($crmIdentifier->hasActivityId()) {
[ , , $opportunity, , $oppStage] = $crmService->parseRecords($crmIdentifier->getActivityId());
if ($stage === null) {
$stage = $oppStage;
}
}
if ($crmIdentifier->hasAccountId()) {
[ , $account, , , ] = $crmService->parseRecords($crmIdentifier->getAccountId());
}
} catch (\Exception $exception) {
$this->logger->warning('CRM lookup failed', [
'reason' => $exception->getMessage(),
'provider' => $call->getProvider(),
'call_id' => $call->getCallId(),
'payload' => $call,
]);
}
}
$data = [$lead, $account, $opportunity, $contact, $stage];
return ! empty(array_filter($data)) ? $data : [];
}
}
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"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – CrmObjectsResolver.php
|
NULL
|
15063
|
|
15064
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\DTO\ImportCall\Call;
use Jiminny\DTO\ImportCall\CrmIdentifier;
use Psr\Log\LoggerInterface;
class CrmObjectsResolver
{
private LoggerInterface $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function resolveFromCall(ServiceInterface $crmService, Call $call): array
{
$this->logger->info(sprintf('[%s] Resolving CRM objects', $call->getProvider()), [
'provider' => $call->getProvider(),
'callId' => $call->getCallId(),
'contactEmail' => $call->getContactEmail(),
'contactPhoneNumber' => $call->getOtherPartyPhoneNumber(),
]);
$decorator = resolve(CachedCrmServiceDecorator::class);
$decorator->setCrmService($crmService);
/**
* ArrayShape:
* $crmObjects = [$lead, $account, $opportunity, $contact, $stage]
*/
if (! empty($call->getContactEmail())) {
$crmObjects = $decorator->matchExactlyByEmail($call->getContactEmail(), $call->getUserId());
}
if (empty($crmObjects) && $call->getOtherPartyPhoneNumber() !== null) {
$crmObjects = $decorator->matchByPhone(
$call->getOtherPartyPhoneNumber(),
null,
$call->getUserId()
);
}
if ($call->hasCrmIdentifier()) {
$crmObjects = $this->matchCrmByObjectIds($crmService, $call);
}
if (empty($crmObjects) && ! empty($call->getContactEmail())) {
$crmObjects = $decorator->matchByDomain($call->getContactEmail(), $call->getUserId());
}
return ! empty($crmObjects)
? $crmObjects
: [];
}
/**
* Try to detect CRM data by using available Crm identifiers
*/
private function matchCrmByObjectIds(ServiceInterface $crmService, Call $call): array
{
$lead = $account = $opportunity = $contact = $stage = null;
$crmIdentifier = $call->getCrmIdentifier();
if (! $crmIdentifier instanceof CrmIdentifier) {
return [];
}
if ($crmIdentifier->hasClientId() || $crmIdentifier->hasActivityId()) {
try {
if ($crmIdentifier->hasClientId()) {
[$lead, , , $contact, $stage] = $crmService->parseRecords($crmIdentifier->getClientId());
}
if ($crmIdentifier->hasActivityId()) {
[ , , $opportunity, , $oppStage] = $crmService->parseRecords($crmIdentifier->getActivityId());
if ($stage === null) {
$stage = $oppStage;
}
}
if ($crmIdentifier->hasAccountId()) {
[ , $account, , , ] = $crmService->parseRecords($crmIdentifier->getAccountId());
}
} catch (\Exception $exception) {
$this->logger->warning('CRM lookup failed', [
'reason' => $exception->getMessage(),
'provider' => $call->getProvider(),
'call_id' => $call->getCallId(),
'payload' => $call,
]);
}
}
$data = [$lead, $account, $opportunity, $contact, $stage];
return ! empty(array_filter($data)) ? $data : [];
}
}
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"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – CrmObjectsResolver.php
|
NULL
|
15064
|
|
16724
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
14
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\UserAutomatedReports;
use Illuminate\Support\Carbon;
use Illuminate\Http\JsonResponse;
use Jiminny\Exceptions\ApplicationException;
use Jiminny\Http\Controllers\Controller;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\ApiResponseService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
use Jiminny\Services\PlanhatService;
use Illuminate\Http\Request;
use Throwable;
class UserAutomatedReportsController extends Controller
{
public const int RESULTS_PER_PAGE = 25;
public const string SORT_COLUMN = 'sort_column';
public const string SORT_DIRECTION = 'sort_direction';
public function __construct(
private readonly AutomatedReportsRepository $automatedReportsRepository,
private readonly AutomatedReportsService $automatedReportsService,
private readonly ApiResponseService $apiResponseService,
private readonly Response $response,
private readonly PlanhatService $planhatService,
) {
parent::__construct();
}
public function trackInterest(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
defer(
fn () => $this->planhatService->track(
user: $user,
event: 'automated-reports-track-interest',
)
)->always();
return $this->response->withOk();
}
/**
* @throws ApplicationException
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
$teamIds = $request->has('team')
? (array) $request->get('team')
: [];
$reportTypes = $request->has('report_type')
? (array) $request->get('report_type')
: [];
$name = $request->has('name') ? trim($request->get('name', '')) : null;
try {
$fromDate = $request->has('from_date') ? Carbon::parse($request->get('from_date')) : null;
$toDate = $request->has('to_date') ? Carbon::parse($request->get('to_date')) : null;
} catch (\Exception) {
return $this->response->errorWrongArgs('Invalid date.');
}
$page = $request->has('page') ? (int) $request->get('page') : 1;
$sort = ReportSort::tryFrom(
$request->get(self::SORT_COLUMN, '')
) ?? ReportSort::GENERATED_AT;
$sortDirection = ReportSortDirection::tryFrom(
strtolower($request->get(self::SORT_DIRECTION, ''))
) ?? ReportSortDirection::DESC;
$paginatedUserReports = $this->automatedReportsRepository->getPaginatedUserReports(
user: $user,
sort: $sort,
sortDirection: $sortDirection,
resultsPerPage: self::RESULTS_PER_PAGE,
page: $page,
fromDate: $fromDate,
toDate: $toDate,
teamIds: array_map('intval', $teamIds),
reportTypes: $reportTypes,
name: $name,
);
$reportResults = $this->automatedReportsService->transformReportResults(
$paginatedUserReports->getCollection()
);
$team = $user->getTeam();
$reportTypeFilter = $this->automatedReportsService->getReportTypeFieldData(
shortVersion: true,
team: $team
);
$data = $this->apiResponseService->fromPaginatorToArray(
paginator: $paginatedUserReports,
data: $reportResults,
moreMeta: [
self::SORT_COLUMN => $sort->value,
self::SORT_DIRECTION => $sortDirection->value,
],
filters: [
$reportTypeFilter['id'] => $reportTypeFilter,
],
);
return $this->response->withArray($data);
}
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$result = $this->automatedReportsRepository->findResultByUuidForUser($uuid, $user);
if ($result === null) {
return new JsonResponse(
data: ['error' => 'Report not found'],
status: JsonResponse::HTTP_NOT_FOUND
);
}
$result->delete();
return new JsonResponse(null, JsonResponse::HTTP_NO_CONTENT);
} catch (Throwable $e) {
return new JsonResponse(
data: ['error' => 'Failed to delete report result'],
status: JsonResponse::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
Sync Changes
Hide This Notification
Code changed:...
|
PhpStorm
|
faVsco.js – UserAutomatedReportsController.php
|
NULL
|
16724
|
|
16683
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
14
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\UserAutomatedReports;
use Illuminate\Support\Carbon;
use Illuminate\Http\JsonResponse;
use Jiminny\Exceptions\ApplicationException;
use Jiminny\Http\Controllers\Controller;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\ApiResponseService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
use Jiminny\Services\PlanhatService;
use Illuminate\Http\Request;
use Throwable;
class UserAutomatedReportsController extends Controller
{
public const int RESULTS_PER_PAGE = 25;
public const string SORT_COLUMN = 'sort_column';
public const string SORT_DIRECTION = 'sort_direction';
public function __construct(
private readonly AutomatedReportsRepository $automatedReportsRepository,
private readonly AutomatedReportsService $automatedReportsService,
private readonly ApiResponseService $apiResponseService,
private readonly Response $response,
private readonly PlanhatService $planhatService,
) {
parent::__construct();
}
public function trackInterest(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
defer(
fn () => $this->planhatService->track(
user: $user,
event: 'automated-reports-track-interest',
)
)->always();
return $this->response->withOk();
}
/**
* @throws ApplicationException
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
$teamIds = $request->has('team')
? (array) $request->get('team')
: [];
$reportTypes = $request->has('report_type')
? (array) $request->get('report_type')
: [];
$name = $request->has('name') ? trim($request->get('name', '')) : null;
try {
$fromDate = $request->has('from_date') ? Carbon::parse($request->get('from_date')) : null;
$toDate = $request->has('to_date') ? Carbon::parse($request->get('to_date')) : null;
} catch (\Exception) {
return $this->response->errorWrongArgs('Invalid date.');
}
$page = $request->has('page') ? (int) $request->get('page') : 1;
$sort = ReportSort::tryFrom(
$request->get(self::SORT_COLUMN, '')
) ?? ReportSort::GENERATED_AT;
$sortDirection = ReportSortDirection::tryFrom(
strtolower($request->get(self::SORT_DIRECTION, ''))
) ?? ReportSortDirection::DESC;
$paginatedUserReports = $this->automatedReportsRepository->getPaginatedUserReports(
user: $user,
sort: $sort,
sortDirection: $sortDirection,
resultsPerPage: self::RESULTS_PER_PAGE,
page: $page,
fromDate: $fromDate,
toDate: $toDate,
teamIds: array_map('intval', $teamIds),
reportTypes: $reportTypes,
name: $name,
);
$reportResults = $this->automatedReportsService->transformReportResults(
$paginatedUserReports->getCollection()
);
$team = $user->getTeam();
$reportTypeFilter = $this->automatedReportsService->getReportTypeFieldData(
shortVersion: true,
team: $team
);
$data = $this->apiResponseService->fromPaginatorToArray(
paginator: $paginatedUserReports,
data: $reportResults,
moreMeta: [
self::SORT_COLUMN => $sort->value,
self::SORT_DIRECTION => $sortDirection->value,
],
filters: [
$reportTypeFilter['id'] => $reportTypeFilter,
],
);
return $this->response->withArray($data);
}
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$result = $this->automatedReportsRepository->findResultByUuidForUser($uuid, $user);
if ($result === null) {
return new JsonResponse(
data: ['error' => 'Report not found'],
status: JsonResponse::HTTP_NOT_FOUND
);
}
$result->delete();
return new JsonResponse(null, JsonResponse::HTTP_NO_CONTENT);
} catch (Throwable $e) {
return new JsonResponse(
data: ['error' => 'Failed to delete report result'],
status: JsonResponse::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
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"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – UserAutomatedReportsController.php
|
NULL
|
16683
|
|
16684
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
14
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\UserAutomatedReports;
use Illuminate\Support\Carbon;
use Illuminate\Http\JsonResponse;
use Jiminny\Exceptions\ApplicationException;
use Jiminny\Http\Controllers\Controller;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\ApiResponseService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
use Jiminny\Services\PlanhatService;
use Illuminate\Http\Request;
use Throwable;
class UserAutomatedReportsController extends Controller
{
public const int RESULTS_PER_PAGE = 25;
public const string SORT_COLUMN = 'sort_column';
public const string SORT_DIRECTION = 'sort_direction';
public function __construct(
private readonly AutomatedReportsRepository $automatedReportsRepository,
private readonly AutomatedReportsService $automatedReportsService,
private readonly ApiResponseService $apiResponseService,
private readonly Response $response,
private readonly PlanhatService $planhatService,
) {
parent::__construct();
}
public function trackInterest(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
defer(
fn () => $this->planhatService->track(
user: $user,
event: 'automated-reports-track-interest',
)
)->always();
return $this->response->withOk();
}
/**
* @throws ApplicationException
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
$teamIds = $request->has('team')
? (array) $request->get('team')
: [];
$reportTypes = $request->has('report_type')
? (array) $request->get('report_type')
: [];
$name = $request->has('name') ? trim($request->get('name', '')) : null;
try {
$fromDate = $request->has('from_date') ? Carbon::parse($request->get('from_date')) : null;
$toDate = $request->has('to_date') ? Carbon::parse($request->get('to_date')) : null;
} catch (\Exception) {
return $this->response->errorWrongArgs('Invalid date.');
}
$page = $request->has('page') ? (int) $request->get('page') : 1;
$sort = ReportSort::tryFrom(
$request->get(self::SORT_COLUMN, '')
) ?? ReportSort::GENERATED_AT;
$sortDirection = ReportSortDirection::tryFrom(
strtolower($request->get(self::SORT_DIRECTION, ''))
) ?? ReportSortDirection::DESC;
$paginatedUserReports = $this->automatedReportsRepository->getPaginatedUserReports(
user: $user,
sort: $sort,
sortDirection: $sortDirection,
resultsPerPage: self::RESULTS_PER_PAGE,
page: $page,
fromDate: $fromDate,
toDate: $toDate,
teamIds: array_map('intval', $teamIds),
reportTypes: $reportTypes,
name: $name,
);
$reportResults = $this->automatedReportsService->transformReportResults(
$paginatedUserReports->getCollection()
);
$team = $user->getTeam();
$reportTypeFilter = $this->automatedReportsService->getReportTypeFieldData(
shortVersion: true,
team: $team
);
$data = $this->apiResponseService->fromPaginatorToArray(
paginator: $paginatedUserReports,
data: $reportResults,
moreMeta: [
self::SORT_COLUMN => $sort->value,
self::SORT_DIRECTION => $sortDirection->value,
],
filters: [
$reportTypeFilter['id'] => $reportTypeFilter,
],
);
return $this->response->withArray($data);
}
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$result = $this->automatedReportsRepository->findResultByUuidForUser($uuid, $user);
if ($result === null) {
return new JsonResponse(
data: ['error' => 'Report not found'],
status: JsonResponse::HTTP_NOT_FOUND
);
}
$result->delete();
return new JsonResponse(null, JsonResponse::HTTP_NO_CONTENT);
} catch (Throwable $e) {
return new JsonResponse(
data: ['error' => 'Failed to delete report result'],
status: JsonResponse::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
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"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – UserAutomatedReportsController.php
|
NULL
|
16684
|
|
16685
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
14
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\UserAutomatedReports;
use Illuminate\Support\Carbon;
use Illuminate\Http\JsonResponse;
use Jiminny\Exceptions\ApplicationException;
use Jiminny\Http\Controllers\Controller;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\ApiResponseService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
use Jiminny\Services\PlanhatService;
use Illuminate\Http\Request;
use Throwable;
class UserAutomatedReportsController extends Controller
{
public const int RESULTS_PER_PAGE = 25;
public const string SORT_COLUMN = 'sort_column';
public const string SORT_DIRECTION = 'sort_direction';
public function __construct(
private readonly AutomatedReportsRepository $automatedReportsRepository,
private readonly AutomatedReportsService $automatedReportsService,
private readonly ApiResponseService $apiResponseService,
private readonly Response $response,
private readonly PlanhatService $planhatService,
) {
parent::__construct();
}
public function trackInterest(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
defer(
fn () => $this->planhatService->track(
user: $user,
event: 'automated-reports-track-interest',
)
)->always();
return $this->response->withOk();
}
/**
* @throws ApplicationException
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
$teamIds = $request->has('team')
? (array) $request->get('team')
: [];
$reportTypes = $request->has('report_type')
? (array) $request->get('report_type')
: [];
$name = $request->has('name') ? trim($request->get('name', '')) : null;
try {
$fromDate = $request->has('from_date') ? Carbon::parse($request->get('from_date')) : null;
$toDate = $request->has('to_date') ? Carbon::parse($request->get('to_date')) : null;
} catch (\Exception) {
return $this->response->errorWrongArgs('Invalid date.');
}
$page = $request->has('page') ? (int) $request->get('page') : 1;
$sort = ReportSort::tryFrom(
$request->get(self::SORT_COLUMN, '')
) ?? ReportSort::GENERATED_AT;
$sortDirection = ReportSortDirection::tryFrom(
strtolower($request->get(self::SORT_DIRECTION, ''))
) ?? ReportSortDirection::DESC;
$paginatedUserReports = $this->automatedReportsRepository->getPaginatedUserReports(
user: $user,
sort: $sort,
sortDirection: $sortDirection,
resultsPerPage: self::RESULTS_PER_PAGE,
page: $page,
fromDate: $fromDate,
toDate: $toDate,
teamIds: array_map('intval', $teamIds),
reportTypes: $reportTypes,
name: $name,
);
$reportResults = $this->automatedReportsService->transformReportResults(
$paginatedUserReports->getCollection()
);
$team = $user->getTeam();
$reportTypeFilter = $this->automatedReportsService->getReportTypeFieldData(
shortVersion: true,
team: $team
);
$data = $this->apiResponseService->fromPaginatorToArray(
paginator: $paginatedUserReports,
data: $reportResults,
moreMeta: [
self::SORT_COLUMN => $sort->value,
self::SORT_DIRECTION => $sortDirection->value,
],
filters: [
$reportTypeFilter['id'] => $reportTypeFilter,
],
);
return $this->response->withArray($data);
}
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$result = $this->automatedReportsRepository->findResultByUuidForUser($uuid, $user);
if ($result === null) {
return new JsonResponse(
data: ['error' => 'Report not found'],
status: JsonResponse::HTTP_NOT_FOUND
);
}
$result->delete();
return new JsonResponse(null, JsonResponse::HTTP_NO_CONTENT);
} catch (Throwable $e) {
return new JsonResponse(
data: ['error' => 'Failed to delete report result'],
status: JsonResponse::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
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"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – UserAutomatedReportsController.php
|
NULL
|
16685
|
|
16686
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
14
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\UserAutomatedReports;
use Illuminate\Support\Carbon;
use Illuminate\Http\JsonResponse;
use Jiminny\Exceptions\ApplicationException;
use Jiminny\Http\Controllers\Controller;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\ApiResponseService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
use Jiminny\Services\PlanhatService;
use Illuminate\Http\Request;
use Throwable;
class UserAutomatedReportsController extends Controller
{
public const int RESULTS_PER_PAGE = 25;
public const string SORT_COLUMN = 'sort_column';
public const string SORT_DIRECTION = 'sort_direction';
public function __construct(
private readonly AutomatedReportsRepository $automatedReportsRepository,
private readonly AutomatedReportsService $automatedReportsService,
private readonly ApiResponseService $apiResponseService,
private readonly Response $response,
private readonly PlanhatService $planhatService,
) {
parent::__construct();
}
public function trackInterest(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
defer(
fn () => $this->planhatService->track(
user: $user,
event: 'automated-reports-track-interest',
)
)->always();
return $this->response->withOk();
}
/**
* @throws ApplicationException
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
$teamIds = $request->has('team')
? (array) $request->get('team')
: [];
$reportTypes = $request->has('report_type')
? (array) $request->get('report_type')
: [];
$name = $request->has('name') ? trim($request->get('name', '')) : null;
try {
$fromDate = $request->has('from_date') ? Carbon::parse($request->get('from_date')) : null;
$toDate = $request->has('to_date') ? Carbon::parse($request->get('to_date')) : null;
} catch (\Exception) {
return $this->response->errorWrongArgs('Invalid date.');
}
$page = $request->has('page') ? (int) $request->get('page') : 1;
$sort = ReportSort::tryFrom(
$request->get(self::SORT_COLUMN, '')
) ?? ReportSort::GENERATED_AT;
$sortDirection = ReportSortDirection::tryFrom(
strtolower($request->get(self::SORT_DIRECTION, ''))
) ?? ReportSortDirection::DESC;
$paginatedUserReports = $this->automatedReportsRepository->getPaginatedUserReports(
user: $user,
sort: $sort,
sortDirection: $sortDirection,
resultsPerPage: self::RESULTS_PER_PAGE,
page: $page,
fromDate: $fromDate,
toDate: $toDate,
teamIds: array_map('intval', $teamIds),
reportTypes: $reportTypes,
name: $name,
);
$reportResults = $this->automatedReportsService->transformReportResults(
$paginatedUserReports->getCollection()
);
$team = $user->getTeam();
$reportTypeFilter = $this->automatedReportsService->getReportTypeFieldData(
shortVersion: true,
team: $team
);
$data = $this->apiResponseService->fromPaginatorToArray(
paginator: $paginatedUserReports,
data: $reportResults,
moreMeta: [
self::SORT_COLUMN => $sort->value,
self::SORT_DIRECTION => $sortDirection->value,
],
filters: [
$reportTypeFilter['id'] => $reportTypeFilter,
],
);
return $this->response->withArray($data);
}
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$result = $this->automatedReportsRepository->findResultByUuidForUser($uuid, $user);
if ($result === null) {
return new JsonResponse(
data: ['error' => 'Report not found'],
status: JsonResponse::HTTP_NOT_FOUND
);
}
$result->delete();
return new JsonResponse(null, JsonResponse::HTTP_NO_CONTENT);
} catch (Throwable $e) {
return new JsonResponse(
data: ['error' => 'Failed to delete report result'],
status: JsonResponse::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
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"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – UserAutomatedReportsController.php
|
NULL
|
16686
|
|
16722
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
14
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\UserAutomatedReports;
use Illuminate\Support\Carbon;
use Illuminate\Http\JsonResponse;
use Jiminny\Exceptions\ApplicationException;
use Jiminny\Http\Controllers\Controller;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\ApiResponseService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
use Jiminny\Services\PlanhatService;
use Illuminate\Http\Request;
use Throwable;
class UserAutomatedReportsController extends Controller
{
public const int RESULTS_PER_PAGE = 25;
public const string SORT_COLUMN = 'sort_column';
public const string SORT_DIRECTION = 'sort_direction';
public function __construct(
private readonly AutomatedReportsRepository $automatedReportsRepository,
private readonly AutomatedReportsService $automatedReportsService,
private readonly ApiResponseService $apiResponseService,
private readonly Response $response,
private readonly PlanhatService $planhatService,
) {
parent::__construct();
}
public function trackInterest(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
defer(
fn () => $this->planhatService->track(
user: $user,
event: 'automated-reports-track-interest',
)
)->always();
return $this->response->withOk();
}
/**
* @throws ApplicationException
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
$teamIds = $request->has('team')
? (array) $request->get('team')
: [];
$reportTypes = $request->has('report_type')
? (array) $request->get('report_type')
: [];
$name = $request->has('name') ? trim($request->get('name', '')) : null;
try {
$fromDate = $request->has('from_date') ? Carbon::parse($request->get('from_date')) : null;
$toDate = $request->has('to_date') ? Carbon::parse($request->get('to_date')) : null;
} catch (\Exception) {
return $this->response->errorWrongArgs('Invalid date.');
}
$page = $request->has('page') ? (int) $request->get('page') : 1;
$sort = ReportSort::tryFrom(
$request->get(self::SORT_COLUMN, '')
) ?? ReportSort::GENERATED_AT;
$sortDirection = ReportSortDirection::tryFrom(
strtolower($request->get(self::SORT_DIRECTION, ''))
) ?? ReportSortDirection::DESC;
$paginatedUserReports = $this->automatedReportsRepository->getPaginatedUserReports(
user: $user,
sort: $sort,
sortDirection: $sortDirection,
resultsPerPage: self::RESULTS_PER_PAGE,
page: $page,
fromDate: $fromDate,
toDate: $toDate,
teamIds: array_map('intval', $teamIds),
reportTypes: $reportTypes,
name: $name,
);
$reportResults = $this->automatedReportsService->transformReportResults(
$paginatedUserReports->getCollection()
);
$team = $user->getTeam();
$reportTypeFilter = $this->automatedReportsService->getReportTypeFieldData(
shortVersion: true,
team: $team
);
$data = $this->apiResponseService->fromPaginatorToArray(
paginator: $paginatedUserReports,
data: $reportResults,
moreMeta: [
self::SORT_COLUMN => $sort->value,
self::SORT_DIRECTION => $sortDirection->value,
],
filters: [
$reportTypeFilter['id'] => $reportTypeFilter,
],
);
return $this->response->withArray($data);
}
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$result = $this->automatedReportsRepository->findResultByUuidForUser($uuid, $user);
if ($result === null) {
return new JsonResponse(
data: ['error' => 'Report not found'],
status: JsonResponse::HTTP_NOT_FOUND
);
}
$result->delete();
return new JsonResponse(null, JsonResponse::HTTP_NO_CONTENT);
} catch (Throwable $e) {
return new JsonResponse(
data: ['error' => 'Failed to delete report result'],
status: JsonResponse::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
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"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – UserAutomatedReportsController.php
|
NULL
|
16722
|
|
16862
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\Crm\Delete;
use Illuminate\Events\Dispatcher;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Jiminny\Enums\CrmObject;
use Jiminny\Events\Crm\DetachActivityObject;
use Jiminny\Models\Activity;
use Psr\Log\LoggerInterface;
use Throwable;
trait DeleteCrmEntityTrait
{
public int $tries = 3;
public function timeout(): int
{
return 300; // 5 minutes
}
public function backoff(): array
{
return [30, 90, 180]; // 30 seconds, 1.5 minutes, 3 minutes
}
protected function handleActivities(
Collection $activities,
Dispatcher $dispatcher,
LoggerInterface $logger,
bool $emitEvent = true,
): void {
if ($activities->isEmpty()) {
return;
}
$crmObject = $this->getEntityType();
$entityIdField = $crmObject->value . '_id';
$activities->each(
function (Activity $activity) use ($dispatcher, $logger, $entityIdField, $crmObject, $emitEvent): void {
$stageId = $activity->getStage()?->getId();
$logData = [
$crmObject->value => $this->id,
'activity' => $activity->getId(),
'emitEvent' => $emitEvent,
];
$updateData = [
$entityIdField => null,
];
// For leads and opportunities, also nullify the stage_id
if ($stageId && in_array($crmObject, [CrmObject::LEAD, CrmObject::OPPORTUNITY], true)) {
$updateData['stage_id'] = null;
$logData['stage_id'] = $stageId;
}
$activity->update($updateData);
if ($emitEvent) {
$dispatcher->dispatch(new DetachActivityObject($activity, $crmObject));
}
$logger->info($this->getLogPrefix() . ' Detach from activity', $logData);
// Dispatch job to verify if CRM task/event still exists
if ($activity->hasCrmProviderId()) {
VerifyActivityCrmTaskJob::dispatch($activity->getId());
}
}
);
}
public function failed(Throwable $exception): void
{
$crmObject = $this->getEntityType();
Log::critical($this->getLogPrefix() . ' Job failed permanently', [
$crmObject->value => $this->id,
'exception' => $exception->getMessage(),
]);
}
// Abstract methods that must be implemented by the using class
abstract protected function getLogPrefix(): string;
abstract protected function getEntityType(): CrmObject;
}...
|
PhpStorm
|
faVsco.js – DeleteCrmEntityTrait.php
|
NULL
|
16862
|