|
50066
|
1775
|
41
|
2026-05-18T07:14:07.779494+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088447779_m1.jpg...
|
PhpStorm
|
faVsco.js – Kernel.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Finder FileEdit View€ <→ CGoWindowHelp‹ >0 • Finder FileEdit View€ <→ CGoWindowHelp‹ >0 • $ Preparation for Refi... in 4h 46m [AJ)A 100% C42 &• Mon 18 May 10:14:07• =@ meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comReturning to home screenYou left the meetingRejoinReturn to home screenHow was the audio and video?Very badVery good• Feedback...
|
NULL
|
7738914734502281991
|
NULL
|
click
|
ocr
|
NULL
|
Finder FileEdit View€ <→ CGoWindowHelp‹ >0 • Finder FileEdit View€ <→ CGoWindowHelp‹ >0 • $ Preparation for Refi... in 4h 46m [AJ)A 100% C42 &• Mon 18 May 10:14:07• =@ meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comReturning to home screenYou left the meetingRejoinReturn to home screenHow was the audio and video?Very badVery good• Feedback...
|
50064
|
NULL
|
NULL
|
NULL
|
|
50067
|
1776
|
30
|
2026-05-18T07:14:07.804298+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088447804_m2.jpg...
|
PhpStorm
|
faVsco.js – Kernel.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhostormINavicarecodeFV faVsco.jsroledey© WhichWor PhostormINavicarecodeFV faVsco.jsroledey© WhichWorkerlsWorkingOnWhichJob.phpconverLeadAcuvites.orgPurgelookupcache.onp© SyncToPlanhat.php> @ Scheduling› D Contractsc createrlaybookcreatedevent.ong• _ Domainv ODTO0 Activitypnp api.onoc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.pho— customerApiC) PlanhatactivityListener.php(C) AutomatedReportsRepository.php_ ExternalServicelntegrations©AutomatedReportsCommand.ohpC) RequestGenerateReport.Job.ohv) ImportcalliInvitation(C)AutomatedReportResult.ohvC. AutomatedReport.ohdV EditTeamModal.vueC) UserinvitationdTo.ohpRolesaSCIM© CreateTeamRequest.php© UserinvitationDTO.php xclass UserInvitationntoroleras: intlunA2Y4A117 Scorecardi1sowner: b00l.ServiceM UsersT UserEmail.phpM Smailsuser?: Usen* Sattributes→ M Snumeprivate function __construct(array $attributes)D EventsM ActivitiosSthis->email = mb strtolowerSattributesi'ematl'):>@ ActivityProvider$this->secondaryEmail = Sthis->normalizeNullable(Sattributes['secondaryEmaTM AiAutomation$this->groupld = $attributes['groupid'];D AudioTm Rote> D Coaching$this->teamid = (int) $attributes['teamId'];$this->crmRequired = (bool) $attributes['crmRequired']:$this->roleIds = $attributes('rolelds']:_conterencesSthis-sichwnen = Sattnihutecfrichwnentl.,m connections$this->currentUser = Sattributes['user'] ?? null;• ermc) Activitycancelled.phpc)ActivitycancelledAsNoshow.phpC) ActivityLeadConverted.phppublic static function for0wner(CreateTeamRequest|EditTeamRequest Srequest. TeC) ActivityLinkedToerm.phpc) Activitvloaged.onoSroleIds = Role::whereInd coC)ActivitvScheduled.ohvUser::ROLE ADMINC) AutoLoaActivitv.ohrC) EmailWithCRMObiectsProcessed.onoUser::ROLE RECURDER1)->pluck( colu'id')->toArrayO:C) FollowuoScheduled.onoC) LeadConverted.oho** ovar User Scurrentlser */C) Stacechanded.nhnScurrentUser = Sreauest->usero:M Dialers> M Meccadesreturn new selfal'email' => Sreauest->aet0wnerEma1loliteamtdt= Steam->aettdiol999 MB ne'crmRequired' => true,'poleTdst => SroleTdsl(e) ActivituCrontod nhn'user' => $currentUser,© ActivityCrmProvidedUpdated.php=custom.loglaravel.logA SF [jiminny@localhost]& console [STAGING]A HS_local [jiminny@localhost]A console [PROD]fii users (PROD]TestPipedriveOfficialSdkCommand.php# console Eul3563573583593601374|376 O1416456457—486class kernel excenas consolekernelRestoreTracksCommand::class,alle lelond ialnlelakerveeolninteintoleeeeProcessMerged0bjectsCommand::class,HubspotJournalPollingCommand::class,secupsournacueatweonooksudscrapcronsconmand..class.LiscuournaLweonooksuoscrzpcronscommane..c.asskemovebnostrarczcrpancscommand..classAutodetectAiActivityTypeCommand::classcommanas crm LogAcciv1clescommand::classCommands\Crm\MatchOpportunityActivitiesCommand::class.Purgevelecedupporcuniclestommand::classkecrvrrospecrsummarvcommand.: classSvncpportunztestissingF1eldbatacommand::class.Commands Crm TestPipedrive0fficialSdkcommand::class.nrivate Schedule Sschedule:nrivate strind Soutout.protected function schedule(Schedule $schedule): voidt...hTusageprotected function scheduleEveryMinute: void{...}1 usageprotected function scheduleEveryTwoMinutes: voidf...}protected function scheduleEveryFiveMinutes(: void{...}protected function scheduleEveryTenMinutesO: voidf...}1 usageprotected function scheduleEveryFifteenMinutesO: void{...}l1usade.protected function scheduleEveryThirtvMinutes(): voids...}1 usageprotected function scheduleHourlyO: voidt...}RenectDebugging Pipedrive SAnalvzed vendor/oioedrive/pipedrive/Lib/versions/v2/Ao1Thoughts• TestPipedriveOfficialSdkCommand.phpTestPipedriveOfficialSdkCommand.phpThoughts• TestPipedriveOfficialSdkCommand.phplhoughisCommand dockerl•docker exec docker lamp 1 pho artisan 11minnv:test-o1pedrive=ott1c1al-sdk 19Starting Pipedrive Official SDK POC for Team ID: 19Found Pipedrive account for team: Pipedrive, IncTest 1: SAuth Uth tializatioation: Client initialized successfully in 192,87msTes to2e B Tsen tRiResultsAccess to file DealsAni!Confetti PavcastAccess to directory Ap.Create Quicklink RaycastInoughtsI'm usina the ofricial SolCapture Previous Area CleanShot XCurrent Statusconvert imestamo to Date Unix lmestamo• Usina: Pinedrivelv•Issue: Method namConvert Date to Timestamo Unix Timestamo• Cannot inspect v2 gClinboard History RavcastOptions to proceed:1 Iieo w Cok lwbich"Create Snippet Snippets2. You provide the coCenter Third Window Manadement3. I try common meth4. Use direct HTTP caWhich annroach would2 files +76-28>the idea is to repllSWF.16• Preparation tor Kell.. In 4h 40 m100% 1• Mon 18 May 10:14:07+0 ..+7 -7+16-8+32 -8Open CommandFianore Files.Command|are FllosCommandinv2 and l can't access theCommandCommandCommandCommandCommandlCommandCommandataneG..l..* Reiect alliiAccent alliPo. 4 space...
|
NULL
|
-4650464201018709092
|
NULL
|
click
|
ocr
|
NULL
|
PhostormINavicarecodeFV faVsco.jsroledey© WhichWor PhostormINavicarecodeFV faVsco.jsroledey© WhichWorkerlsWorkingOnWhichJob.phpconverLeadAcuvites.orgPurgelookupcache.onp© SyncToPlanhat.php> @ Scheduling› D Contractsc createrlaybookcreatedevent.ong• _ Domainv ODTO0 Activitypnp api.onoc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.pho— customerApiC) PlanhatactivityListener.php(C) AutomatedReportsRepository.php_ ExternalServicelntegrations©AutomatedReportsCommand.ohpC) RequestGenerateReport.Job.ohv) ImportcalliInvitation(C)AutomatedReportResult.ohvC. AutomatedReport.ohdV EditTeamModal.vueC) UserinvitationdTo.ohpRolesaSCIM© CreateTeamRequest.php© UserinvitationDTO.php xclass UserInvitationntoroleras: intlunA2Y4A117 Scorecardi1sowner: b00l.ServiceM UsersT UserEmail.phpM Smailsuser?: Usen* Sattributes→ M Snumeprivate function __construct(array $attributes)D EventsM ActivitiosSthis->email = mb strtolowerSattributesi'ematl'):>@ ActivityProvider$this->secondaryEmail = Sthis->normalizeNullable(Sattributes['secondaryEmaTM AiAutomation$this->groupld = $attributes['groupid'];D AudioTm Rote> D Coaching$this->teamid = (int) $attributes['teamId'];$this->crmRequired = (bool) $attributes['crmRequired']:$this->roleIds = $attributes('rolelds']:_conterencesSthis-sichwnen = Sattnihutecfrichwnentl.,m connections$this->currentUser = Sattributes['user'] ?? null;• ermc) Activitycancelled.phpc)ActivitycancelledAsNoshow.phpC) ActivityLeadConverted.phppublic static function for0wner(CreateTeamRequest|EditTeamRequest Srequest. TeC) ActivityLinkedToerm.phpc) Activitvloaged.onoSroleIds = Role::whereInd coC)ActivitvScheduled.ohvUser::ROLE ADMINC) AutoLoaActivitv.ohrC) EmailWithCRMObiectsProcessed.onoUser::ROLE RECURDER1)->pluck( colu'id')->toArrayO:C) FollowuoScheduled.onoC) LeadConverted.oho** ovar User Scurrentlser */C) Stacechanded.nhnScurrentUser = Sreauest->usero:M Dialers> M Meccadesreturn new selfal'email' => Sreauest->aet0wnerEma1loliteamtdt= Steam->aettdiol999 MB ne'crmRequired' => true,'poleTdst => SroleTdsl(e) ActivituCrontod nhn'user' => $currentUser,© ActivityCrmProvidedUpdated.php=custom.loglaravel.logA SF [jiminny@localhost]& console [STAGING]A HS_local [jiminny@localhost]A console [PROD]fii users (PROD]TestPipedriveOfficialSdkCommand.php# console Eul3563573583593601374|376 O1416456457—486class kernel excenas consolekernelRestoreTracksCommand::class,alle lelond ialnlelakerveeolninteintoleeeeProcessMerged0bjectsCommand::class,HubspotJournalPollingCommand::class,secupsournacueatweonooksudscrapcronsconmand..class.LiscuournaLweonooksuoscrzpcronscommane..c.asskemovebnostrarczcrpancscommand..classAutodetectAiActivityTypeCommand::classcommanas crm LogAcciv1clescommand::classCommands\Crm\MatchOpportunityActivitiesCommand::class.Purgevelecedupporcuniclestommand::classkecrvrrospecrsummarvcommand.: classSvncpportunztestissingF1eldbatacommand::class.Commands Crm TestPipedrive0fficialSdkcommand::class.nrivate Schedule Sschedule:nrivate strind Soutout.protected function schedule(Schedule $schedule): voidt...hTusageprotected function scheduleEveryMinute: void{...}1 usageprotected function scheduleEveryTwoMinutes: voidf...}protected function scheduleEveryFiveMinutes(: void{...}protected function scheduleEveryTenMinutesO: voidf...}1 usageprotected function scheduleEveryFifteenMinutesO: void{...}l1usade.protected function scheduleEveryThirtvMinutes(): voids...}1 usageprotected function scheduleHourlyO: voidt...}RenectDebugging Pipedrive SAnalvzed vendor/oioedrive/pipedrive/Lib/versions/v2/Ao1Thoughts• TestPipedriveOfficialSdkCommand.phpTestPipedriveOfficialSdkCommand.phpThoughts• TestPipedriveOfficialSdkCommand.phplhoughisCommand dockerl•docker exec docker lamp 1 pho artisan 11minnv:test-o1pedrive=ott1c1al-sdk 19Starting Pipedrive Official SDK POC for Team ID: 19Found Pipedrive account for team: Pipedrive, IncTest 1: SAuth Uth tializatioation: Client initialized successfully in 192,87msTes to2e B Tsen tRiResultsAccess to file DealsAni!Confetti PavcastAccess to directory Ap.Create Quicklink RaycastInoughtsI'm usina the ofricial SolCapture Previous Area CleanShot XCurrent Statusconvert imestamo to Date Unix lmestamo• Usina: Pinedrivelv•Issue: Method namConvert Date to Timestamo Unix Timestamo• Cannot inspect v2 gClinboard History RavcastOptions to proceed:1 Iieo w Cok lwbich"Create Snippet Snippets2. You provide the coCenter Third Window Manadement3. I try common meth4. Use direct HTTP caWhich annroach would2 files +76-28>the idea is to repllSWF.16• Preparation tor Kell.. In 4h 40 m100% 1• Mon 18 May 10:14:07+0 ..+7 -7+16-8+32 -8Open CommandFianore Files.Command|are FllosCommandinv2 and l can't access theCommandCommandCommandCommandCommandlCommandCommandataneG..l..* Reiect alliiAccent alliPo. 4 space...
|
50065
|
NULL
|
NULL
|
NULL
|
|
50068
|
1776
|
31
|
2026-05-18T07:14:10.159822+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088450159_m2.jpg...
|
PhpStorm
|
faVsco.js – Kernel.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\DTO\Invitation;
use Jiminny\DTO\UserEmail;
use Jiminny\Http\Requests\Settings\Teams\CreateInvitationRequest;
use Jiminny\Http\Requests\Settings\Teams\CreateTeamRequest;
use Jiminny\Http\Requests\Settings\Teams\EditTeamRequest;
use Jiminny\Models\Group;
use Jiminny\Models\Invitation;
use Jiminny\Models\Role;
use Jiminny\Models\Team;
use Jiminny\Models\User;
class UserInvitationDTO
{
use UserEmail;
public string $email;
public ?string $secondaryEmail;
public ?int $groupId;
public int $teamId;
public bool $crmRequired;
public array $roleIds;
public bool $isOwner;
public ?User $currentUser = null;
/**
* @param array{
* email: string,
* secondaryEmail: string|null,
* groupId: int|null,
* teamId: int|string,
* crmRequired: bool,
* roleIds: int[],
* isOwner: bool,
* user?: User
* } $attributes
*/
private function __construct(array $attributes)
{
$this->email = mb_strtolower($attributes['email']);
$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);
$this->groupId = $attributes['groupId'];
$this->teamId = (int) $attributes['teamId'];
$this->crmRequired = (bool) $attributes['crmRequired'];
$this->roleIds = $attributes['roleIds'];
$this->isOwner = $attributes['isOwner'];
$this->currentUser = $attributes['user'] ?? null;
}
public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self
{
$roleIds = Role::whereIn('name', [
User::ROLE_ADMIN,
User::ROLE_RECORDER,
])->pluck('id')->toArray();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => $request->getOwnerEmail(),
'secondaryEmail' => null,
'groupId' => null,
'teamId' => $team->getId(),
'crmRequired' => true,
'roleIds' => $roleIds,
'user' => $currentUser,
'isOwner' => true,
]);
}
public static function fromRequest(CreateInvitationRequest $request): self
{
$data = $request->validated();
$groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;
$teamId = Team::uuid($data['team_id'])->getId();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => mb_strtolower($data['email']),
'secondaryEmail' => $data['secondary_email'] ?? null,
'groupId' => $groupId,
'teamId' => $teamId,
'crmRequired' => $data['crm_required'],
'roleIds' => $data['roles'],
'user' => $currentUser,
'isOwner' => false,
]);
}
public static function fromInvitation(Invitation $invitation, User $currentUser): self
{
$roles = $invitation->roles()->get();
$isOwner = $invitation->isOwner();
return new self([
'email' => $invitation->email,
'secondaryEmail' => $invitation->getSecondaryEmail(),
'groupId' => $invitation->group_id,
'teamId' => $invitation->team_id,
'crmRequired' => $invitation->crm_required,
'roleIds' => $roles->pluck('id')->toArray(),
'user' => $currentUser,
'isOwner' => $isOwner,
]);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
17
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Console;
use Illuminate\Console\ConfirmableTrait;
use Illuminate\Console\Scheduling\Event;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Jiminny\Component\Acl\RemoveExpiredRoleChangeEventsCommand;
use Jiminny\Component\ActionItems\Commands\SendActionItemsCommand;
use Jiminny\Component\AiActivityType\Commands\AutodetectAiActivityTypeCommand;
use Jiminny\Component\AskJiminnyAi\Commands\ProphetAnalyzeClosedDealsCommand;
use Jiminny\Component\Cache\Constants;
use Jiminny\Component\DealInsights\Commands\SendDealsUpdateCommand;
use Jiminny\Component\MediaPipeline\Command\MediaPipelineRestartCommand;
use Jiminny\Component\MediaPipeline\Command\ReportActivityProcessingTimeToDatadogCommand;
use Jiminny\Component\MediaPipeline\Command\ReportProcessingStatesToDatadogCommand;
use Jiminny\Component\Transcription\Commands\OverrideTranscriptionLocaleCommand;
use Jiminny\Component\Transcription\Commands\RetryFailedTranscriptionsCommand;
use Jiminny\Component\Transcription\Commands\RetryStuckTranscriptionsCommand;
use Jiminny\Console\Commands\Activities\ActivitiesMatchCrmCommand;
use Jiminny\Console\Commands\Activities\AutologOldActivitiesCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForRetentionTeamsCommand;
use Jiminny\Console\Commands\Activities\DownloadMissingTrackCommand;
use Jiminny\Console\Commands\Activities\FixActivitiesOpportunity;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesTeamsCommand;
use Jiminny\Console\Commands\Activities\ReassignTranscriptCommand;
use Jiminny\Console\Commands\Activities\ReindexRecentActivitiesCommand;
use Jiminny\Console\Commands\Activities\RetryProspectSummaryCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeleteCancelledCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeletePastCommand;
use Jiminny\Console\Commands\Crm\BackfillOpportunityUserFromAccountCommand;
use Jiminny\Console\Commands\Crm\CleanDuplicateFieldDataCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ProcessMergedObjectsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\RestoreDealAssociationsCommand;
use Jiminny\Console\Commands\Crm\ProcessHubspotObjectsSyncBatches;
use Jiminny\Console\Commands\Crm\PurgeDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ListJournalWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\SetupJournalDealWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\SyncHubspotActiveDeals;
use Jiminny\Console\Commands\Crm\SyncOpportunitiesMissingFieldDataCommand;
use Jiminny\Console\Commands\DeleteOldAiCrmNotesCommand;
use Jiminny\Console\Commands\DeleteS3LeftoversCommand;
use Jiminny\Console\Commands\DiarizeViaAiParticipantIdentificationCommand;
use Jiminny\Console\Commands\Elasticsearch\DeleteEmailDocumentsCommand;
use Jiminny\Console\Commands\Elasticsearch\RemoveGhostParticipantsCommand;
use Jiminny\Console\Commands\FlushRolesPermissionsCache;
use Jiminny\Console\Commands\GenerateInternalWebhookToken;
use Jiminny\Console\Commands\IssueMcpTokenCommand;
use Jiminny\Console\Commands\HubspotJournalPollingCommand;
use Jiminny\Console\Commands\HubspotWebhookServiceCommand;
use Jiminny\Console\Commands\Livestream\StopHangingLivestreamsCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteEmailMessagesWithoutActivityCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteInboxEmailsCommand;
use Jiminny\Console\Commands\PurgeSoftDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\PurgeSyncBatchesCommand;
use Jiminny\Console\Commands\RemoveDeleteMarkersCommand;
use Jiminny\Console\Commands\RemoveExpiredNudgesCommand;
use Jiminny\Console\Commands\RemoveUnusedParticipantSpeechesCommand;
use Jiminny\Console\Commands\Reports\AutomatedReportsRetentionPolicyCommand;
use Jiminny\Console\Commands\Reports\DeleteReportCommand;
use Jiminny\Console\Commands\RestoreActivityCrmProviderIdCommand;
use Jiminny\Console\Commands\RestoreActivityTypeCommand;
use Jiminny\Console\Commands\SendNudgeExpirationWarningsCommand;
use Jiminny\Console\Commands\Slack\SyncSlackUserCommand;
use Jiminny\Console\Commands\Teams\SyncTeamUsersCommand;
use Jiminny\Console\Commands\Teams\TeamDeleteCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteDeactivatedCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteRetentionCommand;
use Jiminny\Console\Commands\Teams\TeamSettingPutCommand;
use Jiminny\Console\Commands\Teams\UpdateTeamsCommand;
use Jiminny\Console\Commands\Tracks\CleanupActivityTracksCommand;
use Jiminny\Console\Commands\Tracks\DeleteUnusedTracksCommand;
use Jiminny\Console\Commands\Tracks\RestoreTracksCommand;
use Jiminny\Console\Commands\Transcription\DeleteOldTranscriptionsCommand;
use Jiminny\Console\Commands\Transcription\UpdateOldTranscriptionModelLocalesCommand;
use Jiminny\Console\Commands\Twilio\DeleteChurnedSubAccounts;
use Jiminny\Console\Commands\Twilio\DeletePredefinedSubAccounts;
use Jiminny\Console\Commands\Twilio\ReleaseNumbersCommand;
use Jiminny\Jobs\Activity\SyncActivity;
use Jiminny\Models\Activity;
use Jiminny\Models\InboxEmail;
use Jiminny\Services\RecallAI\Commands\ImportRegionMeetingCommand;
use Jiminny\Services\RecallAI\Commands\ScheduleBotCommand;
class Kernel extends ConsoleKernel
{
use ConfirmableTrait;
/**
* The Artisan commands provided by your application.
*
* @var string[]
*/
protected $commands = [
Commands\GeckoExport\GeckoExportTranscriptCommand::class,
Commands\GeckoExport\GeckoExportTranscriptionCommand::class,
Commands\GeckoExport\GeckoExportParticipantSpeechesCommand::class,
Commands\Activities\DeleteForCoachesCommand::class,
ReindexRecentActivitiesCommand::class,
Commands\Crm\BullhornPingCommand::class,
Commands\Crm\BullhornSessionCommand::class,
Commands\Crm\BullhornSearchCommand::class,
Commands\PlaybackThemes\TopicsConsolidateCommand::class,
Commands\PlaybackThemes\PlaybackThemesCopyCommand::class,
Commands\PlaybackThemes\AssignTopicsUsedBySingleTeamCommand::class,
Commands\PlaybackThemes\PlaybackThemesMigrateToVersionsCommand::class,
Commands\Vocabulary\VocabularyCopyCommand::class,
Commands\Transcription\TranscriptionPrintRaw::class,
Commands\Migrate\JiminnyMigratePopulateActivitySourceCommand::class,
Commands\EngagementStats\JiminnyEngagementStatsExplainCommand::class,
Commands\EngagementStatsRegenerateCommand::class,
Commands\Analytics\NumberOfActivitiesPerActivityTypeCommand::class,
Commands\Elasticsearch\MappingRunCommand::class,
Commands\Elasticsearch\MappingInstallCommand::class,
Commands\Elasticsearch\UpdateEsMappingSettingsCommand::class,
Commands\Analytics\TranscriptionWordMatchCommand::class,
Commands\JiminnyCacheClearCommand::class,
Commands\Transcription\TranscriptionSearchCommand::class,
RetryStuckTranscriptionsCommand::class,
RetryFailedTranscriptionsCommand::class,
Commands\JiminnyDebugCommand::class,
Commands\RunAiCallScoringForUntypedActivitiesCommand::class,
Commands\Calendars\SyncCalendars::class,
Commands\Calendars\SyncDeletedEvents::class,
Commands\Twilio\FetchMetrics::class,
Commands\Twilio\FetchEvents::class,
Commands\Twilio\FetchSummary::class,
Commands\Twilio\SyncZoneAccess::class,
Commands\DatabaseTableCount::class,
Commands\PurgeConferences::class,
Commands\ResetElasticSearch::class,
Commands\CreateDatabaseUsers::class,
Commands\Activities\NotifyNotLogged::class,
Commands\Crm\SyncTeamMetadata::class,
Commands\Crm\SyncProfileMetadata::class,
Commands\Crm\SyncContact::class,
Commands\Crm\SyncObjects::class,
Commands\Crm\SyncHubspotObjects::class,
Commands\Crm\SyncAccount::class,
Commands\Crm\ResetGovernorLimits::class,
Commands\Crm\ManageSyncStrategyCommand::class,
Commands\ImportRecording::class,
Commands\TrackImported::class,
Commands\Twilio\RecoverTwilioTracksCommand::class,
Commands\Crm\SetupLayouts::class,
Commands\Tracks\SyncTwilioTracks::class,
Commands\Activities\StatusCount::class,
Commands\Mailboxes\TextRelay\WatchMailboxEvents::class,
Commands\Mailboxes\InboxCreate::class,
Commands\Mailboxes\InboxSync::class,
Commands\Mailboxes\BatchCreate::class,
Commands\Mailboxes\BatchProcess::class,
Commands\Mailboxes\InboxPurge::class,
Commands\Mailboxes\BatchRetryFailed::class,
Commands\Mailboxes\BatchFailStalled::class,
Commands\Mailboxes\SkipListsRefresh::class,
Commands\Mailboxes\SkipListsDump::class,
Commands\Mailboxes\TextRelay\SyncMailbox::class,
Commands\Mailboxes\DeleteInboxEmailsCommand::class,
Commands\Mailboxes\DeleteEmailMessagesCommand::class,
DeleteEmailMessagesWithoutActivityCommand::class,
Commands\Tracks\CheckIntegrity::class,
Commands\Twilio\RemoteLifecycle::class,
Commands\Twilio\SyncNumbers::class,
Commands\Crm\SetupActivityTypeForFollowUp::class,
Commands\Activities\CheckPlayable::class,
Commands\Activities\ActivityDeleteCommand::class,
Commands\Activities\Copy::class,
Commands\Activities\ActivityHardDeleteCommand::class,
Commands\Reports\Team::class,
Commands\Reports\GenerateMarketingReport::class,
Commands\Reports\AutomatedReportsCommand::class,
Commands\Reports\AutomatedReportsSendCommand::class,
Commands\MuteOrganizerChannel::class,
Commands\Tracks\DeleteTracks::class,
Commands\Tracks\RetryDownload::class,
Commands\Tracks\RetryFailedDownloads::class,
Commands\Twilio\SyncAddresses::class,
Commands\Activities\UpdateElasticSearch::class,
Commands\MakeSlackLiveCoachingChatNotesOn::class,
Commands\Activities\PreMeetingNotification::class,
ScheduleBotCommand::class,
ImportRegionMeetingCommand::class,
Commands\Activities\MonitorMeetingCountCommand::class,
Commands\Activities\MonitorMeetingStartCommand::class,
Commands\Activities\MonitorMeetingEndCommand::class,
Commands\SyncActivity::class,
Commands\PhpApm::class,
Commands\Crm\SyncOpportunity::class,
Commands\Crm\SyncLead::class,
Commands\Users\SyncLicenceDataToSalesforce::class,
Commands\Crm\UpdateOpportunitySpecifications::class,
Commands\Users\SyncToIntercom::class,
Commands\Users\SyncToUserPilot::class,
Commands\Teams\SyncToPlanhat::class,
Commands\Twilio\SetZoneAccess::class,
Commands\Users\CreateDefaultSavedSearchesCommand::class,
Commands\Crm\SendNotLogged::class,
Commands\Teams\DeactivateTeamCommand::class,
Commands\Crm\SyncFieldMetadata::class,
Commands\Postmark\SyncEmailTemplatesCommand::class,
Commands\PlaybackThemes\ImportTriggersFromTranslatedCsvCommand::class,
Commands\Activities\PreMeetingReminder::class,
Commands\Activities\CustomerActivitiesExport::class,
Commands\Users\RefreshAccessToken::class,
Commands\Calendars\SetupCalendarSubscription::class,
Commands\Activities\InviteMeetingBot::class,
Commands\Activities\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,
Commands\Crm\MigrateProvider::class,
Commands\Activities\MigrateLocationFromCalendarEventToActivities::class,
Commands\HelperTruncateCoachingTables::class,
Commands\FixCrossTenantIssues::class,
Commands\Activities\CloudCall\SetupIntegration::class,
Commands\Activities\CloudTalk\FixTimeZone::class,
Commands\Activities\Orum\SetupIntegration::class,
Commands\Activities\JustCall\SetupIntegration::class,
Commands\Activities\RingCentral\AddInboundPromptSupport::class,
Commands\Dialers\Dialpad\SubscribeToWebhooks::class,
Commands\RecalculateDealRisksCommand::class,
SendDealsUpdateCommand::class,
Commands\Activities\SetProviderCapabilitiesField::class,
Commands\Teams\InitiallySetNotificationProviderTeamsTable::class,
Commands\Crm\AddLayoutEntities::class,
Commands\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,
Commands\JiminnyTokenInfoCommand::class,
Commands\JiminnySetEncryptedTokenManagerModeCommand::class,
Commands\EncryptTokensCommand::class,
Commands\Dialers\Aircall\CheckAndRenewWebhooks::class,
Commands\Migrate\MigrateTeamRegionCommand::class,
Commands\ManageScimForTeam::class,
Commands\Dialers\SyncUsersCommand::class,
Commands\WhichWorkerIsWorkingOnWhichJob::class,
Commands\GroupSetDefaultLanguageCommand::class,
Commands\Dev\AddRateLimitCommand::class,
Commands\Dev\ImportCallsCommand::class,
Commands\DealInsights\BuildDealInsightsLayoutCommand::class,
Commands\DealInsights\DeleteAskJiminnyDealPrompts::class,
Commands\Crm\MatchCrmObjectsCommand::class,
Commands\Activities\SetupIntegration\EightByEight::class,
Commands\Calendars\RemoveCalendarEventActivitiesCommand::class,
Commands\Activities\Migrator\MigrateFromGongCommand::class,
Commands\Activities\Migrator\MigrateFromChorusCommand::class,
Commands\Activities\Migrator\MigrateFromLeexiCommand::class,
Commands\Activities\Migrator\MigrateFromAvomaCommand::class,
Commands\Activities\Migrator\MigrateFromClariCommand::class,
Commands\Activities\SetupIntegration\ConnectAndSell::class,
Commands\Activities\SetupIntegration\CloudTalk::class,
Commands\Users\CreateConferenceSlug::class,
Commands\Elasticsearch\AsyncUpdateEsEntities::class,
Commands\Elasticsearch\ResetAsyncElasticSearchCommand::class,
Commands\Playlists\PlaylistSharesUpdateCommand::class,
Commands\Crm\AutologDelayedCommand::class,
Commands\Activities\HydrateDefaultActivityTypeCommand::class,
Commands\Crm\CheckActivityLoggableCommand::class,
Commands\Activities\MonitorDialerActivitiesCommand::class,
Commands\Activities\SetupIntegration\Xant::class,
Commands\ImportUsersFromCsvFile::class,
Commands\DevPostmanCommand::class,
Commands\Playlists\FixTreeStructureCommand::class,
Commands\Zoom\ResolvePmiLinksCommand::class,
Commands\MarkBranchForEnvironmentPipelineCommand::class,
Commands\Activities\ProbeMediaSegmentsCommand::class,
Commands\Activities\SetupIntegration\AmazonConnect::class,
Commands\Playbooks\ChangePlaybookActivityFieldCommand::class,
MediaPipelineRestartCommand::class,
Commands\Dev\FixHubSpotTokens::class,
Commands\Dev\MonitorSocialAccountsState::class,
Commands\Activities\SetupIntegration\Vonage::class,
Commands\Activities\SetupIntegration\TwilioFlex::class,
Commands\Activities\SetupIntegration\TwilioFlexDirect::class,
Commands\Activities\SetupIntegration\TwilioFlexSetDialerAuthCredentialsCommand::class,
Commands\Activities\SetupIntegration\TwilioSetS3RecordingCredentialsCommand::class,
SendActionItemsCommand::class,
Commands\Users\ChangeEmail::class,
Commands\Calendars\ListUserGoogleCalendars::class,
Commands\Activities\JustCall\SyncPlaybackLinkToCrmCommand::class,
Commands\Activities\HydrateCallWithCrmDataCommand::class,
Commands\Activities\UpdateActivityElasticSearchDocumentCommand::class,
Commands\Activities\SetupIntegration\Talkdesk::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookListCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookShow::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,
Commands\Activities\SetupIntegration\TwilioVideo::class,
Commands\Crm\SetupCloseCrm::class,
Commands\Crm\SetupCopperCrm::class,
Commands\Crm\FullSyncOpportunityCommand::class,
Commands\Crm\IntegrationApp\CrmEntitiesFullSyncCommand::class,
Commands\Crm\IntegrationApp\ValidateConnectionCommand::class,
Commands\Activities\Workflow\RefreshCrmData::class,
Commands\Activities\Migrator\AnalyseGongCalls::class,
Commands\Users\AddVoiceRoleToRecorderCommand::class,
Commands\Activities\SyncMissingCallDispositions::class,
Commands\Calendars\RemoveFutureCalendarEvents::class,
FlushRolesPermissionsCache::class,
Commands\Activities\SetupIntegration\FiveNine::class,
CalendarEventDeleteCancelledCommand::class,
CalendarEventDeletePastCommand::class,
ReportActivityProcessingTimeToDatadogCommand::class,
ReportProcessingStatesToDatadogCommand::class,
ReleaseNumbersCommand::class,
BackfillOpportunityUserFromAccountCommand::class,
RemoveExpiredRoleChangeEventsCommand::class,
RemoveExpiredNudgesCommand::class,
SendNudgeExpirationWarningsCommand::class,
AutologOldActivitiesCommand::class,
RemoveUnusedParticipantSpeechesCommand::class,
DeleteActivitiesForChurnedTeamsCommand::class,
HardDeleteActivitiesForChurnedTeamsCommand::class,
TeamDeleteCommand::class,
TeamsDeleteDeactivatedCommand::class,
UpdateTeamsCommand::class,
OverrideTranscriptionLocaleCommand::class,
SyncSlackUserCommand::class,
PurgeSoftDeletedOpportunitiesCommand::class,
PurgeSyncBatchesCommand::class,
ProphetAnalyzeClosedDealsCommand::class,
DeleteChurnedSubAccounts::class,
Commands\ProphetAi\DumpContext::class,
DeletePredefinedSubAccounts::class,
DeleteActivitiesForRetentionTeamsCommand::class,
HardDeleteActivitiesTeamsCommand::class,
TeamsDeleteRetentionCommand::class,
TeamSettingPutCommand::class,
StopHangingLivestreamsCommand::class,
FixActivitiesOpportunity::class,
Commands\Activities\SetupIntegration\Salesforce\SetupSalesforceIntegrationCommand::class,
UpdateOldTranscriptionModelLocalesCommand::class,
Commands\Dev\FixMissMatchedCrmActivitiesCommand::class,
DownloadMissingTrackCommand::class,
ActivitiesMatchCrmCommand::class,
DeleteEmailDocumentsCommand::class,
DeleteOldTranscriptionsCommand::class,
DeleteS3LeftoversCommand::class,
RemoveDeleteMarkersCommand::class,
SyncTeamUsersCommand::class,
ReassignTranscriptCommand::class,
DiarizeViaAiParticipantIdentificationCommand::class,
RestoreActivityTypeCommand::class,
DeleteOldAiCrmNotesCommand::class,
DeleteReportCommand::class,
AutomatedReportsRetentionPolicyCommand::class,
SyncHubspotActiveDeals::class,
GenerateInternalWebhookToken::class,
IssueMcpTokenCommand::class,
RestoreActivityCrmProviderIdCommand::class,
CleanupActivityTracksCommand::class,
DeleteUnusedTracksCommand::class,
RestoreTracksCommand::class,
HubspotWebhookServiceCommand::class,
ProcessMergedObjectsCommand::class,
HubspotJournalPollingCommand::class,
SetupJournalDealWebhookSubscriptionsCommand::class,
ListJournalWebhookSubscriptionsCommand::class,
RemoveGhostParticipantsCommand::class,
AutodetectAiActivityTypeCommand::class,
Commands\Crm\LogActivitiesCommand::class,
Commands\Crm\MatchOpportunityActivitiesCommand::class,
PurgeDeletedOpportunitiesCommand::class,
CleanDuplicateFieldDataCommand::class,
RetryProspectSummaryCommand::class,
ProcessHubspotObjectsSyncBatches::class,
SyncOpportunitiesMissingFieldDataCommand::class,
RestoreDealAssociationsCommand::class,
Commands\Crm\TestPipedriveOfficialSdkCommand::class,
];
private Schedule $schedule;
private string $output;
protected function schedule(Schedule $schedule): void
{
$this->schedule = $schedule;
$this->output = config('jiminny.scheduler_log');
$schedule->useCache('redis');
$currentMinute = (int) date('i');
$currentDay = (int) date('w');
$this->scheduleEveryMinute();
$this->scheduleEveryTwoMinutes();
$this->scheduleEveryFiveMinutes();
$this->scheduleEveryTenMinutes();
$this->scheduleEveryFifteenMinutes();
$this->scheduleEveryThirtyMinutes();
$this->scheduleHourly();
$this->scheduleDaily();
$this->scheduleWeekly($currentDay);
$this->scheduleSpecificTimes();
$this->scheduleDynamic($currentMinute);
}
protected function scheduleEveryMinute(): void
{
$this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();
$this->scheduleCommand('dialers:monitor-activities')->everyMinute();
$this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();
$this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();
$this->schedule->command('mailbox:batch:process', ['--max-batches=15'])
->everyMinute()
->sendOutputTo($this->output);
}
protected function scheduleEveryTwoMinutes(): void
{
$this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();
}
protected function scheduleEveryFiveMinutes(): void
{
$this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();
// Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)
$this->scheduleCommand('crm:sync-hubspot-objects', [], 4)
->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');
$this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();
$this->schedule->command('mailbox:batch:create')
->cron('2-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output);
$this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])
->cron('3-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output)
->runInBackground();
$this->schedule->command('hubspot:journal-poll', ['--start'])
->everyFiveMinutes()
->sendOutputTo($this->output)
->runInBackground();
}
protected function scheduleEveryTenMinutes(): void
{
$this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();
$this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('crm:reset-governor')->everyTenMinutes();
}
protected function scheduleEveryFifteenMinutes(): void
{
$this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();
$this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');
$this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
],
])->everyFifteenMinutes();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->cron('7,22,37,52 * * * *');
}
protected function scheduleEveryThirtyMinutes(): void
{
$this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');
$this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();
$this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)
->between('02:58', '05:29')
->everyThirtyMinutes()
->runInBackground();
$this->scheduleActivitiesHardDelete();
}
protected function scheduleHourly(): void
{
$this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();
$this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');
$this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');
$this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');
$this->scheduleCommand('automated-reports:send')->hourly();
$this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);
$this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);
}
protected function scheduleDaily(): void
{
$this->scheduleCommand('teams:sync-planhat')->daily();
$this->scheduleCommand('twilio:sync-addresses')->daily();
$this->scheduleCommand('twilio:sync-zone-access')->daily();
$this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();
$this->scheduleCommand('users:sync-licence-data')->daily();
$this->scheduleCommand('users:sync-intercom-data')->daily();
$this->scheduleCommand('nudges:send-expiration-warnings')->daily();
$this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();
}
protected function scheduleWeekly(int $currentDay): void
{
if ($currentDay === 0) {
$this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);
}
if ($currentDay === 6) {
$this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_AMAZON_CONNECT,
'--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->saturdays()->at('01:00')->runInBackground();
$this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)
->saturdays()->at('01:07')->runInBackground();
$this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)
->saturdays()->at('05:08')->runInBackground();
$this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')
->weeklyOn(6, '6:00');
$this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')
->weeklyOn(6, '7:00');
}
}
protected function scheduleSpecificTimes(): void
{
$this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_DISCARDED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:20')->runInBackground();
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_PROCESSED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:30')->runInBackground();
$this->scheduleCommand('automated-reports')->dailyAt('01:00');
$this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');
$this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');
$this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');
$this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');
$this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');
$this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('03:05');
$this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');
$this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');
$this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');
$this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');
$this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');
if (! $this->app->environment('production')) {
$this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)
->dailyAt('04:02')->runInBackground();
}
$this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
],
])->dailyAt('05:05');
if (! $this->app->environment('qa')) {
$this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');
}
$this->scheduleCommand('activity:sync-dispositions', [
Activity::PROVIDER_HUBSPOT,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('07:05');
}
protected function scheduleDynamic(int $currentMinute): void
{
$this->scheduleHourlyFallbackActivitySyncs($currentMinute);
$this->scheduleBullhornHeartbeat($currentMinute);
}
private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void
{
if ($offsetMinute === 0) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);
} elseif ($offsetMinute === 1) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);
} elseif ($offsetMinute === 2) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);
}
}
private function scheduleBullhornHeartbeat(int $currentMinute): void
{
$bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);
if ($bhHeartbeatInterval > 0) {
$minutes = max((int) floor($bhHeartbeatInterval / 60), 1);
if ($currentMinute % $minutes === 0) {
$bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);
if ($minutes > 30) {
$bhEvent->hourly();
} else {
$bhEvent->cron(sprintf('*/%d * * * *', $minutes));
}
}
}
}
private function scheduleActivitiesHardDelete(): void
{
if (config(key: 'jiminny.deploy_region') === 'eu') {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 1000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
} elseif ($this->app->environment('production')) {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 2000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
}
}
private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void
{
$this->scheduleCommand('activity:sync', [
$provider,
'--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->hourlyAt($offsetMinute);
}
/**
* Register the Closure based commands for the application.
*/
protected function commands(): void
{
require_once base_path('routes/console.php');
}
private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event
{
return $this->schedule
->command($name, $options)
->withoutOverlapping($expiresAt)
->onOneServer()
->sendOutputTo($this->output)
;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.05618351,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.3380984,"top":0.29848364,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.3480718,"top":0.29848364,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.35771278,"top":0.29688746,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.3650266,"top":0.29688746,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\DTO\\Invitation;\n\nuse Jiminny\\DTO\\UserEmail;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateInvitationRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateTeamRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\EditTeamRequest;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Invitation;\nuse Jiminny\\Models\\Role;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\n\nclass UserInvitationDTO\n{\n use UserEmail;\n\n public string $email;\n public ?string $secondaryEmail;\n public ?int $groupId;\n public int $teamId;\n public bool $crmRequired;\n public array $roleIds;\n public bool $isOwner;\n public ?User $currentUser = null;\n\n /**\n * @param array{\n * email: string,\n * secondaryEmail: string|null,\n * groupId: int|null,\n * teamId: int|string,\n * crmRequired: bool,\n * roleIds: int[],\n * isOwner: bool,\n * user?: User\n * } $attributes\n */\n private function __construct(array $attributes)\n {\n $this->email = mb_strtolower($attributes['email']);\n $this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);\n $this->groupId = $attributes['groupId'];\n $this->teamId = (int) $attributes['teamId'];\n $this->crmRequired = (bool) $attributes['crmRequired'];\n $this->roleIds = $attributes['roleIds'];\n $this->isOwner = $attributes['isOwner'];\n $this->currentUser = $attributes['user'] ?? null;\n }\n\n public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self\n {\n $roleIds = Role::whereIn('name', [\n User::ROLE_ADMIN,\n User::ROLE_RECORDER,\n ])->pluck('id')->toArray();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => $request->getOwnerEmail(),\n 'secondaryEmail' => null,\n 'groupId' => null,\n 'teamId' => $team->getId(),\n 'crmRequired' => true,\n 'roleIds' => $roleIds,\n 'user' => $currentUser,\n 'isOwner' => true,\n ]);\n }\n\n public static function fromRequest(CreateInvitationRequest $request): self\n {\n $data = $request->validated();\n\n $groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;\n $teamId = Team::uuid($data['team_id'])->getId();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => mb_strtolower($data['email']),\n 'secondaryEmail' => $data['secondary_email'] ?? null,\n 'groupId' => $groupId,\n 'teamId' => $teamId,\n 'crmRequired' => $data['crm_required'],\n 'roleIds' => $data['roles'],\n 'user' => $currentUser,\n 'isOwner' => false,\n ]);\n }\n\n public static function fromInvitation(Invitation $invitation, User $currentUser): self\n {\n $roles = $invitation->roles()->get();\n $isOwner = $invitation->isOwner();\n\n return new self([\n 'email' => $invitation->email,\n 'secondaryEmail' => $invitation->getSecondaryEmail(),\n 'groupId' => $invitation->group_id,\n 'teamId' => $invitation->team_id,\n 'crmRequired' => $invitation->crm_required,\n 'roleIds' => $roles->pluck('id')->toArray(),\n 'user' => $currentUser,\n 'isOwner' => $isOwner,\n ]);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\DTO\\Invitation;\n\nuse Jiminny\\DTO\\UserEmail;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateInvitationRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateTeamRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\EditTeamRequest;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Invitation;\nuse Jiminny\\Models\\Role;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\n\nclass UserInvitationDTO\n{\n use UserEmail;\n\n public string $email;\n public ?string $secondaryEmail;\n public ?int $groupId;\n public int $teamId;\n public bool $crmRequired;\n public array $roleIds;\n public bool $isOwner;\n public ?User $currentUser = null;\n\n /**\n * @param array{\n * email: string,\n * secondaryEmail: string|null,\n * groupId: int|null,\n * teamId: int|string,\n * crmRequired: bool,\n * roleIds: int[],\n * isOwner: bool,\n * user?: User\n * } $attributes\n */\n private function __construct(array $attributes)\n {\n $this->email = mb_strtolower($attributes['email']);\n $this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);\n $this->groupId = $attributes['groupId'];\n $this->teamId = (int) $attributes['teamId'];\n $this->crmRequired = (bool) $attributes['crmRequired'];\n $this->roleIds = $attributes['roleIds'];\n $this->isOwner = $attributes['isOwner'];\n $this->currentUser = $attributes['user'] ?? null;\n }\n\n public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self\n {\n $roleIds = Role::whereIn('name', [\n User::ROLE_ADMIN,\n User::ROLE_RECORDER,\n ])->pluck('id')->toArray();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => $request->getOwnerEmail(),\n 'secondaryEmail' => null,\n 'groupId' => null,\n 'teamId' => $team->getId(),\n 'crmRequired' => true,\n 'roleIds' => $roleIds,\n 'user' => $currentUser,\n 'isOwner' => true,\n ]);\n }\n\n public static function fromRequest(CreateInvitationRequest $request): self\n {\n $data = $request->validated();\n\n $groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;\n $teamId = Team::uuid($data['team_id'])->getId();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => mb_strtolower($data['email']),\n 'secondaryEmail' => $data['secondary_email'] ?? null,\n 'groupId' => $groupId,\n 'teamId' => $teamId,\n 'crmRequired' => $data['crm_required'],\n 'roleIds' => $data['roles'],\n 'user' => $currentUser,\n 'isOwner' => false,\n ]);\n }\n\n public static function fromInvitation(Invitation $invitation, User $currentUser): self\n {\n $roles = $invitation->roles()->get();\n $isOwner = $invitation->isOwner();\n\n return new self([\n 'email' => $invitation->email,\n 'secondaryEmail' => $invitation->getSecondaryEmail(),\n 'groupId' => $invitation->group_id,\n 'teamId' => $invitation->team_id,\n 'crmRequired' => $invitation->crm_required,\n 'roleIds' => $roles->pluck('id')->toArray(),\n 'user' => $currentUser,\n 'isOwner' => $isOwner,\n ]);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.007978723,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.00930851,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.006981383,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Console;\n\nuse Illuminate\\Console\\ConfirmableTrait;\nuse Illuminate\\Console\\Scheduling\\Event;\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as ConsoleKernel;\nuse Jiminny\\Component\\Acl\\RemoveExpiredRoleChangeEventsCommand;\nuse Jiminny\\Component\\ActionItems\\Commands\\SendActionItemsCommand;\nuse Jiminny\\Component\\AiActivityType\\Commands\\AutodetectAiActivityTypeCommand;\nuse Jiminny\\Component\\AskJiminnyAi\\Commands\\ProphetAnalyzeClosedDealsCommand;\nuse Jiminny\\Component\\Cache\\Constants;\nuse Jiminny\\Component\\DealInsights\\Commands\\SendDealsUpdateCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\MediaPipelineRestartCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportActivityProcessingTimeToDatadogCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportProcessingStatesToDatadogCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\OverrideTranscriptionLocaleCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryFailedTranscriptionsCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryStuckTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ActivitiesMatchCrmCommand;\nuse Jiminny\\Console\\Commands\\Activities\\AutologOldActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForRetentionTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DownloadMissingTrackCommand;\nuse Jiminny\\Console\\Commands\\Activities\\FixActivitiesOpportunity;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReassignTranscriptCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReindexRecentActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\RetryProspectSummaryCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeleteCancelledCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeletePastCommand;\nuse Jiminny\\Console\\Commands\\Crm\\BackfillOpportunityUserFromAccountCommand;\nuse Jiminny\\Console\\Commands\\Crm\\CleanDuplicateFieldDataCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ProcessMergedObjectsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\RestoreDealAssociationsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\ProcessHubspotObjectsSyncBatches;\nuse Jiminny\\Console\\Commands\\Crm\\PurgeDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ListJournalWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\SetupJournalDealWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\SyncHubspotActiveDeals;\nuse Jiminny\\Console\\Commands\\Crm\\SyncOpportunitiesMissingFieldDataCommand;\nuse Jiminny\\Console\\Commands\\DeleteOldAiCrmNotesCommand;\nuse Jiminny\\Console\\Commands\\DeleteS3LeftoversCommand;\nuse Jiminny\\Console\\Commands\\DiarizeViaAiParticipantIdentificationCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\DeleteEmailDocumentsCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\RemoveGhostParticipantsCommand;\nuse Jiminny\\Console\\Commands\\FlushRolesPermissionsCache;\nuse Jiminny\\Console\\Commands\\GenerateInternalWebhookToken;\nuse Jiminny\\Console\\Commands\\IssueMcpTokenCommand;\nuse Jiminny\\Console\\Commands\\HubspotJournalPollingCommand;\nuse Jiminny\\Console\\Commands\\HubspotWebhookServiceCommand;\nuse Jiminny\\Console\\Commands\\Livestream\\StopHangingLivestreamsCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteEmailMessagesWithoutActivityCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteInboxEmailsCommand;\nuse Jiminny\\Console\\Commands\\PurgeSoftDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\PurgeSyncBatchesCommand;\nuse Jiminny\\Console\\Commands\\RemoveDeleteMarkersCommand;\nuse Jiminny\\Console\\Commands\\RemoveExpiredNudgesCommand;\nuse Jiminny\\Console\\Commands\\RemoveUnusedParticipantSpeechesCommand;\nuse Jiminny\\Console\\Commands\\Reports\\AutomatedReportsRetentionPolicyCommand;\nuse Jiminny\\Console\\Commands\\Reports\\DeleteReportCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityCrmProviderIdCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityTypeCommand;\nuse Jiminny\\Console\\Commands\\SendNudgeExpirationWarningsCommand;\nuse Jiminny\\Console\\Commands\\Slack\\SyncSlackUserCommand;\nuse Jiminny\\Console\\Commands\\Teams\\SyncTeamUsersCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamDeleteCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteDeactivatedCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteRetentionCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamSettingPutCommand;\nuse Jiminny\\Console\\Commands\\Teams\\UpdateTeamsCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\CleanupActivityTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\DeleteUnusedTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\RestoreTracksCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\DeleteOldTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\UpdateOldTranscriptionModelLocalesCommand;\nuse Jiminny\\Console\\Commands\\Twilio\\DeleteChurnedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\DeletePredefinedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\ReleaseNumbersCommand;\nuse Jiminny\\Jobs\\Activity\\SyncActivity;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\InboxEmail;\nuse Jiminny\\Services\\RecallAI\\Commands\\ImportRegionMeetingCommand;\nuse Jiminny\\Services\\RecallAI\\Commands\\ScheduleBotCommand;\n\nclass Kernel extends ConsoleKernel\n{\n use ConfirmableTrait;\n\n /**\n * The Artisan commands provided by your application.\n *\n * @var string[]\n */\n protected $commands = [\n Commands\\GeckoExport\\GeckoExportTranscriptCommand::class,\n Commands\\GeckoExport\\GeckoExportTranscriptionCommand::class,\n Commands\\GeckoExport\\GeckoExportParticipantSpeechesCommand::class,\n Commands\\Activities\\DeleteForCoachesCommand::class,\n ReindexRecentActivitiesCommand::class,\n Commands\\Crm\\BullhornPingCommand::class,\n Commands\\Crm\\BullhornSessionCommand::class,\n Commands\\Crm\\BullhornSearchCommand::class,\n Commands\\PlaybackThemes\\TopicsConsolidateCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesCopyCommand::class,\n Commands\\PlaybackThemes\\AssignTopicsUsedBySingleTeamCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesMigrateToVersionsCommand::class,\n Commands\\Vocabulary\\VocabularyCopyCommand::class,\n Commands\\Transcription\\TranscriptionPrintRaw::class,\n Commands\\Migrate\\JiminnyMigratePopulateActivitySourceCommand::class,\n Commands\\EngagementStats\\JiminnyEngagementStatsExplainCommand::class,\n Commands\\EngagementStatsRegenerateCommand::class,\n Commands\\Analytics\\NumberOfActivitiesPerActivityTypeCommand::class,\n Commands\\Elasticsearch\\MappingRunCommand::class,\n Commands\\Elasticsearch\\MappingInstallCommand::class,\n Commands\\Elasticsearch\\UpdateEsMappingSettingsCommand::class,\n Commands\\Analytics\\TranscriptionWordMatchCommand::class,\n Commands\\JiminnyCacheClearCommand::class,\n Commands\\Transcription\\TranscriptionSearchCommand::class,\n RetryStuckTranscriptionsCommand::class,\n RetryFailedTranscriptionsCommand::class,\n Commands\\JiminnyDebugCommand::class,\n Commands\\RunAiCallScoringForUntypedActivitiesCommand::class,\n Commands\\Calendars\\SyncCalendars::class,\n Commands\\Calendars\\SyncDeletedEvents::class,\n Commands\\Twilio\\FetchMetrics::class,\n Commands\\Twilio\\FetchEvents::class,\n Commands\\Twilio\\FetchSummary::class,\n Commands\\Twilio\\SyncZoneAccess::class,\n Commands\\DatabaseTableCount::class,\n Commands\\PurgeConferences::class,\n Commands\\ResetElasticSearch::class,\n Commands\\CreateDatabaseUsers::class,\n Commands\\Activities\\NotifyNotLogged::class,\n Commands\\Crm\\SyncTeamMetadata::class,\n Commands\\Crm\\SyncProfileMetadata::class,\n Commands\\Crm\\SyncContact::class,\n Commands\\Crm\\SyncObjects::class,\n Commands\\Crm\\SyncHubspotObjects::class,\n Commands\\Crm\\SyncAccount::class,\n Commands\\Crm\\ResetGovernorLimits::class,\n Commands\\Crm\\ManageSyncStrategyCommand::class,\n Commands\\ImportRecording::class,\n Commands\\TrackImported::class,\n Commands\\Twilio\\RecoverTwilioTracksCommand::class,\n Commands\\Crm\\SetupLayouts::class,\n Commands\\Tracks\\SyncTwilioTracks::class,\n Commands\\Activities\\StatusCount::class,\n\n Commands\\Mailboxes\\TextRelay\\WatchMailboxEvents::class,\n Commands\\Mailboxes\\InboxCreate::class,\n Commands\\Mailboxes\\InboxSync::class,\n Commands\\Mailboxes\\BatchCreate::class,\n Commands\\Mailboxes\\BatchProcess::class,\n Commands\\Mailboxes\\InboxPurge::class,\n Commands\\Mailboxes\\BatchRetryFailed::class,\n Commands\\Mailboxes\\BatchFailStalled::class,\n Commands\\Mailboxes\\SkipListsRefresh::class,\n Commands\\Mailboxes\\SkipListsDump::class,\n Commands\\Mailboxes\\TextRelay\\SyncMailbox::class,\n Commands\\Mailboxes\\DeleteInboxEmailsCommand::class,\n Commands\\Mailboxes\\DeleteEmailMessagesCommand::class,\n DeleteEmailMessagesWithoutActivityCommand::class,\n\n Commands\\Tracks\\CheckIntegrity::class,\n Commands\\Twilio\\RemoteLifecycle::class,\n Commands\\Twilio\\SyncNumbers::class,\n Commands\\Crm\\SetupActivityTypeForFollowUp::class,\n Commands\\Activities\\CheckPlayable::class,\n Commands\\Activities\\ActivityDeleteCommand::class,\n Commands\\Activities\\Copy::class,\n Commands\\Activities\\ActivityHardDeleteCommand::class,\n Commands\\Reports\\Team::class,\n Commands\\Reports\\GenerateMarketingReport::class,\n Commands\\Reports\\AutomatedReportsCommand::class,\n Commands\\Reports\\AutomatedReportsSendCommand::class,\n Commands\\MuteOrganizerChannel::class,\n Commands\\Tracks\\DeleteTracks::class,\n Commands\\Tracks\\RetryDownload::class,\n Commands\\Tracks\\RetryFailedDownloads::class,\n Commands\\Twilio\\SyncAddresses::class,\n Commands\\Activities\\UpdateElasticSearch::class,\n Commands\\MakeSlackLiveCoachingChatNotesOn::class,\n Commands\\Activities\\PreMeetingNotification::class,\n ScheduleBotCommand::class,\n ImportRegionMeetingCommand::class,\n Commands\\Activities\\MonitorMeetingCountCommand::class,\n Commands\\Activities\\MonitorMeetingStartCommand::class,\n Commands\\Activities\\MonitorMeetingEndCommand::class,\n Commands\\SyncActivity::class,\n Commands\\PhpApm::class,\n Commands\\Crm\\SyncOpportunity::class,\n Commands\\Crm\\SyncLead::class,\n Commands\\Users\\SyncLicenceDataToSalesforce::class,\n Commands\\Crm\\UpdateOpportunitySpecifications::class,\n Commands\\Users\\SyncToIntercom::class,\n Commands\\Users\\SyncToUserPilot::class,\n Commands\\Teams\\SyncToPlanhat::class,\n Commands\\Twilio\\SetZoneAccess::class,\n Commands\\Users\\CreateDefaultSavedSearchesCommand::class,\n Commands\\Crm\\SendNotLogged::class,\n Commands\\Teams\\DeactivateTeamCommand::class,\n Commands\\Crm\\SyncFieldMetadata::class,\n Commands\\Postmark\\SyncEmailTemplatesCommand::class,\n Commands\\PlaybackThemes\\ImportTriggersFromTranslatedCsvCommand::class,\n Commands\\Activities\\PreMeetingReminder::class,\n Commands\\Activities\\CustomerActivitiesExport::class,\n Commands\\Users\\RefreshAccessToken::class,\n Commands\\Calendars\\SetupCalendarSubscription::class,\n Commands\\Activities\\InviteMeetingBot::class,\n Commands\\Activities\\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,\n Commands\\Crm\\MigrateProvider::class,\n Commands\\Activities\\MigrateLocationFromCalendarEventToActivities::class,\n Commands\\HelperTruncateCoachingTables::class,\n Commands\\FixCrossTenantIssues::class,\n Commands\\Activities\\CloudCall\\SetupIntegration::class,\n Commands\\Activities\\CloudTalk\\FixTimeZone::class,\n Commands\\Activities\\Orum\\SetupIntegration::class,\n Commands\\Activities\\JustCall\\SetupIntegration::class,\n Commands\\Activities\\RingCentral\\AddInboundPromptSupport::class,\n Commands\\Dialers\\Dialpad\\SubscribeToWebhooks::class,\n Commands\\RecalculateDealRisksCommand::class,\n SendDealsUpdateCommand::class,\n Commands\\Activities\\SetProviderCapabilitiesField::class,\n Commands\\Teams\\InitiallySetNotificationProviderTeamsTable::class,\n Commands\\Crm\\AddLayoutEntities::class,\n Commands\\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,\n Commands\\JiminnyTokenInfoCommand::class,\n Commands\\JiminnySetEncryptedTokenManagerModeCommand::class,\n Commands\\EncryptTokensCommand::class,\n Commands\\Dialers\\Aircall\\CheckAndRenewWebhooks::class,\n Commands\\Migrate\\MigrateTeamRegionCommand::class,\n Commands\\ManageScimForTeam::class,\n Commands\\Dialers\\SyncUsersCommand::class,\n Commands\\WhichWorkerIsWorkingOnWhichJob::class,\n Commands\\GroupSetDefaultLanguageCommand::class,\n Commands\\Dev\\AddRateLimitCommand::class,\n Commands\\Dev\\ImportCallsCommand::class,\n Commands\\DealInsights\\BuildDealInsightsLayoutCommand::class,\n Commands\\DealInsights\\DeleteAskJiminnyDealPrompts::class,\n Commands\\Crm\\MatchCrmObjectsCommand::class,\n Commands\\Activities\\SetupIntegration\\EightByEight::class,\n Commands\\Calendars\\RemoveCalendarEventActivitiesCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromGongCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromChorusCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromLeexiCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromAvomaCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromClariCommand::class,\n Commands\\Activities\\SetupIntegration\\ConnectAndSell::class,\n Commands\\Activities\\SetupIntegration\\CloudTalk::class,\n Commands\\Users\\CreateConferenceSlug::class,\n Commands\\Elasticsearch\\AsyncUpdateEsEntities::class,\n Commands\\Elasticsearch\\ResetAsyncElasticSearchCommand::class,\n Commands\\Playlists\\PlaylistSharesUpdateCommand::class,\n Commands\\Crm\\AutologDelayedCommand::class,\n Commands\\Activities\\HydrateDefaultActivityTypeCommand::class,\n Commands\\Crm\\CheckActivityLoggableCommand::class,\n Commands\\Activities\\MonitorDialerActivitiesCommand::class,\n Commands\\Activities\\SetupIntegration\\Xant::class,\n Commands\\ImportUsersFromCsvFile::class,\n Commands\\DevPostmanCommand::class,\n Commands\\Playlists\\FixTreeStructureCommand::class,\n Commands\\Zoom\\ResolvePmiLinksCommand::class,\n Commands\\MarkBranchForEnvironmentPipelineCommand::class,\n Commands\\Activities\\ProbeMediaSegmentsCommand::class,\n Commands\\Activities\\SetupIntegration\\AmazonConnect::class,\n Commands\\Playbooks\\ChangePlaybookActivityFieldCommand::class,\n MediaPipelineRestartCommand::class,\n Commands\\Dev\\FixHubSpotTokens::class,\n Commands\\Dev\\MonitorSocialAccountsState::class,\n Commands\\Activities\\SetupIntegration\\Vonage::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlex::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexDirect::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexSetDialerAuthCredentialsCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioSetS3RecordingCredentialsCommand::class,\n SendActionItemsCommand::class,\n Commands\\Users\\ChangeEmail::class,\n Commands\\Calendars\\ListUserGoogleCalendars::class,\n Commands\\Activities\\JustCall\\SyncPlaybackLinkToCrmCommand::class,\n Commands\\Activities\\HydrateCallWithCrmDataCommand::class,\n Commands\\Activities\\UpdateActivityElasticSearchDocumentCommand::class,\n Commands\\Activities\\SetupIntegration\\Talkdesk::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookListCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookShow::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioVideo::class,\n Commands\\Crm\\SetupCloseCrm::class,\n Commands\\Crm\\SetupCopperCrm::class,\n Commands\\Crm\\FullSyncOpportunityCommand::class,\n Commands\\Crm\\IntegrationApp\\CrmEntitiesFullSyncCommand::class,\n Commands\\Crm\\IntegrationApp\\ValidateConnectionCommand::class,\n Commands\\Activities\\Workflow\\RefreshCrmData::class,\n Commands\\Activities\\Migrator\\AnalyseGongCalls::class,\n Commands\\Users\\AddVoiceRoleToRecorderCommand::class,\n Commands\\Activities\\SyncMissingCallDispositions::class,\n Commands\\Calendars\\RemoveFutureCalendarEvents::class,\n FlushRolesPermissionsCache::class,\n Commands\\Activities\\SetupIntegration\\FiveNine::class,\n CalendarEventDeleteCancelledCommand::class,\n CalendarEventDeletePastCommand::class,\n ReportActivityProcessingTimeToDatadogCommand::class,\n ReportProcessingStatesToDatadogCommand::class,\n ReleaseNumbersCommand::class,\n BackfillOpportunityUserFromAccountCommand::class,\n RemoveExpiredRoleChangeEventsCommand::class,\n RemoveExpiredNudgesCommand::class,\n SendNudgeExpirationWarningsCommand::class,\n AutologOldActivitiesCommand::class,\n RemoveUnusedParticipantSpeechesCommand::class,\n DeleteActivitiesForChurnedTeamsCommand::class,\n HardDeleteActivitiesForChurnedTeamsCommand::class,\n TeamDeleteCommand::class,\n TeamsDeleteDeactivatedCommand::class,\n UpdateTeamsCommand::class,\n OverrideTranscriptionLocaleCommand::class,\n SyncSlackUserCommand::class,\n PurgeSoftDeletedOpportunitiesCommand::class,\n PurgeSyncBatchesCommand::class,\n ProphetAnalyzeClosedDealsCommand::class,\n DeleteChurnedSubAccounts::class,\n Commands\\ProphetAi\\DumpContext::class,\n DeletePredefinedSubAccounts::class,\n DeleteActivitiesForRetentionTeamsCommand::class,\n HardDeleteActivitiesTeamsCommand::class,\n TeamsDeleteRetentionCommand::class,\n TeamSettingPutCommand::class,\n StopHangingLivestreamsCommand::class,\n FixActivitiesOpportunity::class,\n Commands\\Activities\\SetupIntegration\\Salesforce\\SetupSalesforceIntegrationCommand::class,\n UpdateOldTranscriptionModelLocalesCommand::class,\n Commands\\Dev\\FixMissMatchedCrmActivitiesCommand::class,\n DownloadMissingTrackCommand::class,\n ActivitiesMatchCrmCommand::class,\n DeleteEmailDocumentsCommand::class,\n DeleteOldTranscriptionsCommand::class,\n DeleteS3LeftoversCommand::class,\n RemoveDeleteMarkersCommand::class,\n SyncTeamUsersCommand::class,\n ReassignTranscriptCommand::class,\n DiarizeViaAiParticipantIdentificationCommand::class,\n RestoreActivityTypeCommand::class,\n DeleteOldAiCrmNotesCommand::class,\n DeleteReportCommand::class,\n AutomatedReportsRetentionPolicyCommand::class,\n SyncHubspotActiveDeals::class,\n GenerateInternalWebhookToken::class,\n IssueMcpTokenCommand::class,\n RestoreActivityCrmProviderIdCommand::class,\n CleanupActivityTracksCommand::class,\n DeleteUnusedTracksCommand::class,\n RestoreTracksCommand::class,\n HubspotWebhookServiceCommand::class,\n ProcessMergedObjectsCommand::class,\n HubspotJournalPollingCommand::class,\n SetupJournalDealWebhookSubscriptionsCommand::class,\n ListJournalWebhookSubscriptionsCommand::class,\n RemoveGhostParticipantsCommand::class,\n AutodetectAiActivityTypeCommand::class,\n Commands\\Crm\\LogActivitiesCommand::class,\n Commands\\Crm\\MatchOpportunityActivitiesCommand::class,\n PurgeDeletedOpportunitiesCommand::class,\n CleanDuplicateFieldDataCommand::class,\n RetryProspectSummaryCommand::class,\n ProcessHubspotObjectsSyncBatches::class,\n SyncOpportunitiesMissingFieldDataCommand::class,\n RestoreDealAssociationsCommand::class,\n Commands\\Crm\\TestPipedriveOfficialSdkCommand::class,\n ];\n\n private Schedule $schedule;\n private string $output;\n\n protected function schedule(Schedule $schedule): void\n {\n $this->schedule = $schedule;\n $this->output = config('jiminny.scheduler_log');\n\n $schedule->useCache('redis');\n\n $currentMinute = (int) date('i');\n $currentDay = (int) date('w');\n\n $this->scheduleEveryMinute();\n $this->scheduleEveryTwoMinutes();\n $this->scheduleEveryFiveMinutes();\n $this->scheduleEveryTenMinutes();\n $this->scheduleEveryFifteenMinutes();\n $this->scheduleEveryThirtyMinutes();\n $this->scheduleHourly();\n $this->scheduleDaily();\n $this->scheduleWeekly($currentDay);\n $this->scheduleSpecificTimes();\n $this->scheduleDynamic($currentMinute);\n }\n\n protected function scheduleEveryMinute(): void\n {\n $this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();\n $this->scheduleCommand('dialers:monitor-activities')->everyMinute();\n $this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();\n $this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();\n\n $this->schedule->command('mailbox:batch:process', ['--max-batches=15'])\n ->everyMinute()\n ->sendOutputTo($this->output);\n }\n\n protected function scheduleEveryTwoMinutes(): void\n {\n $this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();\n }\n\n protected function scheduleEveryFiveMinutes(): void\n {\n $this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();\n // Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)\n $this->scheduleCommand('crm:sync-hubspot-objects', [], 4)\n ->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');\n $this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();\n\n $this->schedule->command('mailbox:batch:create')\n ->cron('2-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output);\n\n $this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])\n ->cron('3-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ->runInBackground();\n\n $this->schedule->command('hubspot:journal-poll', ['--start'])\n ->everyFiveMinutes()\n ->sendOutputTo($this->output)\n ->runInBackground();\n }\n\n protected function scheduleEveryTenMinutes(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();\n $this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('crm:reset-governor')->everyTenMinutes();\n }\n\n protected function scheduleEveryFifteenMinutes(): void\n {\n $this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();\n $this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');\n $this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n ],\n ])->everyFifteenMinutes();\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->cron('7,22,37,52 * * * *');\n }\n\n protected function scheduleEveryThirtyMinutes(): void\n {\n $this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');\n $this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();\n\n $this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)\n ->between('02:58', '05:29')\n ->everyThirtyMinutes()\n ->runInBackground();\n\n $this->scheduleActivitiesHardDelete();\n }\n\n protected function scheduleHourly(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();\n $this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');\n $this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');\n $this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');\n $this->scheduleCommand('automated-reports:send')->hourly();\n $this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);\n $this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);\n }\n\n protected function scheduleDaily(): void\n {\n $this->scheduleCommand('teams:sync-planhat')->daily();\n $this->scheduleCommand('twilio:sync-addresses')->daily();\n $this->scheduleCommand('twilio:sync-zone-access')->daily();\n $this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();\n $this->scheduleCommand('users:sync-licence-data')->daily();\n $this->scheduleCommand('users:sync-intercom-data')->daily();\n $this->scheduleCommand('nudges:send-expiration-warnings')->daily();\n $this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();\n }\n\n protected function scheduleWeekly(int $currentDay): void\n {\n if ($currentDay === 0) {\n $this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);\n }\n\n if ($currentDay === 6) {\n $this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_AMAZON_CONNECT,\n '--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->saturdays()->at('01:00')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)\n ->saturdays()->at('01:07')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)\n ->saturdays()->at('05:08')->runInBackground();\n $this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')\n ->weeklyOn(6, '6:00');\n $this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')\n ->weeklyOn(6, '7:00');\n }\n }\n\n protected function scheduleSpecificTimes(): void\n {\n $this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_DISCARDED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:20')->runInBackground();\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_PROCESSED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:30')->runInBackground();\n\n $this->scheduleCommand('automated-reports')->dailyAt('01:00');\n $this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');\n $this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');\n $this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');\n $this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');\n $this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');\n $this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('03:05');\n\n\n $this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');\n $this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');\n $this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');\n $this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');\n $this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');\n\n if (! $this->app->environment('production')) {\n $this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)\n ->dailyAt('04:02')->runInBackground();\n }\n\n $this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n ],\n ])->dailyAt('05:05');\n\n if (! $this->app->environment('qa')) {\n $this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');\n }\n\n $this->scheduleCommand('activity:sync-dispositions', [\n Activity::PROVIDER_HUBSPOT,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('07:05');\n }\n\n protected function scheduleDynamic(int $currentMinute): void\n {\n $this->scheduleHourlyFallbackActivitySyncs($currentMinute);\n $this->scheduleBullhornHeartbeat($currentMinute);\n }\n\n private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void\n {\n if ($offsetMinute === 0) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);\n } elseif ($offsetMinute === 1) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);\n } elseif ($offsetMinute === 2) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);\n }\n }\n\n private function scheduleBullhornHeartbeat(int $currentMinute): void\n {\n $bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);\n if ($bhHeartbeatInterval > 0) {\n $minutes = max((int) floor($bhHeartbeatInterval / 60), 1);\n if ($currentMinute % $minutes === 0) {\n $bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);\n if ($minutes > 30) {\n $bhEvent->hourly();\n } else {\n $bhEvent->cron(sprintf('*/%d * * * *', $minutes));\n }\n }\n }\n }\n\n private function scheduleActivitiesHardDelete(): void\n {\n if (config(key: 'jiminny.deploy_region') === 'eu') {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 1000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n } elseif ($this->app->environment('production')) {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 2000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n }\n }\n\n private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void\n {\n $this->scheduleCommand('activity:sync', [\n $provider,\n '--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->hourlyAt($offsetMinute);\n }\n\n /**\n * Register the Closure based commands for the application.\n */\n protected function commands(): void\n {\n require_once base_path('routes/console.php');\n }\n\n private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event\n {\n return $this->schedule\n ->command($name, $options)\n ->withoutOverlapping($expiresAt)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\Console;\n\nuse Illuminate\\Console\\ConfirmableTrait;\nuse Illuminate\\Console\\Scheduling\\Event;\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as ConsoleKernel;\nuse Jiminny\\Component\\Acl\\RemoveExpiredRoleChangeEventsCommand;\nuse Jiminny\\Component\\ActionItems\\Commands\\SendActionItemsCommand;\nuse Jiminny\\Component\\AiActivityType\\Commands\\AutodetectAiActivityTypeCommand;\nuse Jiminny\\Component\\AskJiminnyAi\\Commands\\ProphetAnalyzeClosedDealsCommand;\nuse Jiminny\\Component\\Cache\\Constants;\nuse Jiminny\\Component\\DealInsights\\Commands\\SendDealsUpdateCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\MediaPipelineRestartCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportActivityProcessingTimeToDatadogCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportProcessingStatesToDatadogCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\OverrideTranscriptionLocaleCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryFailedTranscriptionsCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryStuckTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ActivitiesMatchCrmCommand;\nuse Jiminny\\Console\\Commands\\Activities\\AutologOldActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForRetentionTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DownloadMissingTrackCommand;\nuse Jiminny\\Console\\Commands\\Activities\\FixActivitiesOpportunity;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReassignTranscriptCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReindexRecentActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\RetryProspectSummaryCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeleteCancelledCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeletePastCommand;\nuse Jiminny\\Console\\Commands\\Crm\\BackfillOpportunityUserFromAccountCommand;\nuse Jiminny\\Console\\Commands\\Crm\\CleanDuplicateFieldDataCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ProcessMergedObjectsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\RestoreDealAssociationsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\ProcessHubspotObjectsSyncBatches;\nuse Jiminny\\Console\\Commands\\Crm\\PurgeDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ListJournalWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\SetupJournalDealWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\SyncHubspotActiveDeals;\nuse Jiminny\\Console\\Commands\\Crm\\SyncOpportunitiesMissingFieldDataCommand;\nuse Jiminny\\Console\\Commands\\DeleteOldAiCrmNotesCommand;\nuse Jiminny\\Console\\Commands\\DeleteS3LeftoversCommand;\nuse Jiminny\\Console\\Commands\\DiarizeViaAiParticipantIdentificationCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\DeleteEmailDocumentsCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\RemoveGhostParticipantsCommand;\nuse Jiminny\\Console\\Commands\\FlushRolesPermissionsCache;\nuse Jiminny\\Console\\Commands\\GenerateInternalWebhookToken;\nuse Jiminny\\Console\\Commands\\IssueMcpTokenCommand;\nuse Jiminny\\Console\\Commands\\HubspotJournalPollingCommand;\nuse Jiminny\\Console\\Commands\\HubspotWebhookServiceCommand;\nuse Jiminny\\Console\\Commands\\Livestream\\StopHangingLivestreamsCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteEmailMessagesWithoutActivityCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteInboxEmailsCommand;\nuse Jiminny\\Console\\Commands\\PurgeSoftDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\PurgeSyncBatchesCommand;\nuse Jiminny\\Console\\Commands\\RemoveDeleteMarkersCommand;\nuse Jiminny\\Console\\Commands\\RemoveExpiredNudgesCommand;\nuse Jiminny\\Console\\Commands\\RemoveUnusedParticipantSpeechesCommand;\nuse Jiminny\\Console\\Commands\\Reports\\AutomatedReportsRetentionPolicyCommand;\nuse Jiminny\\Console\\Commands\\Reports\\DeleteReportCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityCrmProviderIdCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityTypeCommand;\nuse Jiminny\\Console\\Commands\\SendNudgeExpirationWarningsCommand;\nuse Jiminny\\Console\\Commands\\Slack\\SyncSlackUserCommand;\nuse Jiminny\\Console\\Commands\\Teams\\SyncTeamUsersCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamDeleteCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteDeactivatedCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteRetentionCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamSettingPutCommand;\nuse Jiminny\\Console\\Commands\\Teams\\UpdateTeamsCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\CleanupActivityTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\DeleteUnusedTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\RestoreTracksCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\DeleteOldTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\UpdateOldTranscriptionModelLocalesCommand;\nuse Jiminny\\Console\\Commands\\Twilio\\DeleteChurnedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\DeletePredefinedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\ReleaseNumbersCommand;\nuse Jiminny\\Jobs\\Activity\\SyncActivity;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\InboxEmail;\nuse Jiminny\\Services\\RecallAI\\Commands\\ImportRegionMeetingCommand;\nuse Jiminny\\Services\\RecallAI\\Commands\\ScheduleBotCommand;\n\nclass Kernel extends ConsoleKernel\n{\n use ConfirmableTrait;\n\n /**\n * The Artisan commands provided by your application.\n *\n * @var string[]\n */\n protected $commands = [\n Commands\\GeckoExport\\GeckoExportTranscriptCommand::class,\n Commands\\GeckoExport\\GeckoExportTranscriptionCommand::class,\n Commands\\GeckoExport\\GeckoExportParticipantSpeechesCommand::class,\n Commands\\Activities\\DeleteForCoachesCommand::class,\n ReindexRecentActivitiesCommand::class,\n Commands\\Crm\\BullhornPingCommand::class,\n Commands\\Crm\\BullhornSessionCommand::class,\n Commands\\Crm\\BullhornSearchCommand::class,\n Commands\\PlaybackThemes\\TopicsConsolidateCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesCopyCommand::class,\n Commands\\PlaybackThemes\\AssignTopicsUsedBySingleTeamCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesMigrateToVersionsCommand::class,\n Commands\\Vocabulary\\VocabularyCopyCommand::class,\n Commands\\Transcription\\TranscriptionPrintRaw::class,\n Commands\\Migrate\\JiminnyMigratePopulateActivitySourceCommand::class,\n Commands\\EngagementStats\\JiminnyEngagementStatsExplainCommand::class,\n Commands\\EngagementStatsRegenerateCommand::class,\n Commands\\Analytics\\NumberOfActivitiesPerActivityTypeCommand::class,\n Commands\\Elasticsearch\\MappingRunCommand::class,\n Commands\\Elasticsearch\\MappingInstallCommand::class,\n Commands\\Elasticsearch\\UpdateEsMappingSettingsCommand::class,\n Commands\\Analytics\\TranscriptionWordMatchCommand::class,\n Commands\\JiminnyCacheClearCommand::class,\n Commands\\Transcription\\TranscriptionSearchCommand::class,\n RetryStuckTranscriptionsCommand::class,\n RetryFailedTranscriptionsCommand::class,\n Commands\\JiminnyDebugCommand::class,\n Commands\\RunAiCallScoringForUntypedActivitiesCommand::class,\n Commands\\Calendars\\SyncCalendars::class,\n Commands\\Calendars\\SyncDeletedEvents::class,\n Commands\\Twilio\\FetchMetrics::class,\n Commands\\Twilio\\FetchEvents::class,\n Commands\\Twilio\\FetchSummary::class,\n Commands\\Twilio\\SyncZoneAccess::class,\n Commands\\DatabaseTableCount::class,\n Commands\\PurgeConferences::class,\n Commands\\ResetElasticSearch::class,\n Commands\\CreateDatabaseUsers::class,\n Commands\\Activities\\NotifyNotLogged::class,\n Commands\\Crm\\SyncTeamMetadata::class,\n Commands\\Crm\\SyncProfileMetadata::class,\n Commands\\Crm\\SyncContact::class,\n Commands\\Crm\\SyncObjects::class,\n Commands\\Crm\\SyncHubspotObjects::class,\n Commands\\Crm\\SyncAccount::class,\n Commands\\Crm\\ResetGovernorLimits::class,\n Commands\\Crm\\ManageSyncStrategyCommand::class,\n Commands\\ImportRecording::class,\n Commands\\TrackImported::class,\n Commands\\Twilio\\RecoverTwilioTracksCommand::class,\n Commands\\Crm\\SetupLayouts::class,\n Commands\\Tracks\\SyncTwilioTracks::class,\n Commands\\Activities\\StatusCount::class,\n\n Commands\\Mailboxes\\TextRelay\\WatchMailboxEvents::class,\n Commands\\Mailboxes\\InboxCreate::class,\n Commands\\Mailboxes\\InboxSync::class,\n Commands\\Mailboxes\\BatchCreate::class,\n Commands\\Mailboxes\\BatchProcess::class,\n Commands\\Mailboxes\\InboxPurge::class,\n Commands\\Mailboxes\\BatchRetryFailed::class,\n Commands\\Mailboxes\\BatchFailStalled::class,\n Commands\\Mailboxes\\SkipListsRefresh::class,\n Commands\\Mailboxes\\SkipListsDump::class,\n Commands\\Mailboxes\\TextRelay\\SyncMailbox::class,\n Commands\\Mailboxes\\DeleteInboxEmailsCommand::class,\n Commands\\Mailboxes\\DeleteEmailMessagesCommand::class,\n DeleteEmailMessagesWithoutActivityCommand::class,\n\n Commands\\Tracks\\CheckIntegrity::class,\n Commands\\Twilio\\RemoteLifecycle::class,\n Commands\\Twilio\\SyncNumbers::class,\n Commands\\Crm\\SetupActivityTypeForFollowUp::class,\n Commands\\Activities\\CheckPlayable::class,\n Commands\\Activities\\ActivityDeleteCommand::class,\n Commands\\Activities\\Copy::class,\n Commands\\Activities\\ActivityHardDeleteCommand::class,\n Commands\\Reports\\Team::class,\n Commands\\Reports\\GenerateMarketingReport::class,\n Commands\\Reports\\AutomatedReportsCommand::class,\n Commands\\Reports\\AutomatedReportsSendCommand::class,\n Commands\\MuteOrganizerChannel::class,\n Commands\\Tracks\\DeleteTracks::class,\n Commands\\Tracks\\RetryDownload::class,\n Commands\\Tracks\\RetryFailedDownloads::class,\n Commands\\Twilio\\SyncAddresses::class,\n Commands\\Activities\\UpdateElasticSearch::class,\n Commands\\MakeSlackLiveCoachingChatNotesOn::class,\n Commands\\Activities\\PreMeetingNotification::class,\n ScheduleBotCommand::class,\n ImportRegionMeetingCommand::class,\n Commands\\Activities\\MonitorMeetingCountCommand::class,\n Commands\\Activities\\MonitorMeetingStartCommand::class,\n Commands\\Activities\\MonitorMeetingEndCommand::class,\n Commands\\SyncActivity::class,\n Commands\\PhpApm::class,\n Commands\\Crm\\SyncOpportunity::class,\n Commands\\Crm\\SyncLead::class,\n Commands\\Users\\SyncLicenceDataToSalesforce::class,\n Commands\\Crm\\UpdateOpportunitySpecifications::class,\n Commands\\Users\\SyncToIntercom::class,\n Commands\\Users\\SyncToUserPilot::class,\n Commands\\Teams\\SyncToPlanhat::class,\n Commands\\Twilio\\SetZoneAccess::class,\n Commands\\Users\\CreateDefaultSavedSearchesCommand::class,\n Commands\\Crm\\SendNotLogged::class,\n Commands\\Teams\\DeactivateTeamCommand::class,\n Commands\\Crm\\SyncFieldMetadata::class,\n Commands\\Postmark\\SyncEmailTemplatesCommand::class,\n Commands\\PlaybackThemes\\ImportTriggersFromTranslatedCsvCommand::class,\n Commands\\Activities\\PreMeetingReminder::class,\n Commands\\Activities\\CustomerActivitiesExport::class,\n Commands\\Users\\RefreshAccessToken::class,\n Commands\\Calendars\\SetupCalendarSubscription::class,\n Commands\\Activities\\InviteMeetingBot::class,\n Commands\\Activities\\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,\n Commands\\Crm\\MigrateProvider::class,\n Commands\\Activities\\MigrateLocationFromCalendarEventToActivities::class,\n Commands\\HelperTruncateCoachingTables::class,\n Commands\\FixCrossTenantIssues::class,\n Commands\\Activities\\CloudCall\\SetupIntegration::class,\n Commands\\Activities\\CloudTalk\\FixTimeZone::class,\n Commands\\Activities\\Orum\\SetupIntegration::class,\n Commands\\Activities\\JustCall\\SetupIntegration::class,\n Commands\\Activities\\RingCentral\\AddInboundPromptSupport::class,\n Commands\\Dialers\\Dialpad\\SubscribeToWebhooks::class,\n Commands\\RecalculateDealRisksCommand::class,\n SendDealsUpdateCommand::class,\n Commands\\Activities\\SetProviderCapabilitiesField::class,\n Commands\\Teams\\InitiallySetNotificationProviderTeamsTable::class,\n Commands\\Crm\\AddLayoutEntities::class,\n Commands\\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,\n Commands\\JiminnyTokenInfoCommand::class,\n Commands\\JiminnySetEncryptedTokenManagerModeCommand::class,\n Commands\\EncryptTokensCommand::class,\n Commands\\Dialers\\Aircall\\CheckAndRenewWebhooks::class,\n Commands\\Migrate\\MigrateTeamRegionCommand::class,\n Commands\\ManageScimForTeam::class,\n Commands\\Dialers\\SyncUsersCommand::class,\n Commands\\WhichWorkerIsWorkingOnWhichJob::class,\n Commands\\GroupSetDefaultLanguageCommand::class,\n Commands\\Dev\\AddRateLimitCommand::class,\n Commands\\Dev\\ImportCallsCommand::class,\n Commands\\DealInsights\\BuildDealInsightsLayoutCommand::class,\n Commands\\DealInsights\\DeleteAskJiminnyDealPrompts::class,\n Commands\\Crm\\MatchCrmObjectsCommand::class,\n Commands\\Activities\\SetupIntegration\\EightByEight::class,\n Commands\\Calendars\\RemoveCalendarEventActivitiesCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromGongCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromChorusCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromLeexiCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromAvomaCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromClariCommand::class,\n Commands\\Activities\\SetupIntegration\\ConnectAndSell::class,\n Commands\\Activities\\SetupIntegration\\CloudTalk::class,\n Commands\\Users\\CreateConferenceSlug::class,\n Commands\\Elasticsearch\\AsyncUpdateEsEntities::class,\n Commands\\Elasticsearch\\ResetAsyncElasticSearchCommand::class,\n Commands\\Playlists\\PlaylistSharesUpdateCommand::class,\n Commands\\Crm\\AutologDelayedCommand::class,\n Commands\\Activities\\HydrateDefaultActivityTypeCommand::class,\n Commands\\Crm\\CheckActivityLoggableCommand::class,\n Commands\\Activities\\MonitorDialerActivitiesCommand::class,\n Commands\\Activities\\SetupIntegration\\Xant::class,\n Commands\\ImportUsersFromCsvFile::class,\n Commands\\DevPostmanCommand::class,\n Commands\\Playlists\\FixTreeStructureCommand::class,\n Commands\\Zoom\\ResolvePmiLinksCommand::class,\n Commands\\MarkBranchForEnvironmentPipelineCommand::class,\n Commands\\Activities\\ProbeMediaSegmentsCommand::class,\n Commands\\Activities\\SetupIntegration\\AmazonConnect::class,\n Commands\\Playbooks\\ChangePlaybookActivityFieldCommand::class,\n MediaPipelineRestartCommand::class,\n Commands\\Dev\\FixHubSpotTokens::class,\n Commands\\Dev\\MonitorSocialAccountsState::class,\n Commands\\Activities\\SetupIntegration\\Vonage::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlex::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexDirect::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexSetDialerAuthCredentialsCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioSetS3RecordingCredentialsCommand::class,\n SendActionItemsCommand::class,\n Commands\\Users\\ChangeEmail::class,\n Commands\\Calendars\\ListUserGoogleCalendars::class,\n Commands\\Activities\\JustCall\\SyncPlaybackLinkToCrmCommand::class,\n Commands\\Activities\\HydrateCallWithCrmDataCommand::class,\n Commands\\Activities\\UpdateActivityElasticSearchDocumentCommand::class,\n Commands\\Activities\\SetupIntegration\\Talkdesk::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookListCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookShow::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioVideo::class,\n Commands\\Crm\\SetupCloseCrm::class,\n Commands\\Crm\\SetupCopperCrm::class,\n Commands\\Crm\\FullSyncOpportunityCommand::class,\n Commands\\Crm\\IntegrationApp\\CrmEntitiesFullSyncCommand::class,\n Commands\\Crm\\IntegrationApp\\ValidateConnectionCommand::class,\n Commands\\Activities\\Workflow\\RefreshCrmData::class,\n Commands\\Activities\\Migrator\\AnalyseGongCalls::class,\n Commands\\Users\\AddVoiceRoleToRecorderCommand::class,\n Commands\\Activities\\SyncMissingCallDispositions::class,\n Commands\\Calendars\\RemoveFutureCalendarEvents::class,\n FlushRolesPermissionsCache::class,\n Commands\\Activities\\SetupIntegration\\FiveNine::class,\n CalendarEventDeleteCancelledCommand::class,\n CalendarEventDeletePastCommand::class,\n ReportActivityProcessingTimeToDatadogCommand::class,\n ReportProcessingStatesToDatadogCommand::class,\n ReleaseNumbersCommand::class,\n BackfillOpportunityUserFromAccountCommand::class,\n RemoveExpiredRoleChangeEventsCommand::class,\n RemoveExpiredNudgesCommand::class,\n SendNudgeExpirationWarningsCommand::class,\n AutologOldActivitiesCommand::class,\n RemoveUnusedParticipantSpeechesCommand::class,\n DeleteActivitiesForChurnedTeamsCommand::class,\n HardDeleteActivitiesForChurnedTeamsCommand::class,\n TeamDeleteCommand::class,\n TeamsDeleteDeactivatedCommand::class,\n UpdateTeamsCommand::class,\n OverrideTranscriptionLocaleCommand::class,\n SyncSlackUserCommand::class,\n PurgeSoftDeletedOpportunitiesCommand::class,\n PurgeSyncBatchesCommand::class,\n ProphetAnalyzeClosedDealsCommand::class,\n DeleteChurnedSubAccounts::class,\n Commands\\ProphetAi\\DumpContext::class,\n DeletePredefinedSubAccounts::class,\n DeleteActivitiesForRetentionTeamsCommand::class,\n HardDeleteActivitiesTeamsCommand::class,\n TeamsDeleteRetentionCommand::class,\n TeamSettingPutCommand::class,\n StopHangingLivestreamsCommand::class,\n FixActivitiesOpportunity::class,\n Commands\\Activities\\SetupIntegration\\Salesforce\\SetupSalesforceIntegrationCommand::class,\n UpdateOldTranscriptionModelLocalesCommand::class,\n Commands\\Dev\\FixMissMatchedCrmActivitiesCommand::class,\n DownloadMissingTrackCommand::class,\n ActivitiesMatchCrmCommand::class,\n DeleteEmailDocumentsCommand::class,\n DeleteOldTranscriptionsCommand::class,\n DeleteS3LeftoversCommand::class,\n RemoveDeleteMarkersCommand::class,\n SyncTeamUsersCommand::class,\n ReassignTranscriptCommand::class,\n DiarizeViaAiParticipantIdentificationCommand::class,\n RestoreActivityTypeCommand::class,\n DeleteOldAiCrmNotesCommand::class,\n DeleteReportCommand::class,\n AutomatedReportsRetentionPolicyCommand::class,\n SyncHubspotActiveDeals::class,\n GenerateInternalWebhookToken::class,\n IssueMcpTokenCommand::class,\n RestoreActivityCrmProviderIdCommand::class,\n CleanupActivityTracksCommand::class,\n DeleteUnusedTracksCommand::class,\n RestoreTracksCommand::class,\n HubspotWebhookServiceCommand::class,\n ProcessMergedObjectsCommand::class,\n HubspotJournalPollingCommand::class,\n SetupJournalDealWebhookSubscriptionsCommand::class,\n ListJournalWebhookSubscriptionsCommand::class,\n RemoveGhostParticipantsCommand::class,\n AutodetectAiActivityTypeCommand::class,\n Commands\\Crm\\LogActivitiesCommand::class,\n Commands\\Crm\\MatchOpportunityActivitiesCommand::class,\n PurgeDeletedOpportunitiesCommand::class,\n CleanDuplicateFieldDataCommand::class,\n RetryProspectSummaryCommand::class,\n ProcessHubspotObjectsSyncBatches::class,\n SyncOpportunitiesMissingFieldDataCommand::class,\n RestoreDealAssociationsCommand::class,\n Commands\\Crm\\TestPipedriveOfficialSdkCommand::class,\n ];\n\n private Schedule $schedule;\n private string $output;\n\n protected function schedule(Schedule $schedule): void\n {\n $this->schedule = $schedule;\n $this->output = config('jiminny.scheduler_log');\n\n $schedule->useCache('redis');\n\n $currentMinute = (int) date('i');\n $currentDay = (int) date('w');\n\n $this->scheduleEveryMinute();\n $this->scheduleEveryTwoMinutes();\n $this->scheduleEveryFiveMinutes();\n $this->scheduleEveryTenMinutes();\n $this->scheduleEveryFifteenMinutes();\n $this->scheduleEveryThirtyMinutes();\n $this->scheduleHourly();\n $this->scheduleDaily();\n $this->scheduleWeekly($currentDay);\n $this->scheduleSpecificTimes();\n $this->scheduleDynamic($currentMinute);\n }\n\n protected function scheduleEveryMinute(): void\n {\n $this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();\n $this->scheduleCommand('dialers:monitor-activities')->everyMinute();\n $this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();\n $this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();\n\n $this->schedule->command('mailbox:batch:process', ['--max-batches=15'])\n ->everyMinute()\n ->sendOutputTo($this->output);\n }\n\n protected function scheduleEveryTwoMinutes(): void\n {\n $this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();\n }\n\n protected function scheduleEveryFiveMinutes(): void\n {\n $this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();\n // Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)\n $this->scheduleCommand('crm:sync-hubspot-objects', [], 4)\n ->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');\n $this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();\n\n $this->schedule->command('mailbox:batch:create')\n ->cron('2-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output);\n\n $this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])\n ->cron('3-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ->runInBackground();\n\n $this->schedule->command('hubspot:journal-poll', ['--start'])\n ->everyFiveMinutes()\n ->sendOutputTo($this->output)\n ->runInBackground();\n }\n\n protected function scheduleEveryTenMinutes(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();\n $this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('crm:reset-governor')->everyTenMinutes();\n }\n\n protected function scheduleEveryFifteenMinutes(): void\n {\n $this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();\n $this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');\n $this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n ],\n ])->everyFifteenMinutes();\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->cron('7,22,37,52 * * * *');\n }\n\n protected function scheduleEveryThirtyMinutes(): void\n {\n $this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');\n $this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();\n\n $this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)\n ->between('02:58', '05:29')\n ->everyThirtyMinutes()\n ->runInBackground();\n\n $this->scheduleActivitiesHardDelete();\n }\n\n protected function scheduleHourly(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();\n $this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');\n $this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');\n $this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');\n $this->scheduleCommand('automated-reports:send')->hourly();\n $this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);\n $this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);\n }\n\n protected function scheduleDaily(): void\n {\n $this->scheduleCommand('teams:sync-planhat')->daily();\n $this->scheduleCommand('twilio:sync-addresses')->daily();\n $this->scheduleCommand('twilio:sync-zone-access')->daily();\n $this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();\n $this->scheduleCommand('users:sync-licence-data')->daily();\n $this->scheduleCommand('users:sync-intercom-data')->daily();\n $this->scheduleCommand('nudges:send-expiration-warnings')->daily();\n $this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();\n }\n\n protected function scheduleWeekly(int $currentDay): void\n {\n if ($currentDay === 0) {\n $this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);\n }\n\n if ($currentDay === 6) {\n $this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_AMAZON_CONNECT,\n '--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->saturdays()->at('01:00')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)\n ->saturdays()->at('01:07')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)\n ->saturdays()->at('05:08')->runInBackground();\n $this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')\n ->weeklyOn(6, '6:00');\n $this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')\n ->weeklyOn(6, '7:00');\n }\n }\n\n protected function scheduleSpecificTimes(): void\n {\n $this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_DISCARDED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:20')->runInBackground();\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_PROCESSED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:30')->runInBackground();\n\n $this->scheduleCommand('automated-reports')->dailyAt('01:00');\n $this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');\n $this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');\n $this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');\n $this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');\n $this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');\n $this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('03:05');\n\n\n $this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');\n $this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');\n $this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');\n $this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');\n $this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');\n\n if (! $this->app->environment('production')) {\n $this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)\n ->dailyAt('04:02')->runInBackground();\n }\n\n $this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n ],\n ])->dailyAt('05:05');\n\n if (! $this->app->environment('qa')) {\n $this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');\n }\n\n $this->scheduleCommand('activity:sync-dispositions', [\n Activity::PROVIDER_HUBSPOT,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('07:05');\n }\n\n protected function scheduleDynamic(int $currentMinute): void\n {\n $this->scheduleHourlyFallbackActivitySyncs($currentMinute);\n $this->scheduleBullhornHeartbeat($currentMinute);\n }\n\n private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void\n {\n if ($offsetMinute === 0) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);\n } elseif ($offsetMinute === 1) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);\n } elseif ($offsetMinute === 2) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);\n }\n }\n\n private function scheduleBullhornHeartbeat(int $currentMinute): void\n {\n $bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);\n if ($bhHeartbeatInterval > 0) {\n $minutes = max((int) floor($bhHeartbeatInterval / 60), 1);\n if ($currentMinute % $minutes === 0) {\n $bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);\n if ($minutes > 30) {\n $bhEvent->hourly();\n } else {\n $bhEvent->cron(sprintf('*/%d * * * *', $minutes));\n }\n }\n }\n }\n\n private function scheduleActivitiesHardDelete(): void\n {\n if (config(key: 'jiminny.deploy_region') === 'eu') {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 1000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n } elseif ($this->app->environment('production')) {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 2000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n }\n }\n\n private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void\n {\n $this->scheduleCommand('activity:sync', [\n $provider,\n '--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->hourlyAt($offsetMinute);\n }\n\n /**\n * Register the Closure based commands for the application.\n */\n protected function commands(): void\n {\n require_once base_path('routes/console.php');\n }\n\n private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event\n {\n return $this->schedule\n ->command($name, $options)\n ->withoutOverlapping($expiresAt)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-935282521832906214
|
-8743917468487692599
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\DTO\Invitation;
use Jiminny\DTO\UserEmail;
use Jiminny\Http\Requests\Settings\Teams\CreateInvitationRequest;
use Jiminny\Http\Requests\Settings\Teams\CreateTeamRequest;
use Jiminny\Http\Requests\Settings\Teams\EditTeamRequest;
use Jiminny\Models\Group;
use Jiminny\Models\Invitation;
use Jiminny\Models\Role;
use Jiminny\Models\Team;
use Jiminny\Models\User;
class UserInvitationDTO
{
use UserEmail;
public string $email;
public ?string $secondaryEmail;
public ?int $groupId;
public int $teamId;
public bool $crmRequired;
public array $roleIds;
public bool $isOwner;
public ?User $currentUser = null;
/**
* @param array{
* email: string,
* secondaryEmail: string|null,
* groupId: int|null,
* teamId: int|string,
* crmRequired: bool,
* roleIds: int[],
* isOwner: bool,
* user?: User
* } $attributes
*/
private function __construct(array $attributes)
{
$this->email = mb_strtolower($attributes['email']);
$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);
$this->groupId = $attributes['groupId'];
$this->teamId = (int) $attributes['teamId'];
$this->crmRequired = (bool) $attributes['crmRequired'];
$this->roleIds = $attributes['roleIds'];
$this->isOwner = $attributes['isOwner'];
$this->currentUser = $attributes['user'] ?? null;
}
public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self
{
$roleIds = Role::whereIn('name', [
User::ROLE_ADMIN,
User::ROLE_RECORDER,
])->pluck('id')->toArray();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => $request->getOwnerEmail(),
'secondaryEmail' => null,
'groupId' => null,
'teamId' => $team->getId(),
'crmRequired' => true,
'roleIds' => $roleIds,
'user' => $currentUser,
'isOwner' => true,
]);
}
public static function fromRequest(CreateInvitationRequest $request): self
{
$data = $request->validated();
$groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;
$teamId = Team::uuid($data['team_id'])->getId();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => mb_strtolower($data['email']),
'secondaryEmail' => $data['secondary_email'] ?? null,
'groupId' => $groupId,
'teamId' => $teamId,
'crmRequired' => $data['crm_required'],
'roleIds' => $data['roles'],
'user' => $currentUser,
'isOwner' => false,
]);
}
public static function fromInvitation(Invitation $invitation, User $currentUser): self
{
$roles = $invitation->roles()->get();
$isOwner = $invitation->isOwner();
return new self([
'email' => $invitation->email,
'secondaryEmail' => $invitation->getSecondaryEmail(),
'groupId' => $invitation->group_id,
'teamId' => $invitation->team_id,
'crmRequired' => $invitation->crm_required,
'roleIds' => $roles->pluck('id')->toArray(),
'user' => $currentUser,
'isOwner' => $isOwner,
]);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
17
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Console;
use Illuminate\Console\ConfirmableTrait;
use Illuminate\Console\Scheduling\Event;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Jiminny\Component\Acl\RemoveExpiredRoleChangeEventsCommand;
use Jiminny\Component\ActionItems\Commands\SendActionItemsCommand;
use Jiminny\Component\AiActivityType\Commands\AutodetectAiActivityTypeCommand;
use Jiminny\Component\AskJiminnyAi\Commands\ProphetAnalyzeClosedDealsCommand;
use Jiminny\Component\Cache\Constants;
use Jiminny\Component\DealInsights\Commands\SendDealsUpdateCommand;
use Jiminny\Component\MediaPipeline\Command\MediaPipelineRestartCommand;
use Jiminny\Component\MediaPipeline\Command\ReportActivityProcessingTimeToDatadogCommand;
use Jiminny\Component\MediaPipeline\Command\ReportProcessingStatesToDatadogCommand;
use Jiminny\Component\Transcription\Commands\OverrideTranscriptionLocaleCommand;
use Jiminny\Component\Transcription\Commands\RetryFailedTranscriptionsCommand;
use Jiminny\Component\Transcription\Commands\RetryStuckTranscriptionsCommand;
use Jiminny\Console\Commands\Activities\ActivitiesMatchCrmCommand;
use Jiminny\Console\Commands\Activities\AutologOldActivitiesCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForRetentionTeamsCommand;
use Jiminny\Console\Commands\Activities\DownloadMissingTrackCommand;
use Jiminny\Console\Commands\Activities\FixActivitiesOpportunity;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesTeamsCommand;
use Jiminny\Console\Commands\Activities\ReassignTranscriptCommand;
use Jiminny\Console\Commands\Activities\ReindexRecentActivitiesCommand;
use Jiminny\Console\Commands\Activities\RetryProspectSummaryCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeleteCancelledCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeletePastCommand;
use Jiminny\Console\Commands\Crm\BackfillOpportunityUserFromAccountCommand;
use Jiminny\Console\Commands\Crm\CleanDuplicateFieldDataCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ProcessMergedObjectsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\RestoreDealAssociationsCommand;
use Jiminny\Console\Commands\Crm\ProcessHubspotObjectsSyncBatches;
use Jiminny\Console\Commands\Crm\PurgeDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ListJournalWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\SetupJournalDealWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\SyncHubspotActiveDeals;
use Jiminny\Console\Commands\Crm\SyncOpportunitiesMissingFieldDataCommand;
use Jiminny\Console\Commands\DeleteOldAiCrmNotesCommand;
use Jiminny\Console\Commands\DeleteS3LeftoversCommand;
use Jiminny\Console\Commands\DiarizeViaAiParticipantIdentificationCommand;
use Jiminny\Console\Commands\Elasticsearch\DeleteEmailDocumentsCommand;
use Jiminny\Console\Commands\Elasticsearch\RemoveGhostParticipantsCommand;
use Jiminny\Console\Commands\FlushRolesPermissionsCache;
use Jiminny\Console\Commands\GenerateInternalWebhookToken;
use Jiminny\Console\Commands\IssueMcpTokenCommand;
use Jiminny\Console\Commands\HubspotJournalPollingCommand;
use Jiminny\Console\Commands\HubspotWebhookServiceCommand;
use Jiminny\Console\Commands\Livestream\StopHangingLivestreamsCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteEmailMessagesWithoutActivityCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteInboxEmailsCommand;
use Jiminny\Console\Commands\PurgeSoftDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\PurgeSyncBatchesCommand;
use Jiminny\Console\Commands\RemoveDeleteMarkersCommand;
use Jiminny\Console\Commands\RemoveExpiredNudgesCommand;
use Jiminny\Console\Commands\RemoveUnusedParticipantSpeechesCommand;
use Jiminny\Console\Commands\Reports\AutomatedReportsRetentionPolicyCommand;
use Jiminny\Console\Commands\Reports\DeleteReportCommand;
use Jiminny\Console\Commands\RestoreActivityCrmProviderIdCommand;
use Jiminny\Console\Commands\RestoreActivityTypeCommand;
use Jiminny\Console\Commands\SendNudgeExpirationWarningsCommand;
use Jiminny\Console\Commands\Slack\SyncSlackUserCommand;
use Jiminny\Console\Commands\Teams\SyncTeamUsersCommand;
use Jiminny\Console\Commands\Teams\TeamDeleteCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteDeactivatedCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteRetentionCommand;
use Jiminny\Console\Commands\Teams\TeamSettingPutCommand;
use Jiminny\Console\Commands\Teams\UpdateTeamsCommand;
use Jiminny\Console\Commands\Tracks\CleanupActivityTracksCommand;
use Jiminny\Console\Commands\Tracks\DeleteUnusedTracksCommand;
use Jiminny\Console\Commands\Tracks\RestoreTracksCommand;
use Jiminny\Console\Commands\Transcription\DeleteOldTranscriptionsCommand;
use Jiminny\Console\Commands\Transcription\UpdateOldTranscriptionModelLocalesCommand;
use Jiminny\Console\Commands\Twilio\DeleteChurnedSubAccounts;
use Jiminny\Console\Commands\Twilio\DeletePredefinedSubAccounts;
use Jiminny\Console\Commands\Twilio\ReleaseNumbersCommand;
use Jiminny\Jobs\Activity\SyncActivity;
use Jiminny\Models\Activity;
use Jiminny\Models\InboxEmail;
use Jiminny\Services\RecallAI\Commands\ImportRegionMeetingCommand;
use Jiminny\Services\RecallAI\Commands\ScheduleBotCommand;
class Kernel extends ConsoleKernel
{
use ConfirmableTrait;
/**
* The Artisan commands provided by your application.
*
* @var string[]
*/
protected $commands = [
Commands\GeckoExport\GeckoExportTranscriptCommand::class,
Commands\GeckoExport\GeckoExportTranscriptionCommand::class,
Commands\GeckoExport\GeckoExportParticipantSpeechesCommand::class,
Commands\Activities\DeleteForCoachesCommand::class,
ReindexRecentActivitiesCommand::class,
Commands\Crm\BullhornPingCommand::class,
Commands\Crm\BullhornSessionCommand::class,
Commands\Crm\BullhornSearchCommand::class,
Commands\PlaybackThemes\TopicsConsolidateCommand::class,
Commands\PlaybackThemes\PlaybackThemesCopyCommand::class,
Commands\PlaybackThemes\AssignTopicsUsedBySingleTeamCommand::class,
Commands\PlaybackThemes\PlaybackThemesMigrateToVersionsCommand::class,
Commands\Vocabulary\VocabularyCopyCommand::class,
Commands\Transcription\TranscriptionPrintRaw::class,
Commands\Migrate\JiminnyMigratePopulateActivitySourceCommand::class,
Commands\EngagementStats\JiminnyEngagementStatsExplainCommand::class,
Commands\EngagementStatsRegenerateCommand::class,
Commands\Analytics\NumberOfActivitiesPerActivityTypeCommand::class,
Commands\Elasticsearch\MappingRunCommand::class,
Commands\Elasticsearch\MappingInstallCommand::class,
Commands\Elasticsearch\UpdateEsMappingSettingsCommand::class,
Commands\Analytics\TranscriptionWordMatchCommand::class,
Commands\JiminnyCacheClearCommand::class,
Commands\Transcription\TranscriptionSearchCommand::class,
RetryStuckTranscriptionsCommand::class,
RetryFailedTranscriptionsCommand::class,
Commands\JiminnyDebugCommand::class,
Commands\RunAiCallScoringForUntypedActivitiesCommand::class,
Commands\Calendars\SyncCalendars::class,
Commands\Calendars\SyncDeletedEvents::class,
Commands\Twilio\FetchMetrics::class,
Commands\Twilio\FetchEvents::class,
Commands\Twilio\FetchSummary::class,
Commands\Twilio\SyncZoneAccess::class,
Commands\DatabaseTableCount::class,
Commands\PurgeConferences::class,
Commands\ResetElasticSearch::class,
Commands\CreateDatabaseUsers::class,
Commands\Activities\NotifyNotLogged::class,
Commands\Crm\SyncTeamMetadata::class,
Commands\Crm\SyncProfileMetadata::class,
Commands\Crm\SyncContact::class,
Commands\Crm\SyncObjects::class,
Commands\Crm\SyncHubspotObjects::class,
Commands\Crm\SyncAccount::class,
Commands\Crm\ResetGovernorLimits::class,
Commands\Crm\ManageSyncStrategyCommand::class,
Commands\ImportRecording::class,
Commands\TrackImported::class,
Commands\Twilio\RecoverTwilioTracksCommand::class,
Commands\Crm\SetupLayouts::class,
Commands\Tracks\SyncTwilioTracks::class,
Commands\Activities\StatusCount::class,
Commands\Mailboxes\TextRelay\WatchMailboxEvents::class,
Commands\Mailboxes\InboxCreate::class,
Commands\Mailboxes\InboxSync::class,
Commands\Mailboxes\BatchCreate::class,
Commands\Mailboxes\BatchProcess::class,
Commands\Mailboxes\InboxPurge::class,
Commands\Mailboxes\BatchRetryFailed::class,
Commands\Mailboxes\BatchFailStalled::class,
Commands\Mailboxes\SkipListsRefresh::class,
Commands\Mailboxes\SkipListsDump::class,
Commands\Mailboxes\TextRelay\SyncMailbox::class,
Commands\Mailboxes\DeleteInboxEmailsCommand::class,
Commands\Mailboxes\DeleteEmailMessagesCommand::class,
DeleteEmailMessagesWithoutActivityCommand::class,
Commands\Tracks\CheckIntegrity::class,
Commands\Twilio\RemoteLifecycle::class,
Commands\Twilio\SyncNumbers::class,
Commands\Crm\SetupActivityTypeForFollowUp::class,
Commands\Activities\CheckPlayable::class,
Commands\Activities\ActivityDeleteCommand::class,
Commands\Activities\Copy::class,
Commands\Activities\ActivityHardDeleteCommand::class,
Commands\Reports\Team::class,
Commands\Reports\GenerateMarketingReport::class,
Commands\Reports\AutomatedReportsCommand::class,
Commands\Reports\AutomatedReportsSendCommand::class,
Commands\MuteOrganizerChannel::class,
Commands\Tracks\DeleteTracks::class,
Commands\Tracks\RetryDownload::class,
Commands\Tracks\RetryFailedDownloads::class,
Commands\Twilio\SyncAddresses::class,
Commands\Activities\UpdateElasticSearch::class,
Commands\MakeSlackLiveCoachingChatNotesOn::class,
Commands\Activities\PreMeetingNotification::class,
ScheduleBotCommand::class,
ImportRegionMeetingCommand::class,
Commands\Activities\MonitorMeetingCountCommand::class,
Commands\Activities\MonitorMeetingStartCommand::class,
Commands\Activities\MonitorMeetingEndCommand::class,
Commands\SyncActivity::class,
Commands\PhpApm::class,
Commands\Crm\SyncOpportunity::class,
Commands\Crm\SyncLead::class,
Commands\Users\SyncLicenceDataToSalesforce::class,
Commands\Crm\UpdateOpportunitySpecifications::class,
Commands\Users\SyncToIntercom::class,
Commands\Users\SyncToUserPilot::class,
Commands\Teams\SyncToPlanhat::class,
Commands\Twilio\SetZoneAccess::class,
Commands\Users\CreateDefaultSavedSearchesCommand::class,
Commands\Crm\SendNotLogged::class,
Commands\Teams\DeactivateTeamCommand::class,
Commands\Crm\SyncFieldMetadata::class,
Commands\Postmark\SyncEmailTemplatesCommand::class,
Commands\PlaybackThemes\ImportTriggersFromTranslatedCsvCommand::class,
Commands\Activities\PreMeetingReminder::class,
Commands\Activities\CustomerActivitiesExport::class,
Commands\Users\RefreshAccessToken::class,
Commands\Calendars\SetupCalendarSubscription::class,
Commands\Activities\InviteMeetingBot::class,
Commands\Activities\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,
Commands\Crm\MigrateProvider::class,
Commands\Activities\MigrateLocationFromCalendarEventToActivities::class,
Commands\HelperTruncateCoachingTables::class,
Commands\FixCrossTenantIssues::class,
Commands\Activities\CloudCall\SetupIntegration::class,
Commands\Activities\CloudTalk\FixTimeZone::class,
Commands\Activities\Orum\SetupIntegration::class,
Commands\Activities\JustCall\SetupIntegration::class,
Commands\Activities\RingCentral\AddInboundPromptSupport::class,
Commands\Dialers\Dialpad\SubscribeToWebhooks::class,
Commands\RecalculateDealRisksCommand::class,
SendDealsUpdateCommand::class,
Commands\Activities\SetProviderCapabilitiesField::class,
Commands\Teams\InitiallySetNotificationProviderTeamsTable::class,
Commands\Crm\AddLayoutEntities::class,
Commands\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,
Commands\JiminnyTokenInfoCommand::class,
Commands\JiminnySetEncryptedTokenManagerModeCommand::class,
Commands\EncryptTokensCommand::class,
Commands\Dialers\Aircall\CheckAndRenewWebhooks::class,
Commands\Migrate\MigrateTeamRegionCommand::class,
Commands\ManageScimForTeam::class,
Commands\Dialers\SyncUsersCommand::class,
Commands\WhichWorkerIsWorkingOnWhichJob::class,
Commands\GroupSetDefaultLanguageCommand::class,
Commands\Dev\AddRateLimitCommand::class,
Commands\Dev\ImportCallsCommand::class,
Commands\DealInsights\BuildDealInsightsLayoutCommand::class,
Commands\DealInsights\DeleteAskJiminnyDealPrompts::class,
Commands\Crm\MatchCrmObjectsCommand::class,
Commands\Activities\SetupIntegration\EightByEight::class,
Commands\Calendars\RemoveCalendarEventActivitiesCommand::class,
Commands\Activities\Migrator\MigrateFromGongCommand::class,
Commands\Activities\Migrator\MigrateFromChorusCommand::class,
Commands\Activities\Migrator\MigrateFromLeexiCommand::class,
Commands\Activities\Migrator\MigrateFromAvomaCommand::class,
Commands\Activities\Migrator\MigrateFromClariCommand::class,
Commands\Activities\SetupIntegration\ConnectAndSell::class,
Commands\Activities\SetupIntegration\CloudTalk::class,
Commands\Users\CreateConferenceSlug::class,
Commands\Elasticsearch\AsyncUpdateEsEntities::class,
Commands\Elasticsearch\ResetAsyncElasticSearchCommand::class,
Commands\Playlists\PlaylistSharesUpdateCommand::class,
Commands\Crm\AutologDelayedCommand::class,
Commands\Activities\HydrateDefaultActivityTypeCommand::class,
Commands\Crm\CheckActivityLoggableCommand::class,
Commands\Activities\MonitorDialerActivitiesCommand::class,
Commands\Activities\SetupIntegration\Xant::class,
Commands\ImportUsersFromCsvFile::class,
Commands\DevPostmanCommand::class,
Commands\Playlists\FixTreeStructureCommand::class,
Commands\Zoom\ResolvePmiLinksCommand::class,
Commands\MarkBranchForEnvironmentPipelineCommand::class,
Commands\Activities\ProbeMediaSegmentsCommand::class,
Commands\Activities\SetupIntegration\AmazonConnect::class,
Commands\Playbooks\ChangePlaybookActivityFieldCommand::class,
MediaPipelineRestartCommand::class,
Commands\Dev\FixHubSpotTokens::class,
Commands\Dev\MonitorSocialAccountsState::class,
Commands\Activities\SetupIntegration\Vonage::class,
Commands\Activities\SetupIntegration\TwilioFlex::class,
Commands\Activities\SetupIntegration\TwilioFlexDirect::class,
Commands\Activities\SetupIntegration\TwilioFlexSetDialerAuthCredentialsCommand::class,
Commands\Activities\SetupIntegration\TwilioSetS3RecordingCredentialsCommand::class,
SendActionItemsCommand::class,
Commands\Users\ChangeEmail::class,
Commands\Calendars\ListUserGoogleCalendars::class,
Commands\Activities\JustCall\SyncPlaybackLinkToCrmCommand::class,
Commands\Activities\HydrateCallWithCrmDataCommand::class,
Commands\Activities\UpdateActivityElasticSearchDocumentCommand::class,
Commands\Activities\SetupIntegration\Talkdesk::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookListCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookShow::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,
Commands\Activities\SetupIntegration\TwilioVideo::class,
Commands\Crm\SetupCloseCrm::class,
Commands\Crm\SetupCopperCrm::class,
Commands\Crm\FullSyncOpportunityCommand::class,
Commands\Crm\IntegrationApp\CrmEntitiesFullSyncCommand::class,
Commands\Crm\IntegrationApp\ValidateConnectionCommand::class,
Commands\Activities\Workflow\RefreshCrmData::class,
Commands\Activities\Migrator\AnalyseGongCalls::class,
Commands\Users\AddVoiceRoleToRecorderCommand::class,
Commands\Activities\SyncMissingCallDispositions::class,
Commands\Calendars\RemoveFutureCalendarEvents::class,
FlushRolesPermissionsCache::class,
Commands\Activities\SetupIntegration\FiveNine::class,
CalendarEventDeleteCancelledCommand::class,
CalendarEventDeletePastCommand::class,
ReportActivityProcessingTimeToDatadogCommand::class,
ReportProcessingStatesToDatadogCommand::class,
ReleaseNumbersCommand::class,
BackfillOpportunityUserFromAccountCommand::class,
RemoveExpiredRoleChangeEventsCommand::class,
RemoveExpiredNudgesCommand::class,
SendNudgeExpirationWarningsCommand::class,
AutologOldActivitiesCommand::class,
RemoveUnusedParticipantSpeechesCommand::class,
DeleteActivitiesForChurnedTeamsCommand::class,
HardDeleteActivitiesForChurnedTeamsCommand::class,
TeamDeleteCommand::class,
TeamsDeleteDeactivatedCommand::class,
UpdateTeamsCommand::class,
OverrideTranscriptionLocaleCommand::class,
SyncSlackUserCommand::class,
PurgeSoftDeletedOpportunitiesCommand::class,
PurgeSyncBatchesCommand::class,
ProphetAnalyzeClosedDealsCommand::class,
DeleteChurnedSubAccounts::class,
Commands\ProphetAi\DumpContext::class,
DeletePredefinedSubAccounts::class,
DeleteActivitiesForRetentionTeamsCommand::class,
HardDeleteActivitiesTeamsCommand::class,
TeamsDeleteRetentionCommand::class,
TeamSettingPutCommand::class,
StopHangingLivestreamsCommand::class,
FixActivitiesOpportunity::class,
Commands\Activities\SetupIntegration\Salesforce\SetupSalesforceIntegrationCommand::class,
UpdateOldTranscriptionModelLocalesCommand::class,
Commands\Dev\FixMissMatchedCrmActivitiesCommand::class,
DownloadMissingTrackCommand::class,
ActivitiesMatchCrmCommand::class,
DeleteEmailDocumentsCommand::class,
DeleteOldTranscriptionsCommand::class,
DeleteS3LeftoversCommand::class,
RemoveDeleteMarkersCommand::class,
SyncTeamUsersCommand::class,
ReassignTranscriptCommand::class,
DiarizeViaAiParticipantIdentificationCommand::class,
RestoreActivityTypeCommand::class,
DeleteOldAiCrmNotesCommand::class,
DeleteReportCommand::class,
AutomatedReportsRetentionPolicyCommand::class,
SyncHubspotActiveDeals::class,
GenerateInternalWebhookToken::class,
IssueMcpTokenCommand::class,
RestoreActivityCrmProviderIdCommand::class,
CleanupActivityTracksCommand::class,
DeleteUnusedTracksCommand::class,
RestoreTracksCommand::class,
HubspotWebhookServiceCommand::class,
ProcessMergedObjectsCommand::class,
HubspotJournalPollingCommand::class,
SetupJournalDealWebhookSubscriptionsCommand::class,
ListJournalWebhookSubscriptionsCommand::class,
RemoveGhostParticipantsCommand::class,
AutodetectAiActivityTypeCommand::class,
Commands\Crm\LogActivitiesCommand::class,
Commands\Crm\MatchOpportunityActivitiesCommand::class,
PurgeDeletedOpportunitiesCommand::class,
CleanDuplicateFieldDataCommand::class,
RetryProspectSummaryCommand::class,
ProcessHubspotObjectsSyncBatches::class,
SyncOpportunitiesMissingFieldDataCommand::class,
RestoreDealAssociationsCommand::class,
Commands\Crm\TestPipedriveOfficialSdkCommand::class,
];
private Schedule $schedule;
private string $output;
protected function schedule(Schedule $schedule): void
{
$this->schedule = $schedule;
$this->output = config('jiminny.scheduler_log');
$schedule->useCache('redis');
$currentMinute = (int) date('i');
$currentDay = (int) date('w');
$this->scheduleEveryMinute();
$this->scheduleEveryTwoMinutes();
$this->scheduleEveryFiveMinutes();
$this->scheduleEveryTenMinutes();
$this->scheduleEveryFifteenMinutes();
$this->scheduleEveryThirtyMinutes();
$this->scheduleHourly();
$this->scheduleDaily();
$this->scheduleWeekly($currentDay);
$this->scheduleSpecificTimes();
$this->scheduleDynamic($currentMinute);
}
protected function scheduleEveryMinute(): void
{
$this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();
$this->scheduleCommand('dialers:monitor-activities')->everyMinute();
$this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();
$this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();
$this->schedule->command('mailbox:batch:process', ['--max-batches=15'])
->everyMinute()
->sendOutputTo($this->output);
}
protected function scheduleEveryTwoMinutes(): void
{
$this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();
}
protected function scheduleEveryFiveMinutes(): void
{
$this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();
// Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)
$this->scheduleCommand('crm:sync-hubspot-objects', [], 4)
->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');
$this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();
$this->schedule->command('mailbox:batch:create')
->cron('2-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output);
$this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])
->cron('3-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output)
->runInBackground();
$this->schedule->command('hubspot:journal-poll', ['--start'])
->everyFiveMinutes()
->sendOutputTo($this->output)
->runInBackground();
}
protected function scheduleEveryTenMinutes(): void
{
$this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();
$this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('crm:reset-governor')->everyTenMinutes();
}
protected function scheduleEveryFifteenMinutes(): void
{
$this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();
$this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');
$this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
],
])->everyFifteenMinutes();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->cron('7,22,37,52 * * * *');
}
protected function scheduleEveryThirtyMinutes(): void
{
$this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');
$this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();
$this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)
->between('02:58', '05:29')
->everyThirtyMinutes()
->runInBackground();
$this->scheduleActivitiesHardDelete();
}
protected function scheduleHourly(): void
{
$this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();
$this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');
$this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');
$this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');
$this->scheduleCommand('automated-reports:send')->hourly();
$this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);
$this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);
}
protected function scheduleDaily(): void
{
$this->scheduleCommand('teams:sync-planhat')->daily();
$this->scheduleCommand('twilio:sync-addresses')->daily();
$this->scheduleCommand('twilio:sync-zone-access')->daily();
$this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();
$this->scheduleCommand('users:sync-licence-data')->daily();
$this->scheduleCommand('users:sync-intercom-data')->daily();
$this->scheduleCommand('nudges:send-expiration-warnings')->daily();
$this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();
}
protected function scheduleWeekly(int $currentDay): void
{
if ($currentDay === 0) {
$this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);
}
if ($currentDay === 6) {
$this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_AMAZON_CONNECT,
'--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->saturdays()->at('01:00')->runInBackground();
$this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)
->saturdays()->at('01:07')->runInBackground();
$this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)
->saturdays()->at('05:08')->runInBackground();
$this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')
->weeklyOn(6, '6:00');
$this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')
->weeklyOn(6, '7:00');
}
}
protected function scheduleSpecificTimes(): void
{
$this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_DISCARDED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:20')->runInBackground();
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_PROCESSED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:30')->runInBackground();
$this->scheduleCommand('automated-reports')->dailyAt('01:00');
$this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');
$this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');
$this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');
$this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');
$this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');
$this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('03:05');
$this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');
$this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');
$this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');
$this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');
$this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');
if (! $this->app->environment('production')) {
$this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)
->dailyAt('04:02')->runInBackground();
}
$this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
],
])->dailyAt('05:05');
if (! $this->app->environment('qa')) {
$this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');
}
$this->scheduleCommand('activity:sync-dispositions', [
Activity::PROVIDER_HUBSPOT,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('07:05');
}
protected function scheduleDynamic(int $currentMinute): void
{
$this->scheduleHourlyFallbackActivitySyncs($currentMinute);
$this->scheduleBullhornHeartbeat($currentMinute);
}
private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void
{
if ($offsetMinute === 0) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);
} elseif ($offsetMinute === 1) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);
} elseif ($offsetMinute === 2) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);
}
}
private function scheduleBullhornHeartbeat(int $currentMinute): void
{
$bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);
if ($bhHeartbeatInterval > 0) {
$minutes = max((int) floor($bhHeartbeatInterval / 60), 1);
if ($currentMinute % $minutes === 0) {
$bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);
if ($minutes > 30) {
$bhEvent->hourly();
} else {
$bhEvent->cron(sprintf('*/%d * * * *', $minutes));
}
}
}
}
private function scheduleActivitiesHardDelete(): void
{
if (config(key: 'jiminny.deploy_region') === 'eu') {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 1000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
} elseif ($this->app->environment('production')) {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 2000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
}
}
private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void
{
$this->scheduleCommand('activity:sync', [
$provider,
'--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->hourlyAt($offsetMinute);
}
/**
* Register the Closure based commands for the application.
*/
protected function commands(): void
{
require_once base_path('routes/console.php');
}
private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event
{
return $this->schedule
->command($name, $options)
->withoutOverlapping($expiresAt)
->onOneServer()
->sendOutputTo($this->output)
;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50069
|
1775
|
42
|
2026-05-18T07:14:12.469707+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088452469_m1.jpg...
|
PhpStorm
|
faVsco.js – Kernel.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\DTO\Invitation;
use Jiminny\DTO\UserEmail;
use Jiminny\Http\Requests\Settings\Teams\CreateInvitationRequest;
use Jiminny\Http\Requests\Settings\Teams\CreateTeamRequest;
use Jiminny\Http\Requests\Settings\Teams\EditTeamRequest;
use Jiminny\Models\Group;
use Jiminny\Models\Invitation;
use Jiminny\Models\Role;
use Jiminny\Models\Team;
use Jiminny\Models\User;
class UserInvitationDTO
{
use UserEmail;
public string $email;
public ?string $secondaryEmail;
public ?int $groupId;
public int $teamId;
public bool $crmRequired;
public array $roleIds;
public bool $isOwner;
public ?User $currentUser = null;
/**
* @param array{
* email: string,
* secondaryEmail: string|null,
* groupId: int|null,
* teamId: int|string,
* crmRequired: bool,
* roleIds: int[],
* isOwner: bool,
* user?: User
* } $attributes
*/
private function __construct(array $attributes)
{
$this->email = mb_strtolower($attributes['email']);
$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);
$this->groupId = $attributes['groupId'];
$this->teamId = (int) $attributes['teamId'];
$this->crmRequired = (bool) $attributes['crmRequired'];
$this->roleIds = $attributes['roleIds'];
$this->isOwner = $attributes['isOwner'];
$this->currentUser = $attributes['user'] ?? null;
}
public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self
{
$roleIds = Role::whereIn('name', [
User::ROLE_ADMIN,
User::ROLE_RECORDER,
])->pluck('id')->toArray();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => $request->getOwnerEmail(),
'secondaryEmail' => null,
'groupId' => null,
'teamId' => $team->getId(),
'crmRequired' => true,
'roleIds' => $roleIds,
'user' => $currentUser,
'isOwner' => true,
]);
}
public static function fromRequest(CreateInvitationRequest $request): self
{
$data = $request->validated();
$groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;
$teamId = Team::uuid($data['team_id'])->getId();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => mb_strtolower($data['email']),
'secondaryEmail' => $data['secondary_email'] ?? null,
'groupId' => $groupId,
'teamId' => $teamId,
'crmRequired' => $data['crm_required'],
'roleIds' => $data['roles'],
'user' => $currentUser,
'isOwner' => false,
]);
}
public static function fromInvitation(Invitation $invitation, User $currentUser): self
{
$roles = $invitation->roles()->get();
$isOwner = $invitation->isOwner();
return new self([
'email' => $invitation->email,
'secondaryEmail' => $invitation->getSecondaryEmail(),
'groupId' => $invitation->group_id,
'teamId' => $invitation->team_id,
'crmRequired' => $invitation->crm_required,
'roleIds' => $roles->pluck('id')->toArray(),
'user' => $currentUser,
'isOwner' => $isOwner,
]);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
17
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Console;
use Illuminate\Console\ConfirmableTrait;
use Illuminate\Console\Scheduling\Event;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Jiminny\Component\Acl\RemoveExpiredRoleChangeEventsCommand;
use Jiminny\Component\ActionItems\Commands\SendActionItemsCommand;
use Jiminny\Component\AiActivityType\Commands\AutodetectAiActivityTypeCommand;
use Jiminny\Component\AskJiminnyAi\Commands\ProphetAnalyzeClosedDealsCommand;
use Jiminny\Component\Cache\Constants;
use Jiminny\Component\DealInsights\Commands\SendDealsUpdateCommand;
use Jiminny\Component\MediaPipeline\Command\MediaPipelineRestartCommand;
use Jiminny\Component\MediaPipeline\Command\ReportActivityProcessingTimeToDatadogCommand;
use Jiminny\Component\MediaPipeline\Command\ReportProcessingStatesToDatadogCommand;
use Jiminny\Component\Transcription\Commands\OverrideTranscriptionLocaleCommand;
use Jiminny\Component\Transcription\Commands\RetryFailedTranscriptionsCommand;
use Jiminny\Component\Transcription\Commands\RetryStuckTranscriptionsCommand;
use Jiminny\Console\Commands\Activities\ActivitiesMatchCrmCommand;
use Jiminny\Console\Commands\Activities\AutologOldActivitiesCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForRetentionTeamsCommand;
use Jiminny\Console\Commands\Activities\DownloadMissingTrackCommand;
use Jiminny\Console\Commands\Activities\FixActivitiesOpportunity;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesTeamsCommand;
use Jiminny\Console\Commands\Activities\ReassignTranscriptCommand;
use Jiminny\Console\Commands\Activities\ReindexRecentActivitiesCommand;
use Jiminny\Console\Commands\Activities\RetryProspectSummaryCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeleteCancelledCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeletePastCommand;
use Jiminny\Console\Commands\Crm\BackfillOpportunityUserFromAccountCommand;
use Jiminny\Console\Commands\Crm\CleanDuplicateFieldDataCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ProcessMergedObjectsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\RestoreDealAssociationsCommand;
use Jiminny\Console\Commands\Crm\ProcessHubspotObjectsSyncBatches;
use Jiminny\Console\Commands\Crm\PurgeDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ListJournalWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\SetupJournalDealWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\SyncHubspotActiveDeals;
use Jiminny\Console\Commands\Crm\SyncOpportunitiesMissingFieldDataCommand;
use Jiminny\Console\Commands\DeleteOldAiCrmNotesCommand;
use Jiminny\Console\Commands\DeleteS3LeftoversCommand;
use Jiminny\Console\Commands\DiarizeViaAiParticipantIdentificationCommand;
use Jiminny\Console\Commands\Elasticsearch\DeleteEmailDocumentsCommand;
use Jiminny\Console\Commands\Elasticsearch\RemoveGhostParticipantsCommand;
use Jiminny\Console\Commands\FlushRolesPermissionsCache;
use Jiminny\Console\Commands\GenerateInternalWebhookToken;
use Jiminny\Console\Commands\IssueMcpTokenCommand;
use Jiminny\Console\Commands\HubspotJournalPollingCommand;
use Jiminny\Console\Commands\HubspotWebhookServiceCommand;
use Jiminny\Console\Commands\Livestream\StopHangingLivestreamsCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteEmailMessagesWithoutActivityCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteInboxEmailsCommand;
use Jiminny\Console\Commands\PurgeSoftDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\PurgeSyncBatchesCommand;
use Jiminny\Console\Commands\RemoveDeleteMarkersCommand;
use Jiminny\Console\Commands\RemoveExpiredNudgesCommand;
use Jiminny\Console\Commands\RemoveUnusedParticipantSpeechesCommand;
use Jiminny\Console\Commands\Reports\AutomatedReportsRetentionPolicyCommand;
use Jiminny\Console\Commands\Reports\DeleteReportCommand;
use Jiminny\Console\Commands\RestoreActivityCrmProviderIdCommand;
use Jiminny\Console\Commands\RestoreActivityTypeCommand;
use Jiminny\Console\Commands\SendNudgeExpirationWarningsCommand;
use Jiminny\Console\Commands\Slack\SyncSlackUserCommand;
use Jiminny\Console\Commands\Teams\SyncTeamUsersCommand;
use Jiminny\Console\Commands\Teams\TeamDeleteCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteDeactivatedCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteRetentionCommand;
use Jiminny\Console\Commands\Teams\TeamSettingPutCommand;
use Jiminny\Console\Commands\Teams\UpdateTeamsCommand;
use Jiminny\Console\Commands\Tracks\CleanupActivityTracksCommand;
use Jiminny\Console\Commands\Tracks\DeleteUnusedTracksCommand;
use Jiminny\Console\Commands\Tracks\RestoreTracksCommand;
use Jiminny\Console\Commands\Transcription\DeleteOldTranscriptionsCommand;
use Jiminny\Console\Commands\Transcription\UpdateOldTranscriptionModelLocalesCommand;
use Jiminny\Console\Commands\Twilio\DeleteChurnedSubAccounts;
use Jiminny\Console\Commands\Twilio\DeletePredefinedSubAccounts;
use Jiminny\Console\Commands\Twilio\ReleaseNumbersCommand;
use Jiminny\Jobs\Activity\SyncActivity;
use Jiminny\Models\Activity;
use Jiminny\Models\InboxEmail;
use Jiminny\Services\RecallAI\Commands\ImportRegionMeetingCommand;
use Jiminny\Services\RecallAI\Commands\ScheduleBotCommand;
class Kernel extends ConsoleKernel
{
use ConfirmableTrait;
/**
* The Artisan commands provided by your application.
*
* @var string[]
*/
protected $commands = [
Commands\GeckoExport\GeckoExportTranscriptCommand::class,
Commands\GeckoExport\GeckoExportTranscriptionCommand::class,
Commands\GeckoExport\GeckoExportParticipantSpeechesCommand::class,
Commands\Activities\DeleteForCoachesCommand::class,
ReindexRecentActivitiesCommand::class,
Commands\Crm\BullhornPingCommand::class,
Commands\Crm\BullhornSessionCommand::class,
Commands\Crm\BullhornSearchCommand::class,
Commands\PlaybackThemes\TopicsConsolidateCommand::class,
Commands\PlaybackThemes\PlaybackThemesCopyCommand::class,
Commands\PlaybackThemes\AssignTopicsUsedBySingleTeamCommand::class,
Commands\PlaybackThemes\PlaybackThemesMigrateToVersionsCommand::class,
Commands\Vocabulary\VocabularyCopyCommand::class,
Commands\Transcription\TranscriptionPrintRaw::class,
Commands\Migrate\JiminnyMigratePopulateActivitySourceCommand::class,
Commands\EngagementStats\JiminnyEngagementStatsExplainCommand::class,
Commands\EngagementStatsRegenerateCommand::class,
Commands\Analytics\NumberOfActivitiesPerActivityTypeCommand::class,
Commands\Elasticsearch\MappingRunCommand::class,
Commands\Elasticsearch\MappingInstallCommand::class,
Commands\Elasticsearch\UpdateEsMappingSettingsCommand::class,
Commands\Analytics\TranscriptionWordMatchCommand::class,
Commands\JiminnyCacheClearCommand::class,
Commands\Transcription\TranscriptionSearchCommand::class,
RetryStuckTranscriptionsCommand::class,
RetryFailedTranscriptionsCommand::class,
Commands\JiminnyDebugCommand::class,
Commands\RunAiCallScoringForUntypedActivitiesCommand::class,
Commands\Calendars\SyncCalendars::class,
Commands\Calendars\SyncDeletedEvents::class,
Commands\Twilio\FetchMetrics::class,
Commands\Twilio\FetchEvents::class,
Commands\Twilio\FetchSummary::class,
Commands\Twilio\SyncZoneAccess::class,
Commands\DatabaseTableCount::class,
Commands\PurgeConferences::class,
Commands\ResetElasticSearch::class,
Commands\CreateDatabaseUsers::class,
Commands\Activities\NotifyNotLogged::class,
Commands\Crm\SyncTeamMetadata::class,
Commands\Crm\SyncProfileMetadata::class,
Commands\Crm\SyncContact::class,
Commands\Crm\SyncObjects::class,
Commands\Crm\SyncHubspotObjects::class,
Commands\Crm\SyncAccount::class,
Commands\Crm\ResetGovernorLimits::class,
Commands\Crm\ManageSyncStrategyCommand::class,
Commands\ImportRecording::class,
Commands\TrackImported::class,
Commands\Twilio\RecoverTwilioTracksCommand::class,
Commands\Crm\SetupLayouts::class,
Commands\Tracks\SyncTwilioTracks::class,
Commands\Activities\StatusCount::class,
Commands\Mailboxes\TextRelay\WatchMailboxEvents::class,
Commands\Mailboxes\InboxCreate::class,
Commands\Mailboxes\InboxSync::class,
Commands\Mailboxes\BatchCreate::class,
Commands\Mailboxes\BatchProcess::class,
Commands\Mailboxes\InboxPurge::class,
Commands\Mailboxes\BatchRetryFailed::class,
Commands\Mailboxes\BatchFailStalled::class,
Commands\Mailboxes\SkipListsRefresh::class,
Commands\Mailboxes\SkipListsDump::class,
Commands\Mailboxes\TextRelay\SyncMailbox::class,
Commands\Mailboxes\DeleteInboxEmailsCommand::class,
Commands\Mailboxes\DeleteEmailMessagesCommand::class,
DeleteEmailMessagesWithoutActivityCommand::class,
Commands\Tracks\CheckIntegrity::class,
Commands\Twilio\RemoteLifecycle::class,
Commands\Twilio\SyncNumbers::class,
Commands\Crm\SetupActivityTypeForFollowUp::class,
Commands\Activities\CheckPlayable::class,
Commands\Activities\ActivityDeleteCommand::class,
Commands\Activities\Copy::class,
Commands\Activities\ActivityHardDeleteCommand::class,
Commands\Reports\Team::class,
Commands\Reports\GenerateMarketingReport::class,
Commands\Reports\AutomatedReportsCommand::class,
Commands\Reports\AutomatedReportsSendCommand::class,
Commands\MuteOrganizerChannel::class,
Commands\Tracks\DeleteTracks::class,
Commands\Tracks\RetryDownload::class,
Commands\Tracks\RetryFailedDownloads::class,
Commands\Twilio\SyncAddresses::class,
Commands\Activities\UpdateElasticSearch::class,
Commands\MakeSlackLiveCoachingChatNotesOn::class,
Commands\Activities\PreMeetingNotification::class,
ScheduleBotCommand::class,
ImportRegionMeetingCommand::class,
Commands\Activities\MonitorMeetingCountCommand::class,
Commands\Activities\MonitorMeetingStartCommand::class,
Commands\Activities\MonitorMeetingEndCommand::class,
Commands\SyncActivity::class,
Commands\PhpApm::class,
Commands\Crm\SyncOpportunity::class,
Commands\Crm\SyncLead::class,
Commands\Users\SyncLicenceDataToSalesforce::class,
Commands\Crm\UpdateOpportunitySpecifications::class,
Commands\Users\SyncToIntercom::class,
Commands\Users\SyncToUserPilot::class,
Commands\Teams\SyncToPlanhat::class,
Commands\Twilio\SetZoneAccess::class,
Commands\Users\CreateDefaultSavedSearchesCommand::class,
Commands\Crm\SendNotLogged::class,
Commands\Teams\DeactivateTeamCommand::class,
Commands\Crm\SyncFieldMetadata::class,
Commands\Postmark\SyncEmailTemplatesCommand::class,
Commands\PlaybackThemes\ImportTriggersFromTranslatedCsvCommand::class,
Commands\Activities\PreMeetingReminder::class,
Commands\Activities\CustomerActivitiesExport::class,
Commands\Users\RefreshAccessToken::class,
Commands\Calendars\SetupCalendarSubscription::class,
Commands\Activities\InviteMeetingBot::class,
Commands\Activities\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,
Commands\Crm\MigrateProvider::class,
Commands\Activities\MigrateLocationFromCalendarEventToActivities::class,
Commands\HelperTruncateCoachingTables::class,
Commands\FixCrossTenantIssues::class,
Commands\Activities\CloudCall\SetupIntegration::class,
Commands\Activities\CloudTalk\FixTimeZone::class,
Commands\Activities\Orum\SetupIntegration::class,
Commands\Activities\JustCall\SetupIntegration::class,
Commands\Activities\RingCentral\AddInboundPromptSupport::class,
Commands\Dialers\Dialpad\SubscribeToWebhooks::class,
Commands\RecalculateDealRisksCommand::class,
SendDealsUpdateCommand::class,
Commands\Activities\SetProviderCapabilitiesField::class,
Commands\Teams\InitiallySetNotificationProviderTeamsTable::class,
Commands\Crm\AddLayoutEntities::class,
Commands\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,
Commands\JiminnyTokenInfoCommand::class,
Commands\JiminnySetEncryptedTokenManagerModeCommand::class,
Commands\EncryptTokensCommand::class,
Commands\Dialers\Aircall\CheckAndRenewWebhooks::class,
Commands\Migrate\MigrateTeamRegionCommand::class,
Commands\ManageScimForTeam::class,
Commands\Dialers\SyncUsersCommand::class,
Commands\WhichWorkerIsWorkingOnWhichJob::class,
Commands\GroupSetDefaultLanguageCommand::class,
Commands\Dev\AddRateLimitCommand::class,
Commands\Dev\ImportCallsCommand::class,
Commands\DealInsights\BuildDealInsightsLayoutCommand::class,
Commands\DealInsights\DeleteAskJiminnyDealPrompts::class,
Commands\Crm\MatchCrmObjectsCommand::class,
Commands\Activities\SetupIntegration\EightByEight::class,
Commands\Calendars\RemoveCalendarEventActivitiesCommand::class,
Commands\Activities\Migrator\MigrateFromGongCommand::class,
Commands\Activities\Migrator\MigrateFromChorusCommand::class,
Commands\Activities\Migrator\MigrateFromLeexiCommand::class,
Commands\Activities\Migrator\MigrateFromAvomaCommand::class,
Commands\Activities\Migrator\MigrateFromClariCommand::class,
Commands\Activities\SetupIntegration\ConnectAndSell::class,
Commands\Activities\SetupIntegration\CloudTalk::class,
Commands\Users\CreateConferenceSlug::class,
Commands\Elasticsearch\AsyncUpdateEsEntities::class,
Commands\Elasticsearch\ResetAsyncElasticSearchCommand::class,
Commands\Playlists\PlaylistSharesUpdateCommand::class,
Commands\Crm\AutologDelayedCommand::class,
Commands\Activities\HydrateDefaultActivityTypeCommand::class,
Commands\Crm\CheckActivityLoggableCommand::class,
Commands\Activities\MonitorDialerActivitiesCommand::class,
Commands\Activities\SetupIntegration\Xant::class,
Commands\ImportUsersFromCsvFile::class,
Commands\DevPostmanCommand::class,
Commands\Playlists\FixTreeStructureCommand::class,
Commands\Zoom\ResolvePmiLinksCommand::class,
Commands\MarkBranchForEnvironmentPipelineCommand::class,
Commands\Activities\ProbeMediaSegmentsCommand::class,
Commands\Activities\SetupIntegration\AmazonConnect::class,
Commands\Playbooks\ChangePlaybookActivityFieldCommand::class,
MediaPipelineRestartCommand::class,
Commands\Dev\FixHubSpotTokens::class,
Commands\Dev\MonitorSocialAccountsState::class,
Commands\Activities\SetupIntegration\Vonage::class,
Commands\Activities\SetupIntegration\TwilioFlex::class,
Commands\Activities\SetupIntegration\TwilioFlexDirect::class,
Commands\Activities\SetupIntegration\TwilioFlexSetDialerAuthCredentialsCommand::class,
Commands\Activities\SetupIntegration\TwilioSetS3RecordingCredentialsCommand::class,
SendActionItemsCommand::class,
Commands\Users\ChangeEmail::class,
Commands\Calendars\ListUserGoogleCalendars::class,
Commands\Activities\JustCall\SyncPlaybackLinkToCrmCommand::class,
Commands\Activities\HydrateCallWithCrmDataCommand::class,
Commands\Activities\UpdateActivityElasticSearchDocumentCommand::class,
Commands\Activities\SetupIntegration\Talkdesk::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookListCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookShow::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,
Commands\Activities\SetupIntegration\TwilioVideo::class,
Commands\Crm\SetupCloseCrm::class,
Commands\Crm\SetupCopperCrm::class,
Commands\Crm\FullSyncOpportunityCommand::class,
Commands\Crm\IntegrationApp\CrmEntitiesFullSyncCommand::class,
Commands\Crm\IntegrationApp\ValidateConnectionCommand::class,
Commands\Activities\Workflow\RefreshCrmData::class,
Commands\Activities\Migrator\AnalyseGongCalls::class,
Commands\Users\AddVoiceRoleToRecorderCommand::class,
Commands\Activities\SyncMissingCallDispositions::class,
Commands\Calendars\RemoveFutureCalendarEvents::class,
FlushRolesPermissionsCache::class,
Commands\Activities\SetupIntegration\FiveNine::class,
CalendarEventDeleteCancelledCommand::class,
CalendarEventDeletePastCommand::class,
ReportActivityProcessingTimeToDatadogCommand::class,
ReportProcessingStatesToDatadogCommand::class,
ReleaseNumbersCommand::class,
BackfillOpportunityUserFromAccountCommand::class,
RemoveExpiredRoleChangeEventsCommand::class,
RemoveExpiredNudgesCommand::class,
SendNudgeExpirationWarningsCommand::class,
AutologOldActivitiesCommand::class,
RemoveUnusedParticipantSpeechesCommand::class,
DeleteActivitiesForChurnedTeamsCommand::class,
HardDeleteActivitiesForChurnedTeamsCommand::class,
TeamDeleteCommand::class,
TeamsDeleteDeactivatedCommand::class,
UpdateTeamsCommand::class,
OverrideTranscriptionLocaleCommand::class,
SyncSlackUserCommand::class,
PurgeSoftDeletedOpportunitiesCommand::class,
PurgeSyncBatchesCommand::class,
ProphetAnalyzeClosedDealsCommand::class,
DeleteChurnedSubAccounts::class,
Commands\ProphetAi\DumpContext::class,
DeletePredefinedSubAccounts::class,
DeleteActivitiesForRetentionTeamsCommand::class,
HardDeleteActivitiesTeamsCommand::class,
TeamsDeleteRetentionCommand::class,
TeamSettingPutCommand::class,
StopHangingLivestreamsCommand::class,
FixActivitiesOpportunity::class,
Commands\Activities\SetupIntegration\Salesforce\SetupSalesforceIntegrationCommand::class,
UpdateOldTranscriptionModelLocalesCommand::class,
Commands\Dev\FixMissMatchedCrmActivitiesCommand::class,
DownloadMissingTrackCommand::class,
ActivitiesMatchCrmCommand::class,
DeleteEmailDocumentsCommand::class,
DeleteOldTranscriptionsCommand::class,
DeleteS3LeftoversCommand::class,
RemoveDeleteMarkersCommand::class,
SyncTeamUsersCommand::class,
ReassignTranscriptCommand::class,
DiarizeViaAiParticipantIdentificationCommand::class,
RestoreActivityTypeCommand::class,
DeleteOldAiCrmNotesCommand::class,
DeleteReportCommand::class,
AutomatedReportsRetentionPolicyCommand::class,
SyncHubspotActiveDeals::class,
GenerateInternalWebhookToken::class,
IssueMcpTokenCommand::class,
RestoreActivityCrmProviderIdCommand::class,
CleanupActivityTracksCommand::class,
DeleteUnusedTracksCommand::class,
RestoreTracksCommand::class,
HubspotWebhookServiceCommand::class,
ProcessMergedObjectsCommand::class,
HubspotJournalPollingCommand::class,
SetupJournalDealWebhookSubscriptionsCommand::class,
ListJournalWebhookSubscriptionsCommand::class,
RemoveGhostParticipantsCommand::class,
AutodetectAiActivityTypeCommand::class,
Commands\Crm\LogActivitiesCommand::class,
Commands\Crm\MatchOpportunityActivitiesCommand::class,
PurgeDeletedOpportunitiesCommand::class,
CleanDuplicateFieldDataCommand::class,
RetryProspectSummaryCommand::class,
ProcessHubspotObjectsSyncBatches::class,
SyncOpportunitiesMissingFieldDataCommand::class,
RestoreDealAssociationsCommand::class,
Commands\Crm\TestPipedriveOfficialSdkCommand::class,
];
private Schedule $schedule;
private string $output;
protected function schedule(Schedule $schedule): void
{
$this->schedule = $schedule;
$this->output = config('jiminny.scheduler_log');
$schedule->useCache('redis');
$currentMinute = (int) date('i');
$currentDay = (int) date('w');
$this->scheduleEveryMinute();
$this->scheduleEveryTwoMinutes();
$this->scheduleEveryFiveMinutes();
$this->scheduleEveryTenMinutes();
$this->scheduleEveryFifteenMinutes();
$this->scheduleEveryThirtyMinutes();
$this->scheduleHourly();
$this->scheduleDaily();
$this->scheduleWeekly($currentDay);
$this->scheduleSpecificTimes();
$this->scheduleDynamic($currentMinute);
}
protected function scheduleEveryMinute(): void
{
$this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();
$this->scheduleCommand('dialers:monitor-activities')->everyMinute();
$this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();
$this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();
$this->schedule->command('mailbox:batch:process', ['--max-batches=15'])
->everyMinute()
->sendOutputTo($this->output);
}
protected function scheduleEveryTwoMinutes(): void
{
$this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();
}
protected function scheduleEveryFiveMinutes(): void
{
$this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();
// Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)
$this->scheduleCommand('crm:sync-hubspot-objects', [], 4)
->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');
$this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();
$this->schedule->command('mailbox:batch:create')
->cron('2-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output);
$this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])
->cron('3-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output)
->runInBackground();
$this->schedule->command('hubspot:journal-poll', ['--start'])
->everyFiveMinutes()
->sendOutputTo($this->output)
->runInBackground();
}
protected function scheduleEveryTenMinutes(): void
{
$this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();
$this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('crm:reset-governor')->everyTenMinutes();
}
protected function scheduleEveryFifteenMinutes(): void
{
$this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();
$this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');
$this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
],
])->everyFifteenMinutes();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->cron('7,22,37,52 * * * *');
}
protected function scheduleEveryThirtyMinutes(): void
{
$this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');
$this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();
$this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)
->between('02:58', '05:29')
->everyThirtyMinutes()
->runInBackground();
$this->scheduleActivitiesHardDelete();
}
protected function scheduleHourly(): void
{
$this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();
$this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');
$this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');
$this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');
$this->scheduleCommand('automated-reports:send')->hourly();
$this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);
$this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);
}
protected function scheduleDaily(): void
{
$this->scheduleCommand('teams:sync-planhat')->daily();
$this->scheduleCommand('twilio:sync-addresses')->daily();
$this->scheduleCommand('twilio:sync-zone-access')->daily();
$this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();
$this->scheduleCommand('users:sync-licence-data')->daily();
$this->scheduleCommand('users:sync-intercom-data')->daily();
$this->scheduleCommand('nudges:send-expiration-warnings')->daily();
$this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();
}
protected function scheduleWeekly(int $currentDay): void
{
if ($currentDay === 0) {
$this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);
}
if ($currentDay === 6) {
$this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_AMAZON_CONNECT,
'--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->saturdays()->at('01:00')->runInBackground();
$this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)
->saturdays()->at('01:07')->runInBackground();
$this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)
->saturdays()->at('05:08')->runInBackground();
$this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')
->weeklyOn(6, '6:00');
$this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')
->weeklyOn(6, '7:00');
}
}
protected function scheduleSpecificTimes(): void
{
$this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_DISCARDED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:20')->runInBackground();
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_PROCESSED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:30')->runInBackground();
$this->scheduleCommand('automated-reports')->dailyAt('01:00');
$this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');
$this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');
$this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');
$this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');
$this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');
$this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('03:05');
$this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');
$this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');
$this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');
$this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');
$this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');
if (! $this->app->environment('production')) {
$this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)
->dailyAt('04:02')->runInBackground();
}
$this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
],
])->dailyAt('05:05');
if (! $this->app->environment('qa')) {
$this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');
}
$this->scheduleCommand('activity:sync-dispositions', [
Activity::PROVIDER_HUBSPOT,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('07:05');
}
protected function scheduleDynamic(int $currentMinute): void
{
$this->scheduleHourlyFallbackActivitySyncs($currentMinute);
$this->scheduleBullhornHeartbeat($currentMinute);
}
private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void
{
if ($offsetMinute === 0) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);
} elseif ($offsetMinute === 1) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);
} elseif ($offsetMinute === 2) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);
}
}
private function scheduleBullhornHeartbeat(int $currentMinute): void
{
$bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);
if ($bhHeartbeatInterval > 0) {
$minutes = max((int) floor($bhHeartbeatInterval / 60), 1);
if ($currentMinute % $minutes === 0) {
$bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);
if ($minutes > 30) {
$bhEvent->hourly();
} else {
$bhEvent->cron(sprintf('*/%d * * * *', $minutes));
}
}
}
}
private function scheduleActivitiesHardDelete(): void
{
if (config(key: 'jiminny.deploy_region') === 'eu') {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 1000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
} elseif ($this->app->environment('production')) {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 2000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
}
}
private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void
{
$this->scheduleCommand('activity:sync', [
$provider,
'--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->hourlyAt($offsetMinute);
}
/**
* Register the Closure based commands for the application.
*/
protected function commands(): void
{
require_once base_path('routes/console.php');
}
private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event
{
return $this->schedule
->command($name, $options)
->withoutOverlapping($expiresAt)
->onOneServer()
->sendOutputTo($this->output)
;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\DTO\\Invitation;\n\nuse Jiminny\\DTO\\UserEmail;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateInvitationRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateTeamRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\EditTeamRequest;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Invitation;\nuse Jiminny\\Models\\Role;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\n\nclass UserInvitationDTO\n{\n use UserEmail;\n\n public string $email;\n public ?string $secondaryEmail;\n public ?int $groupId;\n public int $teamId;\n public bool $crmRequired;\n public array $roleIds;\n public bool $isOwner;\n public ?User $currentUser = null;\n\n /**\n * @param array{\n * email: string,\n * secondaryEmail: string|null,\n * groupId: int|null,\n * teamId: int|string,\n * crmRequired: bool,\n * roleIds: int[],\n * isOwner: bool,\n * user?: User\n * } $attributes\n */\n private function __construct(array $attributes)\n {\n $this->email = mb_strtolower($attributes['email']);\n $this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);\n $this->groupId = $attributes['groupId'];\n $this->teamId = (int) $attributes['teamId'];\n $this->crmRequired = (bool) $attributes['crmRequired'];\n $this->roleIds = $attributes['roleIds'];\n $this->isOwner = $attributes['isOwner'];\n $this->currentUser = $attributes['user'] ?? null;\n }\n\n public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self\n {\n $roleIds = Role::whereIn('name', [\n User::ROLE_ADMIN,\n User::ROLE_RECORDER,\n ])->pluck('id')->toArray();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => $request->getOwnerEmail(),\n 'secondaryEmail' => null,\n 'groupId' => null,\n 'teamId' => $team->getId(),\n 'crmRequired' => true,\n 'roleIds' => $roleIds,\n 'user' => $currentUser,\n 'isOwner' => true,\n ]);\n }\n\n public static function fromRequest(CreateInvitationRequest $request): self\n {\n $data = $request->validated();\n\n $groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;\n $teamId = Team::uuid($data['team_id'])->getId();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => mb_strtolower($data['email']),\n 'secondaryEmail' => $data['secondary_email'] ?? null,\n 'groupId' => $groupId,\n 'teamId' => $teamId,\n 'crmRequired' => $data['crm_required'],\n 'roleIds' => $data['roles'],\n 'user' => $currentUser,\n 'isOwner' => false,\n ]);\n }\n\n public static function fromInvitation(Invitation $invitation, User $currentUser): self\n {\n $roles = $invitation->roles()->get();\n $isOwner = $invitation->isOwner();\n\n return new self([\n 'email' => $invitation->email,\n 'secondaryEmail' => $invitation->getSecondaryEmail(),\n 'groupId' => $invitation->group_id,\n 'teamId' => $invitation->team_id,\n 'crmRequired' => $invitation->crm_required,\n 'roleIds' => $roles->pluck('id')->toArray(),\n 'user' => $currentUser,\n 'isOwner' => $isOwner,\n ]);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\DTO\\Invitation;\n\nuse Jiminny\\DTO\\UserEmail;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateInvitationRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateTeamRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\EditTeamRequest;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Invitation;\nuse Jiminny\\Models\\Role;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\n\nclass UserInvitationDTO\n{\n use UserEmail;\n\n public string $email;\n public ?string $secondaryEmail;\n public ?int $groupId;\n public int $teamId;\n public bool $crmRequired;\n public array $roleIds;\n public bool $isOwner;\n public ?User $currentUser = null;\n\n /**\n * @param array{\n * email: string,\n * secondaryEmail: string|null,\n * groupId: int|null,\n * teamId: int|string,\n * crmRequired: bool,\n * roleIds: int[],\n * isOwner: bool,\n * user?: User\n * } $attributes\n */\n private function __construct(array $attributes)\n {\n $this->email = mb_strtolower($attributes['email']);\n $this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);\n $this->groupId = $attributes['groupId'];\n $this->teamId = (int) $attributes['teamId'];\n $this->crmRequired = (bool) $attributes['crmRequired'];\n $this->roleIds = $attributes['roleIds'];\n $this->isOwner = $attributes['isOwner'];\n $this->currentUser = $attributes['user'] ?? null;\n }\n\n public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self\n {\n $roleIds = Role::whereIn('name', [\n User::ROLE_ADMIN,\n User::ROLE_RECORDER,\n ])->pluck('id')->toArray();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => $request->getOwnerEmail(),\n 'secondaryEmail' => null,\n 'groupId' => null,\n 'teamId' => $team->getId(),\n 'crmRequired' => true,\n 'roleIds' => $roleIds,\n 'user' => $currentUser,\n 'isOwner' => true,\n ]);\n }\n\n public static function fromRequest(CreateInvitationRequest $request): self\n {\n $data = $request->validated();\n\n $groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;\n $teamId = Team::uuid($data['team_id'])->getId();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => mb_strtolower($data['email']),\n 'secondaryEmail' => $data['secondary_email'] ?? null,\n 'groupId' => $groupId,\n 'teamId' => $teamId,\n 'crmRequired' => $data['crm_required'],\n 'roleIds' => $data['roles'],\n 'user' => $currentUser,\n 'isOwner' => false,\n ]);\n }\n\n public static function fromInvitation(Invitation $invitation, User $currentUser): self\n {\n $roles = $invitation->roles()->get();\n $isOwner = $invitation->isOwner();\n\n return new self([\n 'email' => $invitation->email,\n 'secondaryEmail' => $invitation->getSecondaryEmail(),\n 'groupId' => $invitation->group_id,\n 'teamId' => $invitation->team_id,\n 'crmRequired' => $invitation->crm_required,\n 'roleIds' => $roles->pluck('id')->toArray(),\n 'user' => $currentUser,\n 'isOwner' => $isOwner,\n ]);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.019444445,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.014583333,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Console;\n\nuse Illuminate\\Console\\ConfirmableTrait;\nuse Illuminate\\Console\\Scheduling\\Event;\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as ConsoleKernel;\nuse Jiminny\\Component\\Acl\\RemoveExpiredRoleChangeEventsCommand;\nuse Jiminny\\Component\\ActionItems\\Commands\\SendActionItemsCommand;\nuse Jiminny\\Component\\AiActivityType\\Commands\\AutodetectAiActivityTypeCommand;\nuse Jiminny\\Component\\AskJiminnyAi\\Commands\\ProphetAnalyzeClosedDealsCommand;\nuse Jiminny\\Component\\Cache\\Constants;\nuse Jiminny\\Component\\DealInsights\\Commands\\SendDealsUpdateCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\MediaPipelineRestartCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportActivityProcessingTimeToDatadogCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportProcessingStatesToDatadogCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\OverrideTranscriptionLocaleCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryFailedTranscriptionsCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryStuckTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ActivitiesMatchCrmCommand;\nuse Jiminny\\Console\\Commands\\Activities\\AutologOldActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForRetentionTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DownloadMissingTrackCommand;\nuse Jiminny\\Console\\Commands\\Activities\\FixActivitiesOpportunity;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReassignTranscriptCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReindexRecentActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\RetryProspectSummaryCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeleteCancelledCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeletePastCommand;\nuse Jiminny\\Console\\Commands\\Crm\\BackfillOpportunityUserFromAccountCommand;\nuse Jiminny\\Console\\Commands\\Crm\\CleanDuplicateFieldDataCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ProcessMergedObjectsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\RestoreDealAssociationsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\ProcessHubspotObjectsSyncBatches;\nuse Jiminny\\Console\\Commands\\Crm\\PurgeDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ListJournalWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\SetupJournalDealWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\SyncHubspotActiveDeals;\nuse Jiminny\\Console\\Commands\\Crm\\SyncOpportunitiesMissingFieldDataCommand;\nuse Jiminny\\Console\\Commands\\DeleteOldAiCrmNotesCommand;\nuse Jiminny\\Console\\Commands\\DeleteS3LeftoversCommand;\nuse Jiminny\\Console\\Commands\\DiarizeViaAiParticipantIdentificationCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\DeleteEmailDocumentsCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\RemoveGhostParticipantsCommand;\nuse Jiminny\\Console\\Commands\\FlushRolesPermissionsCache;\nuse Jiminny\\Console\\Commands\\GenerateInternalWebhookToken;\nuse Jiminny\\Console\\Commands\\IssueMcpTokenCommand;\nuse Jiminny\\Console\\Commands\\HubspotJournalPollingCommand;\nuse Jiminny\\Console\\Commands\\HubspotWebhookServiceCommand;\nuse Jiminny\\Console\\Commands\\Livestream\\StopHangingLivestreamsCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteEmailMessagesWithoutActivityCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteInboxEmailsCommand;\nuse Jiminny\\Console\\Commands\\PurgeSoftDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\PurgeSyncBatchesCommand;\nuse Jiminny\\Console\\Commands\\RemoveDeleteMarkersCommand;\nuse Jiminny\\Console\\Commands\\RemoveExpiredNudgesCommand;\nuse Jiminny\\Console\\Commands\\RemoveUnusedParticipantSpeechesCommand;\nuse Jiminny\\Console\\Commands\\Reports\\AutomatedReportsRetentionPolicyCommand;\nuse Jiminny\\Console\\Commands\\Reports\\DeleteReportCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityCrmProviderIdCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityTypeCommand;\nuse Jiminny\\Console\\Commands\\SendNudgeExpirationWarningsCommand;\nuse Jiminny\\Console\\Commands\\Slack\\SyncSlackUserCommand;\nuse Jiminny\\Console\\Commands\\Teams\\SyncTeamUsersCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamDeleteCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteDeactivatedCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteRetentionCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamSettingPutCommand;\nuse Jiminny\\Console\\Commands\\Teams\\UpdateTeamsCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\CleanupActivityTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\DeleteUnusedTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\RestoreTracksCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\DeleteOldTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\UpdateOldTranscriptionModelLocalesCommand;\nuse Jiminny\\Console\\Commands\\Twilio\\DeleteChurnedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\DeletePredefinedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\ReleaseNumbersCommand;\nuse Jiminny\\Jobs\\Activity\\SyncActivity;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\InboxEmail;\nuse Jiminny\\Services\\RecallAI\\Commands\\ImportRegionMeetingCommand;\nuse Jiminny\\Services\\RecallAI\\Commands\\ScheduleBotCommand;\n\nclass Kernel extends ConsoleKernel\n{\n use ConfirmableTrait;\n\n /**\n * The Artisan commands provided by your application.\n *\n * @var string[]\n */\n protected $commands = [\n Commands\\GeckoExport\\GeckoExportTranscriptCommand::class,\n Commands\\GeckoExport\\GeckoExportTranscriptionCommand::class,\n Commands\\GeckoExport\\GeckoExportParticipantSpeechesCommand::class,\n Commands\\Activities\\DeleteForCoachesCommand::class,\n ReindexRecentActivitiesCommand::class,\n Commands\\Crm\\BullhornPingCommand::class,\n Commands\\Crm\\BullhornSessionCommand::class,\n Commands\\Crm\\BullhornSearchCommand::class,\n Commands\\PlaybackThemes\\TopicsConsolidateCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesCopyCommand::class,\n Commands\\PlaybackThemes\\AssignTopicsUsedBySingleTeamCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesMigrateToVersionsCommand::class,\n Commands\\Vocabulary\\VocabularyCopyCommand::class,\n Commands\\Transcription\\TranscriptionPrintRaw::class,\n Commands\\Migrate\\JiminnyMigratePopulateActivitySourceCommand::class,\n Commands\\EngagementStats\\JiminnyEngagementStatsExplainCommand::class,\n Commands\\EngagementStatsRegenerateCommand::class,\n Commands\\Analytics\\NumberOfActivitiesPerActivityTypeCommand::class,\n Commands\\Elasticsearch\\MappingRunCommand::class,\n Commands\\Elasticsearch\\MappingInstallCommand::class,\n Commands\\Elasticsearch\\UpdateEsMappingSettingsCommand::class,\n Commands\\Analytics\\TranscriptionWordMatchCommand::class,\n Commands\\JiminnyCacheClearCommand::class,\n Commands\\Transcription\\TranscriptionSearchCommand::class,\n RetryStuckTranscriptionsCommand::class,\n RetryFailedTranscriptionsCommand::class,\n Commands\\JiminnyDebugCommand::class,\n Commands\\RunAiCallScoringForUntypedActivitiesCommand::class,\n Commands\\Calendars\\SyncCalendars::class,\n Commands\\Calendars\\SyncDeletedEvents::class,\n Commands\\Twilio\\FetchMetrics::class,\n Commands\\Twilio\\FetchEvents::class,\n Commands\\Twilio\\FetchSummary::class,\n Commands\\Twilio\\SyncZoneAccess::class,\n Commands\\DatabaseTableCount::class,\n Commands\\PurgeConferences::class,\n Commands\\ResetElasticSearch::class,\n Commands\\CreateDatabaseUsers::class,\n Commands\\Activities\\NotifyNotLogged::class,\n Commands\\Crm\\SyncTeamMetadata::class,\n Commands\\Crm\\SyncProfileMetadata::class,\n Commands\\Crm\\SyncContact::class,\n Commands\\Crm\\SyncObjects::class,\n Commands\\Crm\\SyncHubspotObjects::class,\n Commands\\Crm\\SyncAccount::class,\n Commands\\Crm\\ResetGovernorLimits::class,\n Commands\\Crm\\ManageSyncStrategyCommand::class,\n Commands\\ImportRecording::class,\n Commands\\TrackImported::class,\n Commands\\Twilio\\RecoverTwilioTracksCommand::class,\n Commands\\Crm\\SetupLayouts::class,\n Commands\\Tracks\\SyncTwilioTracks::class,\n Commands\\Activities\\StatusCount::class,\n\n Commands\\Mailboxes\\TextRelay\\WatchMailboxEvents::class,\n Commands\\Mailboxes\\InboxCreate::class,\n Commands\\Mailboxes\\InboxSync::class,\n Commands\\Mailboxes\\BatchCreate::class,\n Commands\\Mailboxes\\BatchProcess::class,\n Commands\\Mailboxes\\InboxPurge::class,\n Commands\\Mailboxes\\BatchRetryFailed::class,\n Commands\\Mailboxes\\BatchFailStalled::class,\n Commands\\Mailboxes\\SkipListsRefresh::class,\n Commands\\Mailboxes\\SkipListsDump::class,\n Commands\\Mailboxes\\TextRelay\\SyncMailbox::class,\n Commands\\Mailboxes\\DeleteInboxEmailsCommand::class,\n Commands\\Mailboxes\\DeleteEmailMessagesCommand::class,\n DeleteEmailMessagesWithoutActivityCommand::class,\n\n Commands\\Tracks\\CheckIntegrity::class,\n Commands\\Twilio\\RemoteLifecycle::class,\n Commands\\Twilio\\SyncNumbers::class,\n Commands\\Crm\\SetupActivityTypeForFollowUp::class,\n Commands\\Activities\\CheckPlayable::class,\n Commands\\Activities\\ActivityDeleteCommand::class,\n Commands\\Activities\\Copy::class,\n Commands\\Activities\\ActivityHardDeleteCommand::class,\n Commands\\Reports\\Team::class,\n Commands\\Reports\\GenerateMarketingReport::class,\n Commands\\Reports\\AutomatedReportsCommand::class,\n Commands\\Reports\\AutomatedReportsSendCommand::class,\n Commands\\MuteOrganizerChannel::class,\n Commands\\Tracks\\DeleteTracks::class,\n Commands\\Tracks\\RetryDownload::class,\n Commands\\Tracks\\RetryFailedDownloads::class,\n Commands\\Twilio\\SyncAddresses::class,\n Commands\\Activities\\UpdateElasticSearch::class,\n Commands\\MakeSlackLiveCoachingChatNotesOn::class,\n Commands\\Activities\\PreMeetingNotification::class,\n ScheduleBotCommand::class,\n ImportRegionMeetingCommand::class,\n Commands\\Activities\\MonitorMeetingCountCommand::class,\n Commands\\Activities\\MonitorMeetingStartCommand::class,\n Commands\\Activities\\MonitorMeetingEndCommand::class,\n Commands\\SyncActivity::class,\n Commands\\PhpApm::class,\n Commands\\Crm\\SyncOpportunity::class,\n Commands\\Crm\\SyncLead::class,\n Commands\\Users\\SyncLicenceDataToSalesforce::class,\n Commands\\Crm\\UpdateOpportunitySpecifications::class,\n Commands\\Users\\SyncToIntercom::class,\n Commands\\Users\\SyncToUserPilot::class,\n Commands\\Teams\\SyncToPlanhat::class,\n Commands\\Twilio\\SetZoneAccess::class,\n Commands\\Users\\CreateDefaultSavedSearchesCommand::class,\n Commands\\Crm\\SendNotLogged::class,\n Commands\\Teams\\DeactivateTeamCommand::class,\n Commands\\Crm\\SyncFieldMetadata::class,\n Commands\\Postmark\\SyncEmailTemplatesCommand::class,\n Commands\\PlaybackThemes\\ImportTriggersFromTranslatedCsvCommand::class,\n Commands\\Activities\\PreMeetingReminder::class,\n Commands\\Activities\\CustomerActivitiesExport::class,\n Commands\\Users\\RefreshAccessToken::class,\n Commands\\Calendars\\SetupCalendarSubscription::class,\n Commands\\Activities\\InviteMeetingBot::class,\n Commands\\Activities\\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,\n Commands\\Crm\\MigrateProvider::class,\n Commands\\Activities\\MigrateLocationFromCalendarEventToActivities::class,\n Commands\\HelperTruncateCoachingTables::class,\n Commands\\FixCrossTenantIssues::class,\n Commands\\Activities\\CloudCall\\SetupIntegration::class,\n Commands\\Activities\\CloudTalk\\FixTimeZone::class,\n Commands\\Activities\\Orum\\SetupIntegration::class,\n Commands\\Activities\\JustCall\\SetupIntegration::class,\n Commands\\Activities\\RingCentral\\AddInboundPromptSupport::class,\n Commands\\Dialers\\Dialpad\\SubscribeToWebhooks::class,\n Commands\\RecalculateDealRisksCommand::class,\n SendDealsUpdateCommand::class,\n Commands\\Activities\\SetProviderCapabilitiesField::class,\n Commands\\Teams\\InitiallySetNotificationProviderTeamsTable::class,\n Commands\\Crm\\AddLayoutEntities::class,\n Commands\\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,\n Commands\\JiminnyTokenInfoCommand::class,\n Commands\\JiminnySetEncryptedTokenManagerModeCommand::class,\n Commands\\EncryptTokensCommand::class,\n Commands\\Dialers\\Aircall\\CheckAndRenewWebhooks::class,\n Commands\\Migrate\\MigrateTeamRegionCommand::class,\n Commands\\ManageScimForTeam::class,\n Commands\\Dialers\\SyncUsersCommand::class,\n Commands\\WhichWorkerIsWorkingOnWhichJob::class,\n Commands\\GroupSetDefaultLanguageCommand::class,\n Commands\\Dev\\AddRateLimitCommand::class,\n Commands\\Dev\\ImportCallsCommand::class,\n Commands\\DealInsights\\BuildDealInsightsLayoutCommand::class,\n Commands\\DealInsights\\DeleteAskJiminnyDealPrompts::class,\n Commands\\Crm\\MatchCrmObjectsCommand::class,\n Commands\\Activities\\SetupIntegration\\EightByEight::class,\n Commands\\Calendars\\RemoveCalendarEventActivitiesCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromGongCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromChorusCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromLeexiCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromAvomaCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromClariCommand::class,\n Commands\\Activities\\SetupIntegration\\ConnectAndSell::class,\n Commands\\Activities\\SetupIntegration\\CloudTalk::class,\n Commands\\Users\\CreateConferenceSlug::class,\n Commands\\Elasticsearch\\AsyncUpdateEsEntities::class,\n Commands\\Elasticsearch\\ResetAsyncElasticSearchCommand::class,\n Commands\\Playlists\\PlaylistSharesUpdateCommand::class,\n Commands\\Crm\\AutologDelayedCommand::class,\n Commands\\Activities\\HydrateDefaultActivityTypeCommand::class,\n Commands\\Crm\\CheckActivityLoggableCommand::class,\n Commands\\Activities\\MonitorDialerActivitiesCommand::class,\n Commands\\Activities\\SetupIntegration\\Xant::class,\n Commands\\ImportUsersFromCsvFile::class,\n Commands\\DevPostmanCommand::class,\n Commands\\Playlists\\FixTreeStructureCommand::class,\n Commands\\Zoom\\ResolvePmiLinksCommand::class,\n Commands\\MarkBranchForEnvironmentPipelineCommand::class,\n Commands\\Activities\\ProbeMediaSegmentsCommand::class,\n Commands\\Activities\\SetupIntegration\\AmazonConnect::class,\n Commands\\Playbooks\\ChangePlaybookActivityFieldCommand::class,\n MediaPipelineRestartCommand::class,\n Commands\\Dev\\FixHubSpotTokens::class,\n Commands\\Dev\\MonitorSocialAccountsState::class,\n Commands\\Activities\\SetupIntegration\\Vonage::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlex::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexDirect::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexSetDialerAuthCredentialsCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioSetS3RecordingCredentialsCommand::class,\n SendActionItemsCommand::class,\n Commands\\Users\\ChangeEmail::class,\n Commands\\Calendars\\ListUserGoogleCalendars::class,\n Commands\\Activities\\JustCall\\SyncPlaybackLinkToCrmCommand::class,\n Commands\\Activities\\HydrateCallWithCrmDataCommand::class,\n Commands\\Activities\\UpdateActivityElasticSearchDocumentCommand::class,\n Commands\\Activities\\SetupIntegration\\Talkdesk::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookListCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookShow::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioVideo::class,\n Commands\\Crm\\SetupCloseCrm::class,\n Commands\\Crm\\SetupCopperCrm::class,\n Commands\\Crm\\FullSyncOpportunityCommand::class,\n Commands\\Crm\\IntegrationApp\\CrmEntitiesFullSyncCommand::class,\n Commands\\Crm\\IntegrationApp\\ValidateConnectionCommand::class,\n Commands\\Activities\\Workflow\\RefreshCrmData::class,\n Commands\\Activities\\Migrator\\AnalyseGongCalls::class,\n Commands\\Users\\AddVoiceRoleToRecorderCommand::class,\n Commands\\Activities\\SyncMissingCallDispositions::class,\n Commands\\Calendars\\RemoveFutureCalendarEvents::class,\n FlushRolesPermissionsCache::class,\n Commands\\Activities\\SetupIntegration\\FiveNine::class,\n CalendarEventDeleteCancelledCommand::class,\n CalendarEventDeletePastCommand::class,\n ReportActivityProcessingTimeToDatadogCommand::class,\n ReportProcessingStatesToDatadogCommand::class,\n ReleaseNumbersCommand::class,\n BackfillOpportunityUserFromAccountCommand::class,\n RemoveExpiredRoleChangeEventsCommand::class,\n RemoveExpiredNudgesCommand::class,\n SendNudgeExpirationWarningsCommand::class,\n AutologOldActivitiesCommand::class,\n RemoveUnusedParticipantSpeechesCommand::class,\n DeleteActivitiesForChurnedTeamsCommand::class,\n HardDeleteActivitiesForChurnedTeamsCommand::class,\n TeamDeleteCommand::class,\n TeamsDeleteDeactivatedCommand::class,\n UpdateTeamsCommand::class,\n OverrideTranscriptionLocaleCommand::class,\n SyncSlackUserCommand::class,\n PurgeSoftDeletedOpportunitiesCommand::class,\n PurgeSyncBatchesCommand::class,\n ProphetAnalyzeClosedDealsCommand::class,\n DeleteChurnedSubAccounts::class,\n Commands\\ProphetAi\\DumpContext::class,\n DeletePredefinedSubAccounts::class,\n DeleteActivitiesForRetentionTeamsCommand::class,\n HardDeleteActivitiesTeamsCommand::class,\n TeamsDeleteRetentionCommand::class,\n TeamSettingPutCommand::class,\n StopHangingLivestreamsCommand::class,\n FixActivitiesOpportunity::class,\n Commands\\Activities\\SetupIntegration\\Salesforce\\SetupSalesforceIntegrationCommand::class,\n UpdateOldTranscriptionModelLocalesCommand::class,\n Commands\\Dev\\FixMissMatchedCrmActivitiesCommand::class,\n DownloadMissingTrackCommand::class,\n ActivitiesMatchCrmCommand::class,\n DeleteEmailDocumentsCommand::class,\n DeleteOldTranscriptionsCommand::class,\n DeleteS3LeftoversCommand::class,\n RemoveDeleteMarkersCommand::class,\n SyncTeamUsersCommand::class,\n ReassignTranscriptCommand::class,\n DiarizeViaAiParticipantIdentificationCommand::class,\n RestoreActivityTypeCommand::class,\n DeleteOldAiCrmNotesCommand::class,\n DeleteReportCommand::class,\n AutomatedReportsRetentionPolicyCommand::class,\n SyncHubspotActiveDeals::class,\n GenerateInternalWebhookToken::class,\n IssueMcpTokenCommand::class,\n RestoreActivityCrmProviderIdCommand::class,\n CleanupActivityTracksCommand::class,\n DeleteUnusedTracksCommand::class,\n RestoreTracksCommand::class,\n HubspotWebhookServiceCommand::class,\n ProcessMergedObjectsCommand::class,\n HubspotJournalPollingCommand::class,\n SetupJournalDealWebhookSubscriptionsCommand::class,\n ListJournalWebhookSubscriptionsCommand::class,\n RemoveGhostParticipantsCommand::class,\n AutodetectAiActivityTypeCommand::class,\n Commands\\Crm\\LogActivitiesCommand::class,\n Commands\\Crm\\MatchOpportunityActivitiesCommand::class,\n PurgeDeletedOpportunitiesCommand::class,\n CleanDuplicateFieldDataCommand::class,\n RetryProspectSummaryCommand::class,\n ProcessHubspotObjectsSyncBatches::class,\n SyncOpportunitiesMissingFieldDataCommand::class,\n RestoreDealAssociationsCommand::class,\n Commands\\Crm\\TestPipedriveOfficialSdkCommand::class,\n ];\n\n private Schedule $schedule;\n private string $output;\n\n protected function schedule(Schedule $schedule): void\n {\n $this->schedule = $schedule;\n $this->output = config('jiminny.scheduler_log');\n\n $schedule->useCache('redis');\n\n $currentMinute = (int) date('i');\n $currentDay = (int) date('w');\n\n $this->scheduleEveryMinute();\n $this->scheduleEveryTwoMinutes();\n $this->scheduleEveryFiveMinutes();\n $this->scheduleEveryTenMinutes();\n $this->scheduleEveryFifteenMinutes();\n $this->scheduleEveryThirtyMinutes();\n $this->scheduleHourly();\n $this->scheduleDaily();\n $this->scheduleWeekly($currentDay);\n $this->scheduleSpecificTimes();\n $this->scheduleDynamic($currentMinute);\n }\n\n protected function scheduleEveryMinute(): void\n {\n $this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();\n $this->scheduleCommand('dialers:monitor-activities')->everyMinute();\n $this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();\n $this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();\n\n $this->schedule->command('mailbox:batch:process', ['--max-batches=15'])\n ->everyMinute()\n ->sendOutputTo($this->output);\n }\n\n protected function scheduleEveryTwoMinutes(): void\n {\n $this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();\n }\n\n protected function scheduleEveryFiveMinutes(): void\n {\n $this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();\n // Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)\n $this->scheduleCommand('crm:sync-hubspot-objects', [], 4)\n ->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');\n $this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();\n\n $this->schedule->command('mailbox:batch:create')\n ->cron('2-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output);\n\n $this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])\n ->cron('3-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ->runInBackground();\n\n $this->schedule->command('hubspot:journal-poll', ['--start'])\n ->everyFiveMinutes()\n ->sendOutputTo($this->output)\n ->runInBackground();\n }\n\n protected function scheduleEveryTenMinutes(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();\n $this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('crm:reset-governor')->everyTenMinutes();\n }\n\n protected function scheduleEveryFifteenMinutes(): void\n {\n $this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();\n $this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');\n $this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n ],\n ])->everyFifteenMinutes();\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->cron('7,22,37,52 * * * *');\n }\n\n protected function scheduleEveryThirtyMinutes(): void\n {\n $this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');\n $this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();\n\n $this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)\n ->between('02:58', '05:29')\n ->everyThirtyMinutes()\n ->runInBackground();\n\n $this->scheduleActivitiesHardDelete();\n }\n\n protected function scheduleHourly(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();\n $this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');\n $this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');\n $this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');\n $this->scheduleCommand('automated-reports:send')->hourly();\n $this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);\n $this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);\n }\n\n protected function scheduleDaily(): void\n {\n $this->scheduleCommand('teams:sync-planhat')->daily();\n $this->scheduleCommand('twilio:sync-addresses')->daily();\n $this->scheduleCommand('twilio:sync-zone-access')->daily();\n $this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();\n $this->scheduleCommand('users:sync-licence-data')->daily();\n $this->scheduleCommand('users:sync-intercom-data')->daily();\n $this->scheduleCommand('nudges:send-expiration-warnings')->daily();\n $this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();\n }\n\n protected function scheduleWeekly(int $currentDay): void\n {\n if ($currentDay === 0) {\n $this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);\n }\n\n if ($currentDay === 6) {\n $this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_AMAZON_CONNECT,\n '--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->saturdays()->at('01:00')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)\n ->saturdays()->at('01:07')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)\n ->saturdays()->at('05:08')->runInBackground();\n $this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')\n ->weeklyOn(6, '6:00');\n $this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')\n ->weeklyOn(6, '7:00');\n }\n }\n\n protected function scheduleSpecificTimes(): void\n {\n $this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_DISCARDED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:20')->runInBackground();\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_PROCESSED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:30')->runInBackground();\n\n $this->scheduleCommand('automated-reports')->dailyAt('01:00');\n $this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');\n $this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');\n $this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');\n $this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');\n $this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');\n $this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('03:05');\n\n\n $this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');\n $this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');\n $this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');\n $this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');\n $this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');\n\n if (! $this->app->environment('production')) {\n $this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)\n ->dailyAt('04:02')->runInBackground();\n }\n\n $this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n ],\n ])->dailyAt('05:05');\n\n if (! $this->app->environment('qa')) {\n $this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');\n }\n\n $this->scheduleCommand('activity:sync-dispositions', [\n Activity::PROVIDER_HUBSPOT,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('07:05');\n }\n\n protected function scheduleDynamic(int $currentMinute): void\n {\n $this->scheduleHourlyFallbackActivitySyncs($currentMinute);\n $this->scheduleBullhornHeartbeat($currentMinute);\n }\n\n private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void\n {\n if ($offsetMinute === 0) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);\n } elseif ($offsetMinute === 1) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);\n } elseif ($offsetMinute === 2) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);\n }\n }\n\n private function scheduleBullhornHeartbeat(int $currentMinute): void\n {\n $bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);\n if ($bhHeartbeatInterval > 0) {\n $minutes = max((int) floor($bhHeartbeatInterval / 60), 1);\n if ($currentMinute % $minutes === 0) {\n $bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);\n if ($minutes > 30) {\n $bhEvent->hourly();\n } else {\n $bhEvent->cron(sprintf('*/%d * * * *', $minutes));\n }\n }\n }\n }\n\n private function scheduleActivitiesHardDelete(): void\n {\n if (config(key: 'jiminny.deploy_region') === 'eu') {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 1000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n } elseif ($this->app->environment('production')) {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 2000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n }\n }\n\n private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void\n {\n $this->scheduleCommand('activity:sync', [\n $provider,\n '--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->hourlyAt($offsetMinute);\n }\n\n /**\n * Register the Closure based commands for the application.\n */\n protected function commands(): void\n {\n require_once base_path('routes/console.php');\n }\n\n private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event\n {\n return $this->schedule\n ->command($name, $options)\n ->withoutOverlapping($expiresAt)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\Console;\n\nuse Illuminate\\Console\\ConfirmableTrait;\nuse Illuminate\\Console\\Scheduling\\Event;\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as ConsoleKernel;\nuse Jiminny\\Component\\Acl\\RemoveExpiredRoleChangeEventsCommand;\nuse Jiminny\\Component\\ActionItems\\Commands\\SendActionItemsCommand;\nuse Jiminny\\Component\\AiActivityType\\Commands\\AutodetectAiActivityTypeCommand;\nuse Jiminny\\Component\\AskJiminnyAi\\Commands\\ProphetAnalyzeClosedDealsCommand;\nuse Jiminny\\Component\\Cache\\Constants;\nuse Jiminny\\Component\\DealInsights\\Commands\\SendDealsUpdateCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\MediaPipelineRestartCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportActivityProcessingTimeToDatadogCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportProcessingStatesToDatadogCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\OverrideTranscriptionLocaleCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryFailedTranscriptionsCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryStuckTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ActivitiesMatchCrmCommand;\nuse Jiminny\\Console\\Commands\\Activities\\AutologOldActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForRetentionTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DownloadMissingTrackCommand;\nuse Jiminny\\Console\\Commands\\Activities\\FixActivitiesOpportunity;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReassignTranscriptCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReindexRecentActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\RetryProspectSummaryCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeleteCancelledCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeletePastCommand;\nuse Jiminny\\Console\\Commands\\Crm\\BackfillOpportunityUserFromAccountCommand;\nuse Jiminny\\Console\\Commands\\Crm\\CleanDuplicateFieldDataCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ProcessMergedObjectsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\RestoreDealAssociationsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\ProcessHubspotObjectsSyncBatches;\nuse Jiminny\\Console\\Commands\\Crm\\PurgeDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ListJournalWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\SetupJournalDealWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\SyncHubspotActiveDeals;\nuse Jiminny\\Console\\Commands\\Crm\\SyncOpportunitiesMissingFieldDataCommand;\nuse Jiminny\\Console\\Commands\\DeleteOldAiCrmNotesCommand;\nuse Jiminny\\Console\\Commands\\DeleteS3LeftoversCommand;\nuse Jiminny\\Console\\Commands\\DiarizeViaAiParticipantIdentificationCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\DeleteEmailDocumentsCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\RemoveGhostParticipantsCommand;\nuse Jiminny\\Console\\Commands\\FlushRolesPermissionsCache;\nuse Jiminny\\Console\\Commands\\GenerateInternalWebhookToken;\nuse Jiminny\\Console\\Commands\\IssueMcpTokenCommand;\nuse Jiminny\\Console\\Commands\\HubspotJournalPollingCommand;\nuse Jiminny\\Console\\Commands\\HubspotWebhookServiceCommand;\nuse Jiminny\\Console\\Commands\\Livestream\\StopHangingLivestreamsCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteEmailMessagesWithoutActivityCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteInboxEmailsCommand;\nuse Jiminny\\Console\\Commands\\PurgeSoftDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\PurgeSyncBatchesCommand;\nuse Jiminny\\Console\\Commands\\RemoveDeleteMarkersCommand;\nuse Jiminny\\Console\\Commands\\RemoveExpiredNudgesCommand;\nuse Jiminny\\Console\\Commands\\RemoveUnusedParticipantSpeechesCommand;\nuse Jiminny\\Console\\Commands\\Reports\\AutomatedReportsRetentionPolicyCommand;\nuse Jiminny\\Console\\Commands\\Reports\\DeleteReportCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityCrmProviderIdCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityTypeCommand;\nuse Jiminny\\Console\\Commands\\SendNudgeExpirationWarningsCommand;\nuse Jiminny\\Console\\Commands\\Slack\\SyncSlackUserCommand;\nuse Jiminny\\Console\\Commands\\Teams\\SyncTeamUsersCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamDeleteCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteDeactivatedCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteRetentionCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamSettingPutCommand;\nuse Jiminny\\Console\\Commands\\Teams\\UpdateTeamsCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\CleanupActivityTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\DeleteUnusedTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\RestoreTracksCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\DeleteOldTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\UpdateOldTranscriptionModelLocalesCommand;\nuse Jiminny\\Console\\Commands\\Twilio\\DeleteChurnedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\DeletePredefinedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\ReleaseNumbersCommand;\nuse Jiminny\\Jobs\\Activity\\SyncActivity;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\InboxEmail;\nuse Jiminny\\Services\\RecallAI\\Commands\\ImportRegionMeetingCommand;\nuse Jiminny\\Services\\RecallAI\\Commands\\ScheduleBotCommand;\n\nclass Kernel extends ConsoleKernel\n{\n use ConfirmableTrait;\n\n /**\n * The Artisan commands provided by your application.\n *\n * @var string[]\n */\n protected $commands = [\n Commands\\GeckoExport\\GeckoExportTranscriptCommand::class,\n Commands\\GeckoExport\\GeckoExportTranscriptionCommand::class,\n Commands\\GeckoExport\\GeckoExportParticipantSpeechesCommand::class,\n Commands\\Activities\\DeleteForCoachesCommand::class,\n ReindexRecentActivitiesCommand::class,\n Commands\\Crm\\BullhornPingCommand::class,\n Commands\\Crm\\BullhornSessionCommand::class,\n Commands\\Crm\\BullhornSearchCommand::class,\n Commands\\PlaybackThemes\\TopicsConsolidateCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesCopyCommand::class,\n Commands\\PlaybackThemes\\AssignTopicsUsedBySingleTeamCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesMigrateToVersionsCommand::class,\n Commands\\Vocabulary\\VocabularyCopyCommand::class,\n Commands\\Transcription\\TranscriptionPrintRaw::class,\n Commands\\Migrate\\JiminnyMigratePopulateActivitySourceCommand::class,\n Commands\\EngagementStats\\JiminnyEngagementStatsExplainCommand::class,\n Commands\\EngagementStatsRegenerateCommand::class,\n Commands\\Analytics\\NumberOfActivitiesPerActivityTypeCommand::class,\n Commands\\Elasticsearch\\MappingRunCommand::class,\n Commands\\Elasticsearch\\MappingInstallCommand::class,\n Commands\\Elasticsearch\\UpdateEsMappingSettingsCommand::class,\n Commands\\Analytics\\TranscriptionWordMatchCommand::class,\n Commands\\JiminnyCacheClearCommand::class,\n Commands\\Transcription\\TranscriptionSearchCommand::class,\n RetryStuckTranscriptionsCommand::class,\n RetryFailedTranscriptionsCommand::class,\n Commands\\JiminnyDebugCommand::class,\n Commands\\RunAiCallScoringForUntypedActivitiesCommand::class,\n Commands\\Calendars\\SyncCalendars::class,\n Commands\\Calendars\\SyncDeletedEvents::class,\n Commands\\Twilio\\FetchMetrics::class,\n Commands\\Twilio\\FetchEvents::class,\n Commands\\Twilio\\FetchSummary::class,\n Commands\\Twilio\\SyncZoneAccess::class,\n Commands\\DatabaseTableCount::class,\n Commands\\PurgeConferences::class,\n Commands\\ResetElasticSearch::class,\n Commands\\CreateDatabaseUsers::class,\n Commands\\Activities\\NotifyNotLogged::class,\n Commands\\Crm\\SyncTeamMetadata::class,\n Commands\\Crm\\SyncProfileMetadata::class,\n Commands\\Crm\\SyncContact::class,\n Commands\\Crm\\SyncObjects::class,\n Commands\\Crm\\SyncHubspotObjects::class,\n Commands\\Crm\\SyncAccount::class,\n Commands\\Crm\\ResetGovernorLimits::class,\n Commands\\Crm\\ManageSyncStrategyCommand::class,\n Commands\\ImportRecording::class,\n Commands\\TrackImported::class,\n Commands\\Twilio\\RecoverTwilioTracksCommand::class,\n Commands\\Crm\\SetupLayouts::class,\n Commands\\Tracks\\SyncTwilioTracks::class,\n Commands\\Activities\\StatusCount::class,\n\n Commands\\Mailboxes\\TextRelay\\WatchMailboxEvents::class,\n Commands\\Mailboxes\\InboxCreate::class,\n Commands\\Mailboxes\\InboxSync::class,\n Commands\\Mailboxes\\BatchCreate::class,\n Commands\\Mailboxes\\BatchProcess::class,\n Commands\\Mailboxes\\InboxPurge::class,\n Commands\\Mailboxes\\BatchRetryFailed::class,\n Commands\\Mailboxes\\BatchFailStalled::class,\n Commands\\Mailboxes\\SkipListsRefresh::class,\n Commands\\Mailboxes\\SkipListsDump::class,\n Commands\\Mailboxes\\TextRelay\\SyncMailbox::class,\n Commands\\Mailboxes\\DeleteInboxEmailsCommand::class,\n Commands\\Mailboxes\\DeleteEmailMessagesCommand::class,\n DeleteEmailMessagesWithoutActivityCommand::class,\n\n Commands\\Tracks\\CheckIntegrity::class,\n Commands\\Twilio\\RemoteLifecycle::class,\n Commands\\Twilio\\SyncNumbers::class,\n Commands\\Crm\\SetupActivityTypeForFollowUp::class,\n Commands\\Activities\\CheckPlayable::class,\n Commands\\Activities\\ActivityDeleteCommand::class,\n Commands\\Activities\\Copy::class,\n Commands\\Activities\\ActivityHardDeleteCommand::class,\n Commands\\Reports\\Team::class,\n Commands\\Reports\\GenerateMarketingReport::class,\n Commands\\Reports\\AutomatedReportsCommand::class,\n Commands\\Reports\\AutomatedReportsSendCommand::class,\n Commands\\MuteOrganizerChannel::class,\n Commands\\Tracks\\DeleteTracks::class,\n Commands\\Tracks\\RetryDownload::class,\n Commands\\Tracks\\RetryFailedDownloads::class,\n Commands\\Twilio\\SyncAddresses::class,\n Commands\\Activities\\UpdateElasticSearch::class,\n Commands\\MakeSlackLiveCoachingChatNotesOn::class,\n Commands\\Activities\\PreMeetingNotification::class,\n ScheduleBotCommand::class,\n ImportRegionMeetingCommand::class,\n Commands\\Activities\\MonitorMeetingCountCommand::class,\n Commands\\Activities\\MonitorMeetingStartCommand::class,\n Commands\\Activities\\MonitorMeetingEndCommand::class,\n Commands\\SyncActivity::class,\n Commands\\PhpApm::class,\n Commands\\Crm\\SyncOpportunity::class,\n Commands\\Crm\\SyncLead::class,\n Commands\\Users\\SyncLicenceDataToSalesforce::class,\n Commands\\Crm\\UpdateOpportunitySpecifications::class,\n Commands\\Users\\SyncToIntercom::class,\n Commands\\Users\\SyncToUserPilot::class,\n Commands\\Teams\\SyncToPlanhat::class,\n Commands\\Twilio\\SetZoneAccess::class,\n Commands\\Users\\CreateDefaultSavedSearchesCommand::class,\n Commands\\Crm\\SendNotLogged::class,\n Commands\\Teams\\DeactivateTeamCommand::class,\n Commands\\Crm\\SyncFieldMetadata::class,\n Commands\\Postmark\\SyncEmailTemplatesCommand::class,\n Commands\\PlaybackThemes\\ImportTriggersFromTranslatedCsvCommand::class,\n Commands\\Activities\\PreMeetingReminder::class,\n Commands\\Activities\\CustomerActivitiesExport::class,\n Commands\\Users\\RefreshAccessToken::class,\n Commands\\Calendars\\SetupCalendarSubscription::class,\n Commands\\Activities\\InviteMeetingBot::class,\n Commands\\Activities\\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,\n Commands\\Crm\\MigrateProvider::class,\n Commands\\Activities\\MigrateLocationFromCalendarEventToActivities::class,\n Commands\\HelperTruncateCoachingTables::class,\n Commands\\FixCrossTenantIssues::class,\n Commands\\Activities\\CloudCall\\SetupIntegration::class,\n Commands\\Activities\\CloudTalk\\FixTimeZone::class,\n Commands\\Activities\\Orum\\SetupIntegration::class,\n Commands\\Activities\\JustCall\\SetupIntegration::class,\n Commands\\Activities\\RingCentral\\AddInboundPromptSupport::class,\n Commands\\Dialers\\Dialpad\\SubscribeToWebhooks::class,\n Commands\\RecalculateDealRisksCommand::class,\n SendDealsUpdateCommand::class,\n Commands\\Activities\\SetProviderCapabilitiesField::class,\n Commands\\Teams\\InitiallySetNotificationProviderTeamsTable::class,\n Commands\\Crm\\AddLayoutEntities::class,\n Commands\\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,\n Commands\\JiminnyTokenInfoCommand::class,\n Commands\\JiminnySetEncryptedTokenManagerModeCommand::class,\n Commands\\EncryptTokensCommand::class,\n Commands\\Dialers\\Aircall\\CheckAndRenewWebhooks::class,\n Commands\\Migrate\\MigrateTeamRegionCommand::class,\n Commands\\ManageScimForTeam::class,\n Commands\\Dialers\\SyncUsersCommand::class,\n Commands\\WhichWorkerIsWorkingOnWhichJob::class,\n Commands\\GroupSetDefaultLanguageCommand::class,\n Commands\\Dev\\AddRateLimitCommand::class,\n Commands\\Dev\\ImportCallsCommand::class,\n Commands\\DealInsights\\BuildDealInsightsLayoutCommand::class,\n Commands\\DealInsights\\DeleteAskJiminnyDealPrompts::class,\n Commands\\Crm\\MatchCrmObjectsCommand::class,\n Commands\\Activities\\SetupIntegration\\EightByEight::class,\n Commands\\Calendars\\RemoveCalendarEventActivitiesCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromGongCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromChorusCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromLeexiCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromAvomaCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromClariCommand::class,\n Commands\\Activities\\SetupIntegration\\ConnectAndSell::class,\n Commands\\Activities\\SetupIntegration\\CloudTalk::class,\n Commands\\Users\\CreateConferenceSlug::class,\n Commands\\Elasticsearch\\AsyncUpdateEsEntities::class,\n Commands\\Elasticsearch\\ResetAsyncElasticSearchCommand::class,\n Commands\\Playlists\\PlaylistSharesUpdateCommand::class,\n Commands\\Crm\\AutologDelayedCommand::class,\n Commands\\Activities\\HydrateDefaultActivityTypeCommand::class,\n Commands\\Crm\\CheckActivityLoggableCommand::class,\n Commands\\Activities\\MonitorDialerActivitiesCommand::class,\n Commands\\Activities\\SetupIntegration\\Xant::class,\n Commands\\ImportUsersFromCsvFile::class,\n Commands\\DevPostmanCommand::class,\n Commands\\Playlists\\FixTreeStructureCommand::class,\n Commands\\Zoom\\ResolvePmiLinksCommand::class,\n Commands\\MarkBranchForEnvironmentPipelineCommand::class,\n Commands\\Activities\\ProbeMediaSegmentsCommand::class,\n Commands\\Activities\\SetupIntegration\\AmazonConnect::class,\n Commands\\Playbooks\\ChangePlaybookActivityFieldCommand::class,\n MediaPipelineRestartCommand::class,\n Commands\\Dev\\FixHubSpotTokens::class,\n Commands\\Dev\\MonitorSocialAccountsState::class,\n Commands\\Activities\\SetupIntegration\\Vonage::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlex::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexDirect::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexSetDialerAuthCredentialsCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioSetS3RecordingCredentialsCommand::class,\n SendActionItemsCommand::class,\n Commands\\Users\\ChangeEmail::class,\n Commands\\Calendars\\ListUserGoogleCalendars::class,\n Commands\\Activities\\JustCall\\SyncPlaybackLinkToCrmCommand::class,\n Commands\\Activities\\HydrateCallWithCrmDataCommand::class,\n Commands\\Activities\\UpdateActivityElasticSearchDocumentCommand::class,\n Commands\\Activities\\SetupIntegration\\Talkdesk::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookListCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookShow::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioVideo::class,\n Commands\\Crm\\SetupCloseCrm::class,\n Commands\\Crm\\SetupCopperCrm::class,\n Commands\\Crm\\FullSyncOpportunityCommand::class,\n Commands\\Crm\\IntegrationApp\\CrmEntitiesFullSyncCommand::class,\n Commands\\Crm\\IntegrationApp\\ValidateConnectionCommand::class,\n Commands\\Activities\\Workflow\\RefreshCrmData::class,\n Commands\\Activities\\Migrator\\AnalyseGongCalls::class,\n Commands\\Users\\AddVoiceRoleToRecorderCommand::class,\n Commands\\Activities\\SyncMissingCallDispositions::class,\n Commands\\Calendars\\RemoveFutureCalendarEvents::class,\n FlushRolesPermissionsCache::class,\n Commands\\Activities\\SetupIntegration\\FiveNine::class,\n CalendarEventDeleteCancelledCommand::class,\n CalendarEventDeletePastCommand::class,\n ReportActivityProcessingTimeToDatadogCommand::class,\n ReportProcessingStatesToDatadogCommand::class,\n ReleaseNumbersCommand::class,\n BackfillOpportunityUserFromAccountCommand::class,\n RemoveExpiredRoleChangeEventsCommand::class,\n RemoveExpiredNudgesCommand::class,\n SendNudgeExpirationWarningsCommand::class,\n AutologOldActivitiesCommand::class,\n RemoveUnusedParticipantSpeechesCommand::class,\n DeleteActivitiesForChurnedTeamsCommand::class,\n HardDeleteActivitiesForChurnedTeamsCommand::class,\n TeamDeleteCommand::class,\n TeamsDeleteDeactivatedCommand::class,\n UpdateTeamsCommand::class,\n OverrideTranscriptionLocaleCommand::class,\n SyncSlackUserCommand::class,\n PurgeSoftDeletedOpportunitiesCommand::class,\n PurgeSyncBatchesCommand::class,\n ProphetAnalyzeClosedDealsCommand::class,\n DeleteChurnedSubAccounts::class,\n Commands\\ProphetAi\\DumpContext::class,\n DeletePredefinedSubAccounts::class,\n DeleteActivitiesForRetentionTeamsCommand::class,\n HardDeleteActivitiesTeamsCommand::class,\n TeamsDeleteRetentionCommand::class,\n TeamSettingPutCommand::class,\n StopHangingLivestreamsCommand::class,\n FixActivitiesOpportunity::class,\n Commands\\Activities\\SetupIntegration\\Salesforce\\SetupSalesforceIntegrationCommand::class,\n UpdateOldTranscriptionModelLocalesCommand::class,\n Commands\\Dev\\FixMissMatchedCrmActivitiesCommand::class,\n DownloadMissingTrackCommand::class,\n ActivitiesMatchCrmCommand::class,\n DeleteEmailDocumentsCommand::class,\n DeleteOldTranscriptionsCommand::class,\n DeleteS3LeftoversCommand::class,\n RemoveDeleteMarkersCommand::class,\n SyncTeamUsersCommand::class,\n ReassignTranscriptCommand::class,\n DiarizeViaAiParticipantIdentificationCommand::class,\n RestoreActivityTypeCommand::class,\n DeleteOldAiCrmNotesCommand::class,\n DeleteReportCommand::class,\n AutomatedReportsRetentionPolicyCommand::class,\n SyncHubspotActiveDeals::class,\n GenerateInternalWebhookToken::class,\n IssueMcpTokenCommand::class,\n RestoreActivityCrmProviderIdCommand::class,\n CleanupActivityTracksCommand::class,\n DeleteUnusedTracksCommand::class,\n RestoreTracksCommand::class,\n HubspotWebhookServiceCommand::class,\n ProcessMergedObjectsCommand::class,\n HubspotJournalPollingCommand::class,\n SetupJournalDealWebhookSubscriptionsCommand::class,\n ListJournalWebhookSubscriptionsCommand::class,\n RemoveGhostParticipantsCommand::class,\n AutodetectAiActivityTypeCommand::class,\n Commands\\Crm\\LogActivitiesCommand::class,\n Commands\\Crm\\MatchOpportunityActivitiesCommand::class,\n PurgeDeletedOpportunitiesCommand::class,\n CleanDuplicateFieldDataCommand::class,\n RetryProspectSummaryCommand::class,\n ProcessHubspotObjectsSyncBatches::class,\n SyncOpportunitiesMissingFieldDataCommand::class,\n RestoreDealAssociationsCommand::class,\n Commands\\Crm\\TestPipedriveOfficialSdkCommand::class,\n ];\n\n private Schedule $schedule;\n private string $output;\n\n protected function schedule(Schedule $schedule): void\n {\n $this->schedule = $schedule;\n $this->output = config('jiminny.scheduler_log');\n\n $schedule->useCache('redis');\n\n $currentMinute = (int) date('i');\n $currentDay = (int) date('w');\n\n $this->scheduleEveryMinute();\n $this->scheduleEveryTwoMinutes();\n $this->scheduleEveryFiveMinutes();\n $this->scheduleEveryTenMinutes();\n $this->scheduleEveryFifteenMinutes();\n $this->scheduleEveryThirtyMinutes();\n $this->scheduleHourly();\n $this->scheduleDaily();\n $this->scheduleWeekly($currentDay);\n $this->scheduleSpecificTimes();\n $this->scheduleDynamic($currentMinute);\n }\n\n protected function scheduleEveryMinute(): void\n {\n $this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();\n $this->scheduleCommand('dialers:monitor-activities')->everyMinute();\n $this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();\n $this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();\n\n $this->schedule->command('mailbox:batch:process', ['--max-batches=15'])\n ->everyMinute()\n ->sendOutputTo($this->output);\n }\n\n protected function scheduleEveryTwoMinutes(): void\n {\n $this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();\n }\n\n protected function scheduleEveryFiveMinutes(): void\n {\n $this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();\n // Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)\n $this->scheduleCommand('crm:sync-hubspot-objects', [], 4)\n ->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');\n $this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();\n\n $this->schedule->command('mailbox:batch:create')\n ->cron('2-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output);\n\n $this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])\n ->cron('3-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ->runInBackground();\n\n $this->schedule->command('hubspot:journal-poll', ['--start'])\n ->everyFiveMinutes()\n ->sendOutputTo($this->output)\n ->runInBackground();\n }\n\n protected function scheduleEveryTenMinutes(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();\n $this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('crm:reset-governor')->everyTenMinutes();\n }\n\n protected function scheduleEveryFifteenMinutes(): void\n {\n $this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();\n $this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');\n $this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n ],\n ])->everyFifteenMinutes();\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->cron('7,22,37,52 * * * *');\n }\n\n protected function scheduleEveryThirtyMinutes(): void\n {\n $this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');\n $this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();\n\n $this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)\n ->between('02:58', '05:29')\n ->everyThirtyMinutes()\n ->runInBackground();\n\n $this->scheduleActivitiesHardDelete();\n }\n\n protected function scheduleHourly(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();\n $this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');\n $this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');\n $this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');\n $this->scheduleCommand('automated-reports:send')->hourly();\n $this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);\n $this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);\n }\n\n protected function scheduleDaily(): void\n {\n $this->scheduleCommand('teams:sync-planhat')->daily();\n $this->scheduleCommand('twilio:sync-addresses')->daily();\n $this->scheduleCommand('twilio:sync-zone-access')->daily();\n $this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();\n $this->scheduleCommand('users:sync-licence-data')->daily();\n $this->scheduleCommand('users:sync-intercom-data')->daily();\n $this->scheduleCommand('nudges:send-expiration-warnings')->daily();\n $this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();\n }\n\n protected function scheduleWeekly(int $currentDay): void\n {\n if ($currentDay === 0) {\n $this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);\n }\n\n if ($currentDay === 6) {\n $this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_AMAZON_CONNECT,\n '--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->saturdays()->at('01:00')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)\n ->saturdays()->at('01:07')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)\n ->saturdays()->at('05:08')->runInBackground();\n $this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')\n ->weeklyOn(6, '6:00');\n $this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')\n ->weeklyOn(6, '7:00');\n }\n }\n\n protected function scheduleSpecificTimes(): void\n {\n $this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_DISCARDED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:20')->runInBackground();\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_PROCESSED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:30')->runInBackground();\n\n $this->scheduleCommand('automated-reports')->dailyAt('01:00');\n $this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');\n $this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');\n $this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');\n $this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');\n $this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');\n $this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('03:05');\n\n\n $this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');\n $this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');\n $this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');\n $this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');\n $this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');\n\n if (! $this->app->environment('production')) {\n $this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)\n ->dailyAt('04:02')->runInBackground();\n }\n\n $this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n ],\n ])->dailyAt('05:05');\n\n if (! $this->app->environment('qa')) {\n $this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');\n }\n\n $this->scheduleCommand('activity:sync-dispositions', [\n Activity::PROVIDER_HUBSPOT,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('07:05');\n }\n\n protected function scheduleDynamic(int $currentMinute): void\n {\n $this->scheduleHourlyFallbackActivitySyncs($currentMinute);\n $this->scheduleBullhornHeartbeat($currentMinute);\n }\n\n private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void\n {\n if ($offsetMinute === 0) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);\n } elseif ($offsetMinute === 1) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);\n } elseif ($offsetMinute === 2) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);\n }\n }\n\n private function scheduleBullhornHeartbeat(int $currentMinute): void\n {\n $bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);\n if ($bhHeartbeatInterval > 0) {\n $minutes = max((int) floor($bhHeartbeatInterval / 60), 1);\n if ($currentMinute % $minutes === 0) {\n $bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);\n if ($minutes > 30) {\n $bhEvent->hourly();\n } else {\n $bhEvent->cron(sprintf('*/%d * * * *', $minutes));\n }\n }\n }\n }\n\n private function scheduleActivitiesHardDelete(): void\n {\n if (config(key: 'jiminny.deploy_region') === 'eu') {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 1000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n } elseif ($this->app->environment('production')) {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 2000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n }\n }\n\n private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void\n {\n $this->scheduleCommand('activity:sync', [\n $provider,\n '--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->hourlyAt($offsetMinute);\n }\n\n /**\n * Register the Closure based commands for the application.\n */\n protected function commands(): void\n {\n require_once base_path('routes/console.php');\n }\n\n private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event\n {\n return $this->schedule\n ->command($name, $options)\n ->withoutOverlapping($expiresAt)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-935282521832906214
|
-8743917468487692599
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\DTO\Invitation;
use Jiminny\DTO\UserEmail;
use Jiminny\Http\Requests\Settings\Teams\CreateInvitationRequest;
use Jiminny\Http\Requests\Settings\Teams\CreateTeamRequest;
use Jiminny\Http\Requests\Settings\Teams\EditTeamRequest;
use Jiminny\Models\Group;
use Jiminny\Models\Invitation;
use Jiminny\Models\Role;
use Jiminny\Models\Team;
use Jiminny\Models\User;
class UserInvitationDTO
{
use UserEmail;
public string $email;
public ?string $secondaryEmail;
public ?int $groupId;
public int $teamId;
public bool $crmRequired;
public array $roleIds;
public bool $isOwner;
public ?User $currentUser = null;
/**
* @param array{
* email: string,
* secondaryEmail: string|null,
* groupId: int|null,
* teamId: int|string,
* crmRequired: bool,
* roleIds: int[],
* isOwner: bool,
* user?: User
* } $attributes
*/
private function __construct(array $attributes)
{
$this->email = mb_strtolower($attributes['email']);
$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);
$this->groupId = $attributes['groupId'];
$this->teamId = (int) $attributes['teamId'];
$this->crmRequired = (bool) $attributes['crmRequired'];
$this->roleIds = $attributes['roleIds'];
$this->isOwner = $attributes['isOwner'];
$this->currentUser = $attributes['user'] ?? null;
}
public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self
{
$roleIds = Role::whereIn('name', [
User::ROLE_ADMIN,
User::ROLE_RECORDER,
])->pluck('id')->toArray();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => $request->getOwnerEmail(),
'secondaryEmail' => null,
'groupId' => null,
'teamId' => $team->getId(),
'crmRequired' => true,
'roleIds' => $roleIds,
'user' => $currentUser,
'isOwner' => true,
]);
}
public static function fromRequest(CreateInvitationRequest $request): self
{
$data = $request->validated();
$groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;
$teamId = Team::uuid($data['team_id'])->getId();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => mb_strtolower($data['email']),
'secondaryEmail' => $data['secondary_email'] ?? null,
'groupId' => $groupId,
'teamId' => $teamId,
'crmRequired' => $data['crm_required'],
'roleIds' => $data['roles'],
'user' => $currentUser,
'isOwner' => false,
]);
}
public static function fromInvitation(Invitation $invitation, User $currentUser): self
{
$roles = $invitation->roles()->get();
$isOwner = $invitation->isOwner();
return new self([
'email' => $invitation->email,
'secondaryEmail' => $invitation->getSecondaryEmail(),
'groupId' => $invitation->group_id,
'teamId' => $invitation->team_id,
'crmRequired' => $invitation->crm_required,
'roleIds' => $roles->pluck('id')->toArray(),
'user' => $currentUser,
'isOwner' => $isOwner,
]);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
17
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Console;
use Illuminate\Console\ConfirmableTrait;
use Illuminate\Console\Scheduling\Event;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Jiminny\Component\Acl\RemoveExpiredRoleChangeEventsCommand;
use Jiminny\Component\ActionItems\Commands\SendActionItemsCommand;
use Jiminny\Component\AiActivityType\Commands\AutodetectAiActivityTypeCommand;
use Jiminny\Component\AskJiminnyAi\Commands\ProphetAnalyzeClosedDealsCommand;
use Jiminny\Component\Cache\Constants;
use Jiminny\Component\DealInsights\Commands\SendDealsUpdateCommand;
use Jiminny\Component\MediaPipeline\Command\MediaPipelineRestartCommand;
use Jiminny\Component\MediaPipeline\Command\ReportActivityProcessingTimeToDatadogCommand;
use Jiminny\Component\MediaPipeline\Command\ReportProcessingStatesToDatadogCommand;
use Jiminny\Component\Transcription\Commands\OverrideTranscriptionLocaleCommand;
use Jiminny\Component\Transcription\Commands\RetryFailedTranscriptionsCommand;
use Jiminny\Component\Transcription\Commands\RetryStuckTranscriptionsCommand;
use Jiminny\Console\Commands\Activities\ActivitiesMatchCrmCommand;
use Jiminny\Console\Commands\Activities\AutologOldActivitiesCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForRetentionTeamsCommand;
use Jiminny\Console\Commands\Activities\DownloadMissingTrackCommand;
use Jiminny\Console\Commands\Activities\FixActivitiesOpportunity;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesTeamsCommand;
use Jiminny\Console\Commands\Activities\ReassignTranscriptCommand;
use Jiminny\Console\Commands\Activities\ReindexRecentActivitiesCommand;
use Jiminny\Console\Commands\Activities\RetryProspectSummaryCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeleteCancelledCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeletePastCommand;
use Jiminny\Console\Commands\Crm\BackfillOpportunityUserFromAccountCommand;
use Jiminny\Console\Commands\Crm\CleanDuplicateFieldDataCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ProcessMergedObjectsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\RestoreDealAssociationsCommand;
use Jiminny\Console\Commands\Crm\ProcessHubspotObjectsSyncBatches;
use Jiminny\Console\Commands\Crm\PurgeDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ListJournalWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\SetupJournalDealWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\SyncHubspotActiveDeals;
use Jiminny\Console\Commands\Crm\SyncOpportunitiesMissingFieldDataCommand;
use Jiminny\Console\Commands\DeleteOldAiCrmNotesCommand;
use Jiminny\Console\Commands\DeleteS3LeftoversCommand;
use Jiminny\Console\Commands\DiarizeViaAiParticipantIdentificationCommand;
use Jiminny\Console\Commands\Elasticsearch\DeleteEmailDocumentsCommand;
use Jiminny\Console\Commands\Elasticsearch\RemoveGhostParticipantsCommand;
use Jiminny\Console\Commands\FlushRolesPermissionsCache;
use Jiminny\Console\Commands\GenerateInternalWebhookToken;
use Jiminny\Console\Commands\IssueMcpTokenCommand;
use Jiminny\Console\Commands\HubspotJournalPollingCommand;
use Jiminny\Console\Commands\HubspotWebhookServiceCommand;
use Jiminny\Console\Commands\Livestream\StopHangingLivestreamsCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteEmailMessagesWithoutActivityCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteInboxEmailsCommand;
use Jiminny\Console\Commands\PurgeSoftDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\PurgeSyncBatchesCommand;
use Jiminny\Console\Commands\RemoveDeleteMarkersCommand;
use Jiminny\Console\Commands\RemoveExpiredNudgesCommand;
use Jiminny\Console\Commands\RemoveUnusedParticipantSpeechesCommand;
use Jiminny\Console\Commands\Reports\AutomatedReportsRetentionPolicyCommand;
use Jiminny\Console\Commands\Reports\DeleteReportCommand;
use Jiminny\Console\Commands\RestoreActivityCrmProviderIdCommand;
use Jiminny\Console\Commands\RestoreActivityTypeCommand;
use Jiminny\Console\Commands\SendNudgeExpirationWarningsCommand;
use Jiminny\Console\Commands\Slack\SyncSlackUserCommand;
use Jiminny\Console\Commands\Teams\SyncTeamUsersCommand;
use Jiminny\Console\Commands\Teams\TeamDeleteCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteDeactivatedCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteRetentionCommand;
use Jiminny\Console\Commands\Teams\TeamSettingPutCommand;
use Jiminny\Console\Commands\Teams\UpdateTeamsCommand;
use Jiminny\Console\Commands\Tracks\CleanupActivityTracksCommand;
use Jiminny\Console\Commands\Tracks\DeleteUnusedTracksCommand;
use Jiminny\Console\Commands\Tracks\RestoreTracksCommand;
use Jiminny\Console\Commands\Transcription\DeleteOldTranscriptionsCommand;
use Jiminny\Console\Commands\Transcription\UpdateOldTranscriptionModelLocalesCommand;
use Jiminny\Console\Commands\Twilio\DeleteChurnedSubAccounts;
use Jiminny\Console\Commands\Twilio\DeletePredefinedSubAccounts;
use Jiminny\Console\Commands\Twilio\ReleaseNumbersCommand;
use Jiminny\Jobs\Activity\SyncActivity;
use Jiminny\Models\Activity;
use Jiminny\Models\InboxEmail;
use Jiminny\Services\RecallAI\Commands\ImportRegionMeetingCommand;
use Jiminny\Services\RecallAI\Commands\ScheduleBotCommand;
class Kernel extends ConsoleKernel
{
use ConfirmableTrait;
/**
* The Artisan commands provided by your application.
*
* @var string[]
*/
protected $commands = [
Commands\GeckoExport\GeckoExportTranscriptCommand::class,
Commands\GeckoExport\GeckoExportTranscriptionCommand::class,
Commands\GeckoExport\GeckoExportParticipantSpeechesCommand::class,
Commands\Activities\DeleteForCoachesCommand::class,
ReindexRecentActivitiesCommand::class,
Commands\Crm\BullhornPingCommand::class,
Commands\Crm\BullhornSessionCommand::class,
Commands\Crm\BullhornSearchCommand::class,
Commands\PlaybackThemes\TopicsConsolidateCommand::class,
Commands\PlaybackThemes\PlaybackThemesCopyCommand::class,
Commands\PlaybackThemes\AssignTopicsUsedBySingleTeamCommand::class,
Commands\PlaybackThemes\PlaybackThemesMigrateToVersionsCommand::class,
Commands\Vocabulary\VocabularyCopyCommand::class,
Commands\Transcription\TranscriptionPrintRaw::class,
Commands\Migrate\JiminnyMigratePopulateActivitySourceCommand::class,
Commands\EngagementStats\JiminnyEngagementStatsExplainCommand::class,
Commands\EngagementStatsRegenerateCommand::class,
Commands\Analytics\NumberOfActivitiesPerActivityTypeCommand::class,
Commands\Elasticsearch\MappingRunCommand::class,
Commands\Elasticsearch\MappingInstallCommand::class,
Commands\Elasticsearch\UpdateEsMappingSettingsCommand::class,
Commands\Analytics\TranscriptionWordMatchCommand::class,
Commands\JiminnyCacheClearCommand::class,
Commands\Transcription\TranscriptionSearchCommand::class,
RetryStuckTranscriptionsCommand::class,
RetryFailedTranscriptionsCommand::class,
Commands\JiminnyDebugCommand::class,
Commands\RunAiCallScoringForUntypedActivitiesCommand::class,
Commands\Calendars\SyncCalendars::class,
Commands\Calendars\SyncDeletedEvents::class,
Commands\Twilio\FetchMetrics::class,
Commands\Twilio\FetchEvents::class,
Commands\Twilio\FetchSummary::class,
Commands\Twilio\SyncZoneAccess::class,
Commands\DatabaseTableCount::class,
Commands\PurgeConferences::class,
Commands\ResetElasticSearch::class,
Commands\CreateDatabaseUsers::class,
Commands\Activities\NotifyNotLogged::class,
Commands\Crm\SyncTeamMetadata::class,
Commands\Crm\SyncProfileMetadata::class,
Commands\Crm\SyncContact::class,
Commands\Crm\SyncObjects::class,
Commands\Crm\SyncHubspotObjects::class,
Commands\Crm\SyncAccount::class,
Commands\Crm\ResetGovernorLimits::class,
Commands\Crm\ManageSyncStrategyCommand::class,
Commands\ImportRecording::class,
Commands\TrackImported::class,
Commands\Twilio\RecoverTwilioTracksCommand::class,
Commands\Crm\SetupLayouts::class,
Commands\Tracks\SyncTwilioTracks::class,
Commands\Activities\StatusCount::class,
Commands\Mailboxes\TextRelay\WatchMailboxEvents::class,
Commands\Mailboxes\InboxCreate::class,
Commands\Mailboxes\InboxSync::class,
Commands\Mailboxes\BatchCreate::class,
Commands\Mailboxes\BatchProcess::class,
Commands\Mailboxes\InboxPurge::class,
Commands\Mailboxes\BatchRetryFailed::class,
Commands\Mailboxes\BatchFailStalled::class,
Commands\Mailboxes\SkipListsRefresh::class,
Commands\Mailboxes\SkipListsDump::class,
Commands\Mailboxes\TextRelay\SyncMailbox::class,
Commands\Mailboxes\DeleteInboxEmailsCommand::class,
Commands\Mailboxes\DeleteEmailMessagesCommand::class,
DeleteEmailMessagesWithoutActivityCommand::class,
Commands\Tracks\CheckIntegrity::class,
Commands\Twilio\RemoteLifecycle::class,
Commands\Twilio\SyncNumbers::class,
Commands\Crm\SetupActivityTypeForFollowUp::class,
Commands\Activities\CheckPlayable::class,
Commands\Activities\ActivityDeleteCommand::class,
Commands\Activities\Copy::class,
Commands\Activities\ActivityHardDeleteCommand::class,
Commands\Reports\Team::class,
Commands\Reports\GenerateMarketingReport::class,
Commands\Reports\AutomatedReportsCommand::class,
Commands\Reports\AutomatedReportsSendCommand::class,
Commands\MuteOrganizerChannel::class,
Commands\Tracks\DeleteTracks::class,
Commands\Tracks\RetryDownload::class,
Commands\Tracks\RetryFailedDownloads::class,
Commands\Twilio\SyncAddresses::class,
Commands\Activities\UpdateElasticSearch::class,
Commands\MakeSlackLiveCoachingChatNotesOn::class,
Commands\Activities\PreMeetingNotification::class,
ScheduleBotCommand::class,
ImportRegionMeetingCommand::class,
Commands\Activities\MonitorMeetingCountCommand::class,
Commands\Activities\MonitorMeetingStartCommand::class,
Commands\Activities\MonitorMeetingEndCommand::class,
Commands\SyncActivity::class,
Commands\PhpApm::class,
Commands\Crm\SyncOpportunity::class,
Commands\Crm\SyncLead::class,
Commands\Users\SyncLicenceDataToSalesforce::class,
Commands\Crm\UpdateOpportunitySpecifications::class,
Commands\Users\SyncToIntercom::class,
Commands\Users\SyncToUserPilot::class,
Commands\Teams\SyncToPlanhat::class,
Commands\Twilio\SetZoneAccess::class,
Commands\Users\CreateDefaultSavedSearchesCommand::class,
Commands\Crm\SendNotLogged::class,
Commands\Teams\DeactivateTeamCommand::class,
Commands\Crm\SyncFieldMetadata::class,
Commands\Postmark\SyncEmailTemplatesCommand::class,
Commands\PlaybackThemes\ImportTriggersFromTranslatedCsvCommand::class,
Commands\Activities\PreMeetingReminder::class,
Commands\Activities\CustomerActivitiesExport::class,
Commands\Users\RefreshAccessToken::class,
Commands\Calendars\SetupCalendarSubscription::class,
Commands\Activities\InviteMeetingBot::class,
Commands\Activities\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,
Commands\Crm\MigrateProvider::class,
Commands\Activities\MigrateLocationFromCalendarEventToActivities::class,
Commands\HelperTruncateCoachingTables::class,
Commands\FixCrossTenantIssues::class,
Commands\Activities\CloudCall\SetupIntegration::class,
Commands\Activities\CloudTalk\FixTimeZone::class,
Commands\Activities\Orum\SetupIntegration::class,
Commands\Activities\JustCall\SetupIntegration::class,
Commands\Activities\RingCentral\AddInboundPromptSupport::class,
Commands\Dialers\Dialpad\SubscribeToWebhooks::class,
Commands\RecalculateDealRisksCommand::class,
SendDealsUpdateCommand::class,
Commands\Activities\SetProviderCapabilitiesField::class,
Commands\Teams\InitiallySetNotificationProviderTeamsTable::class,
Commands\Crm\AddLayoutEntities::class,
Commands\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,
Commands\JiminnyTokenInfoCommand::class,
Commands\JiminnySetEncryptedTokenManagerModeCommand::class,
Commands\EncryptTokensCommand::class,
Commands\Dialers\Aircall\CheckAndRenewWebhooks::class,
Commands\Migrate\MigrateTeamRegionCommand::class,
Commands\ManageScimForTeam::class,
Commands\Dialers\SyncUsersCommand::class,
Commands\WhichWorkerIsWorkingOnWhichJob::class,
Commands\GroupSetDefaultLanguageCommand::class,
Commands\Dev\AddRateLimitCommand::class,
Commands\Dev\ImportCallsCommand::class,
Commands\DealInsights\BuildDealInsightsLayoutCommand::class,
Commands\DealInsights\DeleteAskJiminnyDealPrompts::class,
Commands\Crm\MatchCrmObjectsCommand::class,
Commands\Activities\SetupIntegration\EightByEight::class,
Commands\Calendars\RemoveCalendarEventActivitiesCommand::class,
Commands\Activities\Migrator\MigrateFromGongCommand::class,
Commands\Activities\Migrator\MigrateFromChorusCommand::class,
Commands\Activities\Migrator\MigrateFromLeexiCommand::class,
Commands\Activities\Migrator\MigrateFromAvomaCommand::class,
Commands\Activities\Migrator\MigrateFromClariCommand::class,
Commands\Activities\SetupIntegration\ConnectAndSell::class,
Commands\Activities\SetupIntegration\CloudTalk::class,
Commands\Users\CreateConferenceSlug::class,
Commands\Elasticsearch\AsyncUpdateEsEntities::class,
Commands\Elasticsearch\ResetAsyncElasticSearchCommand::class,
Commands\Playlists\PlaylistSharesUpdateCommand::class,
Commands\Crm\AutologDelayedCommand::class,
Commands\Activities\HydrateDefaultActivityTypeCommand::class,
Commands\Crm\CheckActivityLoggableCommand::class,
Commands\Activities\MonitorDialerActivitiesCommand::class,
Commands\Activities\SetupIntegration\Xant::class,
Commands\ImportUsersFromCsvFile::class,
Commands\DevPostmanCommand::class,
Commands\Playlists\FixTreeStructureCommand::class,
Commands\Zoom\ResolvePmiLinksCommand::class,
Commands\MarkBranchForEnvironmentPipelineCommand::class,
Commands\Activities\ProbeMediaSegmentsCommand::class,
Commands\Activities\SetupIntegration\AmazonConnect::class,
Commands\Playbooks\ChangePlaybookActivityFieldCommand::class,
MediaPipelineRestartCommand::class,
Commands\Dev\FixHubSpotTokens::class,
Commands\Dev\MonitorSocialAccountsState::class,
Commands\Activities\SetupIntegration\Vonage::class,
Commands\Activities\SetupIntegration\TwilioFlex::class,
Commands\Activities\SetupIntegration\TwilioFlexDirect::class,
Commands\Activities\SetupIntegration\TwilioFlexSetDialerAuthCredentialsCommand::class,
Commands\Activities\SetupIntegration\TwilioSetS3RecordingCredentialsCommand::class,
SendActionItemsCommand::class,
Commands\Users\ChangeEmail::class,
Commands\Calendars\ListUserGoogleCalendars::class,
Commands\Activities\JustCall\SyncPlaybackLinkToCrmCommand::class,
Commands\Activities\HydrateCallWithCrmDataCommand::class,
Commands\Activities\UpdateActivityElasticSearchDocumentCommand::class,
Commands\Activities\SetupIntegration\Talkdesk::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookListCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookShow::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,
Commands\Activities\SetupIntegration\TwilioVideo::class,
Commands\Crm\SetupCloseCrm::class,
Commands\Crm\SetupCopperCrm::class,
Commands\Crm\FullSyncOpportunityCommand::class,
Commands\Crm\IntegrationApp\CrmEntitiesFullSyncCommand::class,
Commands\Crm\IntegrationApp\ValidateConnectionCommand::class,
Commands\Activities\Workflow\RefreshCrmData::class,
Commands\Activities\Migrator\AnalyseGongCalls::class,
Commands\Users\AddVoiceRoleToRecorderCommand::class,
Commands\Activities\SyncMissingCallDispositions::class,
Commands\Calendars\RemoveFutureCalendarEvents::class,
FlushRolesPermissionsCache::class,
Commands\Activities\SetupIntegration\FiveNine::class,
CalendarEventDeleteCancelledCommand::class,
CalendarEventDeletePastCommand::class,
ReportActivityProcessingTimeToDatadogCommand::class,
ReportProcessingStatesToDatadogCommand::class,
ReleaseNumbersCommand::class,
BackfillOpportunityUserFromAccountCommand::class,
RemoveExpiredRoleChangeEventsCommand::class,
RemoveExpiredNudgesCommand::class,
SendNudgeExpirationWarningsCommand::class,
AutologOldActivitiesCommand::class,
RemoveUnusedParticipantSpeechesCommand::class,
DeleteActivitiesForChurnedTeamsCommand::class,
HardDeleteActivitiesForChurnedTeamsCommand::class,
TeamDeleteCommand::class,
TeamsDeleteDeactivatedCommand::class,
UpdateTeamsCommand::class,
OverrideTranscriptionLocaleCommand::class,
SyncSlackUserCommand::class,
PurgeSoftDeletedOpportunitiesCommand::class,
PurgeSyncBatchesCommand::class,
ProphetAnalyzeClosedDealsCommand::class,
DeleteChurnedSubAccounts::class,
Commands\ProphetAi\DumpContext::class,
DeletePredefinedSubAccounts::class,
DeleteActivitiesForRetentionTeamsCommand::class,
HardDeleteActivitiesTeamsCommand::class,
TeamsDeleteRetentionCommand::class,
TeamSettingPutCommand::class,
StopHangingLivestreamsCommand::class,
FixActivitiesOpportunity::class,
Commands\Activities\SetupIntegration\Salesforce\SetupSalesforceIntegrationCommand::class,
UpdateOldTranscriptionModelLocalesCommand::class,
Commands\Dev\FixMissMatchedCrmActivitiesCommand::class,
DownloadMissingTrackCommand::class,
ActivitiesMatchCrmCommand::class,
DeleteEmailDocumentsCommand::class,
DeleteOldTranscriptionsCommand::class,
DeleteS3LeftoversCommand::class,
RemoveDeleteMarkersCommand::class,
SyncTeamUsersCommand::class,
ReassignTranscriptCommand::class,
DiarizeViaAiParticipantIdentificationCommand::class,
RestoreActivityTypeCommand::class,
DeleteOldAiCrmNotesCommand::class,
DeleteReportCommand::class,
AutomatedReportsRetentionPolicyCommand::class,
SyncHubspotActiveDeals::class,
GenerateInternalWebhookToken::class,
IssueMcpTokenCommand::class,
RestoreActivityCrmProviderIdCommand::class,
CleanupActivityTracksCommand::class,
DeleteUnusedTracksCommand::class,
RestoreTracksCommand::class,
HubspotWebhookServiceCommand::class,
ProcessMergedObjectsCommand::class,
HubspotJournalPollingCommand::class,
SetupJournalDealWebhookSubscriptionsCommand::class,
ListJournalWebhookSubscriptionsCommand::class,
RemoveGhostParticipantsCommand::class,
AutodetectAiActivityTypeCommand::class,
Commands\Crm\LogActivitiesCommand::class,
Commands\Crm\MatchOpportunityActivitiesCommand::class,
PurgeDeletedOpportunitiesCommand::class,
CleanDuplicateFieldDataCommand::class,
RetryProspectSummaryCommand::class,
ProcessHubspotObjectsSyncBatches::class,
SyncOpportunitiesMissingFieldDataCommand::class,
RestoreDealAssociationsCommand::class,
Commands\Crm\TestPipedriveOfficialSdkCommand::class,
];
private Schedule $schedule;
private string $output;
protected function schedule(Schedule $schedule): void
{
$this->schedule = $schedule;
$this->output = config('jiminny.scheduler_log');
$schedule->useCache('redis');
$currentMinute = (int) date('i');
$currentDay = (int) date('w');
$this->scheduleEveryMinute();
$this->scheduleEveryTwoMinutes();
$this->scheduleEveryFiveMinutes();
$this->scheduleEveryTenMinutes();
$this->scheduleEveryFifteenMinutes();
$this->scheduleEveryThirtyMinutes();
$this->scheduleHourly();
$this->scheduleDaily();
$this->scheduleWeekly($currentDay);
$this->scheduleSpecificTimes();
$this->scheduleDynamic($currentMinute);
}
protected function scheduleEveryMinute(): void
{
$this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();
$this->scheduleCommand('dialers:monitor-activities')->everyMinute();
$this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();
$this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();
$this->schedule->command('mailbox:batch:process', ['--max-batches=15'])
->everyMinute()
->sendOutputTo($this->output);
}
protected function scheduleEveryTwoMinutes(): void
{
$this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();
}
protected function scheduleEveryFiveMinutes(): void
{
$this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();
// Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)
$this->scheduleCommand('crm:sync-hubspot-objects', [], 4)
->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');
$this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();
$this->schedule->command('mailbox:batch:create')
->cron('2-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output);
$this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])
->cron('3-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output)
->runInBackground();
$this->schedule->command('hubspot:journal-poll', ['--start'])
->everyFiveMinutes()
->sendOutputTo($this->output)
->runInBackground();
}
protected function scheduleEveryTenMinutes(): void
{
$this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();
$this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('crm:reset-governor')->everyTenMinutes();
}
protected function scheduleEveryFifteenMinutes(): void
{
$this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();
$this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');
$this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
],
])->everyFifteenMinutes();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->cron('7,22,37,52 * * * *');
}
protected function scheduleEveryThirtyMinutes(): void
{
$this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');
$this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();
$this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)
->between('02:58', '05:29')
->everyThirtyMinutes()
->runInBackground();
$this->scheduleActivitiesHardDelete();
}
protected function scheduleHourly(): void
{
$this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();
$this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');
$this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');
$this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');
$this->scheduleCommand('automated-reports:send')->hourly();
$this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);
$this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);
}
protected function scheduleDaily(): void
{
$this->scheduleCommand('teams:sync-planhat')->daily();
$this->scheduleCommand('twilio:sync-addresses')->daily();
$this->scheduleCommand('twilio:sync-zone-access')->daily();
$this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();
$this->scheduleCommand('users:sync-licence-data')->daily();
$this->scheduleCommand('users:sync-intercom-data')->daily();
$this->scheduleCommand('nudges:send-expiration-warnings')->daily();
$this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();
}
protected function scheduleWeekly(int $currentDay): void
{
if ($currentDay === 0) {
$this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);
}
if ($currentDay === 6) {
$this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_AMAZON_CONNECT,
'--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->saturdays()->at('01:00')->runInBackground();
$this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)
->saturdays()->at('01:07')->runInBackground();
$this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)
->saturdays()->at('05:08')->runInBackground();
$this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')
->weeklyOn(6, '6:00');
$this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')
->weeklyOn(6, '7:00');
}
}
protected function scheduleSpecificTimes(): void
{
$this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_DISCARDED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:20')->runInBackground();
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_PROCESSED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:30')->runInBackground();
$this->scheduleCommand('automated-reports')->dailyAt('01:00');
$this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');
$this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');
$this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');
$this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');
$this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');
$this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('03:05');
$this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');
$this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');
$this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');
$this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');
$this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');
if (! $this->app->environment('production')) {
$this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)
->dailyAt('04:02')->runInBackground();
}
$this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
],
])->dailyAt('05:05');
if (! $this->app->environment('qa')) {
$this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');
}
$this->scheduleCommand('activity:sync-dispositions', [
Activity::PROVIDER_HUBSPOT,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('07:05');
}
protected function scheduleDynamic(int $currentMinute): void
{
$this->scheduleHourlyFallbackActivitySyncs($currentMinute);
$this->scheduleBullhornHeartbeat($currentMinute);
}
private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void
{
if ($offsetMinute === 0) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);
} elseif ($offsetMinute === 1) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);
} elseif ($offsetMinute === 2) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);
}
}
private function scheduleBullhornHeartbeat(int $currentMinute): void
{
$bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);
if ($bhHeartbeatInterval > 0) {
$minutes = max((int) floor($bhHeartbeatInterval / 60), 1);
if ($currentMinute % $minutes === 0) {
$bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);
if ($minutes > 30) {
$bhEvent->hourly();
} else {
$bhEvent->cron(sprintf('*/%d * * * *', $minutes));
}
}
}
}
private function scheduleActivitiesHardDelete(): void
{
if (config(key: 'jiminny.deploy_region') === 'eu') {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 1000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
} elseif ($this->app->environment('production')) {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 2000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
}
}
private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void
{
$this->scheduleCommand('activity:sync', [
$provider,
'--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->hourlyAt($offsetMinute);
}
/**
* Register the Closure based commands for the application.
*/
protected function commands(): void
{
require_once base_path('routes/console.php');
}
private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event
{
return $this->schedule
->command($name, $options)
->withoutOverlapping($expiresAt)
->onOneServer()
->sendOutputTo($this->output)
;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50070
|
1776
|
32
|
2026-05-18T07:14:40.568786+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088480568_m2.jpg...
|
PhpStorm
|
faVsco.js – Kernel.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\DTO\Invitation;
use Jiminny\DTO\UserEmail;
use Jiminny\Http\Requests\Settings\Teams\CreateInvitationRequest;
use Jiminny\Http\Requests\Settings\Teams\CreateTeamRequest;
use Jiminny\Http\Requests\Settings\Teams\EditTeamRequest;
use Jiminny\Models\Group;
use Jiminny\Models\Invitation;
use Jiminny\Models\Role;
use Jiminny\Models\Team;
use Jiminny\Models\User;
class UserInvitationDTO
{
use UserEmail;
public string $email;
public ?string $secondaryEmail;
public ?int $groupId;
public int $teamId;
public bool $crmRequired;
public array $roleIds;
public bool $isOwner;
public ?User $currentUser = null;
/**
* @param array{
* email: string,
* secondaryEmail: string|null,
* groupId: int|null,
* teamId: int|string,
* crmRequired: bool,
* roleIds: int[],
* isOwner: bool,
* user?: User
* } $attributes
*/
private function __construct(array $attributes)
{
$this->email = mb_strtolower($attributes['email']);
$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);
$this->groupId = $attributes['groupId'];
$this->teamId = (int) $attributes['teamId'];
$this->crmRequired = (bool) $attributes['crmRequired'];
$this->roleIds = $attributes['roleIds'];
$this->isOwner = $attributes['isOwner'];
$this->currentUser = $attributes['user'] ?? null;
}
public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self
{
$roleIds = Role::whereIn('name', [
User::ROLE_ADMIN,
User::ROLE_RECORDER,
])->pluck('id')->toArray();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => $request->getOwnerEmail(),
'secondaryEmail' => null,
'groupId' => null,
'teamId' => $team->getId(),
'crmRequired' => true,
'roleIds' => $roleIds,
'user' => $currentUser,
'isOwner' => true,
]);
}
public static function fromRequest(CreateInvitationRequest $request): self
{
$data = $request->validated();
$groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;
$teamId = Team::uuid($data['team_id'])->getId();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => mb_strtolower($data['email']),
'secondaryEmail' => $data['secondary_email'] ?? null,
'groupId' => $groupId,
'teamId' => $teamId,
'crmRequired' => $data['crm_required'],
'roleIds' => $data['roles'],
'user' => $currentUser,
'isOwner' => false,
]);
}
public static function fromInvitation(Invitation $invitation, User $currentUser): self
{
$roles = $invitation->roles()->get();
$isOwner = $invitation->isOwner();
return new self([
'email' => $invitation->email,
'secondaryEmail' => $invitation->getSecondaryEmail(),
'groupId' => $invitation->group_id,
'teamId' => $invitation->team_id,
'crmRequired' => $invitation->crm_required,
'roleIds' => $roles->pluck('id')->toArray(),
'user' => $currentUser,
'isOwner' => $isOwner,
]);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
17
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Console;
use Illuminate\Console\ConfirmableTrait;
use Illuminate\Console\Scheduling\Event;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Jiminny\Component\Acl\RemoveExpiredRoleChangeEventsCommand;
use Jiminny\Component\ActionItems\Commands\SendActionItemsCommand;
use Jiminny\Component\AiActivityType\Commands\AutodetectAiActivityTypeCommand;
use Jiminny\Component\AskJiminnyAi\Commands\ProphetAnalyzeClosedDealsCommand;
use Jiminny\Component\Cache\Constants;
use Jiminny\Component\DealInsights\Commands\SendDealsUpdateCommand;
use Jiminny\Component\MediaPipeline\Command\MediaPipelineRestartCommand;
use Jiminny\Component\MediaPipeline\Command\ReportActivityProcessingTimeToDatadogCommand;
use Jiminny\Component\MediaPipeline\Command\ReportProcessingStatesToDatadogCommand;
use Jiminny\Component\Transcription\Commands\OverrideTranscriptionLocaleCommand;
use Jiminny\Component\Transcription\Commands\RetryFailedTranscriptionsCommand;
use Jiminny\Component\Transcription\Commands\RetryStuckTranscriptionsCommand;
use Jiminny\Console\Commands\Activities\ActivitiesMatchCrmCommand;
use Jiminny\Console\Commands\Activities\AutologOldActivitiesCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForRetentionTeamsCommand;
use Jiminny\Console\Commands\Activities\DownloadMissingTrackCommand;
use Jiminny\Console\Commands\Activities\FixActivitiesOpportunity;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesTeamsCommand;
use Jiminny\Console\Commands\Activities\ReassignTranscriptCommand;
use Jiminny\Console\Commands\Activities\ReindexRecentActivitiesCommand;
use Jiminny\Console\Commands\Activities\RetryProspectSummaryCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeleteCancelledCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeletePastCommand;
use Jiminny\Console\Commands\Crm\BackfillOpportunityUserFromAccountCommand;
use Jiminny\Console\Commands\Crm\CleanDuplicateFieldDataCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ProcessMergedObjectsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\RestoreDealAssociationsCommand;
use Jiminny\Console\Commands\Crm\ProcessHubspotObjectsSyncBatches;
use Jiminny\Console\Commands\Crm\PurgeDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ListJournalWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\SetupJournalDealWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\SyncHubspotActiveDeals;
use Jiminny\Console\Commands\Crm\SyncOpportunitiesMissingFieldDataCommand;
use Jiminny\Console\Commands\DeleteOldAiCrmNotesCommand;
use Jiminny\Console\Commands\DeleteS3LeftoversCommand;
use Jiminny\Console\Commands\DiarizeViaAiParticipantIdentificationCommand;
use Jiminny\Console\Commands\Elasticsearch\DeleteEmailDocumentsCommand;
use Jiminny\Console\Commands\Elasticsearch\RemoveGhostParticipantsCommand;
use Jiminny\Console\Commands\FlushRolesPermissionsCache;
use Jiminny\Console\Commands\GenerateInternalWebhookToken;
use Jiminny\Console\Commands\IssueMcpTokenCommand;
use Jiminny\Console\Commands\HubspotJournalPollingCommand;
use Jiminny\Console\Commands\HubspotWebhookServiceCommand;
use Jiminny\Console\Commands\Livestream\StopHangingLivestreamsCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteEmailMessagesWithoutActivityCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteInboxEmailsCommand;
use Jiminny\Console\Commands\PurgeSoftDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\PurgeSyncBatchesCommand;
use Jiminny\Console\Commands\RemoveDeleteMarkersCommand;
use Jiminny\Console\Commands\RemoveExpiredNudgesCommand;
use Jiminny\Console\Commands\RemoveUnusedParticipantSpeechesCommand;
use Jiminny\Console\Commands\Reports\AutomatedReportsRetentionPolicyCommand;
use Jiminny\Console\Commands\Reports\DeleteReportCommand;
use Jiminny\Console\Commands\RestoreActivityCrmProviderIdCommand;
use Jiminny\Console\Commands\RestoreActivityTypeCommand;
use Jiminny\Console\Commands\SendNudgeExpirationWarningsCommand;
use Jiminny\Console\Commands\Slack\SyncSlackUserCommand;
use Jiminny\Console\Commands\Teams\SyncTeamUsersCommand;
use Jiminny\Console\Commands\Teams\TeamDeleteCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteDeactivatedCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteRetentionCommand;
use Jiminny\Console\Commands\Teams\TeamSettingPutCommand;
use Jiminny\Console\Commands\Teams\UpdateTeamsCommand;
use Jiminny\Console\Commands\Tracks\CleanupActivityTracksCommand;
use Jiminny\Console\Commands\Tracks\DeleteUnusedTracksCommand;
use Jiminny\Console\Commands\Tracks\RestoreTracksCommand;
use Jiminny\Console\Commands\Transcription\DeleteOldTranscriptionsCommand;
use Jiminny\Console\Commands\Transcription\UpdateOldTranscriptionModelLocalesCommand;
use Jiminny\Console\Commands\Twilio\DeleteChurnedSubAccounts;
use Jiminny\Console\Commands\Twilio\DeletePredefinedSubAccounts;
use Jiminny\Console\Commands\Twilio\ReleaseNumbersCommand;
use Jiminny\Jobs\Activity\SyncActivity;
use Jiminny\Models\Activity;
use Jiminny\Models\InboxEmail;
use Jiminny\Services\RecallAI\Commands\ImportRegionMeetingCommand;
use Jiminny\Services\RecallAI\Commands\ScheduleBotCommand;
class Kernel extends ConsoleKernel
{
use ConfirmableTrait;
/**
* The Artisan commands provided by your application.
*
* @var string[]
*/
protected $commands = [
Commands\GeckoExport\GeckoExportTranscriptCommand::class,
Commands\GeckoExport\GeckoExportTranscriptionCommand::class,
Commands\GeckoExport\GeckoExportParticipantSpeechesCommand::class,
Commands\Activities\DeleteForCoachesCommand::class,
ReindexRecentActivitiesCommand::class,
Commands\Crm\BullhornPingCommand::class,
Commands\Crm\BullhornSessionCommand::class,
Commands\Crm\BullhornSearchCommand::class,
Commands\PlaybackThemes\TopicsConsolidateCommand::class,
Commands\PlaybackThemes\PlaybackThemesCopyCommand::class,
Commands\PlaybackThemes\AssignTopicsUsedBySingleTeamCommand::class,
Commands\PlaybackThemes\PlaybackThemesMigrateToVersionsCommand::class,
Commands\Vocabulary\VocabularyCopyCommand::class,
Commands\Transcription\TranscriptionPrintRaw::class,
Commands\Migrate\JiminnyMigratePopulateActivitySourceCommand::class,
Commands\EngagementStats\JiminnyEngagementStatsExplainCommand::class,
Commands\EngagementStatsRegenerateCommand::class,
Commands\Analytics\NumberOfActivitiesPerActivityTypeCommand::class,
Commands\Elasticsearch\MappingRunCommand::class,
Commands\Elasticsearch\MappingInstallCommand::class,
Commands\Elasticsearch\UpdateEsMappingSettingsCommand::class,
Commands\Analytics\TranscriptionWordMatchCommand::class,
Commands\JiminnyCacheClearCommand::class,
Commands\Transcription\TranscriptionSearchCommand::class,
RetryStuckTranscriptionsCommand::class,
RetryFailedTranscriptionsCommand::class,
Commands\JiminnyDebugCommand::class,
Commands\RunAiCallScoringForUntypedActivitiesCommand::class,
Commands\Calendars\SyncCalendars::class,
Commands\Calendars\SyncDeletedEvents::class,
Commands\Twilio\FetchMetrics::class,
Commands\Twilio\FetchEvents::class,
Commands\Twilio\FetchSummary::class,
Commands\Twilio\SyncZoneAccess::class,
Commands\DatabaseTableCount::class,
Commands\PurgeConferences::class,
Commands\ResetElasticSearch::class,
Commands\CreateDatabaseUsers::class,
Commands\Activities\NotifyNotLogged::class,
Commands\Crm\SyncTeamMetadata::class,
Commands\Crm\SyncProfileMetadata::class,
Commands\Crm\SyncContact::class,
Commands\Crm\SyncObjects::class,
Commands\Crm\SyncHubspotObjects::class,
Commands\Crm\SyncAccount::class,
Commands\Crm\ResetGovernorLimits::class,
Commands\Crm\ManageSyncStrategyCommand::class,
Commands\ImportRecording::class,
Commands\TrackImported::class,
Commands\Twilio\RecoverTwilioTracksCommand::class,
Commands\Crm\SetupLayouts::class,
Commands\Tracks\SyncTwilioTracks::class,
Commands\Activities\StatusCount::class,
Commands\Mailboxes\TextRelay\WatchMailboxEvents::class,
Commands\Mailboxes\InboxCreate::class,
Commands\Mailboxes\InboxSync::class,
Commands\Mailboxes\BatchCreate::class,
Commands\Mailboxes\BatchProcess::class,
Commands\Mailboxes\InboxPurge::class,
Commands\Mailboxes\BatchRetryFailed::class,
Commands\Mailboxes\BatchFailStalled::class,
Commands\Mailboxes\SkipListsRefresh::class,
Commands\Mailboxes\SkipListsDump::class,
Commands\Mailboxes\TextRelay\SyncMailbox::class,
Commands\Mailboxes\DeleteInboxEmailsCommand::class,
Commands\Mailboxes\DeleteEmailMessagesCommand::class,
DeleteEmailMessagesWithoutActivityCommand::class,
Commands\Tracks\CheckIntegrity::class,
Commands\Twilio\RemoteLifecycle::class,
Commands\Twilio\SyncNumbers::class,
Commands\Crm\SetupActivityTypeForFollowUp::class,
Commands\Activities\CheckPlayable::class,
Commands\Activities\ActivityDeleteCommand::class,
Commands\Activities\Copy::class,
Commands\Activities\ActivityHardDeleteCommand::class,
Commands\Reports\Team::class,
Commands\Reports\GenerateMarketingReport::class,
Commands\Reports\AutomatedReportsCommand::class,
Commands\Reports\AutomatedReportsSendCommand::class,
Commands\MuteOrganizerChannel::class,
Commands\Tracks\DeleteTracks::class,
Commands\Tracks\RetryDownload::class,
Commands\Tracks\RetryFailedDownloads::class,
Commands\Twilio\SyncAddresses::class,
Commands\Activities\UpdateElasticSearch::class,
Commands\MakeSlackLiveCoachingChatNotesOn::class,
Commands\Activities\PreMeetingNotification::class,
ScheduleBotCommand::class,
ImportRegionMeetingCommand::class,
Commands\Activities\MonitorMeetingCountCommand::class,
Commands\Activities\MonitorMeetingStartCommand::class,
Commands\Activities\MonitorMeetingEndCommand::class,
Commands\SyncActivity::class,
Commands\PhpApm::class,
Commands\Crm\SyncOpportunity::class,
Commands\Crm\SyncLead::class,
Commands\Users\SyncLicenceDataToSalesforce::class,
Commands\Crm\UpdateOpportunitySpecifications::class,
Commands\Users\SyncToIntercom::class,
Commands\Users\SyncToUserPilot::class,
Commands\Teams\SyncToPlanhat::class,
Commands\Twilio\SetZoneAccess::class,
Commands\Users\CreateDefaultSavedSearchesCommand::class,
Commands\Crm\SendNotLogged::class,
Commands\Teams\DeactivateTeamCommand::class,
Commands\Crm\SyncFieldMetadata::class,
Commands\Postmark\SyncEmailTemplatesCommand::class,
Commands\PlaybackThemes\ImportTriggersFromTranslatedCsvCommand::class,
Commands\Activities\PreMeetingReminder::class,
Commands\Activities\CustomerActivitiesExport::class,
Commands\Users\RefreshAccessToken::class,
Commands\Calendars\SetupCalendarSubscription::class,
Commands\Activities\InviteMeetingBot::class,
Commands\Activities\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,
Commands\Crm\MigrateProvider::class,
Commands\Activities\MigrateLocationFromCalendarEventToActivities::class,
Commands\HelperTruncateCoachingTables::class,
Commands\FixCrossTenantIssues::class,
Commands\Activities\CloudCall\SetupIntegration::class,
Commands\Activities\CloudTalk\FixTimeZone::class,
Commands\Activities\Orum\SetupIntegration::class,
Commands\Activities\JustCall\SetupIntegration::class,
Commands\Activities\RingCentral\AddInboundPromptSupport::class,
Commands\Dialers\Dialpad\SubscribeToWebhooks::class,
Commands\RecalculateDealRisksCommand::class,
SendDealsUpdateCommand::class,
Commands\Activities\SetProviderCapabilitiesField::class,
Commands\Teams\InitiallySetNotificationProviderTeamsTable::class,
Commands\Crm\AddLayoutEntities::class,
Commands\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,
Commands\JiminnyTokenInfoCommand::class,
Commands\JiminnySetEncryptedTokenManagerModeCommand::class,
Commands\EncryptTokensCommand::class,
Commands\Dialers\Aircall\CheckAndRenewWebhooks::class,
Commands\Migrate\MigrateTeamRegionCommand::class,
Commands\ManageScimForTeam::class,
Commands\Dialers\SyncUsersCommand::class,
Commands\WhichWorkerIsWorkingOnWhichJob::class,
Commands\GroupSetDefaultLanguageCommand::class,
Commands\Dev\AddRateLimitCommand::class,
Commands\Dev\ImportCallsCommand::class,
Commands\DealInsights\BuildDealInsightsLayoutCommand::class,
Commands\DealInsights\DeleteAskJiminnyDealPrompts::class,
Commands\Crm\MatchCrmObjectsCommand::class,
Commands\Activities\SetupIntegration\EightByEight::class,
Commands\Calendars\RemoveCalendarEventActivitiesCommand::class,
Commands\Activities\Migrator\MigrateFromGongCommand::class,
Commands\Activities\Migrator\MigrateFromChorusCommand::class,
Commands\Activities\Migrator\MigrateFromLeexiCommand::class,
Commands\Activities\Migrator\MigrateFromAvomaCommand::class,
Commands\Activities\Migrator\MigrateFromClariCommand::class,
Commands\Activities\SetupIntegration\ConnectAndSell::class,
Commands\Activities\SetupIntegration\CloudTalk::class,
Commands\Users\CreateConferenceSlug::class,
Commands\Elasticsearch\AsyncUpdateEsEntities::class,
Commands\Elasticsearch\ResetAsyncElasticSearchCommand::class,
Commands\Playlists\PlaylistSharesUpdateCommand::class,
Commands\Crm\AutologDelayedCommand::class,
Commands\Activities\HydrateDefaultActivityTypeCommand::class,
Commands\Crm\CheckActivityLoggableCommand::class,
Commands\Activities\MonitorDialerActivitiesCommand::class,
Commands\Activities\SetupIntegration\Xant::class,
Commands\ImportUsersFromCsvFile::class,
Commands\DevPostmanCommand::class,
Commands\Playlists\FixTreeStructureCommand::class,
Commands\Zoom\ResolvePmiLinksCommand::class,
Commands\MarkBranchForEnvironmentPipelineCommand::class,
Commands\Activities\ProbeMediaSegmentsCommand::class,
Commands\Activities\SetupIntegration\AmazonConnect::class,
Commands\Playbooks\ChangePlaybookActivityFieldCommand::class,
MediaPipelineRestartCommand::class,
Commands\Dev\FixHubSpotTokens::class,
Commands\Dev\MonitorSocialAccountsState::class,
Commands\Activities\SetupIntegration\Vonage::class,
Commands\Activities\SetupIntegration\TwilioFlex::class,
Commands\Activities\SetupIntegration\TwilioFlexDirect::class,
Commands\Activities\SetupIntegration\TwilioFlexSetDialerAuthCredentialsCommand::class,
Commands\Activities\SetupIntegration\TwilioSetS3RecordingCredentialsCommand::class,
SendActionItemsCommand::class,
Commands\Users\ChangeEmail::class,
Commands\Calendars\ListUserGoogleCalendars::class,
Commands\Activities\JustCall\SyncPlaybackLinkToCrmCommand::class,
Commands\Activities\HydrateCallWithCrmDataCommand::class,
Commands\Activities\UpdateActivityElasticSearchDocumentCommand::class,
Commands\Activities\SetupIntegration\Talkdesk::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookListCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookShow::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,
Commands\Activities\SetupIntegration\TwilioVideo::class,
Commands\Crm\SetupCloseCrm::class,
Commands\Crm\SetupCopperCrm::class,
Commands\Crm\FullSyncOpportunityCommand::class,
Commands\Crm\IntegrationApp\CrmEntitiesFullSyncCommand::class,
Commands\Crm\IntegrationApp\ValidateConnectionCommand::class,
Commands\Activities\Workflow\RefreshCrmData::class,
Commands\Activities\Migrator\AnalyseGongCalls::class,
Commands\Users\AddVoiceRoleToRecorderCommand::class,
Commands\Activities\SyncMissingCallDispositions::class,
Commands\Calendars\RemoveFutureCalendarEvents::class,
FlushRolesPermissionsCache::class,
Commands\Activities\SetupIntegration\FiveNine::class,
CalendarEventDeleteCancelledCommand::class,
CalendarEventDeletePastCommand::class,
ReportActivityProcessingTimeToDatadogCommand::class,
ReportProcessingStatesToDatadogCommand::class,
ReleaseNumbersCommand::class,
BackfillOpportunityUserFromAccountCommand::class,
RemoveExpiredRoleChangeEventsCommand::class,
RemoveExpiredNudgesCommand::class,
SendNudgeExpirationWarningsCommand::class,
AutologOldActivitiesCommand::class,
RemoveUnusedParticipantSpeechesCommand::class,
DeleteActivitiesForChurnedTeamsCommand::class,
HardDeleteActivitiesForChurnedTeamsCommand::class,
TeamDeleteCommand::class,
TeamsDeleteDeactivatedCommand::class,
UpdateTeamsCommand::class,
OverrideTranscriptionLocaleCommand::class,
SyncSlackUserCommand::class,
PurgeSoftDeletedOpportunitiesCommand::class,
PurgeSyncBatchesCommand::class,
ProphetAnalyzeClosedDealsCommand::class,
DeleteChurnedSubAccounts::class,
Commands\ProphetAi\DumpContext::class,
DeletePredefinedSubAccounts::class,
DeleteActivitiesForRetentionTeamsCommand::class,
HardDeleteActivitiesTeamsCommand::class,
TeamsDeleteRetentionCommand::class,
TeamSettingPutCommand::class,
StopHangingLivestreamsCommand::class,
FixActivitiesOpportunity::class,
Commands\Activities\SetupIntegration\Salesforce\SetupSalesforceIntegrationCommand::class,
UpdateOldTranscriptionModelLocalesCommand::class,
Commands\Dev\FixMissMatchedCrmActivitiesCommand::class,
DownloadMissingTrackCommand::class,
ActivitiesMatchCrmCommand::class,
DeleteEmailDocumentsCommand::class,
DeleteOldTranscriptionsCommand::class,
DeleteS3LeftoversCommand::class,
RemoveDeleteMarkersCommand::class,
SyncTeamUsersCommand::class,
ReassignTranscriptCommand::class,
DiarizeViaAiParticipantIdentificationCommand::class,
RestoreActivityTypeCommand::class,
DeleteOldAiCrmNotesCommand::class,
DeleteReportCommand::class,
AutomatedReportsRetentionPolicyCommand::class,
SyncHubspotActiveDeals::class,
GenerateInternalWebhookToken::class,
IssueMcpTokenCommand::class,
RestoreActivityCrmProviderIdCommand::class,
CleanupActivityTracksCommand::class,
DeleteUnusedTracksCommand::class,
RestoreTracksCommand::class,
HubspotWebhookServiceCommand::class,
ProcessMergedObjectsCommand::class,
HubspotJournalPollingCommand::class,
SetupJournalDealWebhookSubscriptionsCommand::class,
ListJournalWebhookSubscriptionsCommand::class,
RemoveGhostParticipantsCommand::class,
AutodetectAiActivityTypeCommand::class,
Commands\Crm\LogActivitiesCommand::class,
Commands\Crm\MatchOpportunityActivitiesCommand::class,
PurgeDeletedOpportunitiesCommand::class,
CleanDuplicateFieldDataCommand::class,
RetryProspectSummaryCommand::class,
ProcessHubspotObjectsSyncBatches::class,
SyncOpportunitiesMissingFieldDataCommand::class,
RestoreDealAssociationsCommand::class,
Commands\Crm\TestPipedriveOfficialSdkCommand::class,
];
private Schedule $schedule;
private string $output;
protected function schedule(Schedule $schedule): void
{
$this->schedule = $schedule;
$this->output = config('jiminny.scheduler_log');
$schedule->useCache('redis');
$currentMinute = (int) date('i');
$currentDay = (int) date('w');
$this->scheduleEveryMinute();
$this->scheduleEveryTwoMinutes();
$this->scheduleEveryFiveMinutes();
$this->scheduleEveryTenMinutes();
$this->scheduleEveryFifteenMinutes();
$this->scheduleEveryThirtyMinutes();
$this->scheduleHourly();
$this->scheduleDaily();
$this->scheduleWeekly($currentDay);
$this->scheduleSpecificTimes();
$this->scheduleDynamic($currentMinute);
}
protected function scheduleEveryMinute(): void
{
$this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();
$this->scheduleCommand('dialers:monitor-activities')->everyMinute();
$this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();
$this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();
$this->schedule->command('mailbox:batch:process', ['--max-batches=15'])
->everyMinute()
->sendOutputTo($this->output);
}
protected function scheduleEveryTwoMinutes(): void
{
$this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();
}
protected function scheduleEveryFiveMinutes(): void
{
$this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();
// Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)
$this->scheduleCommand('crm:sync-hubspot-objects', [], 4)
->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');
$this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();
$this->schedule->command('mailbox:batch:create')
->cron('2-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output);
$this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])
->cron('3-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output)
->runInBackground();
$this->schedule->command('hubspot:journal-poll', ['--start'])
->everyFiveMinutes()
->sendOutputTo($this->output)
->runInBackground();
}
protected function scheduleEveryTenMinutes(): void
{
$this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();
$this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('crm:reset-governor')->everyTenMinutes();
}
protected function scheduleEveryFifteenMinutes(): void
{
$this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();
$this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');
$this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
],
])->everyFifteenMinutes();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->cron('7,22,37,52 * * * *');
}
protected function scheduleEveryThirtyMinutes(): void
{
$this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');
$this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();
$this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)
->between('02:58', '05:29')
->everyThirtyMinutes()
->runInBackground();
$this->scheduleActivitiesHardDelete();
}
protected function scheduleHourly(): void
{
$this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();
$this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');
$this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');
$this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');
$this->scheduleCommand('automated-reports:send')->hourly();
$this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);
$this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);
}
protected function scheduleDaily(): void
{
$this->scheduleCommand('teams:sync-planhat')->daily();
$this->scheduleCommand('twilio:sync-addresses')->daily();
$this->scheduleCommand('twilio:sync-zone-access')->daily();
$this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();
$this->scheduleCommand('users:sync-licence-data')->daily();
$this->scheduleCommand('users:sync-intercom-data')->daily();
$this->scheduleCommand('nudges:send-expiration-warnings')->daily();
$this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();
}
protected function scheduleWeekly(int $currentDay): void
{
if ($currentDay === 0) {
$this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);
}
if ($currentDay === 6) {
$this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_AMAZON_CONNECT,
'--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->saturdays()->at('01:00')->runInBackground();
$this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)
->saturdays()->at('01:07')->runInBackground();
$this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)
->saturdays()->at('05:08')->runInBackground();
$this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')
->weeklyOn(6, '6:00');
$this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')
->weeklyOn(6, '7:00');
}
}
protected function scheduleSpecificTimes(): void
{
$this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_DISCARDED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:20')->runInBackground();
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_PROCESSED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:30')->runInBackground();
$this->scheduleCommand('automated-reports')->dailyAt('01:00');
$this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');
$this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');
$this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');
$this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');
$this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');
$this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('03:05');
$this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');
$this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');
$this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');
$this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');
$this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');
if (! $this->app->environment('production')) {
$this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)
->dailyAt('04:02')->runInBackground();
}
$this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
],
])->dailyAt('05:05');
if (! $this->app->environment('qa')) {
$this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');
}
$this->scheduleCommand('activity:sync-dispositions', [
Activity::PROVIDER_HUBSPOT,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('07:05');
}
protected function scheduleDynamic(int $currentMinute): void
{
$this->scheduleHourlyFallbackActivitySyncs($currentMinute);
$this->scheduleBullhornHeartbeat($currentMinute);
}
private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void
{
if ($offsetMinute === 0) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);
} elseif ($offsetMinute === 1) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);
} elseif ($offsetMinute === 2) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);
}
}
private function scheduleBullhornHeartbeat(int $currentMinute): void
{
$bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);
if ($bhHeartbeatInterval > 0) {
$minutes = max((int) floor($bhHeartbeatInterval / 60), 1);
if ($currentMinute % $minutes === 0) {
$bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);
if ($minutes > 30) {
$bhEvent->hourly();
} else {
$bhEvent->cron(sprintf('*/%d * * * *', $minutes));
}
}
}
}
private function scheduleActivitiesHardDelete(): void
{
if (config(key: 'jiminny.deploy_region') === 'eu') {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 1000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
} elseif ($this->app->environment('production')) {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 2000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
}
}
private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void
{
$this->scheduleCommand('activity:sync', [
$provider,
'--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->hourlyAt($offsetMinute);
}
/**
* Register the Closure based commands for the application.
*/
protected function commands(): void
{
require_once base_path('routes/console.php');
}
private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event
{
return $this->schedule
->command($name, $options)
->withoutOverlapping($expiresAt)
->onOneServer()
->sendOutputTo($this->output)
;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.05618351,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.3380984,"top":0.29848364,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.3480718,"top":0.29848364,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.35771278,"top":0.29688746,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.3650266,"top":0.29688746,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\DTO\\Invitation;\n\nuse Jiminny\\DTO\\UserEmail;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateInvitationRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateTeamRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\EditTeamRequest;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Invitation;\nuse Jiminny\\Models\\Role;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\n\nclass UserInvitationDTO\n{\n use UserEmail;\n\n public string $email;\n public ?string $secondaryEmail;\n public ?int $groupId;\n public int $teamId;\n public bool $crmRequired;\n public array $roleIds;\n public bool $isOwner;\n public ?User $currentUser = null;\n\n /**\n * @param array{\n * email: string,\n * secondaryEmail: string|null,\n * groupId: int|null,\n * teamId: int|string,\n * crmRequired: bool,\n * roleIds: int[],\n * isOwner: bool,\n * user?: User\n * } $attributes\n */\n private function __construct(array $attributes)\n {\n $this->email = mb_strtolower($attributes['email']);\n $this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);\n $this->groupId = $attributes['groupId'];\n $this->teamId = (int) $attributes['teamId'];\n $this->crmRequired = (bool) $attributes['crmRequired'];\n $this->roleIds = $attributes['roleIds'];\n $this->isOwner = $attributes['isOwner'];\n $this->currentUser = $attributes['user'] ?? null;\n }\n\n public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self\n {\n $roleIds = Role::whereIn('name', [\n User::ROLE_ADMIN,\n User::ROLE_RECORDER,\n ])->pluck('id')->toArray();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => $request->getOwnerEmail(),\n 'secondaryEmail' => null,\n 'groupId' => null,\n 'teamId' => $team->getId(),\n 'crmRequired' => true,\n 'roleIds' => $roleIds,\n 'user' => $currentUser,\n 'isOwner' => true,\n ]);\n }\n\n public static function fromRequest(CreateInvitationRequest $request): self\n {\n $data = $request->validated();\n\n $groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;\n $teamId = Team::uuid($data['team_id'])->getId();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => mb_strtolower($data['email']),\n 'secondaryEmail' => $data['secondary_email'] ?? null,\n 'groupId' => $groupId,\n 'teamId' => $teamId,\n 'crmRequired' => $data['crm_required'],\n 'roleIds' => $data['roles'],\n 'user' => $currentUser,\n 'isOwner' => false,\n ]);\n }\n\n public static function fromInvitation(Invitation $invitation, User $currentUser): self\n {\n $roles = $invitation->roles()->get();\n $isOwner = $invitation->isOwner();\n\n return new self([\n 'email' => $invitation->email,\n 'secondaryEmail' => $invitation->getSecondaryEmail(),\n 'groupId' => $invitation->group_id,\n 'teamId' => $invitation->team_id,\n 'crmRequired' => $invitation->crm_required,\n 'roleIds' => $roles->pluck('id')->toArray(),\n 'user' => $currentUser,\n 'isOwner' => $isOwner,\n ]);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\DTO\\Invitation;\n\nuse Jiminny\\DTO\\UserEmail;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateInvitationRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateTeamRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\EditTeamRequest;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Invitation;\nuse Jiminny\\Models\\Role;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\n\nclass UserInvitationDTO\n{\n use UserEmail;\n\n public string $email;\n public ?string $secondaryEmail;\n public ?int $groupId;\n public int $teamId;\n public bool $crmRequired;\n public array $roleIds;\n public bool $isOwner;\n public ?User $currentUser = null;\n\n /**\n * @param array{\n * email: string,\n * secondaryEmail: string|null,\n * groupId: int|null,\n * teamId: int|string,\n * crmRequired: bool,\n * roleIds: int[],\n * isOwner: bool,\n * user?: User\n * } $attributes\n */\n private function __construct(array $attributes)\n {\n $this->email = mb_strtolower($attributes['email']);\n $this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);\n $this->groupId = $attributes['groupId'];\n $this->teamId = (int) $attributes['teamId'];\n $this->crmRequired = (bool) $attributes['crmRequired'];\n $this->roleIds = $attributes['roleIds'];\n $this->isOwner = $attributes['isOwner'];\n $this->currentUser = $attributes['user'] ?? null;\n }\n\n public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self\n {\n $roleIds = Role::whereIn('name', [\n User::ROLE_ADMIN,\n User::ROLE_RECORDER,\n ])->pluck('id')->toArray();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => $request->getOwnerEmail(),\n 'secondaryEmail' => null,\n 'groupId' => null,\n 'teamId' => $team->getId(),\n 'crmRequired' => true,\n 'roleIds' => $roleIds,\n 'user' => $currentUser,\n 'isOwner' => true,\n ]);\n }\n\n public static function fromRequest(CreateInvitationRequest $request): self\n {\n $data = $request->validated();\n\n $groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;\n $teamId = Team::uuid($data['team_id'])->getId();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => mb_strtolower($data['email']),\n 'secondaryEmail' => $data['secondary_email'] ?? null,\n 'groupId' => $groupId,\n 'teamId' => $teamId,\n 'crmRequired' => $data['crm_required'],\n 'roleIds' => $data['roles'],\n 'user' => $currentUser,\n 'isOwner' => false,\n ]);\n }\n\n public static function fromInvitation(Invitation $invitation, User $currentUser): self\n {\n $roles = $invitation->roles()->get();\n $isOwner = $invitation->isOwner();\n\n return new self([\n 'email' => $invitation->email,\n 'secondaryEmail' => $invitation->getSecondaryEmail(),\n 'groupId' => $invitation->group_id,\n 'teamId' => $invitation->team_id,\n 'crmRequired' => $invitation->crm_required,\n 'roleIds' => $roles->pluck('id')->toArray(),\n 'user' => $currentUser,\n 'isOwner' => $isOwner,\n ]);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.007978723,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.00930851,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.006981383,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Console;\n\nuse Illuminate\\Console\\ConfirmableTrait;\nuse Illuminate\\Console\\Scheduling\\Event;\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as ConsoleKernel;\nuse Jiminny\\Component\\Acl\\RemoveExpiredRoleChangeEventsCommand;\nuse Jiminny\\Component\\ActionItems\\Commands\\SendActionItemsCommand;\nuse Jiminny\\Component\\AiActivityType\\Commands\\AutodetectAiActivityTypeCommand;\nuse Jiminny\\Component\\AskJiminnyAi\\Commands\\ProphetAnalyzeClosedDealsCommand;\nuse Jiminny\\Component\\Cache\\Constants;\nuse Jiminny\\Component\\DealInsights\\Commands\\SendDealsUpdateCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\MediaPipelineRestartCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportActivityProcessingTimeToDatadogCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportProcessingStatesToDatadogCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\OverrideTranscriptionLocaleCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryFailedTranscriptionsCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryStuckTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ActivitiesMatchCrmCommand;\nuse Jiminny\\Console\\Commands\\Activities\\AutologOldActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForRetentionTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DownloadMissingTrackCommand;\nuse Jiminny\\Console\\Commands\\Activities\\FixActivitiesOpportunity;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReassignTranscriptCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReindexRecentActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\RetryProspectSummaryCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeleteCancelledCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeletePastCommand;\nuse Jiminny\\Console\\Commands\\Crm\\BackfillOpportunityUserFromAccountCommand;\nuse Jiminny\\Console\\Commands\\Crm\\CleanDuplicateFieldDataCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ProcessMergedObjectsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\RestoreDealAssociationsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\ProcessHubspotObjectsSyncBatches;\nuse Jiminny\\Console\\Commands\\Crm\\PurgeDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ListJournalWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\SetupJournalDealWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\SyncHubspotActiveDeals;\nuse Jiminny\\Console\\Commands\\Crm\\SyncOpportunitiesMissingFieldDataCommand;\nuse Jiminny\\Console\\Commands\\DeleteOldAiCrmNotesCommand;\nuse Jiminny\\Console\\Commands\\DeleteS3LeftoversCommand;\nuse Jiminny\\Console\\Commands\\DiarizeViaAiParticipantIdentificationCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\DeleteEmailDocumentsCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\RemoveGhostParticipantsCommand;\nuse Jiminny\\Console\\Commands\\FlushRolesPermissionsCache;\nuse Jiminny\\Console\\Commands\\GenerateInternalWebhookToken;\nuse Jiminny\\Console\\Commands\\IssueMcpTokenCommand;\nuse Jiminny\\Console\\Commands\\HubspotJournalPollingCommand;\nuse Jiminny\\Console\\Commands\\HubspotWebhookServiceCommand;\nuse Jiminny\\Console\\Commands\\Livestream\\StopHangingLivestreamsCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteEmailMessagesWithoutActivityCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteInboxEmailsCommand;\nuse Jiminny\\Console\\Commands\\PurgeSoftDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\PurgeSyncBatchesCommand;\nuse Jiminny\\Console\\Commands\\RemoveDeleteMarkersCommand;\nuse Jiminny\\Console\\Commands\\RemoveExpiredNudgesCommand;\nuse Jiminny\\Console\\Commands\\RemoveUnusedParticipantSpeechesCommand;\nuse Jiminny\\Console\\Commands\\Reports\\AutomatedReportsRetentionPolicyCommand;\nuse Jiminny\\Console\\Commands\\Reports\\DeleteReportCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityCrmProviderIdCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityTypeCommand;\nuse Jiminny\\Console\\Commands\\SendNudgeExpirationWarningsCommand;\nuse Jiminny\\Console\\Commands\\Slack\\SyncSlackUserCommand;\nuse Jiminny\\Console\\Commands\\Teams\\SyncTeamUsersCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamDeleteCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteDeactivatedCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteRetentionCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamSettingPutCommand;\nuse Jiminny\\Console\\Commands\\Teams\\UpdateTeamsCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\CleanupActivityTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\DeleteUnusedTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\RestoreTracksCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\DeleteOldTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\UpdateOldTranscriptionModelLocalesCommand;\nuse Jiminny\\Console\\Commands\\Twilio\\DeleteChurnedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\DeletePredefinedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\ReleaseNumbersCommand;\nuse Jiminny\\Jobs\\Activity\\SyncActivity;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\InboxEmail;\nuse Jiminny\\Services\\RecallAI\\Commands\\ImportRegionMeetingCommand;\nuse Jiminny\\Services\\RecallAI\\Commands\\ScheduleBotCommand;\n\nclass Kernel extends ConsoleKernel\n{\n use ConfirmableTrait;\n\n /**\n * The Artisan commands provided by your application.\n *\n * @var string[]\n */\n protected $commands = [\n Commands\\GeckoExport\\GeckoExportTranscriptCommand::class,\n Commands\\GeckoExport\\GeckoExportTranscriptionCommand::class,\n Commands\\GeckoExport\\GeckoExportParticipantSpeechesCommand::class,\n Commands\\Activities\\DeleteForCoachesCommand::class,\n ReindexRecentActivitiesCommand::class,\n Commands\\Crm\\BullhornPingCommand::class,\n Commands\\Crm\\BullhornSessionCommand::class,\n Commands\\Crm\\BullhornSearchCommand::class,\n Commands\\PlaybackThemes\\TopicsConsolidateCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesCopyCommand::class,\n Commands\\PlaybackThemes\\AssignTopicsUsedBySingleTeamCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesMigrateToVersionsCommand::class,\n Commands\\Vocabulary\\VocabularyCopyCommand::class,\n Commands\\Transcription\\TranscriptionPrintRaw::class,\n Commands\\Migrate\\JiminnyMigratePopulateActivitySourceCommand::class,\n Commands\\EngagementStats\\JiminnyEngagementStatsExplainCommand::class,\n Commands\\EngagementStatsRegenerateCommand::class,\n Commands\\Analytics\\NumberOfActivitiesPerActivityTypeCommand::class,\n Commands\\Elasticsearch\\MappingRunCommand::class,\n Commands\\Elasticsearch\\MappingInstallCommand::class,\n Commands\\Elasticsearch\\UpdateEsMappingSettingsCommand::class,\n Commands\\Analytics\\TranscriptionWordMatchCommand::class,\n Commands\\JiminnyCacheClearCommand::class,\n Commands\\Transcription\\TranscriptionSearchCommand::class,\n RetryStuckTranscriptionsCommand::class,\n RetryFailedTranscriptionsCommand::class,\n Commands\\JiminnyDebugCommand::class,\n Commands\\RunAiCallScoringForUntypedActivitiesCommand::class,\n Commands\\Calendars\\SyncCalendars::class,\n Commands\\Calendars\\SyncDeletedEvents::class,\n Commands\\Twilio\\FetchMetrics::class,\n Commands\\Twilio\\FetchEvents::class,\n Commands\\Twilio\\FetchSummary::class,\n Commands\\Twilio\\SyncZoneAccess::class,\n Commands\\DatabaseTableCount::class,\n Commands\\PurgeConferences::class,\n Commands\\ResetElasticSearch::class,\n Commands\\CreateDatabaseUsers::class,\n Commands\\Activities\\NotifyNotLogged::class,\n Commands\\Crm\\SyncTeamMetadata::class,\n Commands\\Crm\\SyncProfileMetadata::class,\n Commands\\Crm\\SyncContact::class,\n Commands\\Crm\\SyncObjects::class,\n Commands\\Crm\\SyncHubspotObjects::class,\n Commands\\Crm\\SyncAccount::class,\n Commands\\Crm\\ResetGovernorLimits::class,\n Commands\\Crm\\ManageSyncStrategyCommand::class,\n Commands\\ImportRecording::class,\n Commands\\TrackImported::class,\n Commands\\Twilio\\RecoverTwilioTracksCommand::class,\n Commands\\Crm\\SetupLayouts::class,\n Commands\\Tracks\\SyncTwilioTracks::class,\n Commands\\Activities\\StatusCount::class,\n\n Commands\\Mailboxes\\TextRelay\\WatchMailboxEvents::class,\n Commands\\Mailboxes\\InboxCreate::class,\n Commands\\Mailboxes\\InboxSync::class,\n Commands\\Mailboxes\\BatchCreate::class,\n Commands\\Mailboxes\\BatchProcess::class,\n Commands\\Mailboxes\\InboxPurge::class,\n Commands\\Mailboxes\\BatchRetryFailed::class,\n Commands\\Mailboxes\\BatchFailStalled::class,\n Commands\\Mailboxes\\SkipListsRefresh::class,\n Commands\\Mailboxes\\SkipListsDump::class,\n Commands\\Mailboxes\\TextRelay\\SyncMailbox::class,\n Commands\\Mailboxes\\DeleteInboxEmailsCommand::class,\n Commands\\Mailboxes\\DeleteEmailMessagesCommand::class,\n DeleteEmailMessagesWithoutActivityCommand::class,\n\n Commands\\Tracks\\CheckIntegrity::class,\n Commands\\Twilio\\RemoteLifecycle::class,\n Commands\\Twilio\\SyncNumbers::class,\n Commands\\Crm\\SetupActivityTypeForFollowUp::class,\n Commands\\Activities\\CheckPlayable::class,\n Commands\\Activities\\ActivityDeleteCommand::class,\n Commands\\Activities\\Copy::class,\n Commands\\Activities\\ActivityHardDeleteCommand::class,\n Commands\\Reports\\Team::class,\n Commands\\Reports\\GenerateMarketingReport::class,\n Commands\\Reports\\AutomatedReportsCommand::class,\n Commands\\Reports\\AutomatedReportsSendCommand::class,\n Commands\\MuteOrganizerChannel::class,\n Commands\\Tracks\\DeleteTracks::class,\n Commands\\Tracks\\RetryDownload::class,\n Commands\\Tracks\\RetryFailedDownloads::class,\n Commands\\Twilio\\SyncAddresses::class,\n Commands\\Activities\\UpdateElasticSearch::class,\n Commands\\MakeSlackLiveCoachingChatNotesOn::class,\n Commands\\Activities\\PreMeetingNotification::class,\n ScheduleBotCommand::class,\n ImportRegionMeetingCommand::class,\n Commands\\Activities\\MonitorMeetingCountCommand::class,\n Commands\\Activities\\MonitorMeetingStartCommand::class,\n Commands\\Activities\\MonitorMeetingEndCommand::class,\n Commands\\SyncActivity::class,\n Commands\\PhpApm::class,\n Commands\\Crm\\SyncOpportunity::class,\n Commands\\Crm\\SyncLead::class,\n Commands\\Users\\SyncLicenceDataToSalesforce::class,\n Commands\\Crm\\UpdateOpportunitySpecifications::class,\n Commands\\Users\\SyncToIntercom::class,\n Commands\\Users\\SyncToUserPilot::class,\n Commands\\Teams\\SyncToPlanhat::class,\n Commands\\Twilio\\SetZoneAccess::class,\n Commands\\Users\\CreateDefaultSavedSearchesCommand::class,\n Commands\\Crm\\SendNotLogged::class,\n Commands\\Teams\\DeactivateTeamCommand::class,\n Commands\\Crm\\SyncFieldMetadata::class,\n Commands\\Postmark\\SyncEmailTemplatesCommand::class,\n Commands\\PlaybackThemes\\ImportTriggersFromTranslatedCsvCommand::class,\n Commands\\Activities\\PreMeetingReminder::class,\n Commands\\Activities\\CustomerActivitiesExport::class,\n Commands\\Users\\RefreshAccessToken::class,\n Commands\\Calendars\\SetupCalendarSubscription::class,\n Commands\\Activities\\InviteMeetingBot::class,\n Commands\\Activities\\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,\n Commands\\Crm\\MigrateProvider::class,\n Commands\\Activities\\MigrateLocationFromCalendarEventToActivities::class,\n Commands\\HelperTruncateCoachingTables::class,\n Commands\\FixCrossTenantIssues::class,\n Commands\\Activities\\CloudCall\\SetupIntegration::class,\n Commands\\Activities\\CloudTalk\\FixTimeZone::class,\n Commands\\Activities\\Orum\\SetupIntegration::class,\n Commands\\Activities\\JustCall\\SetupIntegration::class,\n Commands\\Activities\\RingCentral\\AddInboundPromptSupport::class,\n Commands\\Dialers\\Dialpad\\SubscribeToWebhooks::class,\n Commands\\RecalculateDealRisksCommand::class,\n SendDealsUpdateCommand::class,\n Commands\\Activities\\SetProviderCapabilitiesField::class,\n Commands\\Teams\\InitiallySetNotificationProviderTeamsTable::class,\n Commands\\Crm\\AddLayoutEntities::class,\n Commands\\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,\n Commands\\JiminnyTokenInfoCommand::class,\n Commands\\JiminnySetEncryptedTokenManagerModeCommand::class,\n Commands\\EncryptTokensCommand::class,\n Commands\\Dialers\\Aircall\\CheckAndRenewWebhooks::class,\n Commands\\Migrate\\MigrateTeamRegionCommand::class,\n Commands\\ManageScimForTeam::class,\n Commands\\Dialers\\SyncUsersCommand::class,\n Commands\\WhichWorkerIsWorkingOnWhichJob::class,\n Commands\\GroupSetDefaultLanguageCommand::class,\n Commands\\Dev\\AddRateLimitCommand::class,\n Commands\\Dev\\ImportCallsCommand::class,\n Commands\\DealInsights\\BuildDealInsightsLayoutCommand::class,\n Commands\\DealInsights\\DeleteAskJiminnyDealPrompts::class,\n Commands\\Crm\\MatchCrmObjectsCommand::class,\n Commands\\Activities\\SetupIntegration\\EightByEight::class,\n Commands\\Calendars\\RemoveCalendarEventActivitiesCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromGongCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromChorusCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromLeexiCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromAvomaCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromClariCommand::class,\n Commands\\Activities\\SetupIntegration\\ConnectAndSell::class,\n Commands\\Activities\\SetupIntegration\\CloudTalk::class,\n Commands\\Users\\CreateConferenceSlug::class,\n Commands\\Elasticsearch\\AsyncUpdateEsEntities::class,\n Commands\\Elasticsearch\\ResetAsyncElasticSearchCommand::class,\n Commands\\Playlists\\PlaylistSharesUpdateCommand::class,\n Commands\\Crm\\AutologDelayedCommand::class,\n Commands\\Activities\\HydrateDefaultActivityTypeCommand::class,\n Commands\\Crm\\CheckActivityLoggableCommand::class,\n Commands\\Activities\\MonitorDialerActivitiesCommand::class,\n Commands\\Activities\\SetupIntegration\\Xant::class,\n Commands\\ImportUsersFromCsvFile::class,\n Commands\\DevPostmanCommand::class,\n Commands\\Playlists\\FixTreeStructureCommand::class,\n Commands\\Zoom\\ResolvePmiLinksCommand::class,\n Commands\\MarkBranchForEnvironmentPipelineCommand::class,\n Commands\\Activities\\ProbeMediaSegmentsCommand::class,\n Commands\\Activities\\SetupIntegration\\AmazonConnect::class,\n Commands\\Playbooks\\ChangePlaybookActivityFieldCommand::class,\n MediaPipelineRestartCommand::class,\n Commands\\Dev\\FixHubSpotTokens::class,\n Commands\\Dev\\MonitorSocialAccountsState::class,\n Commands\\Activities\\SetupIntegration\\Vonage::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlex::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexDirect::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexSetDialerAuthCredentialsCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioSetS3RecordingCredentialsCommand::class,\n SendActionItemsCommand::class,\n Commands\\Users\\ChangeEmail::class,\n Commands\\Calendars\\ListUserGoogleCalendars::class,\n Commands\\Activities\\JustCall\\SyncPlaybackLinkToCrmCommand::class,\n Commands\\Activities\\HydrateCallWithCrmDataCommand::class,\n Commands\\Activities\\UpdateActivityElasticSearchDocumentCommand::class,\n Commands\\Activities\\SetupIntegration\\Talkdesk::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookListCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookShow::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioVideo::class,\n Commands\\Crm\\SetupCloseCrm::class,\n Commands\\Crm\\SetupCopperCrm::class,\n Commands\\Crm\\FullSyncOpportunityCommand::class,\n Commands\\Crm\\IntegrationApp\\CrmEntitiesFullSyncCommand::class,\n Commands\\Crm\\IntegrationApp\\ValidateConnectionCommand::class,\n Commands\\Activities\\Workflow\\RefreshCrmData::class,\n Commands\\Activities\\Migrator\\AnalyseGongCalls::class,\n Commands\\Users\\AddVoiceRoleToRecorderCommand::class,\n Commands\\Activities\\SyncMissingCallDispositions::class,\n Commands\\Calendars\\RemoveFutureCalendarEvents::class,\n FlushRolesPermissionsCache::class,\n Commands\\Activities\\SetupIntegration\\FiveNine::class,\n CalendarEventDeleteCancelledCommand::class,\n CalendarEventDeletePastCommand::class,\n ReportActivityProcessingTimeToDatadogCommand::class,\n ReportProcessingStatesToDatadogCommand::class,\n ReleaseNumbersCommand::class,\n BackfillOpportunityUserFromAccountCommand::class,\n RemoveExpiredRoleChangeEventsCommand::class,\n RemoveExpiredNudgesCommand::class,\n SendNudgeExpirationWarningsCommand::class,\n AutologOldActivitiesCommand::class,\n RemoveUnusedParticipantSpeechesCommand::class,\n DeleteActivitiesForChurnedTeamsCommand::class,\n HardDeleteActivitiesForChurnedTeamsCommand::class,\n TeamDeleteCommand::class,\n TeamsDeleteDeactivatedCommand::class,\n UpdateTeamsCommand::class,\n OverrideTranscriptionLocaleCommand::class,\n SyncSlackUserCommand::class,\n PurgeSoftDeletedOpportunitiesCommand::class,\n PurgeSyncBatchesCommand::class,\n ProphetAnalyzeClosedDealsCommand::class,\n DeleteChurnedSubAccounts::class,\n Commands\\ProphetAi\\DumpContext::class,\n DeletePredefinedSubAccounts::class,\n DeleteActivitiesForRetentionTeamsCommand::class,\n HardDeleteActivitiesTeamsCommand::class,\n TeamsDeleteRetentionCommand::class,\n TeamSettingPutCommand::class,\n StopHangingLivestreamsCommand::class,\n FixActivitiesOpportunity::class,\n Commands\\Activities\\SetupIntegration\\Salesforce\\SetupSalesforceIntegrationCommand::class,\n UpdateOldTranscriptionModelLocalesCommand::class,\n Commands\\Dev\\FixMissMatchedCrmActivitiesCommand::class,\n DownloadMissingTrackCommand::class,\n ActivitiesMatchCrmCommand::class,\n DeleteEmailDocumentsCommand::class,\n DeleteOldTranscriptionsCommand::class,\n DeleteS3LeftoversCommand::class,\n RemoveDeleteMarkersCommand::class,\n SyncTeamUsersCommand::class,\n ReassignTranscriptCommand::class,\n DiarizeViaAiParticipantIdentificationCommand::class,\n RestoreActivityTypeCommand::class,\n DeleteOldAiCrmNotesCommand::class,\n DeleteReportCommand::class,\n AutomatedReportsRetentionPolicyCommand::class,\n SyncHubspotActiveDeals::class,\n GenerateInternalWebhookToken::class,\n IssueMcpTokenCommand::class,\n RestoreActivityCrmProviderIdCommand::class,\n CleanupActivityTracksCommand::class,\n DeleteUnusedTracksCommand::class,\n RestoreTracksCommand::class,\n HubspotWebhookServiceCommand::class,\n ProcessMergedObjectsCommand::class,\n HubspotJournalPollingCommand::class,\n SetupJournalDealWebhookSubscriptionsCommand::class,\n ListJournalWebhookSubscriptionsCommand::class,\n RemoveGhostParticipantsCommand::class,\n AutodetectAiActivityTypeCommand::class,\n Commands\\Crm\\LogActivitiesCommand::class,\n Commands\\Crm\\MatchOpportunityActivitiesCommand::class,\n PurgeDeletedOpportunitiesCommand::class,\n CleanDuplicateFieldDataCommand::class,\n RetryProspectSummaryCommand::class,\n ProcessHubspotObjectsSyncBatches::class,\n SyncOpportunitiesMissingFieldDataCommand::class,\n RestoreDealAssociationsCommand::class,\n Commands\\Crm\\TestPipedriveOfficialSdkCommand::class,\n ];\n\n private Schedule $schedule;\n private string $output;\n\n protected function schedule(Schedule $schedule): void\n {\n $this->schedule = $schedule;\n $this->output = config('jiminny.scheduler_log');\n\n $schedule->useCache('redis');\n\n $currentMinute = (int) date('i');\n $currentDay = (int) date('w');\n\n $this->scheduleEveryMinute();\n $this->scheduleEveryTwoMinutes();\n $this->scheduleEveryFiveMinutes();\n $this->scheduleEveryTenMinutes();\n $this->scheduleEveryFifteenMinutes();\n $this->scheduleEveryThirtyMinutes();\n $this->scheduleHourly();\n $this->scheduleDaily();\n $this->scheduleWeekly($currentDay);\n $this->scheduleSpecificTimes();\n $this->scheduleDynamic($currentMinute);\n }\n\n protected function scheduleEveryMinute(): void\n {\n $this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();\n $this->scheduleCommand('dialers:monitor-activities')->everyMinute();\n $this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();\n $this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();\n\n $this->schedule->command('mailbox:batch:process', ['--max-batches=15'])\n ->everyMinute()\n ->sendOutputTo($this->output);\n }\n\n protected function scheduleEveryTwoMinutes(): void\n {\n $this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();\n }\n\n protected function scheduleEveryFiveMinutes(): void\n {\n $this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();\n // Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)\n $this->scheduleCommand('crm:sync-hubspot-objects', [], 4)\n ->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');\n $this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();\n\n $this->schedule->command('mailbox:batch:create')\n ->cron('2-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output);\n\n $this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])\n ->cron('3-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ->runInBackground();\n\n $this->schedule->command('hubspot:journal-poll', ['--start'])\n ->everyFiveMinutes()\n ->sendOutputTo($this->output)\n ->runInBackground();\n }\n\n protected function scheduleEveryTenMinutes(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();\n $this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('crm:reset-governor')->everyTenMinutes();\n }\n\n protected function scheduleEveryFifteenMinutes(): void\n {\n $this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();\n $this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');\n $this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n ],\n ])->everyFifteenMinutes();\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->cron('7,22,37,52 * * * *');\n }\n\n protected function scheduleEveryThirtyMinutes(): void\n {\n $this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');\n $this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();\n\n $this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)\n ->between('02:58', '05:29')\n ->everyThirtyMinutes()\n ->runInBackground();\n\n $this->scheduleActivitiesHardDelete();\n }\n\n protected function scheduleHourly(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();\n $this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');\n $this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');\n $this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');\n $this->scheduleCommand('automated-reports:send')->hourly();\n $this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);\n $this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);\n }\n\n protected function scheduleDaily(): void\n {\n $this->scheduleCommand('teams:sync-planhat')->daily();\n $this->scheduleCommand('twilio:sync-addresses')->daily();\n $this->scheduleCommand('twilio:sync-zone-access')->daily();\n $this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();\n $this->scheduleCommand('users:sync-licence-data')->daily();\n $this->scheduleCommand('users:sync-intercom-data')->daily();\n $this->scheduleCommand('nudges:send-expiration-warnings')->daily();\n $this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();\n }\n\n protected function scheduleWeekly(int $currentDay): void\n {\n if ($currentDay === 0) {\n $this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);\n }\n\n if ($currentDay === 6) {\n $this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_AMAZON_CONNECT,\n '--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->saturdays()->at('01:00')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)\n ->saturdays()->at('01:07')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)\n ->saturdays()->at('05:08')->runInBackground();\n $this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')\n ->weeklyOn(6, '6:00');\n $this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')\n ->weeklyOn(6, '7:00');\n }\n }\n\n protected function scheduleSpecificTimes(): void\n {\n $this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_DISCARDED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:20')->runInBackground();\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_PROCESSED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:30')->runInBackground();\n\n $this->scheduleCommand('automated-reports')->dailyAt('01:00');\n $this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');\n $this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');\n $this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');\n $this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');\n $this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');\n $this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('03:05');\n\n\n $this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');\n $this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');\n $this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');\n $this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');\n $this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');\n\n if (! $this->app->environment('production')) {\n $this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)\n ->dailyAt('04:02')->runInBackground();\n }\n\n $this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n ],\n ])->dailyAt('05:05');\n\n if (! $this->app->environment('qa')) {\n $this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');\n }\n\n $this->scheduleCommand('activity:sync-dispositions', [\n Activity::PROVIDER_HUBSPOT,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('07:05');\n }\n\n protected function scheduleDynamic(int $currentMinute): void\n {\n $this->scheduleHourlyFallbackActivitySyncs($currentMinute);\n $this->scheduleBullhornHeartbeat($currentMinute);\n }\n\n private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void\n {\n if ($offsetMinute === 0) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);\n } elseif ($offsetMinute === 1) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);\n } elseif ($offsetMinute === 2) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);\n }\n }\n\n private function scheduleBullhornHeartbeat(int $currentMinute): void\n {\n $bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);\n if ($bhHeartbeatInterval > 0) {\n $minutes = max((int) floor($bhHeartbeatInterval / 60), 1);\n if ($currentMinute % $minutes === 0) {\n $bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);\n if ($minutes > 30) {\n $bhEvent->hourly();\n } else {\n $bhEvent->cron(sprintf('*/%d * * * *', $minutes));\n }\n }\n }\n }\n\n private function scheduleActivitiesHardDelete(): void\n {\n if (config(key: 'jiminny.deploy_region') === 'eu') {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 1000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n } elseif ($this->app->environment('production')) {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 2000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n }\n }\n\n private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void\n {\n $this->scheduleCommand('activity:sync', [\n $provider,\n '--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->hourlyAt($offsetMinute);\n }\n\n /**\n * Register the Closure based commands for the application.\n */\n protected function commands(): void\n {\n require_once base_path('routes/console.php');\n }\n\n private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event\n {\n return $this->schedule\n ->command($name, $options)\n ->withoutOverlapping($expiresAt)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\Console;\n\nuse Illuminate\\Console\\ConfirmableTrait;\nuse Illuminate\\Console\\Scheduling\\Event;\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as ConsoleKernel;\nuse Jiminny\\Component\\Acl\\RemoveExpiredRoleChangeEventsCommand;\nuse Jiminny\\Component\\ActionItems\\Commands\\SendActionItemsCommand;\nuse Jiminny\\Component\\AiActivityType\\Commands\\AutodetectAiActivityTypeCommand;\nuse Jiminny\\Component\\AskJiminnyAi\\Commands\\ProphetAnalyzeClosedDealsCommand;\nuse Jiminny\\Component\\Cache\\Constants;\nuse Jiminny\\Component\\DealInsights\\Commands\\SendDealsUpdateCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\MediaPipelineRestartCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportActivityProcessingTimeToDatadogCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportProcessingStatesToDatadogCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\OverrideTranscriptionLocaleCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryFailedTranscriptionsCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryStuckTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ActivitiesMatchCrmCommand;\nuse Jiminny\\Console\\Commands\\Activities\\AutologOldActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForRetentionTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DownloadMissingTrackCommand;\nuse Jiminny\\Console\\Commands\\Activities\\FixActivitiesOpportunity;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReassignTranscriptCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReindexRecentActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\RetryProspectSummaryCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeleteCancelledCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeletePastCommand;\nuse Jiminny\\Console\\Commands\\Crm\\BackfillOpportunityUserFromAccountCommand;\nuse Jiminny\\Console\\Commands\\Crm\\CleanDuplicateFieldDataCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ProcessMergedObjectsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\RestoreDealAssociationsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\ProcessHubspotObjectsSyncBatches;\nuse Jiminny\\Console\\Commands\\Crm\\PurgeDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ListJournalWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\SetupJournalDealWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\SyncHubspotActiveDeals;\nuse Jiminny\\Console\\Commands\\Crm\\SyncOpportunitiesMissingFieldDataCommand;\nuse Jiminny\\Console\\Commands\\DeleteOldAiCrmNotesCommand;\nuse Jiminny\\Console\\Commands\\DeleteS3LeftoversCommand;\nuse Jiminny\\Console\\Commands\\DiarizeViaAiParticipantIdentificationCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\DeleteEmailDocumentsCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\RemoveGhostParticipantsCommand;\nuse Jiminny\\Console\\Commands\\FlushRolesPermissionsCache;\nuse Jiminny\\Console\\Commands\\GenerateInternalWebhookToken;\nuse Jiminny\\Console\\Commands\\IssueMcpTokenCommand;\nuse Jiminny\\Console\\Commands\\HubspotJournalPollingCommand;\nuse Jiminny\\Console\\Commands\\HubspotWebhookServiceCommand;\nuse Jiminny\\Console\\Commands\\Livestream\\StopHangingLivestreamsCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteEmailMessagesWithoutActivityCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteInboxEmailsCommand;\nuse Jiminny\\Console\\Commands\\PurgeSoftDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\PurgeSyncBatchesCommand;\nuse Jiminny\\Console\\Commands\\RemoveDeleteMarkersCommand;\nuse Jiminny\\Console\\Commands\\RemoveExpiredNudgesCommand;\nuse Jiminny\\Console\\Commands\\RemoveUnusedParticipantSpeechesCommand;\nuse Jiminny\\Console\\Commands\\Reports\\AutomatedReportsRetentionPolicyCommand;\nuse Jiminny\\Console\\Commands\\Reports\\DeleteReportCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityCrmProviderIdCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityTypeCommand;\nuse Jiminny\\Console\\Commands\\SendNudgeExpirationWarningsCommand;\nuse Jiminny\\Console\\Commands\\Slack\\SyncSlackUserCommand;\nuse Jiminny\\Console\\Commands\\Teams\\SyncTeamUsersCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamDeleteCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteDeactivatedCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteRetentionCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamSettingPutCommand;\nuse Jiminny\\Console\\Commands\\Teams\\UpdateTeamsCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\CleanupActivityTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\DeleteUnusedTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\RestoreTracksCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\DeleteOldTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\UpdateOldTranscriptionModelLocalesCommand;\nuse Jiminny\\Console\\Commands\\Twilio\\DeleteChurnedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\DeletePredefinedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\ReleaseNumbersCommand;\nuse Jiminny\\Jobs\\Activity\\SyncActivity;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\InboxEmail;\nuse Jiminny\\Services\\RecallAI\\Commands\\ImportRegionMeetingCommand;\nuse Jiminny\\Services\\RecallAI\\Commands\\ScheduleBotCommand;\n\nclass Kernel extends ConsoleKernel\n{\n use ConfirmableTrait;\n\n /**\n * The Artisan commands provided by your application.\n *\n * @var string[]\n */\n protected $commands = [\n Commands\\GeckoExport\\GeckoExportTranscriptCommand::class,\n Commands\\GeckoExport\\GeckoExportTranscriptionCommand::class,\n Commands\\GeckoExport\\GeckoExportParticipantSpeechesCommand::class,\n Commands\\Activities\\DeleteForCoachesCommand::class,\n ReindexRecentActivitiesCommand::class,\n Commands\\Crm\\BullhornPingCommand::class,\n Commands\\Crm\\BullhornSessionCommand::class,\n Commands\\Crm\\BullhornSearchCommand::class,\n Commands\\PlaybackThemes\\TopicsConsolidateCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesCopyCommand::class,\n Commands\\PlaybackThemes\\AssignTopicsUsedBySingleTeamCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesMigrateToVersionsCommand::class,\n Commands\\Vocabulary\\VocabularyCopyCommand::class,\n Commands\\Transcription\\TranscriptionPrintRaw::class,\n Commands\\Migrate\\JiminnyMigratePopulateActivitySourceCommand::class,\n Commands\\EngagementStats\\JiminnyEngagementStatsExplainCommand::class,\n Commands\\EngagementStatsRegenerateCommand::class,\n Commands\\Analytics\\NumberOfActivitiesPerActivityTypeCommand::class,\n Commands\\Elasticsearch\\MappingRunCommand::class,\n Commands\\Elasticsearch\\MappingInstallCommand::class,\n Commands\\Elasticsearch\\UpdateEsMappingSettingsCommand::class,\n Commands\\Analytics\\TranscriptionWordMatchCommand::class,\n Commands\\JiminnyCacheClearCommand::class,\n Commands\\Transcription\\TranscriptionSearchCommand::class,\n RetryStuckTranscriptionsCommand::class,\n RetryFailedTranscriptionsCommand::class,\n Commands\\JiminnyDebugCommand::class,\n Commands\\RunAiCallScoringForUntypedActivitiesCommand::class,\n Commands\\Calendars\\SyncCalendars::class,\n Commands\\Calendars\\SyncDeletedEvents::class,\n Commands\\Twilio\\FetchMetrics::class,\n Commands\\Twilio\\FetchEvents::class,\n Commands\\Twilio\\FetchSummary::class,\n Commands\\Twilio\\SyncZoneAccess::class,\n Commands\\DatabaseTableCount::class,\n Commands\\PurgeConferences::class,\n Commands\\ResetElasticSearch::class,\n Commands\\CreateDatabaseUsers::class,\n Commands\\Activities\\NotifyNotLogged::class,\n Commands\\Crm\\SyncTeamMetadata::class,\n Commands\\Crm\\SyncProfileMetadata::class,\n Commands\\Crm\\SyncContact::class,\n Commands\\Crm\\SyncObjects::class,\n Commands\\Crm\\SyncHubspotObjects::class,\n Commands\\Crm\\SyncAccount::class,\n Commands\\Crm\\ResetGovernorLimits::class,\n Commands\\Crm\\ManageSyncStrategyCommand::class,\n Commands\\ImportRecording::class,\n Commands\\TrackImported::class,\n Commands\\Twilio\\RecoverTwilioTracksCommand::class,\n Commands\\Crm\\SetupLayouts::class,\n Commands\\Tracks\\SyncTwilioTracks::class,\n Commands\\Activities\\StatusCount::class,\n\n Commands\\Mailboxes\\TextRelay\\WatchMailboxEvents::class,\n Commands\\Mailboxes\\InboxCreate::class,\n Commands\\Mailboxes\\InboxSync::class,\n Commands\\Mailboxes\\BatchCreate::class,\n Commands\\Mailboxes\\BatchProcess::class,\n Commands\\Mailboxes\\InboxPurge::class,\n Commands\\Mailboxes\\BatchRetryFailed::class,\n Commands\\Mailboxes\\BatchFailStalled::class,\n Commands\\Mailboxes\\SkipListsRefresh::class,\n Commands\\Mailboxes\\SkipListsDump::class,\n Commands\\Mailboxes\\TextRelay\\SyncMailbox::class,\n Commands\\Mailboxes\\DeleteInboxEmailsCommand::class,\n Commands\\Mailboxes\\DeleteEmailMessagesCommand::class,\n DeleteEmailMessagesWithoutActivityCommand::class,\n\n Commands\\Tracks\\CheckIntegrity::class,\n Commands\\Twilio\\RemoteLifecycle::class,\n Commands\\Twilio\\SyncNumbers::class,\n Commands\\Crm\\SetupActivityTypeForFollowUp::class,\n Commands\\Activities\\CheckPlayable::class,\n Commands\\Activities\\ActivityDeleteCommand::class,\n Commands\\Activities\\Copy::class,\n Commands\\Activities\\ActivityHardDeleteCommand::class,\n Commands\\Reports\\Team::class,\n Commands\\Reports\\GenerateMarketingReport::class,\n Commands\\Reports\\AutomatedReportsCommand::class,\n Commands\\Reports\\AutomatedReportsSendCommand::class,\n Commands\\MuteOrganizerChannel::class,\n Commands\\Tracks\\DeleteTracks::class,\n Commands\\Tracks\\RetryDownload::class,\n Commands\\Tracks\\RetryFailedDownloads::class,\n Commands\\Twilio\\SyncAddresses::class,\n Commands\\Activities\\UpdateElasticSearch::class,\n Commands\\MakeSlackLiveCoachingChatNotesOn::class,\n Commands\\Activities\\PreMeetingNotification::class,\n ScheduleBotCommand::class,\n ImportRegionMeetingCommand::class,\n Commands\\Activities\\MonitorMeetingCountCommand::class,\n Commands\\Activities\\MonitorMeetingStartCommand::class,\n Commands\\Activities\\MonitorMeetingEndCommand::class,\n Commands\\SyncActivity::class,\n Commands\\PhpApm::class,\n Commands\\Crm\\SyncOpportunity::class,\n Commands\\Crm\\SyncLead::class,\n Commands\\Users\\SyncLicenceDataToSalesforce::class,\n Commands\\Crm\\UpdateOpportunitySpecifications::class,\n Commands\\Users\\SyncToIntercom::class,\n Commands\\Users\\SyncToUserPilot::class,\n Commands\\Teams\\SyncToPlanhat::class,\n Commands\\Twilio\\SetZoneAccess::class,\n Commands\\Users\\CreateDefaultSavedSearchesCommand::class,\n Commands\\Crm\\SendNotLogged::class,\n Commands\\Teams\\DeactivateTeamCommand::class,\n Commands\\Crm\\SyncFieldMetadata::class,\n Commands\\Postmark\\SyncEmailTemplatesCommand::class,\n Commands\\PlaybackThemes\\ImportTriggersFromTranslatedCsvCommand::class,\n Commands\\Activities\\PreMeetingReminder::class,\n Commands\\Activities\\CustomerActivitiesExport::class,\n Commands\\Users\\RefreshAccessToken::class,\n Commands\\Calendars\\SetupCalendarSubscription::class,\n Commands\\Activities\\InviteMeetingBot::class,\n Commands\\Activities\\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,\n Commands\\Crm\\MigrateProvider::class,\n Commands\\Activities\\MigrateLocationFromCalendarEventToActivities::class,\n Commands\\HelperTruncateCoachingTables::class,\n Commands\\FixCrossTenantIssues::class,\n Commands\\Activities\\CloudCall\\SetupIntegration::class,\n Commands\\Activities\\CloudTalk\\FixTimeZone::class,\n Commands\\Activities\\Orum\\SetupIntegration::class,\n Commands\\Activities\\JustCall\\SetupIntegration::class,\n Commands\\Activities\\RingCentral\\AddInboundPromptSupport::class,\n Commands\\Dialers\\Dialpad\\SubscribeToWebhooks::class,\n Commands\\RecalculateDealRisksCommand::class,\n SendDealsUpdateCommand::class,\n Commands\\Activities\\SetProviderCapabilitiesField::class,\n Commands\\Teams\\InitiallySetNotificationProviderTeamsTable::class,\n Commands\\Crm\\AddLayoutEntities::class,\n Commands\\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,\n Commands\\JiminnyTokenInfoCommand::class,\n Commands\\JiminnySetEncryptedTokenManagerModeCommand::class,\n Commands\\EncryptTokensCommand::class,\n Commands\\Dialers\\Aircall\\CheckAndRenewWebhooks::class,\n Commands\\Migrate\\MigrateTeamRegionCommand::class,\n Commands\\ManageScimForTeam::class,\n Commands\\Dialers\\SyncUsersCommand::class,\n Commands\\WhichWorkerIsWorkingOnWhichJob::class,\n Commands\\GroupSetDefaultLanguageCommand::class,\n Commands\\Dev\\AddRateLimitCommand::class,\n Commands\\Dev\\ImportCallsCommand::class,\n Commands\\DealInsights\\BuildDealInsightsLayoutCommand::class,\n Commands\\DealInsights\\DeleteAskJiminnyDealPrompts::class,\n Commands\\Crm\\MatchCrmObjectsCommand::class,\n Commands\\Activities\\SetupIntegration\\EightByEight::class,\n Commands\\Calendars\\RemoveCalendarEventActivitiesCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromGongCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromChorusCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromLeexiCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromAvomaCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromClariCommand::class,\n Commands\\Activities\\SetupIntegration\\ConnectAndSell::class,\n Commands\\Activities\\SetupIntegration\\CloudTalk::class,\n Commands\\Users\\CreateConferenceSlug::class,\n Commands\\Elasticsearch\\AsyncUpdateEsEntities::class,\n Commands\\Elasticsearch\\ResetAsyncElasticSearchCommand::class,\n Commands\\Playlists\\PlaylistSharesUpdateCommand::class,\n Commands\\Crm\\AutologDelayedCommand::class,\n Commands\\Activities\\HydrateDefaultActivityTypeCommand::class,\n Commands\\Crm\\CheckActivityLoggableCommand::class,\n Commands\\Activities\\MonitorDialerActivitiesCommand::class,\n Commands\\Activities\\SetupIntegration\\Xant::class,\n Commands\\ImportUsersFromCsvFile::class,\n Commands\\DevPostmanCommand::class,\n Commands\\Playlists\\FixTreeStructureCommand::class,\n Commands\\Zoom\\ResolvePmiLinksCommand::class,\n Commands\\MarkBranchForEnvironmentPipelineCommand::class,\n Commands\\Activities\\ProbeMediaSegmentsCommand::class,\n Commands\\Activities\\SetupIntegration\\AmazonConnect::class,\n Commands\\Playbooks\\ChangePlaybookActivityFieldCommand::class,\n MediaPipelineRestartCommand::class,\n Commands\\Dev\\FixHubSpotTokens::class,\n Commands\\Dev\\MonitorSocialAccountsState::class,\n Commands\\Activities\\SetupIntegration\\Vonage::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlex::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexDirect::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexSetDialerAuthCredentialsCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioSetS3RecordingCredentialsCommand::class,\n SendActionItemsCommand::class,\n Commands\\Users\\ChangeEmail::class,\n Commands\\Calendars\\ListUserGoogleCalendars::class,\n Commands\\Activities\\JustCall\\SyncPlaybackLinkToCrmCommand::class,\n Commands\\Activities\\HydrateCallWithCrmDataCommand::class,\n Commands\\Activities\\UpdateActivityElasticSearchDocumentCommand::class,\n Commands\\Activities\\SetupIntegration\\Talkdesk::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookListCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookShow::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioVideo::class,\n Commands\\Crm\\SetupCloseCrm::class,\n Commands\\Crm\\SetupCopperCrm::class,\n Commands\\Crm\\FullSyncOpportunityCommand::class,\n Commands\\Crm\\IntegrationApp\\CrmEntitiesFullSyncCommand::class,\n Commands\\Crm\\IntegrationApp\\ValidateConnectionCommand::class,\n Commands\\Activities\\Workflow\\RefreshCrmData::class,\n Commands\\Activities\\Migrator\\AnalyseGongCalls::class,\n Commands\\Users\\AddVoiceRoleToRecorderCommand::class,\n Commands\\Activities\\SyncMissingCallDispositions::class,\n Commands\\Calendars\\RemoveFutureCalendarEvents::class,\n FlushRolesPermissionsCache::class,\n Commands\\Activities\\SetupIntegration\\FiveNine::class,\n CalendarEventDeleteCancelledCommand::class,\n CalendarEventDeletePastCommand::class,\n ReportActivityProcessingTimeToDatadogCommand::class,\n ReportProcessingStatesToDatadogCommand::class,\n ReleaseNumbersCommand::class,\n BackfillOpportunityUserFromAccountCommand::class,\n RemoveExpiredRoleChangeEventsCommand::class,\n RemoveExpiredNudgesCommand::class,\n SendNudgeExpirationWarningsCommand::class,\n AutologOldActivitiesCommand::class,\n RemoveUnusedParticipantSpeechesCommand::class,\n DeleteActivitiesForChurnedTeamsCommand::class,\n HardDeleteActivitiesForChurnedTeamsCommand::class,\n TeamDeleteCommand::class,\n TeamsDeleteDeactivatedCommand::class,\n UpdateTeamsCommand::class,\n OverrideTranscriptionLocaleCommand::class,\n SyncSlackUserCommand::class,\n PurgeSoftDeletedOpportunitiesCommand::class,\n PurgeSyncBatchesCommand::class,\n ProphetAnalyzeClosedDealsCommand::class,\n DeleteChurnedSubAccounts::class,\n Commands\\ProphetAi\\DumpContext::class,\n DeletePredefinedSubAccounts::class,\n DeleteActivitiesForRetentionTeamsCommand::class,\n HardDeleteActivitiesTeamsCommand::class,\n TeamsDeleteRetentionCommand::class,\n TeamSettingPutCommand::class,\n StopHangingLivestreamsCommand::class,\n FixActivitiesOpportunity::class,\n Commands\\Activities\\SetupIntegration\\Salesforce\\SetupSalesforceIntegrationCommand::class,\n UpdateOldTranscriptionModelLocalesCommand::class,\n Commands\\Dev\\FixMissMatchedCrmActivitiesCommand::class,\n DownloadMissingTrackCommand::class,\n ActivitiesMatchCrmCommand::class,\n DeleteEmailDocumentsCommand::class,\n DeleteOldTranscriptionsCommand::class,\n DeleteS3LeftoversCommand::class,\n RemoveDeleteMarkersCommand::class,\n SyncTeamUsersCommand::class,\n ReassignTranscriptCommand::class,\n DiarizeViaAiParticipantIdentificationCommand::class,\n RestoreActivityTypeCommand::class,\n DeleteOldAiCrmNotesCommand::class,\n DeleteReportCommand::class,\n AutomatedReportsRetentionPolicyCommand::class,\n SyncHubspotActiveDeals::class,\n GenerateInternalWebhookToken::class,\n IssueMcpTokenCommand::class,\n RestoreActivityCrmProviderIdCommand::class,\n CleanupActivityTracksCommand::class,\n DeleteUnusedTracksCommand::class,\n RestoreTracksCommand::class,\n HubspotWebhookServiceCommand::class,\n ProcessMergedObjectsCommand::class,\n HubspotJournalPollingCommand::class,\n SetupJournalDealWebhookSubscriptionsCommand::class,\n ListJournalWebhookSubscriptionsCommand::class,\n RemoveGhostParticipantsCommand::class,\n AutodetectAiActivityTypeCommand::class,\n Commands\\Crm\\LogActivitiesCommand::class,\n Commands\\Crm\\MatchOpportunityActivitiesCommand::class,\n PurgeDeletedOpportunitiesCommand::class,\n CleanDuplicateFieldDataCommand::class,\n RetryProspectSummaryCommand::class,\n ProcessHubspotObjectsSyncBatches::class,\n SyncOpportunitiesMissingFieldDataCommand::class,\n RestoreDealAssociationsCommand::class,\n Commands\\Crm\\TestPipedriveOfficialSdkCommand::class,\n ];\n\n private Schedule $schedule;\n private string $output;\n\n protected function schedule(Schedule $schedule): void\n {\n $this->schedule = $schedule;\n $this->output = config('jiminny.scheduler_log');\n\n $schedule->useCache('redis');\n\n $currentMinute = (int) date('i');\n $currentDay = (int) date('w');\n\n $this->scheduleEveryMinute();\n $this->scheduleEveryTwoMinutes();\n $this->scheduleEveryFiveMinutes();\n $this->scheduleEveryTenMinutes();\n $this->scheduleEveryFifteenMinutes();\n $this->scheduleEveryThirtyMinutes();\n $this->scheduleHourly();\n $this->scheduleDaily();\n $this->scheduleWeekly($currentDay);\n $this->scheduleSpecificTimes();\n $this->scheduleDynamic($currentMinute);\n }\n\n protected function scheduleEveryMinute(): void\n {\n $this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();\n $this->scheduleCommand('dialers:monitor-activities')->everyMinute();\n $this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();\n $this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();\n\n $this->schedule->command('mailbox:batch:process', ['--max-batches=15'])\n ->everyMinute()\n ->sendOutputTo($this->output);\n }\n\n protected function scheduleEveryTwoMinutes(): void\n {\n $this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();\n }\n\n protected function scheduleEveryFiveMinutes(): void\n {\n $this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();\n // Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)\n $this->scheduleCommand('crm:sync-hubspot-objects', [], 4)\n ->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');\n $this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();\n\n $this->schedule->command('mailbox:batch:create')\n ->cron('2-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output);\n\n $this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])\n ->cron('3-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ->runInBackground();\n\n $this->schedule->command('hubspot:journal-poll', ['--start'])\n ->everyFiveMinutes()\n ->sendOutputTo($this->output)\n ->runInBackground();\n }\n\n protected function scheduleEveryTenMinutes(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();\n $this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('crm:reset-governor')->everyTenMinutes();\n }\n\n protected function scheduleEveryFifteenMinutes(): void\n {\n $this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();\n $this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');\n $this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n ],\n ])->everyFifteenMinutes();\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->cron('7,22,37,52 * * * *');\n }\n\n protected function scheduleEveryThirtyMinutes(): void\n {\n $this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');\n $this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();\n\n $this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)\n ->between('02:58', '05:29')\n ->everyThirtyMinutes()\n ->runInBackground();\n\n $this->scheduleActivitiesHardDelete();\n }\n\n protected function scheduleHourly(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();\n $this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');\n $this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');\n $this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');\n $this->scheduleCommand('automated-reports:send')->hourly();\n $this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);\n $this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);\n }\n\n protected function scheduleDaily(): void\n {\n $this->scheduleCommand('teams:sync-planhat')->daily();\n $this->scheduleCommand('twilio:sync-addresses')->daily();\n $this->scheduleCommand('twilio:sync-zone-access')->daily();\n $this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();\n $this->scheduleCommand('users:sync-licence-data')->daily();\n $this->scheduleCommand('users:sync-intercom-data')->daily();\n $this->scheduleCommand('nudges:send-expiration-warnings')->daily();\n $this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();\n }\n\n protected function scheduleWeekly(int $currentDay): void\n {\n if ($currentDay === 0) {\n $this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);\n }\n\n if ($currentDay === 6) {\n $this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_AMAZON_CONNECT,\n '--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->saturdays()->at('01:00')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)\n ->saturdays()->at('01:07')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)\n ->saturdays()->at('05:08')->runInBackground();\n $this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')\n ->weeklyOn(6, '6:00');\n $this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')\n ->weeklyOn(6, '7:00');\n }\n }\n\n protected function scheduleSpecificTimes(): void\n {\n $this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_DISCARDED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:20')->runInBackground();\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_PROCESSED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:30')->runInBackground();\n\n $this->scheduleCommand('automated-reports')->dailyAt('01:00');\n $this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');\n $this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');\n $this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');\n $this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');\n $this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');\n $this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('03:05');\n\n\n $this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');\n $this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');\n $this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');\n $this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');\n $this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');\n\n if (! $this->app->environment('production')) {\n $this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)\n ->dailyAt('04:02')->runInBackground();\n }\n\n $this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n ],\n ])->dailyAt('05:05');\n\n if (! $this->app->environment('qa')) {\n $this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');\n }\n\n $this->scheduleCommand('activity:sync-dispositions', [\n Activity::PROVIDER_HUBSPOT,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('07:05');\n }\n\n protected function scheduleDynamic(int $currentMinute): void\n {\n $this->scheduleHourlyFallbackActivitySyncs($currentMinute);\n $this->scheduleBullhornHeartbeat($currentMinute);\n }\n\n private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void\n {\n if ($offsetMinute === 0) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);\n } elseif ($offsetMinute === 1) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);\n } elseif ($offsetMinute === 2) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);\n }\n }\n\n private function scheduleBullhornHeartbeat(int $currentMinute): void\n {\n $bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);\n if ($bhHeartbeatInterval > 0) {\n $minutes = max((int) floor($bhHeartbeatInterval / 60), 1);\n if ($currentMinute % $minutes === 0) {\n $bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);\n if ($minutes > 30) {\n $bhEvent->hourly();\n } else {\n $bhEvent->cron(sprintf('*/%d * * * *', $minutes));\n }\n }\n }\n }\n\n private function scheduleActivitiesHardDelete(): void\n {\n if (config(key: 'jiminny.deploy_region') === 'eu') {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 1000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n } elseif ($this->app->environment('production')) {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 2000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n }\n }\n\n private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void\n {\n $this->scheduleCommand('activity:sync', [\n $provider,\n '--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->hourlyAt($offsetMinute);\n }\n\n /**\n * Register the Closure based commands for the application.\n */\n protected function commands(): void\n {\n require_once base_path('routes/console.php');\n }\n\n private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event\n {\n return $this->schedule\n ->command($name, $options)\n ->withoutOverlapping($expiresAt)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-935282521832906214
|
-8743917468487692599
|
idle
|
accessibility
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\DTO\Invitation;
use Jiminny\DTO\UserEmail;
use Jiminny\Http\Requests\Settings\Teams\CreateInvitationRequest;
use Jiminny\Http\Requests\Settings\Teams\CreateTeamRequest;
use Jiminny\Http\Requests\Settings\Teams\EditTeamRequest;
use Jiminny\Models\Group;
use Jiminny\Models\Invitation;
use Jiminny\Models\Role;
use Jiminny\Models\Team;
use Jiminny\Models\User;
class UserInvitationDTO
{
use UserEmail;
public string $email;
public ?string $secondaryEmail;
public ?int $groupId;
public int $teamId;
public bool $crmRequired;
public array $roleIds;
public bool $isOwner;
public ?User $currentUser = null;
/**
* @param array{
* email: string,
* secondaryEmail: string|null,
* groupId: int|null,
* teamId: int|string,
* crmRequired: bool,
* roleIds: int[],
* isOwner: bool,
* user?: User
* } $attributes
*/
private function __construct(array $attributes)
{
$this->email = mb_strtolower($attributes['email']);
$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);
$this->groupId = $attributes['groupId'];
$this->teamId = (int) $attributes['teamId'];
$this->crmRequired = (bool) $attributes['crmRequired'];
$this->roleIds = $attributes['roleIds'];
$this->isOwner = $attributes['isOwner'];
$this->currentUser = $attributes['user'] ?? null;
}
public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self
{
$roleIds = Role::whereIn('name', [
User::ROLE_ADMIN,
User::ROLE_RECORDER,
])->pluck('id')->toArray();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => $request->getOwnerEmail(),
'secondaryEmail' => null,
'groupId' => null,
'teamId' => $team->getId(),
'crmRequired' => true,
'roleIds' => $roleIds,
'user' => $currentUser,
'isOwner' => true,
]);
}
public static function fromRequest(CreateInvitationRequest $request): self
{
$data = $request->validated();
$groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;
$teamId = Team::uuid($data['team_id'])->getId();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => mb_strtolower($data['email']),
'secondaryEmail' => $data['secondary_email'] ?? null,
'groupId' => $groupId,
'teamId' => $teamId,
'crmRequired' => $data['crm_required'],
'roleIds' => $data['roles'],
'user' => $currentUser,
'isOwner' => false,
]);
}
public static function fromInvitation(Invitation $invitation, User $currentUser): self
{
$roles = $invitation->roles()->get();
$isOwner = $invitation->isOwner();
return new self([
'email' => $invitation->email,
'secondaryEmail' => $invitation->getSecondaryEmail(),
'groupId' => $invitation->group_id,
'teamId' => $invitation->team_id,
'crmRequired' => $invitation->crm_required,
'roleIds' => $roles->pluck('id')->toArray(),
'user' => $currentUser,
'isOwner' => $isOwner,
]);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
17
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Console;
use Illuminate\Console\ConfirmableTrait;
use Illuminate\Console\Scheduling\Event;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Jiminny\Component\Acl\RemoveExpiredRoleChangeEventsCommand;
use Jiminny\Component\ActionItems\Commands\SendActionItemsCommand;
use Jiminny\Component\AiActivityType\Commands\AutodetectAiActivityTypeCommand;
use Jiminny\Component\AskJiminnyAi\Commands\ProphetAnalyzeClosedDealsCommand;
use Jiminny\Component\Cache\Constants;
use Jiminny\Component\DealInsights\Commands\SendDealsUpdateCommand;
use Jiminny\Component\MediaPipeline\Command\MediaPipelineRestartCommand;
use Jiminny\Component\MediaPipeline\Command\ReportActivityProcessingTimeToDatadogCommand;
use Jiminny\Component\MediaPipeline\Command\ReportProcessingStatesToDatadogCommand;
use Jiminny\Component\Transcription\Commands\OverrideTranscriptionLocaleCommand;
use Jiminny\Component\Transcription\Commands\RetryFailedTranscriptionsCommand;
use Jiminny\Component\Transcription\Commands\RetryStuckTranscriptionsCommand;
use Jiminny\Console\Commands\Activities\ActivitiesMatchCrmCommand;
use Jiminny\Console\Commands\Activities\AutologOldActivitiesCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForRetentionTeamsCommand;
use Jiminny\Console\Commands\Activities\DownloadMissingTrackCommand;
use Jiminny\Console\Commands\Activities\FixActivitiesOpportunity;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesTeamsCommand;
use Jiminny\Console\Commands\Activities\ReassignTranscriptCommand;
use Jiminny\Console\Commands\Activities\ReindexRecentActivitiesCommand;
use Jiminny\Console\Commands\Activities\RetryProspectSummaryCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeleteCancelledCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeletePastCommand;
use Jiminny\Console\Commands\Crm\BackfillOpportunityUserFromAccountCommand;
use Jiminny\Console\Commands\Crm\CleanDuplicateFieldDataCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ProcessMergedObjectsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\RestoreDealAssociationsCommand;
use Jiminny\Console\Commands\Crm\ProcessHubspotObjectsSyncBatches;
use Jiminny\Console\Commands\Crm\PurgeDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ListJournalWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\SetupJournalDealWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\SyncHubspotActiveDeals;
use Jiminny\Console\Commands\Crm\SyncOpportunitiesMissingFieldDataCommand;
use Jiminny\Console\Commands\DeleteOldAiCrmNotesCommand;
use Jiminny\Console\Commands\DeleteS3LeftoversCommand;
use Jiminny\Console\Commands\DiarizeViaAiParticipantIdentificationCommand;
use Jiminny\Console\Commands\Elasticsearch\DeleteEmailDocumentsCommand;
use Jiminny\Console\Commands\Elasticsearch\RemoveGhostParticipantsCommand;
use Jiminny\Console\Commands\FlushRolesPermissionsCache;
use Jiminny\Console\Commands\GenerateInternalWebhookToken;
use Jiminny\Console\Commands\IssueMcpTokenCommand;
use Jiminny\Console\Commands\HubspotJournalPollingCommand;
use Jiminny\Console\Commands\HubspotWebhookServiceCommand;
use Jiminny\Console\Commands\Livestream\StopHangingLivestreamsCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteEmailMessagesWithoutActivityCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteInboxEmailsCommand;
use Jiminny\Console\Commands\PurgeSoftDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\PurgeSyncBatchesCommand;
use Jiminny\Console\Commands\RemoveDeleteMarkersCommand;
use Jiminny\Console\Commands\RemoveExpiredNudgesCommand;
use Jiminny\Console\Commands\RemoveUnusedParticipantSpeechesCommand;
use Jiminny\Console\Commands\Reports\AutomatedReportsRetentionPolicyCommand;
use Jiminny\Console\Commands\Reports\DeleteReportCommand;
use Jiminny\Console\Commands\RestoreActivityCrmProviderIdCommand;
use Jiminny\Console\Commands\RestoreActivityTypeCommand;
use Jiminny\Console\Commands\SendNudgeExpirationWarningsCommand;
use Jiminny\Console\Commands\Slack\SyncSlackUserCommand;
use Jiminny\Console\Commands\Teams\SyncTeamUsersCommand;
use Jiminny\Console\Commands\Teams\TeamDeleteCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteDeactivatedCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteRetentionCommand;
use Jiminny\Console\Commands\Teams\TeamSettingPutCommand;
use Jiminny\Console\Commands\Teams\UpdateTeamsCommand;
use Jiminny\Console\Commands\Tracks\CleanupActivityTracksCommand;
use Jiminny\Console\Commands\Tracks\DeleteUnusedTracksCommand;
use Jiminny\Console\Commands\Tracks\RestoreTracksCommand;
use Jiminny\Console\Commands\Transcription\DeleteOldTranscriptionsCommand;
use Jiminny\Console\Commands\Transcription\UpdateOldTranscriptionModelLocalesCommand;
use Jiminny\Console\Commands\Twilio\DeleteChurnedSubAccounts;
use Jiminny\Console\Commands\Twilio\DeletePredefinedSubAccounts;
use Jiminny\Console\Commands\Twilio\ReleaseNumbersCommand;
use Jiminny\Jobs\Activity\SyncActivity;
use Jiminny\Models\Activity;
use Jiminny\Models\InboxEmail;
use Jiminny\Services\RecallAI\Commands\ImportRegionMeetingCommand;
use Jiminny\Services\RecallAI\Commands\ScheduleBotCommand;
class Kernel extends ConsoleKernel
{
use ConfirmableTrait;
/**
* The Artisan commands provided by your application.
*
* @var string[]
*/
protected $commands = [
Commands\GeckoExport\GeckoExportTranscriptCommand::class,
Commands\GeckoExport\GeckoExportTranscriptionCommand::class,
Commands\GeckoExport\GeckoExportParticipantSpeechesCommand::class,
Commands\Activities\DeleteForCoachesCommand::class,
ReindexRecentActivitiesCommand::class,
Commands\Crm\BullhornPingCommand::class,
Commands\Crm\BullhornSessionCommand::class,
Commands\Crm\BullhornSearchCommand::class,
Commands\PlaybackThemes\TopicsConsolidateCommand::class,
Commands\PlaybackThemes\PlaybackThemesCopyCommand::class,
Commands\PlaybackThemes\AssignTopicsUsedBySingleTeamCommand::class,
Commands\PlaybackThemes\PlaybackThemesMigrateToVersionsCommand::class,
Commands\Vocabulary\VocabularyCopyCommand::class,
Commands\Transcription\TranscriptionPrintRaw::class,
Commands\Migrate\JiminnyMigratePopulateActivitySourceCommand::class,
Commands\EngagementStats\JiminnyEngagementStatsExplainCommand::class,
Commands\EngagementStatsRegenerateCommand::class,
Commands\Analytics\NumberOfActivitiesPerActivityTypeCommand::class,
Commands\Elasticsearch\MappingRunCommand::class,
Commands\Elasticsearch\MappingInstallCommand::class,
Commands\Elasticsearch\UpdateEsMappingSettingsCommand::class,
Commands\Analytics\TranscriptionWordMatchCommand::class,
Commands\JiminnyCacheClearCommand::class,
Commands\Transcription\TranscriptionSearchCommand::class,
RetryStuckTranscriptionsCommand::class,
RetryFailedTranscriptionsCommand::class,
Commands\JiminnyDebugCommand::class,
Commands\RunAiCallScoringForUntypedActivitiesCommand::class,
Commands\Calendars\SyncCalendars::class,
Commands\Calendars\SyncDeletedEvents::class,
Commands\Twilio\FetchMetrics::class,
Commands\Twilio\FetchEvents::class,
Commands\Twilio\FetchSummary::class,
Commands\Twilio\SyncZoneAccess::class,
Commands\DatabaseTableCount::class,
Commands\PurgeConferences::class,
Commands\ResetElasticSearch::class,
Commands\CreateDatabaseUsers::class,
Commands\Activities\NotifyNotLogged::class,
Commands\Crm\SyncTeamMetadata::class,
Commands\Crm\SyncProfileMetadata::class,
Commands\Crm\SyncContact::class,
Commands\Crm\SyncObjects::class,
Commands\Crm\SyncHubspotObjects::class,
Commands\Crm\SyncAccount::class,
Commands\Crm\ResetGovernorLimits::class,
Commands\Crm\ManageSyncStrategyCommand::class,
Commands\ImportRecording::class,
Commands\TrackImported::class,
Commands\Twilio\RecoverTwilioTracksCommand::class,
Commands\Crm\SetupLayouts::class,
Commands\Tracks\SyncTwilioTracks::class,
Commands\Activities\StatusCount::class,
Commands\Mailboxes\TextRelay\WatchMailboxEvents::class,
Commands\Mailboxes\InboxCreate::class,
Commands\Mailboxes\InboxSync::class,
Commands\Mailboxes\BatchCreate::class,
Commands\Mailboxes\BatchProcess::class,
Commands\Mailboxes\InboxPurge::class,
Commands\Mailboxes\BatchRetryFailed::class,
Commands\Mailboxes\BatchFailStalled::class,
Commands\Mailboxes\SkipListsRefresh::class,
Commands\Mailboxes\SkipListsDump::class,
Commands\Mailboxes\TextRelay\SyncMailbox::class,
Commands\Mailboxes\DeleteInboxEmailsCommand::class,
Commands\Mailboxes\DeleteEmailMessagesCommand::class,
DeleteEmailMessagesWithoutActivityCommand::class,
Commands\Tracks\CheckIntegrity::class,
Commands\Twilio\RemoteLifecycle::class,
Commands\Twilio\SyncNumbers::class,
Commands\Crm\SetupActivityTypeForFollowUp::class,
Commands\Activities\CheckPlayable::class,
Commands\Activities\ActivityDeleteCommand::class,
Commands\Activities\Copy::class,
Commands\Activities\ActivityHardDeleteCommand::class,
Commands\Reports\Team::class,
Commands\Reports\GenerateMarketingReport::class,
Commands\Reports\AutomatedReportsCommand::class,
Commands\Reports\AutomatedReportsSendCommand::class,
Commands\MuteOrganizerChannel::class,
Commands\Tracks\DeleteTracks::class,
Commands\Tracks\RetryDownload::class,
Commands\Tracks\RetryFailedDownloads::class,
Commands\Twilio\SyncAddresses::class,
Commands\Activities\UpdateElasticSearch::class,
Commands\MakeSlackLiveCoachingChatNotesOn::class,
Commands\Activities\PreMeetingNotification::class,
ScheduleBotCommand::class,
ImportRegionMeetingCommand::class,
Commands\Activities\MonitorMeetingCountCommand::class,
Commands\Activities\MonitorMeetingStartCommand::class,
Commands\Activities\MonitorMeetingEndCommand::class,
Commands\SyncActivity::class,
Commands\PhpApm::class,
Commands\Crm\SyncOpportunity::class,
Commands\Crm\SyncLead::class,
Commands\Users\SyncLicenceDataToSalesforce::class,
Commands\Crm\UpdateOpportunitySpecifications::class,
Commands\Users\SyncToIntercom::class,
Commands\Users\SyncToUserPilot::class,
Commands\Teams\SyncToPlanhat::class,
Commands\Twilio\SetZoneAccess::class,
Commands\Users\CreateDefaultSavedSearchesCommand::class,
Commands\Crm\SendNotLogged::class,
Commands\Teams\DeactivateTeamCommand::class,
Commands\Crm\SyncFieldMetadata::class,
Commands\Postmark\SyncEmailTemplatesCommand::class,
Commands\PlaybackThemes\ImportTriggersFromTranslatedCsvCommand::class,
Commands\Activities\PreMeetingReminder::class,
Commands\Activities\CustomerActivitiesExport::class,
Commands\Users\RefreshAccessToken::class,
Commands\Calendars\SetupCalendarSubscription::class,
Commands\Activities\InviteMeetingBot::class,
Commands\Activities\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,
Commands\Crm\MigrateProvider::class,
Commands\Activities\MigrateLocationFromCalendarEventToActivities::class,
Commands\HelperTruncateCoachingTables::class,
Commands\FixCrossTenantIssues::class,
Commands\Activities\CloudCall\SetupIntegration::class,
Commands\Activities\CloudTalk\FixTimeZone::class,
Commands\Activities\Orum\SetupIntegration::class,
Commands\Activities\JustCall\SetupIntegration::class,
Commands\Activities\RingCentral\AddInboundPromptSupport::class,
Commands\Dialers\Dialpad\SubscribeToWebhooks::class,
Commands\RecalculateDealRisksCommand::class,
SendDealsUpdateCommand::class,
Commands\Activities\SetProviderCapabilitiesField::class,
Commands\Teams\InitiallySetNotificationProviderTeamsTable::class,
Commands\Crm\AddLayoutEntities::class,
Commands\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,
Commands\JiminnyTokenInfoCommand::class,
Commands\JiminnySetEncryptedTokenManagerModeCommand::class,
Commands\EncryptTokensCommand::class,
Commands\Dialers\Aircall\CheckAndRenewWebhooks::class,
Commands\Migrate\MigrateTeamRegionCommand::class,
Commands\ManageScimForTeam::class,
Commands\Dialers\SyncUsersCommand::class,
Commands\WhichWorkerIsWorkingOnWhichJob::class,
Commands\GroupSetDefaultLanguageCommand::class,
Commands\Dev\AddRateLimitCommand::class,
Commands\Dev\ImportCallsCommand::class,
Commands\DealInsights\BuildDealInsightsLayoutCommand::class,
Commands\DealInsights\DeleteAskJiminnyDealPrompts::class,
Commands\Crm\MatchCrmObjectsCommand::class,
Commands\Activities\SetupIntegration\EightByEight::class,
Commands\Calendars\RemoveCalendarEventActivitiesCommand::class,
Commands\Activities\Migrator\MigrateFromGongCommand::class,
Commands\Activities\Migrator\MigrateFromChorusCommand::class,
Commands\Activities\Migrator\MigrateFromLeexiCommand::class,
Commands\Activities\Migrator\MigrateFromAvomaCommand::class,
Commands\Activities\Migrator\MigrateFromClariCommand::class,
Commands\Activities\SetupIntegration\ConnectAndSell::class,
Commands\Activities\SetupIntegration\CloudTalk::class,
Commands\Users\CreateConferenceSlug::class,
Commands\Elasticsearch\AsyncUpdateEsEntities::class,
Commands\Elasticsearch\ResetAsyncElasticSearchCommand::class,
Commands\Playlists\PlaylistSharesUpdateCommand::class,
Commands\Crm\AutologDelayedCommand::class,
Commands\Activities\HydrateDefaultActivityTypeCommand::class,
Commands\Crm\CheckActivityLoggableCommand::class,
Commands\Activities\MonitorDialerActivitiesCommand::class,
Commands\Activities\SetupIntegration\Xant::class,
Commands\ImportUsersFromCsvFile::class,
Commands\DevPostmanCommand::class,
Commands\Playlists\FixTreeStructureCommand::class,
Commands\Zoom\ResolvePmiLinksCommand::class,
Commands\MarkBranchForEnvironmentPipelineCommand::class,
Commands\Activities\ProbeMediaSegmentsCommand::class,
Commands\Activities\SetupIntegration\AmazonConnect::class,
Commands\Playbooks\ChangePlaybookActivityFieldCommand::class,
MediaPipelineRestartCommand::class,
Commands\Dev\FixHubSpotTokens::class,
Commands\Dev\MonitorSocialAccountsState::class,
Commands\Activities\SetupIntegration\Vonage::class,
Commands\Activities\SetupIntegration\TwilioFlex::class,
Commands\Activities\SetupIntegration\TwilioFlexDirect::class,
Commands\Activities\SetupIntegration\TwilioFlexSetDialerAuthCredentialsCommand::class,
Commands\Activities\SetupIntegration\TwilioSetS3RecordingCredentialsCommand::class,
SendActionItemsCommand::class,
Commands\Users\ChangeEmail::class,
Commands\Calendars\ListUserGoogleCalendars::class,
Commands\Activities\JustCall\SyncPlaybackLinkToCrmCommand::class,
Commands\Activities\HydrateCallWithCrmDataCommand::class,
Commands\Activities\UpdateActivityElasticSearchDocumentCommand::class,
Commands\Activities\SetupIntegration\Talkdesk::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookListCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookShow::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,
Commands\Activities\SetupIntegration\TwilioVideo::class,
Commands\Crm\SetupCloseCrm::class,
Commands\Crm\SetupCopperCrm::class,
Commands\Crm\FullSyncOpportunityCommand::class,
Commands\Crm\IntegrationApp\CrmEntitiesFullSyncCommand::class,
Commands\Crm\IntegrationApp\ValidateConnectionCommand::class,
Commands\Activities\Workflow\RefreshCrmData::class,
Commands\Activities\Migrator\AnalyseGongCalls::class,
Commands\Users\AddVoiceRoleToRecorderCommand::class,
Commands\Activities\SyncMissingCallDispositions::class,
Commands\Calendars\RemoveFutureCalendarEvents::class,
FlushRolesPermissionsCache::class,
Commands\Activities\SetupIntegration\FiveNine::class,
CalendarEventDeleteCancelledCommand::class,
CalendarEventDeletePastCommand::class,
ReportActivityProcessingTimeToDatadogCommand::class,
ReportProcessingStatesToDatadogCommand::class,
ReleaseNumbersCommand::class,
BackfillOpportunityUserFromAccountCommand::class,
RemoveExpiredRoleChangeEventsCommand::class,
RemoveExpiredNudgesCommand::class,
SendNudgeExpirationWarningsCommand::class,
AutologOldActivitiesCommand::class,
RemoveUnusedParticipantSpeechesCommand::class,
DeleteActivitiesForChurnedTeamsCommand::class,
HardDeleteActivitiesForChurnedTeamsCommand::class,
TeamDeleteCommand::class,
TeamsDeleteDeactivatedCommand::class,
UpdateTeamsCommand::class,
OverrideTranscriptionLocaleCommand::class,
SyncSlackUserCommand::class,
PurgeSoftDeletedOpportunitiesCommand::class,
PurgeSyncBatchesCommand::class,
ProphetAnalyzeClosedDealsCommand::class,
DeleteChurnedSubAccounts::class,
Commands\ProphetAi\DumpContext::class,
DeletePredefinedSubAccounts::class,
DeleteActivitiesForRetentionTeamsCommand::class,
HardDeleteActivitiesTeamsCommand::class,
TeamsDeleteRetentionCommand::class,
TeamSettingPutCommand::class,
StopHangingLivestreamsCommand::class,
FixActivitiesOpportunity::class,
Commands\Activities\SetupIntegration\Salesforce\SetupSalesforceIntegrationCommand::class,
UpdateOldTranscriptionModelLocalesCommand::class,
Commands\Dev\FixMissMatchedCrmActivitiesCommand::class,
DownloadMissingTrackCommand::class,
ActivitiesMatchCrmCommand::class,
DeleteEmailDocumentsCommand::class,
DeleteOldTranscriptionsCommand::class,
DeleteS3LeftoversCommand::class,
RemoveDeleteMarkersCommand::class,
SyncTeamUsersCommand::class,
ReassignTranscriptCommand::class,
DiarizeViaAiParticipantIdentificationCommand::class,
RestoreActivityTypeCommand::class,
DeleteOldAiCrmNotesCommand::class,
DeleteReportCommand::class,
AutomatedReportsRetentionPolicyCommand::class,
SyncHubspotActiveDeals::class,
GenerateInternalWebhookToken::class,
IssueMcpTokenCommand::class,
RestoreActivityCrmProviderIdCommand::class,
CleanupActivityTracksCommand::class,
DeleteUnusedTracksCommand::class,
RestoreTracksCommand::class,
HubspotWebhookServiceCommand::class,
ProcessMergedObjectsCommand::class,
HubspotJournalPollingCommand::class,
SetupJournalDealWebhookSubscriptionsCommand::class,
ListJournalWebhookSubscriptionsCommand::class,
RemoveGhostParticipantsCommand::class,
AutodetectAiActivityTypeCommand::class,
Commands\Crm\LogActivitiesCommand::class,
Commands\Crm\MatchOpportunityActivitiesCommand::class,
PurgeDeletedOpportunitiesCommand::class,
CleanDuplicateFieldDataCommand::class,
RetryProspectSummaryCommand::class,
ProcessHubspotObjectsSyncBatches::class,
SyncOpportunitiesMissingFieldDataCommand::class,
RestoreDealAssociationsCommand::class,
Commands\Crm\TestPipedriveOfficialSdkCommand::class,
];
private Schedule $schedule;
private string $output;
protected function schedule(Schedule $schedule): void
{
$this->schedule = $schedule;
$this->output = config('jiminny.scheduler_log');
$schedule->useCache('redis');
$currentMinute = (int) date('i');
$currentDay = (int) date('w');
$this->scheduleEveryMinute();
$this->scheduleEveryTwoMinutes();
$this->scheduleEveryFiveMinutes();
$this->scheduleEveryTenMinutes();
$this->scheduleEveryFifteenMinutes();
$this->scheduleEveryThirtyMinutes();
$this->scheduleHourly();
$this->scheduleDaily();
$this->scheduleWeekly($currentDay);
$this->scheduleSpecificTimes();
$this->scheduleDynamic($currentMinute);
}
protected function scheduleEveryMinute(): void
{
$this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();
$this->scheduleCommand('dialers:monitor-activities')->everyMinute();
$this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();
$this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();
$this->schedule->command('mailbox:batch:process', ['--max-batches=15'])
->everyMinute()
->sendOutputTo($this->output);
}
protected function scheduleEveryTwoMinutes(): void
{
$this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();
}
protected function scheduleEveryFiveMinutes(): void
{
$this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();
// Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)
$this->scheduleCommand('crm:sync-hubspot-objects', [], 4)
->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');
$this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();
$this->schedule->command('mailbox:batch:create')
->cron('2-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output);
$this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])
->cron('3-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output)
->runInBackground();
$this->schedule->command('hubspot:journal-poll', ['--start'])
->everyFiveMinutes()
->sendOutputTo($this->output)
->runInBackground();
}
protected function scheduleEveryTenMinutes(): void
{
$this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();
$this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('crm:reset-governor')->everyTenMinutes();
}
protected function scheduleEveryFifteenMinutes(): void
{
$this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();
$this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');
$this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
],
])->everyFifteenMinutes();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->cron('7,22,37,52 * * * *');
}
protected function scheduleEveryThirtyMinutes(): void
{
$this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');
$this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();
$this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)
->between('02:58', '05:29')
->everyThirtyMinutes()
->runInBackground();
$this->scheduleActivitiesHardDelete();
}
protected function scheduleHourly(): void
{
$this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();
$this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');
$this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');
$this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');
$this->scheduleCommand('automated-reports:send')->hourly();
$this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);
$this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);
}
protected function scheduleDaily(): void
{
$this->scheduleCommand('teams:sync-planhat')->daily();
$this->scheduleCommand('twilio:sync-addresses')->daily();
$this->scheduleCommand('twilio:sync-zone-access')->daily();
$this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();
$this->scheduleCommand('users:sync-licence-data')->daily();
$this->scheduleCommand('users:sync-intercom-data')->daily();
$this->scheduleCommand('nudges:send-expiration-warnings')->daily();
$this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();
}
protected function scheduleWeekly(int $currentDay): void
{
if ($currentDay === 0) {
$this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);
}
if ($currentDay === 6) {
$this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_AMAZON_CONNECT,
'--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->saturdays()->at('01:00')->runInBackground();
$this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)
->saturdays()->at('01:07')->runInBackground();
$this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)
->saturdays()->at('05:08')->runInBackground();
$this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')
->weeklyOn(6, '6:00');
$this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')
->weeklyOn(6, '7:00');
}
}
protected function scheduleSpecificTimes(): void
{
$this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_DISCARDED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:20')->runInBackground();
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_PROCESSED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:30')->runInBackground();
$this->scheduleCommand('automated-reports')->dailyAt('01:00');
$this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');
$this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');
$this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');
$this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');
$this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');
$this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('03:05');
$this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');
$this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');
$this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');
$this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');
$this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');
if (! $this->app->environment('production')) {
$this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)
->dailyAt('04:02')->runInBackground();
}
$this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
],
])->dailyAt('05:05');
if (! $this->app->environment('qa')) {
$this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');
}
$this->scheduleCommand('activity:sync-dispositions', [
Activity::PROVIDER_HUBSPOT,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('07:05');
}
protected function scheduleDynamic(int $currentMinute): void
{
$this->scheduleHourlyFallbackActivitySyncs($currentMinute);
$this->scheduleBullhornHeartbeat($currentMinute);
}
private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void
{
if ($offsetMinute === 0) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);
} elseif ($offsetMinute === 1) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);
} elseif ($offsetMinute === 2) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);
}
}
private function scheduleBullhornHeartbeat(int $currentMinute): void
{
$bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);
if ($bhHeartbeatInterval > 0) {
$minutes = max((int) floor($bhHeartbeatInterval / 60), 1);
if ($currentMinute % $minutes === 0) {
$bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);
if ($minutes > 30) {
$bhEvent->hourly();
} else {
$bhEvent->cron(sprintf('*/%d * * * *', $minutes));
}
}
}
}
private function scheduleActivitiesHardDelete(): void
{
if (config(key: 'jiminny.deploy_region') === 'eu') {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 1000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
} elseif ($this->app->environment('production')) {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 2000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
}
}
private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void
{
$this->scheduleCommand('activity:sync', [
$provider,
'--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->hourlyAt($offsetMinute);
}
/**
* Register the Closure based commands for the application.
*/
protected function commands(): void
{
require_once base_path('routes/console.php');
}
private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event
{
return $this->schedule
->command($name, $options)
->withoutOverlapping($expiresAt)
->onOneServer()
->sendOutputTo($this->output)
;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
50068
|
NULL
|
NULL
|
NULL
|
|
50071
|
1775
|
43
|
2026-05-18T07:14:51.734233+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088491734_m1.jpg...
|
PhpStorm
|
faVsco.js – Kernel.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\DTO\Invitation;
use Jiminny\DTO\UserEmail;
use Jiminny\Http\Requests\Settings\Teams\CreateInvitationRequest;
use Jiminny\Http\Requests\Settings\Teams\CreateTeamRequest;
use Jiminny\Http\Requests\Settings\Teams\EditTeamRequest;
use Jiminny\Models\Group;
use Jiminny\Models\Invitation;
use Jiminny\Models\Role;
use Jiminny\Models\Team;
use Jiminny\Models\User;
class UserInvitationDTO
{
use UserEmail;
public string $email;
public ?string $secondaryEmail;
public ?int $groupId;
public int $teamId;
public bool $crmRequired;
public array $roleIds;
public bool $isOwner;
public ?User $currentUser = null;
/**
* @param array{
* email: string,
* secondaryEmail: string|null,
* groupId: int|null,
* teamId: int|string,
* crmRequired: bool,
* roleIds: int[],
* isOwner: bool,
* user?: User
* } $attributes
*/
private function __construct(array $attributes)
{
$this->email = mb_strtolower($attributes['email']);
$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);
$this->groupId = $attributes['groupId'];
$this->teamId = (int) $attributes['teamId'];
$this->crmRequired = (bool) $attributes['crmRequired'];
$this->roleIds = $attributes['roleIds'];
$this->isOwner = $attributes['isOwner'];
$this->currentUser = $attributes['user'] ?? null;
}
public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self
{
$roleIds = Role::whereIn('name', [
User::ROLE_ADMIN,
User::ROLE_RECORDER,
])->pluck('id')->toArray();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => $request->getOwnerEmail(),
'secondaryEmail' => null,
'groupId' => null,
'teamId' => $team->getId(),
'crmRequired' => true,
'roleIds' => $roleIds,
'user' => $currentUser,
'isOwner' => true,
]);
}
public static function fromRequest(CreateInvitationRequest $request): self
{
$data = $request->validated();
$groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;
$teamId = Team::uuid($data['team_id'])->getId();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => mb_strtolower($data['email']),
'secondaryEmail' => $data['secondary_email'] ?? null,
'groupId' => $groupId,
'teamId' => $teamId,
'crmRequired' => $data['crm_required'],
'roleIds' => $data['roles'],
'user' => $currentUser,
'isOwner' => false,
]);
}
public static function fromInvitation(Invitation $invitation, User $currentUser): self
{
$roles = $invitation->roles()->get();
$isOwner = $invitation->isOwner();
return new self([
'email' => $invitation->email,
'secondaryEmail' => $invitation->getSecondaryEmail(),
'groupId' => $invitation->group_id,
'teamId' => $invitation->team_id,
'crmRequired' => $invitation->crm_required,
'roleIds' => $roles->pluck('id')->toArray(),
'user' => $currentUser,
'isOwner' => $isOwner,
]);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
17
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Console;
use Illuminate\Console\ConfirmableTrait;
use Illuminate\Console\Scheduling\Event;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Jiminny\Component\Acl\RemoveExpiredRoleChangeEventsCommand;
use Jiminny\Component\ActionItems\Commands\SendActionItemsCommand;
use Jiminny\Component\AiActivityType\Commands\AutodetectAiActivityTypeCommand;
use Jiminny\Component\AskJiminnyAi\Commands\ProphetAnalyzeClosedDealsCommand;
use Jiminny\Component\Cache\Constants;
use Jiminny\Component\DealInsights\Commands\SendDealsUpdateCommand;
use Jiminny\Component\MediaPipeline\Command\MediaPipelineRestartCommand;
use Jiminny\Component\MediaPipeline\Command\ReportActivityProcessingTimeToDatadogCommand;
use Jiminny\Component\MediaPipeline\Command\ReportProcessingStatesToDatadogCommand;
use Jiminny\Component\Transcription\Commands\OverrideTranscriptionLocaleCommand;
use Jiminny\Component\Transcription\Commands\RetryFailedTranscriptionsCommand;
use Jiminny\Component\Transcription\Commands\RetryStuckTranscriptionsCommand;
use Jiminny\Console\Commands\Activities\ActivitiesMatchCrmCommand;
use Jiminny\Console\Commands\Activities\AutologOldActivitiesCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForRetentionTeamsCommand;
use Jiminny\Console\Commands\Activities\DownloadMissingTrackCommand;
use Jiminny\Console\Commands\Activities\FixActivitiesOpportunity;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesTeamsCommand;
use Jiminny\Console\Commands\Activities\ReassignTranscriptCommand;
use Jiminny\Console\Commands\Activities\ReindexRecentActivitiesCommand;
use Jiminny\Console\Commands\Activities\RetryProspectSummaryCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeleteCancelledCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeletePastCommand;
use Jiminny\Console\Commands\Crm\BackfillOpportunityUserFromAccountCommand;
use Jiminny\Console\Commands\Crm\CleanDuplicateFieldDataCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ProcessMergedObjectsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\RestoreDealAssociationsCommand;
use Jiminny\Console\Commands\Crm\ProcessHubspotObjectsSyncBatches;
use Jiminny\Console\Commands\Crm\PurgeDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ListJournalWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\SetupJournalDealWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\SyncHubspotActiveDeals;
use Jiminny\Console\Commands\Crm\SyncOpportunitiesMissingFieldDataCommand;
use Jiminny\Console\Commands\DeleteOldAiCrmNotesCommand;
use Jiminny\Console\Commands\DeleteS3LeftoversCommand;
use Jiminny\Console\Commands\DiarizeViaAiParticipantIdentificationCommand;
use Jiminny\Console\Commands\Elasticsearch\DeleteEmailDocumentsCommand;
use Jiminny\Console\Commands\Elasticsearch\RemoveGhostParticipantsCommand;
use Jiminny\Console\Commands\FlushRolesPermissionsCache;
use Jiminny\Console\Commands\GenerateInternalWebhookToken;
use Jiminny\Console\Commands\IssueMcpTokenCommand;
use Jiminny\Console\Commands\HubspotJournalPollingCommand;
use Jiminny\Console\Commands\HubspotWebhookServiceCommand;
use Jiminny\Console\Commands\Livestream\StopHangingLivestreamsCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteEmailMessagesWithoutActivityCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteInboxEmailsCommand;
use Jiminny\Console\Commands\PurgeSoftDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\PurgeSyncBatchesCommand;
use Jiminny\Console\Commands\RemoveDeleteMarkersCommand;
use Jiminny\Console\Commands\RemoveExpiredNudgesCommand;
use Jiminny\Console\Commands\RemoveUnusedParticipantSpeechesCommand;
use Jiminny\Console\Commands\Reports\AutomatedReportsRetentionPolicyCommand;
use Jiminny\Console\Commands\Reports\DeleteReportCommand;
use Jiminny\Console\Commands\RestoreActivityCrmProviderIdCommand;
use Jiminny\Console\Commands\RestoreActivityTypeCommand;
use Jiminny\Console\Commands\SendNudgeExpirationWarningsCommand;
use Jiminny\Console\Commands\Slack\SyncSlackUserCommand;
use Jiminny\Console\Commands\Teams\SyncTeamUsersCommand;
use Jiminny\Console\Commands\Teams\TeamDeleteCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteDeactivatedCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteRetentionCommand;
use Jiminny\Console\Commands\Teams\TeamSettingPutCommand;
use Jiminny\Console\Commands\Teams\UpdateTeamsCommand;
use Jiminny\Console\Commands\Tracks\CleanupActivityTracksCommand;
use Jiminny\Console\Commands\Tracks\DeleteUnusedTracksCommand;
use Jiminny\Console\Commands\Tracks\RestoreTracksCommand;
use Jiminny\Console\Commands\Transcription\DeleteOldTranscriptionsCommand;
use Jiminny\Console\Commands\Transcription\UpdateOldTranscriptionModelLocalesCommand;
use Jiminny\Console\Commands\Twilio\DeleteChurnedSubAccounts;
use Jiminny\Console\Commands\Twilio\DeletePredefinedSubAccounts;
use Jiminny\Console\Commands\Twilio\ReleaseNumbersCommand;
use Jiminny\Jobs\Activity\SyncActivity;
use Jiminny\Models\Activity;
use Jiminny\Models\InboxEmail;
use Jiminny\Services\RecallAI\Commands\ImportRegionMeetingCommand;
use Jiminny\Services\RecallAI\Commands\ScheduleBotCommand;
class Kernel extends ConsoleKernel
{
use ConfirmableTrait;
/**
* The Artisan commands provided by your application.
*
* @var string[]
*/
protected $commands = [
Commands\GeckoExport\GeckoExportTranscriptCommand::class,
Commands\GeckoExport\GeckoExportTranscriptionCommand::class,
Commands\GeckoExport\GeckoExportParticipantSpeechesCommand::class,
Commands\Activities\DeleteForCoachesCommand::class,
ReindexRecentActivitiesCommand::class,
Commands\Crm\BullhornPingCommand::class,
Commands\Crm\BullhornSessionCommand::class,
Commands\Crm\BullhornSearchCommand::class,
Commands\PlaybackThemes\TopicsConsolidateCommand::class,
Commands\PlaybackThemes\PlaybackThemesCopyCommand::class,
Commands\PlaybackThemes\AssignTopicsUsedBySingleTeamCommand::class,
Commands\PlaybackThemes\PlaybackThemesMigrateToVersionsCommand::class,
Commands\Vocabulary\VocabularyCopyCommand::class,
Commands\Transcription\TranscriptionPrintRaw::class,
Commands\Migrate\JiminnyMigratePopulateActivitySourceCommand::class,
Commands\EngagementStats\JiminnyEngagementStatsExplainCommand::class,
Commands\EngagementStatsRegenerateCommand::class,
Commands\Analytics\NumberOfActivitiesPerActivityTypeCommand::class,
Commands\Elasticsearch\MappingRunCommand::class,
Commands\Elasticsearch\MappingInstallCommand::class,
Commands\Elasticsearch\UpdateEsMappingSettingsCommand::class,
Commands\Analytics\TranscriptionWordMatchCommand::class,
Commands\JiminnyCacheClearCommand::class,
Commands\Transcription\TranscriptionSearchCommand::class,
RetryStuckTranscriptionsCommand::class,
RetryFailedTranscriptionsCommand::class,
Commands\JiminnyDebugCommand::class,
Commands\RunAiCallScoringForUntypedActivitiesCommand::class,
Commands\Calendars\SyncCalendars::class,
Commands\Calendars\SyncDeletedEvents::class,
Commands\Twilio\FetchMetrics::class,
Commands\Twilio\FetchEvents::class,
Commands\Twilio\FetchSummary::class,
Commands\Twilio\SyncZoneAccess::class,
Commands\DatabaseTableCount::class,
Commands\PurgeConferences::class,
Commands\ResetElasticSearch::class,
Commands\CreateDatabaseUsers::class,
Commands\Activities\NotifyNotLogged::class,
Commands\Crm\SyncTeamMetadata::class,
Commands\Crm\SyncProfileMetadata::class,
Commands\Crm\SyncContact::class,
Commands\Crm\SyncObjects::class,
Commands\Crm\SyncHubspotObjects::class,
Commands\Crm\SyncAccount::class,
Commands\Crm\ResetGovernorLimits::class,
Commands\Crm\ManageSyncStrategyCommand::class,
Commands\ImportRecording::class,
Commands\TrackImported::class,
Commands\Twilio\RecoverTwilioTracksCommand::class,
Commands\Crm\SetupLayouts::class,
Commands\Tracks\SyncTwilioTracks::class,
Commands\Activities\StatusCount::class,
Commands\Mailboxes\TextRelay\WatchMailboxEvents::class,
Commands\Mailboxes\InboxCreate::class,
Commands\Mailboxes\InboxSync::class,
Commands\Mailboxes\BatchCreate::class,
Commands\Mailboxes\BatchProcess::class,
Commands\Mailboxes\InboxPurge::class,
Commands\Mailboxes\BatchRetryFailed::class,
Commands\Mailboxes\BatchFailStalled::class,
Commands\Mailboxes\SkipListsRefresh::class,
Commands\Mailboxes\SkipListsDump::class,
Commands\Mailboxes\TextRelay\SyncMailbox::class,
Commands\Mailboxes\DeleteInboxEmailsCommand::class,
Commands\Mailboxes\DeleteEmailMessagesCommand::class,
DeleteEmailMessagesWithoutActivityCommand::class,
Commands\Tracks\CheckIntegrity::class,
Commands\Twilio\RemoteLifecycle::class,
Commands\Twilio\SyncNumbers::class,
Commands\Crm\SetupActivityTypeForFollowUp::class,
Commands\Activities\CheckPlayable::class,
Commands\Activities\ActivityDeleteCommand::class,
Commands\Activities\Copy::class,
Commands\Activities\ActivityHardDeleteCommand::class,
Commands\Reports\Team::class,
Commands\Reports\GenerateMarketingReport::class,
Commands\Reports\AutomatedReportsCommand::class,
Commands\Reports\AutomatedReportsSendCommand::class,
Commands\MuteOrganizerChannel::class,
Commands\Tracks\DeleteTracks::class,
Commands\Tracks\RetryDownload::class,
Commands\Tracks\RetryFailedDownloads::class,
Commands\Twilio\SyncAddresses::class,
Commands\Activities\UpdateElasticSearch::class,
Commands\MakeSlackLiveCoachingChatNotesOn::class,
Commands\Activities\PreMeetingNotification::class,
ScheduleBotCommand::class,
ImportRegionMeetingCommand::class,
Commands\Activities\MonitorMeetingCountCommand::class,
Commands\Activities\MonitorMeetingStartCommand::class,
Commands\Activities\MonitorMeetingEndCommand::class,
Commands\SyncActivity::class,
Commands\PhpApm::class,
Commands\Crm\SyncOpportunity::class,
Commands\Crm\SyncLead::class,
Commands\Users\SyncLicenceDataToSalesforce::class,
Commands\Crm\UpdateOpportunitySpecifications::class,
Commands\Users\SyncToIntercom::class,
Commands\Users\SyncToUserPilot::class,
Commands\Teams\SyncToPlanhat::class,
Commands\Twilio\SetZoneAccess::class,
Commands\Users\CreateDefaultSavedSearchesCommand::class,
Commands\Crm\SendNotLogged::class,
Commands\Teams\DeactivateTeamCommand::class,
Commands\Crm\SyncFieldMetadata::class,
Commands\Postmark\SyncEmailTemplatesCommand::class,
Commands\PlaybackThemes\ImportTriggersFromTranslatedCsvCommand::class,
Commands\Activities\PreMeetingReminder::class,
Commands\Activities\CustomerActivitiesExport::class,
Commands\Users\RefreshAccessToken::class,
Commands\Calendars\SetupCalendarSubscription::class,
Commands\Activities\InviteMeetingBot::class,
Commands\Activities\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,
Commands\Crm\MigrateProvider::class,
Commands\Activities\MigrateLocationFromCalendarEventToActivities::class,
Commands\HelperTruncateCoachingTables::class,
Commands\FixCrossTenantIssues::class,
Commands\Activities\CloudCall\SetupIntegration::class,
Commands\Activities\CloudTalk\FixTimeZone::class,
Commands\Activities\Orum\SetupIntegration::class,
Commands\Activities\JustCall\SetupIntegration::class,
Commands\Activities\RingCentral\AddInboundPromptSupport::class,
Commands\Dialers\Dialpad\SubscribeToWebhooks::class,
Commands\RecalculateDealRisksCommand::class,
SendDealsUpdateCommand::class,
Commands\Activities\SetProviderCapabilitiesField::class,
Commands\Teams\InitiallySetNotificationProviderTeamsTable::class,
Commands\Crm\AddLayoutEntities::class,
Commands\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,
Commands\JiminnyTokenInfoCommand::class,
Commands\JiminnySetEncryptedTokenManagerModeCommand::class,
Commands\EncryptTokensCommand::class,
Commands\Dialers\Aircall\CheckAndRenewWebhooks::class,
Commands\Migrate\MigrateTeamRegionCommand::class,
Commands\ManageScimForTeam::class,
Commands\Dialers\SyncUsersCommand::class,
Commands\WhichWorkerIsWorkingOnWhichJob::class,
Commands\GroupSetDefaultLanguageCommand::class,
Commands\Dev\AddRateLimitCommand::class,
Commands\Dev\ImportCallsCommand::class,
Commands\DealInsights\BuildDealInsightsLayoutCommand::class,
Commands\DealInsights\DeleteAskJiminnyDealPrompts::class,
Commands\Crm\MatchCrmObjectsCommand::class,
Commands\Activities\SetupIntegration\EightByEight::class,
Commands\Calendars\RemoveCalendarEventActivitiesCommand::class,
Commands\Activities\Migrator\MigrateFromGongCommand::class,
Commands\Activities\Migrator\MigrateFromChorusCommand::class,
Commands\Activities\Migrator\MigrateFromLeexiCommand::class,
Commands\Activities\Migrator\MigrateFromAvomaCommand::class,
Commands\Activities\Migrator\MigrateFromClariCommand::class,
Commands\Activities\SetupIntegration\ConnectAndSell::class,
Commands\Activities\SetupIntegration\CloudTalk::class,
Commands\Users\CreateConferenceSlug::class,
Commands\Elasticsearch\AsyncUpdateEsEntities::class,
Commands\Elasticsearch\ResetAsyncElasticSearchCommand::class,
Commands\Playlists\PlaylistSharesUpdateCommand::class,
Commands\Crm\AutologDelayedCommand::class,
Commands\Activities\HydrateDefaultActivityTypeCommand::class,
Commands\Crm\CheckActivityLoggableCommand::class,
Commands\Activities\MonitorDialerActivitiesCommand::class,
Commands\Activities\SetupIntegration\Xant::class,
Commands\ImportUsersFromCsvFile::class,
Commands\DevPostmanCommand::class,
Commands\Playlists\FixTreeStructureCommand::class,
Commands\Zoom\ResolvePmiLinksCommand::class,
Commands\MarkBranchForEnvironmentPipelineCommand::class,
Commands\Activities\ProbeMediaSegmentsCommand::class,
Commands\Activities\SetupIntegration\AmazonConnect::class,
Commands\Playbooks\ChangePlaybookActivityFieldCommand::class,
MediaPipelineRestartCommand::class,
Commands\Dev\FixHubSpotTokens::class,
Commands\Dev\MonitorSocialAccountsState::class,
Commands\Activities\SetupIntegration\Vonage::class,
Commands\Activities\SetupIntegration\TwilioFlex::class,
Commands\Activities\SetupIntegration\TwilioFlexDirect::class,
Commands\Activities\SetupIntegration\TwilioFlexSetDialerAuthCredentialsCommand::class,
Commands\Activities\SetupIntegration\TwilioSetS3RecordingCredentialsCommand::class,
SendActionItemsCommand::class,
Commands\Users\ChangeEmail::class,
Commands\Calendars\ListUserGoogleCalendars::class,
Commands\Activities\JustCall\SyncPlaybackLinkToCrmCommand::class,
Commands\Activities\HydrateCallWithCrmDataCommand::class,
Commands\Activities\UpdateActivityElasticSearchDocumentCommand::class,
Commands\Activities\SetupIntegration\Talkdesk::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookListCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookShow::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,
Commands\Activities\SetupIntegration\TwilioVideo::class,
Commands\Crm\SetupCloseCrm::class,
Commands\Crm\SetupCopperCrm::class,
Commands\Crm\FullSyncOpportunityCommand::class,
Commands\Crm\IntegrationApp\CrmEntitiesFullSyncCommand::class,
Commands\Crm\IntegrationApp\ValidateConnectionCommand::class,
Commands\Activities\Workflow\RefreshCrmData::class,
Commands\Activities\Migrator\AnalyseGongCalls::class,
Commands\Users\AddVoiceRoleToRecorderCommand::class,
Commands\Activities\SyncMissingCallDispositions::class,
Commands\Calendars\RemoveFutureCalendarEvents::class,
FlushRolesPermissionsCache::class,
Commands\Activities\SetupIntegration\FiveNine::class,
CalendarEventDeleteCancelledCommand::class,
CalendarEventDeletePastCommand::class,
ReportActivityProcessingTimeToDatadogCommand::class,
ReportProcessingStatesToDatadogCommand::class,
ReleaseNumbersCommand::class,
BackfillOpportunityUserFromAccountCommand::class,
RemoveExpiredRoleChangeEventsCommand::class,
RemoveExpiredNudgesCommand::class,
SendNudgeExpirationWarningsCommand::class,
AutologOldActivitiesCommand::class,
RemoveUnusedParticipantSpeechesCommand::class,
DeleteActivitiesForChurnedTeamsCommand::class,
HardDeleteActivitiesForChurnedTeamsCommand::class,
TeamDeleteCommand::class,
TeamsDeleteDeactivatedCommand::class,
UpdateTeamsCommand::class,
OverrideTranscriptionLocaleCommand::class,
SyncSlackUserCommand::class,
PurgeSoftDeletedOpportunitiesCommand::class,
PurgeSyncBatchesCommand::class,
ProphetAnalyzeClosedDealsCommand::class,
DeleteChurnedSubAccounts::class,
Commands\ProphetAi\DumpContext::class,
DeletePredefinedSubAccounts::class,
DeleteActivitiesForRetentionTeamsCommand::class,
HardDeleteActivitiesTeamsCommand::class,
TeamsDeleteRetentionCommand::class,
TeamSettingPutCommand::class,
StopHangingLivestreamsCommand::class,
FixActivitiesOpportunity::class,
Commands\Activities\SetupIntegration\Salesforce\SetupSalesforceIntegrationCommand::class,
UpdateOldTranscriptionModelLocalesCommand::class,
Commands\Dev\FixMissMatchedCrmActivitiesCommand::class,
DownloadMissingTrackCommand::class,
ActivitiesMatchCrmCommand::class,
DeleteEmailDocumentsCommand::class,
DeleteOldTranscriptionsCommand::class,
DeleteS3LeftoversCommand::class,
RemoveDeleteMarkersCommand::class,
SyncTeamUsersCommand::class,
ReassignTranscriptCommand::class,
DiarizeViaAiParticipantIdentificationCommand::class,
RestoreActivityTypeCommand::class,
DeleteOldAiCrmNotesCommand::class,
DeleteReportCommand::class,
AutomatedReportsRetentionPolicyCommand::class,
SyncHubspotActiveDeals::class,
GenerateInternalWebhookToken::class,
IssueMcpTokenCommand::class,
RestoreActivityCrmProviderIdCommand::class,
CleanupActivityTracksCommand::class,
DeleteUnusedTracksCommand::class,
RestoreTracksCommand::class,
HubspotWebhookServiceCommand::class,
ProcessMergedObjectsCommand::class,
HubspotJournalPollingCommand::class,
SetupJournalDealWebhookSubscriptionsCommand::class,
ListJournalWebhookSubscriptionsCommand::class,
RemoveGhostParticipantsCommand::class,
AutodetectAiActivityTypeCommand::class,
Commands\Crm\LogActivitiesCommand::class,
Commands\Crm\MatchOpportunityActivitiesCommand::class,
PurgeDeletedOpportunitiesCommand::class,
CleanDuplicateFieldDataCommand::class,
RetryProspectSummaryCommand::class,
ProcessHubspotObjectsSyncBatches::class,
SyncOpportunitiesMissingFieldDataCommand::class,
RestoreDealAssociationsCommand::class,
Commands\Crm\TestPipedriveOfficialSdkCommand::class,
];
private Schedule $schedule;
private string $output;
protected function schedule(Schedule $schedule): void
{
$this->schedule = $schedule;
$this->output = config('jiminny.scheduler_log');
$schedule->useCache('redis');
$currentMinute = (int) date('i');
$currentDay = (int) date('w');
$this->scheduleEveryMinute();
$this->scheduleEveryTwoMinutes();
$this->scheduleEveryFiveMinutes();
$this->scheduleEveryTenMinutes();
$this->scheduleEveryFifteenMinutes();
$this->scheduleEveryThirtyMinutes();
$this->scheduleHourly();
$this->scheduleDaily();
$this->scheduleWeekly($currentDay);
$this->scheduleSpecificTimes();
$this->scheduleDynamic($currentMinute);
}
protected function scheduleEveryMinute(): void
{
$this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();
$this->scheduleCommand('dialers:monitor-activities')->everyMinute();
$this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();
$this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();
$this->schedule->command('mailbox:batch:process', ['--max-batches=15'])
->everyMinute()
->sendOutputTo($this->output);
}
protected function scheduleEveryTwoMinutes(): void
{
$this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();
}
protected function scheduleEveryFiveMinutes(): void
{
$this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();
// Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)
$this->scheduleCommand('crm:sync-hubspot-objects', [], 4)
->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');
$this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();
$this->schedule->command('mailbox:batch:create')
->cron('2-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output);
$this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])
->cron('3-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output)
->runInBackground();
$this->schedule->command('hubspot:journal-poll', ['--start'])
->everyFiveMinutes()
->sendOutputTo($this->output)
->runInBackground();
}
protected function scheduleEveryTenMinutes(): void
{
$this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();
$this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('crm:reset-governor')->everyTenMinutes();
}
protected function scheduleEveryFifteenMinutes(): void
{
$this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();
$this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');
$this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
],
])->everyFifteenMinutes();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->cron('7,22,37,52 * * * *');
}
protected function scheduleEveryThirtyMinutes(): void
{
$this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');
$this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();
$this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)
->between('02:58', '05:29')
->everyThirtyMinutes()
->runInBackground();
$this->scheduleActivitiesHardDelete();
}
protected function scheduleHourly(): void
{
$this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();
$this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');
$this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');
$this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');
$this->scheduleCommand('automated-reports:send')->hourly();
$this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);
$this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);
}
protected function scheduleDaily(): void
{
$this->scheduleCommand('teams:sync-planhat')->daily();
$this->scheduleCommand('twilio:sync-addresses')->daily();
$this->scheduleCommand('twilio:sync-zone-access')->daily();
$this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();
$this->scheduleCommand('users:sync-licence-data')->daily();
$this->scheduleCommand('users:sync-intercom-data')->daily();
$this->scheduleCommand('nudges:send-expiration-warnings')->daily();
$this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();
}
protected function scheduleWeekly(int $currentDay): void
{
if ($currentDay === 0) {
$this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);
}
if ($currentDay === 6) {
$this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_AMAZON_CONNECT,
'--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->saturdays()->at('01:00')->runInBackground();
$this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)
->saturdays()->at('01:07')->runInBackground();
$this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)
->saturdays()->at('05:08')->runInBackground();
$this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')
->weeklyOn(6, '6:00');
$this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')
->weeklyOn(6, '7:00');
}
}
protected function scheduleSpecificTimes(): void
{
$this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_DISCARDED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:20')->runInBackground();
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_PROCESSED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:30')->runInBackground();
$this->scheduleCommand('automated-reports')->dailyAt('01:00');
$this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');
$this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');
$this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');
$this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');
$this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');
$this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('03:05');
$this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');
$this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');
$this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');
$this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');
$this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');
if (! $this->app->environment('production')) {
$this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)
->dailyAt('04:02')->runInBackground();
}
$this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
],
])->dailyAt('05:05');
if (! $this->app->environment('qa')) {
$this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');
}
$this->scheduleCommand('activity:sync-dispositions', [
Activity::PROVIDER_HUBSPOT,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('07:05');
}
protected function scheduleDynamic(int $currentMinute): void
{
$this->scheduleHourlyFallbackActivitySyncs($currentMinute);
$this->scheduleBullhornHeartbeat($currentMinute);
}
private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void
{
if ($offsetMinute === 0) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);
} elseif ($offsetMinute === 1) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);
} elseif ($offsetMinute === 2) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);
}
}
private function scheduleBullhornHeartbeat(int $currentMinute): void
{
$bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);
if ($bhHeartbeatInterval > 0) {
$minutes = max((int) floor($bhHeartbeatInterval / 60), 1);
if ($currentMinute % $minutes === 0) {
$bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);
if ($minutes > 30) {
$bhEvent->hourly();
} else {
$bhEvent->cron(sprintf('*/%d * * * *', $minutes));
}
}
}
}
private function scheduleActivitiesHardDelete(): void
{
if (config(key: 'jiminny.deploy_region') === 'eu') {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 1000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
} elseif ($this->app->environment('production')) {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 2000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
}
}
private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void
{
$this->scheduleCommand('activity:sync', [
$provider,
'--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->hourlyAt($offsetMinute);
}
/**
* Register the Closure based commands for the application.
*/
protected function commands(): void
{
require_once base_path('routes/console.php');
}
private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event
{
return $this->schedule
->command($name, $options)
->withoutOverlapping($expiresAt)
->onOneServer()
->sendOutputTo($this->output)
;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\DTO\\Invitation;\n\nuse Jiminny\\DTO\\UserEmail;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateInvitationRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateTeamRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\EditTeamRequest;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Invitation;\nuse Jiminny\\Models\\Role;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\n\nclass UserInvitationDTO\n{\n use UserEmail;\n\n public string $email;\n public ?string $secondaryEmail;\n public ?int $groupId;\n public int $teamId;\n public bool $crmRequired;\n public array $roleIds;\n public bool $isOwner;\n public ?User $currentUser = null;\n\n /**\n * @param array{\n * email: string,\n * secondaryEmail: string|null,\n * groupId: int|null,\n * teamId: int|string,\n * crmRequired: bool,\n * roleIds: int[],\n * isOwner: bool,\n * user?: User\n * } $attributes\n */\n private function __construct(array $attributes)\n {\n $this->email = mb_strtolower($attributes['email']);\n $this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);\n $this->groupId = $attributes['groupId'];\n $this->teamId = (int) $attributes['teamId'];\n $this->crmRequired = (bool) $attributes['crmRequired'];\n $this->roleIds = $attributes['roleIds'];\n $this->isOwner = $attributes['isOwner'];\n $this->currentUser = $attributes['user'] ?? null;\n }\n\n public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self\n {\n $roleIds = Role::whereIn('name', [\n User::ROLE_ADMIN,\n User::ROLE_RECORDER,\n ])->pluck('id')->toArray();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => $request->getOwnerEmail(),\n 'secondaryEmail' => null,\n 'groupId' => null,\n 'teamId' => $team->getId(),\n 'crmRequired' => true,\n 'roleIds' => $roleIds,\n 'user' => $currentUser,\n 'isOwner' => true,\n ]);\n }\n\n public static function fromRequest(CreateInvitationRequest $request): self\n {\n $data = $request->validated();\n\n $groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;\n $teamId = Team::uuid($data['team_id'])->getId();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => mb_strtolower($data['email']),\n 'secondaryEmail' => $data['secondary_email'] ?? null,\n 'groupId' => $groupId,\n 'teamId' => $teamId,\n 'crmRequired' => $data['crm_required'],\n 'roleIds' => $data['roles'],\n 'user' => $currentUser,\n 'isOwner' => false,\n ]);\n }\n\n public static function fromInvitation(Invitation $invitation, User $currentUser): self\n {\n $roles = $invitation->roles()->get();\n $isOwner = $invitation->isOwner();\n\n return new self([\n 'email' => $invitation->email,\n 'secondaryEmail' => $invitation->getSecondaryEmail(),\n 'groupId' => $invitation->group_id,\n 'teamId' => $invitation->team_id,\n 'crmRequired' => $invitation->crm_required,\n 'roleIds' => $roles->pluck('id')->toArray(),\n 'user' => $currentUser,\n 'isOwner' => $isOwner,\n ]);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\DTO\\Invitation;\n\nuse Jiminny\\DTO\\UserEmail;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateInvitationRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateTeamRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\EditTeamRequest;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Invitation;\nuse Jiminny\\Models\\Role;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\n\nclass UserInvitationDTO\n{\n use UserEmail;\n\n public string $email;\n public ?string $secondaryEmail;\n public ?int $groupId;\n public int $teamId;\n public bool $crmRequired;\n public array $roleIds;\n public bool $isOwner;\n public ?User $currentUser = null;\n\n /**\n * @param array{\n * email: string,\n * secondaryEmail: string|null,\n * groupId: int|null,\n * teamId: int|string,\n * crmRequired: bool,\n * roleIds: int[],\n * isOwner: bool,\n * user?: User\n * } $attributes\n */\n private function __construct(array $attributes)\n {\n $this->email = mb_strtolower($attributes['email']);\n $this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);\n $this->groupId = $attributes['groupId'];\n $this->teamId = (int) $attributes['teamId'];\n $this->crmRequired = (bool) $attributes['crmRequired'];\n $this->roleIds = $attributes['roleIds'];\n $this->isOwner = $attributes['isOwner'];\n $this->currentUser = $attributes['user'] ?? null;\n }\n\n public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self\n {\n $roleIds = Role::whereIn('name', [\n User::ROLE_ADMIN,\n User::ROLE_RECORDER,\n ])->pluck('id')->toArray();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => $request->getOwnerEmail(),\n 'secondaryEmail' => null,\n 'groupId' => null,\n 'teamId' => $team->getId(),\n 'crmRequired' => true,\n 'roleIds' => $roleIds,\n 'user' => $currentUser,\n 'isOwner' => true,\n ]);\n }\n\n public static function fromRequest(CreateInvitationRequest $request): self\n {\n $data = $request->validated();\n\n $groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;\n $teamId = Team::uuid($data['team_id'])->getId();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => mb_strtolower($data['email']),\n 'secondaryEmail' => $data['secondary_email'] ?? null,\n 'groupId' => $groupId,\n 'teamId' => $teamId,\n 'crmRequired' => $data['crm_required'],\n 'roleIds' => $data['roles'],\n 'user' => $currentUser,\n 'isOwner' => false,\n ]);\n }\n\n public static function fromInvitation(Invitation $invitation, User $currentUser): self\n {\n $roles = $invitation->roles()->get();\n $isOwner = $invitation->isOwner();\n\n return new self([\n 'email' => $invitation->email,\n 'secondaryEmail' => $invitation->getSecondaryEmail(),\n 'groupId' => $invitation->group_id,\n 'teamId' => $invitation->team_id,\n 'crmRequired' => $invitation->crm_required,\n 'roleIds' => $roles->pluck('id')->toArray(),\n 'user' => $currentUser,\n 'isOwner' => $isOwner,\n ]);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.019444445,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.014583333,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Console;\n\nuse Illuminate\\Console\\ConfirmableTrait;\nuse Illuminate\\Console\\Scheduling\\Event;\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as ConsoleKernel;\nuse Jiminny\\Component\\Acl\\RemoveExpiredRoleChangeEventsCommand;\nuse Jiminny\\Component\\ActionItems\\Commands\\SendActionItemsCommand;\nuse Jiminny\\Component\\AiActivityType\\Commands\\AutodetectAiActivityTypeCommand;\nuse Jiminny\\Component\\AskJiminnyAi\\Commands\\ProphetAnalyzeClosedDealsCommand;\nuse Jiminny\\Component\\Cache\\Constants;\nuse Jiminny\\Component\\DealInsights\\Commands\\SendDealsUpdateCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\MediaPipelineRestartCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportActivityProcessingTimeToDatadogCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportProcessingStatesToDatadogCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\OverrideTranscriptionLocaleCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryFailedTranscriptionsCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryStuckTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ActivitiesMatchCrmCommand;\nuse Jiminny\\Console\\Commands\\Activities\\AutologOldActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForRetentionTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DownloadMissingTrackCommand;\nuse Jiminny\\Console\\Commands\\Activities\\FixActivitiesOpportunity;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReassignTranscriptCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReindexRecentActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\RetryProspectSummaryCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeleteCancelledCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeletePastCommand;\nuse Jiminny\\Console\\Commands\\Crm\\BackfillOpportunityUserFromAccountCommand;\nuse Jiminny\\Console\\Commands\\Crm\\CleanDuplicateFieldDataCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ProcessMergedObjectsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\RestoreDealAssociationsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\ProcessHubspotObjectsSyncBatches;\nuse Jiminny\\Console\\Commands\\Crm\\PurgeDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ListJournalWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\SetupJournalDealWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\SyncHubspotActiveDeals;\nuse Jiminny\\Console\\Commands\\Crm\\SyncOpportunitiesMissingFieldDataCommand;\nuse Jiminny\\Console\\Commands\\DeleteOldAiCrmNotesCommand;\nuse Jiminny\\Console\\Commands\\DeleteS3LeftoversCommand;\nuse Jiminny\\Console\\Commands\\DiarizeViaAiParticipantIdentificationCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\DeleteEmailDocumentsCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\RemoveGhostParticipantsCommand;\nuse Jiminny\\Console\\Commands\\FlushRolesPermissionsCache;\nuse Jiminny\\Console\\Commands\\GenerateInternalWebhookToken;\nuse Jiminny\\Console\\Commands\\IssueMcpTokenCommand;\nuse Jiminny\\Console\\Commands\\HubspotJournalPollingCommand;\nuse Jiminny\\Console\\Commands\\HubspotWebhookServiceCommand;\nuse Jiminny\\Console\\Commands\\Livestream\\StopHangingLivestreamsCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteEmailMessagesWithoutActivityCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteInboxEmailsCommand;\nuse Jiminny\\Console\\Commands\\PurgeSoftDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\PurgeSyncBatchesCommand;\nuse Jiminny\\Console\\Commands\\RemoveDeleteMarkersCommand;\nuse Jiminny\\Console\\Commands\\RemoveExpiredNudgesCommand;\nuse Jiminny\\Console\\Commands\\RemoveUnusedParticipantSpeechesCommand;\nuse Jiminny\\Console\\Commands\\Reports\\AutomatedReportsRetentionPolicyCommand;\nuse Jiminny\\Console\\Commands\\Reports\\DeleteReportCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityCrmProviderIdCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityTypeCommand;\nuse Jiminny\\Console\\Commands\\SendNudgeExpirationWarningsCommand;\nuse Jiminny\\Console\\Commands\\Slack\\SyncSlackUserCommand;\nuse Jiminny\\Console\\Commands\\Teams\\SyncTeamUsersCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamDeleteCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteDeactivatedCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteRetentionCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamSettingPutCommand;\nuse Jiminny\\Console\\Commands\\Teams\\UpdateTeamsCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\CleanupActivityTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\DeleteUnusedTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\RestoreTracksCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\DeleteOldTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\UpdateOldTranscriptionModelLocalesCommand;\nuse Jiminny\\Console\\Commands\\Twilio\\DeleteChurnedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\DeletePredefinedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\ReleaseNumbersCommand;\nuse Jiminny\\Jobs\\Activity\\SyncActivity;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\InboxEmail;\nuse Jiminny\\Services\\RecallAI\\Commands\\ImportRegionMeetingCommand;\nuse Jiminny\\Services\\RecallAI\\Commands\\ScheduleBotCommand;\n\nclass Kernel extends ConsoleKernel\n{\n use ConfirmableTrait;\n\n /**\n * The Artisan commands provided by your application.\n *\n * @var string[]\n */\n protected $commands = [\n Commands\\GeckoExport\\GeckoExportTranscriptCommand::class,\n Commands\\GeckoExport\\GeckoExportTranscriptionCommand::class,\n Commands\\GeckoExport\\GeckoExportParticipantSpeechesCommand::class,\n Commands\\Activities\\DeleteForCoachesCommand::class,\n ReindexRecentActivitiesCommand::class,\n Commands\\Crm\\BullhornPingCommand::class,\n Commands\\Crm\\BullhornSessionCommand::class,\n Commands\\Crm\\BullhornSearchCommand::class,\n Commands\\PlaybackThemes\\TopicsConsolidateCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesCopyCommand::class,\n Commands\\PlaybackThemes\\AssignTopicsUsedBySingleTeamCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesMigrateToVersionsCommand::class,\n Commands\\Vocabulary\\VocabularyCopyCommand::class,\n Commands\\Transcription\\TranscriptionPrintRaw::class,\n Commands\\Migrate\\JiminnyMigratePopulateActivitySourceCommand::class,\n Commands\\EngagementStats\\JiminnyEngagementStatsExplainCommand::class,\n Commands\\EngagementStatsRegenerateCommand::class,\n Commands\\Analytics\\NumberOfActivitiesPerActivityTypeCommand::class,\n Commands\\Elasticsearch\\MappingRunCommand::class,\n Commands\\Elasticsearch\\MappingInstallCommand::class,\n Commands\\Elasticsearch\\UpdateEsMappingSettingsCommand::class,\n Commands\\Analytics\\TranscriptionWordMatchCommand::class,\n Commands\\JiminnyCacheClearCommand::class,\n Commands\\Transcription\\TranscriptionSearchCommand::class,\n RetryStuckTranscriptionsCommand::class,\n RetryFailedTranscriptionsCommand::class,\n Commands\\JiminnyDebugCommand::class,\n Commands\\RunAiCallScoringForUntypedActivitiesCommand::class,\n Commands\\Calendars\\SyncCalendars::class,\n Commands\\Calendars\\SyncDeletedEvents::class,\n Commands\\Twilio\\FetchMetrics::class,\n Commands\\Twilio\\FetchEvents::class,\n Commands\\Twilio\\FetchSummary::class,\n Commands\\Twilio\\SyncZoneAccess::class,\n Commands\\DatabaseTableCount::class,\n Commands\\PurgeConferences::class,\n Commands\\ResetElasticSearch::class,\n Commands\\CreateDatabaseUsers::class,\n Commands\\Activities\\NotifyNotLogged::class,\n Commands\\Crm\\SyncTeamMetadata::class,\n Commands\\Crm\\SyncProfileMetadata::class,\n Commands\\Crm\\SyncContact::class,\n Commands\\Crm\\SyncObjects::class,\n Commands\\Crm\\SyncHubspotObjects::class,\n Commands\\Crm\\SyncAccount::class,\n Commands\\Crm\\ResetGovernorLimits::class,\n Commands\\Crm\\ManageSyncStrategyCommand::class,\n Commands\\ImportRecording::class,\n Commands\\TrackImported::class,\n Commands\\Twilio\\RecoverTwilioTracksCommand::class,\n Commands\\Crm\\SetupLayouts::class,\n Commands\\Tracks\\SyncTwilioTracks::class,\n Commands\\Activities\\StatusCount::class,\n\n Commands\\Mailboxes\\TextRelay\\WatchMailboxEvents::class,\n Commands\\Mailboxes\\InboxCreate::class,\n Commands\\Mailboxes\\InboxSync::class,\n Commands\\Mailboxes\\BatchCreate::class,\n Commands\\Mailboxes\\BatchProcess::class,\n Commands\\Mailboxes\\InboxPurge::class,\n Commands\\Mailboxes\\BatchRetryFailed::class,\n Commands\\Mailboxes\\BatchFailStalled::class,\n Commands\\Mailboxes\\SkipListsRefresh::class,\n Commands\\Mailboxes\\SkipListsDump::class,\n Commands\\Mailboxes\\TextRelay\\SyncMailbox::class,\n Commands\\Mailboxes\\DeleteInboxEmailsCommand::class,\n Commands\\Mailboxes\\DeleteEmailMessagesCommand::class,\n DeleteEmailMessagesWithoutActivityCommand::class,\n\n Commands\\Tracks\\CheckIntegrity::class,\n Commands\\Twilio\\RemoteLifecycle::class,\n Commands\\Twilio\\SyncNumbers::class,\n Commands\\Crm\\SetupActivityTypeForFollowUp::class,\n Commands\\Activities\\CheckPlayable::class,\n Commands\\Activities\\ActivityDeleteCommand::class,\n Commands\\Activities\\Copy::class,\n Commands\\Activities\\ActivityHardDeleteCommand::class,\n Commands\\Reports\\Team::class,\n Commands\\Reports\\GenerateMarketingReport::class,\n Commands\\Reports\\AutomatedReportsCommand::class,\n Commands\\Reports\\AutomatedReportsSendCommand::class,\n Commands\\MuteOrganizerChannel::class,\n Commands\\Tracks\\DeleteTracks::class,\n Commands\\Tracks\\RetryDownload::class,\n Commands\\Tracks\\RetryFailedDownloads::class,\n Commands\\Twilio\\SyncAddresses::class,\n Commands\\Activities\\UpdateElasticSearch::class,\n Commands\\MakeSlackLiveCoachingChatNotesOn::class,\n Commands\\Activities\\PreMeetingNotification::class,\n ScheduleBotCommand::class,\n ImportRegionMeetingCommand::class,\n Commands\\Activities\\MonitorMeetingCountCommand::class,\n Commands\\Activities\\MonitorMeetingStartCommand::class,\n Commands\\Activities\\MonitorMeetingEndCommand::class,\n Commands\\SyncActivity::class,\n Commands\\PhpApm::class,\n Commands\\Crm\\SyncOpportunity::class,\n Commands\\Crm\\SyncLead::class,\n Commands\\Users\\SyncLicenceDataToSalesforce::class,\n Commands\\Crm\\UpdateOpportunitySpecifications::class,\n Commands\\Users\\SyncToIntercom::class,\n Commands\\Users\\SyncToUserPilot::class,\n Commands\\Teams\\SyncToPlanhat::class,\n Commands\\Twilio\\SetZoneAccess::class,\n Commands\\Users\\CreateDefaultSavedSearchesCommand::class,\n Commands\\Crm\\SendNotLogged::class,\n Commands\\Teams\\DeactivateTeamCommand::class,\n Commands\\Crm\\SyncFieldMetadata::class,\n Commands\\Postmark\\SyncEmailTemplatesCommand::class,\n Commands\\PlaybackThemes\\ImportTriggersFromTranslatedCsvCommand::class,\n Commands\\Activities\\PreMeetingReminder::class,\n Commands\\Activities\\CustomerActivitiesExport::class,\n Commands\\Users\\RefreshAccessToken::class,\n Commands\\Calendars\\SetupCalendarSubscription::class,\n Commands\\Activities\\InviteMeetingBot::class,\n Commands\\Activities\\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,\n Commands\\Crm\\MigrateProvider::class,\n Commands\\Activities\\MigrateLocationFromCalendarEventToActivities::class,\n Commands\\HelperTruncateCoachingTables::class,\n Commands\\FixCrossTenantIssues::class,\n Commands\\Activities\\CloudCall\\SetupIntegration::class,\n Commands\\Activities\\CloudTalk\\FixTimeZone::class,\n Commands\\Activities\\Orum\\SetupIntegration::class,\n Commands\\Activities\\JustCall\\SetupIntegration::class,\n Commands\\Activities\\RingCentral\\AddInboundPromptSupport::class,\n Commands\\Dialers\\Dialpad\\SubscribeToWebhooks::class,\n Commands\\RecalculateDealRisksCommand::class,\n SendDealsUpdateCommand::class,\n Commands\\Activities\\SetProviderCapabilitiesField::class,\n Commands\\Teams\\InitiallySetNotificationProviderTeamsTable::class,\n Commands\\Crm\\AddLayoutEntities::class,\n Commands\\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,\n Commands\\JiminnyTokenInfoCommand::class,\n Commands\\JiminnySetEncryptedTokenManagerModeCommand::class,\n Commands\\EncryptTokensCommand::class,\n Commands\\Dialers\\Aircall\\CheckAndRenewWebhooks::class,\n Commands\\Migrate\\MigrateTeamRegionCommand::class,\n Commands\\ManageScimForTeam::class,\n Commands\\Dialers\\SyncUsersCommand::class,\n Commands\\WhichWorkerIsWorkingOnWhichJob::class,\n Commands\\GroupSetDefaultLanguageCommand::class,\n Commands\\Dev\\AddRateLimitCommand::class,\n Commands\\Dev\\ImportCallsCommand::class,\n Commands\\DealInsights\\BuildDealInsightsLayoutCommand::class,\n Commands\\DealInsights\\DeleteAskJiminnyDealPrompts::class,\n Commands\\Crm\\MatchCrmObjectsCommand::class,\n Commands\\Activities\\SetupIntegration\\EightByEight::class,\n Commands\\Calendars\\RemoveCalendarEventActivitiesCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromGongCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromChorusCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromLeexiCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromAvomaCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromClariCommand::class,\n Commands\\Activities\\SetupIntegration\\ConnectAndSell::class,\n Commands\\Activities\\SetupIntegration\\CloudTalk::class,\n Commands\\Users\\CreateConferenceSlug::class,\n Commands\\Elasticsearch\\AsyncUpdateEsEntities::class,\n Commands\\Elasticsearch\\ResetAsyncElasticSearchCommand::class,\n Commands\\Playlists\\PlaylistSharesUpdateCommand::class,\n Commands\\Crm\\AutologDelayedCommand::class,\n Commands\\Activities\\HydrateDefaultActivityTypeCommand::class,\n Commands\\Crm\\CheckActivityLoggableCommand::class,\n Commands\\Activities\\MonitorDialerActivitiesCommand::class,\n Commands\\Activities\\SetupIntegration\\Xant::class,\n Commands\\ImportUsersFromCsvFile::class,\n Commands\\DevPostmanCommand::class,\n Commands\\Playlists\\FixTreeStructureCommand::class,\n Commands\\Zoom\\ResolvePmiLinksCommand::class,\n Commands\\MarkBranchForEnvironmentPipelineCommand::class,\n Commands\\Activities\\ProbeMediaSegmentsCommand::class,\n Commands\\Activities\\SetupIntegration\\AmazonConnect::class,\n Commands\\Playbooks\\ChangePlaybookActivityFieldCommand::class,\n MediaPipelineRestartCommand::class,\n Commands\\Dev\\FixHubSpotTokens::class,\n Commands\\Dev\\MonitorSocialAccountsState::class,\n Commands\\Activities\\SetupIntegration\\Vonage::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlex::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexDirect::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexSetDialerAuthCredentialsCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioSetS3RecordingCredentialsCommand::class,\n SendActionItemsCommand::class,\n Commands\\Users\\ChangeEmail::class,\n Commands\\Calendars\\ListUserGoogleCalendars::class,\n Commands\\Activities\\JustCall\\SyncPlaybackLinkToCrmCommand::class,\n Commands\\Activities\\HydrateCallWithCrmDataCommand::class,\n Commands\\Activities\\UpdateActivityElasticSearchDocumentCommand::class,\n Commands\\Activities\\SetupIntegration\\Talkdesk::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookListCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookShow::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioVideo::class,\n Commands\\Crm\\SetupCloseCrm::class,\n Commands\\Crm\\SetupCopperCrm::class,\n Commands\\Crm\\FullSyncOpportunityCommand::class,\n Commands\\Crm\\IntegrationApp\\CrmEntitiesFullSyncCommand::class,\n Commands\\Crm\\IntegrationApp\\ValidateConnectionCommand::class,\n Commands\\Activities\\Workflow\\RefreshCrmData::class,\n Commands\\Activities\\Migrator\\AnalyseGongCalls::class,\n Commands\\Users\\AddVoiceRoleToRecorderCommand::class,\n Commands\\Activities\\SyncMissingCallDispositions::class,\n Commands\\Calendars\\RemoveFutureCalendarEvents::class,\n FlushRolesPermissionsCache::class,\n Commands\\Activities\\SetupIntegration\\FiveNine::class,\n CalendarEventDeleteCancelledCommand::class,\n CalendarEventDeletePastCommand::class,\n ReportActivityProcessingTimeToDatadogCommand::class,\n ReportProcessingStatesToDatadogCommand::class,\n ReleaseNumbersCommand::class,\n BackfillOpportunityUserFromAccountCommand::class,\n RemoveExpiredRoleChangeEventsCommand::class,\n RemoveExpiredNudgesCommand::class,\n SendNudgeExpirationWarningsCommand::class,\n AutologOldActivitiesCommand::class,\n RemoveUnusedParticipantSpeechesCommand::class,\n DeleteActivitiesForChurnedTeamsCommand::class,\n HardDeleteActivitiesForChurnedTeamsCommand::class,\n TeamDeleteCommand::class,\n TeamsDeleteDeactivatedCommand::class,\n UpdateTeamsCommand::class,\n OverrideTranscriptionLocaleCommand::class,\n SyncSlackUserCommand::class,\n PurgeSoftDeletedOpportunitiesCommand::class,\n PurgeSyncBatchesCommand::class,\n ProphetAnalyzeClosedDealsCommand::class,\n DeleteChurnedSubAccounts::class,\n Commands\\ProphetAi\\DumpContext::class,\n DeletePredefinedSubAccounts::class,\n DeleteActivitiesForRetentionTeamsCommand::class,\n HardDeleteActivitiesTeamsCommand::class,\n TeamsDeleteRetentionCommand::class,\n TeamSettingPutCommand::class,\n StopHangingLivestreamsCommand::class,\n FixActivitiesOpportunity::class,\n Commands\\Activities\\SetupIntegration\\Salesforce\\SetupSalesforceIntegrationCommand::class,\n UpdateOldTranscriptionModelLocalesCommand::class,\n Commands\\Dev\\FixMissMatchedCrmActivitiesCommand::class,\n DownloadMissingTrackCommand::class,\n ActivitiesMatchCrmCommand::class,\n DeleteEmailDocumentsCommand::class,\n DeleteOldTranscriptionsCommand::class,\n DeleteS3LeftoversCommand::class,\n RemoveDeleteMarkersCommand::class,\n SyncTeamUsersCommand::class,\n ReassignTranscriptCommand::class,\n DiarizeViaAiParticipantIdentificationCommand::class,\n RestoreActivityTypeCommand::class,\n DeleteOldAiCrmNotesCommand::class,\n DeleteReportCommand::class,\n AutomatedReportsRetentionPolicyCommand::class,\n SyncHubspotActiveDeals::class,\n GenerateInternalWebhookToken::class,\n IssueMcpTokenCommand::class,\n RestoreActivityCrmProviderIdCommand::class,\n CleanupActivityTracksCommand::class,\n DeleteUnusedTracksCommand::class,\n RestoreTracksCommand::class,\n HubspotWebhookServiceCommand::class,\n ProcessMergedObjectsCommand::class,\n HubspotJournalPollingCommand::class,\n SetupJournalDealWebhookSubscriptionsCommand::class,\n ListJournalWebhookSubscriptionsCommand::class,\n RemoveGhostParticipantsCommand::class,\n AutodetectAiActivityTypeCommand::class,\n Commands\\Crm\\LogActivitiesCommand::class,\n Commands\\Crm\\MatchOpportunityActivitiesCommand::class,\n PurgeDeletedOpportunitiesCommand::class,\n CleanDuplicateFieldDataCommand::class,\n RetryProspectSummaryCommand::class,\n ProcessHubspotObjectsSyncBatches::class,\n SyncOpportunitiesMissingFieldDataCommand::class,\n RestoreDealAssociationsCommand::class,\n Commands\\Crm\\TestPipedriveOfficialSdkCommand::class,\n ];\n\n private Schedule $schedule;\n private string $output;\n\n protected function schedule(Schedule $schedule): void\n {\n $this->schedule = $schedule;\n $this->output = config('jiminny.scheduler_log');\n\n $schedule->useCache('redis');\n\n $currentMinute = (int) date('i');\n $currentDay = (int) date('w');\n\n $this->scheduleEveryMinute();\n $this->scheduleEveryTwoMinutes();\n $this->scheduleEveryFiveMinutes();\n $this->scheduleEveryTenMinutes();\n $this->scheduleEveryFifteenMinutes();\n $this->scheduleEveryThirtyMinutes();\n $this->scheduleHourly();\n $this->scheduleDaily();\n $this->scheduleWeekly($currentDay);\n $this->scheduleSpecificTimes();\n $this->scheduleDynamic($currentMinute);\n }\n\n protected function scheduleEveryMinute(): void\n {\n $this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();\n $this->scheduleCommand('dialers:monitor-activities')->everyMinute();\n $this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();\n $this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();\n\n $this->schedule->command('mailbox:batch:process', ['--max-batches=15'])\n ->everyMinute()\n ->sendOutputTo($this->output);\n }\n\n protected function scheduleEveryTwoMinutes(): void\n {\n $this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();\n }\n\n protected function scheduleEveryFiveMinutes(): void\n {\n $this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();\n // Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)\n $this->scheduleCommand('crm:sync-hubspot-objects', [], 4)\n ->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');\n $this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();\n\n $this->schedule->command('mailbox:batch:create')\n ->cron('2-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output);\n\n $this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])\n ->cron('3-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ->runInBackground();\n\n $this->schedule->command('hubspot:journal-poll', ['--start'])\n ->everyFiveMinutes()\n ->sendOutputTo($this->output)\n ->runInBackground();\n }\n\n protected function scheduleEveryTenMinutes(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();\n $this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('crm:reset-governor')->everyTenMinutes();\n }\n\n protected function scheduleEveryFifteenMinutes(): void\n {\n $this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();\n $this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');\n $this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n ],\n ])->everyFifteenMinutes();\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->cron('7,22,37,52 * * * *');\n }\n\n protected function scheduleEveryThirtyMinutes(): void\n {\n $this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');\n $this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();\n\n $this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)\n ->between('02:58', '05:29')\n ->everyThirtyMinutes()\n ->runInBackground();\n\n $this->scheduleActivitiesHardDelete();\n }\n\n protected function scheduleHourly(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();\n $this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');\n $this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');\n $this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');\n $this->scheduleCommand('automated-reports:send')->hourly();\n $this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);\n $this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);\n }\n\n protected function scheduleDaily(): void\n {\n $this->scheduleCommand('teams:sync-planhat')->daily();\n $this->scheduleCommand('twilio:sync-addresses')->daily();\n $this->scheduleCommand('twilio:sync-zone-access')->daily();\n $this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();\n $this->scheduleCommand('users:sync-licence-data')->daily();\n $this->scheduleCommand('users:sync-intercom-data')->daily();\n $this->scheduleCommand('nudges:send-expiration-warnings')->daily();\n $this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();\n }\n\n protected function scheduleWeekly(int $currentDay): void\n {\n if ($currentDay === 0) {\n $this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);\n }\n\n if ($currentDay === 6) {\n $this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_AMAZON_CONNECT,\n '--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->saturdays()->at('01:00')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)\n ->saturdays()->at('01:07')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)\n ->saturdays()->at('05:08')->runInBackground();\n $this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')\n ->weeklyOn(6, '6:00');\n $this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')\n ->weeklyOn(6, '7:00');\n }\n }\n\n protected function scheduleSpecificTimes(): void\n {\n $this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_DISCARDED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:20')->runInBackground();\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_PROCESSED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:30')->runInBackground();\n\n $this->scheduleCommand('automated-reports')->dailyAt('01:00');\n $this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');\n $this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');\n $this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');\n $this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');\n $this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');\n $this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('03:05');\n\n\n $this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');\n $this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');\n $this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');\n $this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');\n $this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');\n\n if (! $this->app->environment('production')) {\n $this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)\n ->dailyAt('04:02')->runInBackground();\n }\n\n $this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n ],\n ])->dailyAt('05:05');\n\n if (! $this->app->environment('qa')) {\n $this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');\n }\n\n $this->scheduleCommand('activity:sync-dispositions', [\n Activity::PROVIDER_HUBSPOT,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('07:05');\n }\n\n protected function scheduleDynamic(int $currentMinute): void\n {\n $this->scheduleHourlyFallbackActivitySyncs($currentMinute);\n $this->scheduleBullhornHeartbeat($currentMinute);\n }\n\n private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void\n {\n if ($offsetMinute === 0) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);\n } elseif ($offsetMinute === 1) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);\n } elseif ($offsetMinute === 2) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);\n }\n }\n\n private function scheduleBullhornHeartbeat(int $currentMinute): void\n {\n $bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);\n if ($bhHeartbeatInterval > 0) {\n $minutes = max((int) floor($bhHeartbeatInterval / 60), 1);\n if ($currentMinute % $minutes === 0) {\n $bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);\n if ($minutes > 30) {\n $bhEvent->hourly();\n } else {\n $bhEvent->cron(sprintf('*/%d * * * *', $minutes));\n }\n }\n }\n }\n\n private function scheduleActivitiesHardDelete(): void\n {\n if (config(key: 'jiminny.deploy_region') === 'eu') {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 1000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n } elseif ($this->app->environment('production')) {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 2000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n }\n }\n\n private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void\n {\n $this->scheduleCommand('activity:sync', [\n $provider,\n '--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->hourlyAt($offsetMinute);\n }\n\n /**\n * Register the Closure based commands for the application.\n */\n protected function commands(): void\n {\n require_once base_path('routes/console.php');\n }\n\n private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event\n {\n return $this->schedule\n ->command($name, $options)\n ->withoutOverlapping($expiresAt)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\Console;\n\nuse Illuminate\\Console\\ConfirmableTrait;\nuse Illuminate\\Console\\Scheduling\\Event;\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as ConsoleKernel;\nuse Jiminny\\Component\\Acl\\RemoveExpiredRoleChangeEventsCommand;\nuse Jiminny\\Component\\ActionItems\\Commands\\SendActionItemsCommand;\nuse Jiminny\\Component\\AiActivityType\\Commands\\AutodetectAiActivityTypeCommand;\nuse Jiminny\\Component\\AskJiminnyAi\\Commands\\ProphetAnalyzeClosedDealsCommand;\nuse Jiminny\\Component\\Cache\\Constants;\nuse Jiminny\\Component\\DealInsights\\Commands\\SendDealsUpdateCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\MediaPipelineRestartCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportActivityProcessingTimeToDatadogCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportProcessingStatesToDatadogCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\OverrideTranscriptionLocaleCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryFailedTranscriptionsCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryStuckTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ActivitiesMatchCrmCommand;\nuse Jiminny\\Console\\Commands\\Activities\\AutologOldActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForRetentionTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DownloadMissingTrackCommand;\nuse Jiminny\\Console\\Commands\\Activities\\FixActivitiesOpportunity;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReassignTranscriptCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReindexRecentActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\RetryProspectSummaryCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeleteCancelledCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeletePastCommand;\nuse Jiminny\\Console\\Commands\\Crm\\BackfillOpportunityUserFromAccountCommand;\nuse Jiminny\\Console\\Commands\\Crm\\CleanDuplicateFieldDataCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ProcessMergedObjectsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\RestoreDealAssociationsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\ProcessHubspotObjectsSyncBatches;\nuse Jiminny\\Console\\Commands\\Crm\\PurgeDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ListJournalWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\SetupJournalDealWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\SyncHubspotActiveDeals;\nuse Jiminny\\Console\\Commands\\Crm\\SyncOpportunitiesMissingFieldDataCommand;\nuse Jiminny\\Console\\Commands\\DeleteOldAiCrmNotesCommand;\nuse Jiminny\\Console\\Commands\\DeleteS3LeftoversCommand;\nuse Jiminny\\Console\\Commands\\DiarizeViaAiParticipantIdentificationCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\DeleteEmailDocumentsCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\RemoveGhostParticipantsCommand;\nuse Jiminny\\Console\\Commands\\FlushRolesPermissionsCache;\nuse Jiminny\\Console\\Commands\\GenerateInternalWebhookToken;\nuse Jiminny\\Console\\Commands\\IssueMcpTokenCommand;\nuse Jiminny\\Console\\Commands\\HubspotJournalPollingCommand;\nuse Jiminny\\Console\\Commands\\HubspotWebhookServiceCommand;\nuse Jiminny\\Console\\Commands\\Livestream\\StopHangingLivestreamsCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteEmailMessagesWithoutActivityCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteInboxEmailsCommand;\nuse Jiminny\\Console\\Commands\\PurgeSoftDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\PurgeSyncBatchesCommand;\nuse Jiminny\\Console\\Commands\\RemoveDeleteMarkersCommand;\nuse Jiminny\\Console\\Commands\\RemoveExpiredNudgesCommand;\nuse Jiminny\\Console\\Commands\\RemoveUnusedParticipantSpeechesCommand;\nuse Jiminny\\Console\\Commands\\Reports\\AutomatedReportsRetentionPolicyCommand;\nuse Jiminny\\Console\\Commands\\Reports\\DeleteReportCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityCrmProviderIdCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityTypeCommand;\nuse Jiminny\\Console\\Commands\\SendNudgeExpirationWarningsCommand;\nuse Jiminny\\Console\\Commands\\Slack\\SyncSlackUserCommand;\nuse Jiminny\\Console\\Commands\\Teams\\SyncTeamUsersCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamDeleteCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteDeactivatedCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteRetentionCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamSettingPutCommand;\nuse Jiminny\\Console\\Commands\\Teams\\UpdateTeamsCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\CleanupActivityTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\DeleteUnusedTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\RestoreTracksCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\DeleteOldTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\UpdateOldTranscriptionModelLocalesCommand;\nuse Jiminny\\Console\\Commands\\Twilio\\DeleteChurnedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\DeletePredefinedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\ReleaseNumbersCommand;\nuse Jiminny\\Jobs\\Activity\\SyncActivity;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\InboxEmail;\nuse Jiminny\\Services\\RecallAI\\Commands\\ImportRegionMeetingCommand;\nuse Jiminny\\Services\\RecallAI\\Commands\\ScheduleBotCommand;\n\nclass Kernel extends ConsoleKernel\n{\n use ConfirmableTrait;\n\n /**\n * The Artisan commands provided by your application.\n *\n * @var string[]\n */\n protected $commands = [\n Commands\\GeckoExport\\GeckoExportTranscriptCommand::class,\n Commands\\GeckoExport\\GeckoExportTranscriptionCommand::class,\n Commands\\GeckoExport\\GeckoExportParticipantSpeechesCommand::class,\n Commands\\Activities\\DeleteForCoachesCommand::class,\n ReindexRecentActivitiesCommand::class,\n Commands\\Crm\\BullhornPingCommand::class,\n Commands\\Crm\\BullhornSessionCommand::class,\n Commands\\Crm\\BullhornSearchCommand::class,\n Commands\\PlaybackThemes\\TopicsConsolidateCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesCopyCommand::class,\n Commands\\PlaybackThemes\\AssignTopicsUsedBySingleTeamCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesMigrateToVersionsCommand::class,\n Commands\\Vocabulary\\VocabularyCopyCommand::class,\n Commands\\Transcription\\TranscriptionPrintRaw::class,\n Commands\\Migrate\\JiminnyMigratePopulateActivitySourceCommand::class,\n Commands\\EngagementStats\\JiminnyEngagementStatsExplainCommand::class,\n Commands\\EngagementStatsRegenerateCommand::class,\n Commands\\Analytics\\NumberOfActivitiesPerActivityTypeCommand::class,\n Commands\\Elasticsearch\\MappingRunCommand::class,\n Commands\\Elasticsearch\\MappingInstallCommand::class,\n Commands\\Elasticsearch\\UpdateEsMappingSettingsCommand::class,\n Commands\\Analytics\\TranscriptionWordMatchCommand::class,\n Commands\\JiminnyCacheClearCommand::class,\n Commands\\Transcription\\TranscriptionSearchCommand::class,\n RetryStuckTranscriptionsCommand::class,\n RetryFailedTranscriptionsCommand::class,\n Commands\\JiminnyDebugCommand::class,\n Commands\\RunAiCallScoringForUntypedActivitiesCommand::class,\n Commands\\Calendars\\SyncCalendars::class,\n Commands\\Calendars\\SyncDeletedEvents::class,\n Commands\\Twilio\\FetchMetrics::class,\n Commands\\Twilio\\FetchEvents::class,\n Commands\\Twilio\\FetchSummary::class,\n Commands\\Twilio\\SyncZoneAccess::class,\n Commands\\DatabaseTableCount::class,\n Commands\\PurgeConferences::class,\n Commands\\ResetElasticSearch::class,\n Commands\\CreateDatabaseUsers::class,\n Commands\\Activities\\NotifyNotLogged::class,\n Commands\\Crm\\SyncTeamMetadata::class,\n Commands\\Crm\\SyncProfileMetadata::class,\n Commands\\Crm\\SyncContact::class,\n Commands\\Crm\\SyncObjects::class,\n Commands\\Crm\\SyncHubspotObjects::class,\n Commands\\Crm\\SyncAccount::class,\n Commands\\Crm\\ResetGovernorLimits::class,\n Commands\\Crm\\ManageSyncStrategyCommand::class,\n Commands\\ImportRecording::class,\n Commands\\TrackImported::class,\n Commands\\Twilio\\RecoverTwilioTracksCommand::class,\n Commands\\Crm\\SetupLayouts::class,\n Commands\\Tracks\\SyncTwilioTracks::class,\n Commands\\Activities\\StatusCount::class,\n\n Commands\\Mailboxes\\TextRelay\\WatchMailboxEvents::class,\n Commands\\Mailboxes\\InboxCreate::class,\n Commands\\Mailboxes\\InboxSync::class,\n Commands\\Mailboxes\\BatchCreate::class,\n Commands\\Mailboxes\\BatchProcess::class,\n Commands\\Mailboxes\\InboxPurge::class,\n Commands\\Mailboxes\\BatchRetryFailed::class,\n Commands\\Mailboxes\\BatchFailStalled::class,\n Commands\\Mailboxes\\SkipListsRefresh::class,\n Commands\\Mailboxes\\SkipListsDump::class,\n Commands\\Mailboxes\\TextRelay\\SyncMailbox::class,\n Commands\\Mailboxes\\DeleteInboxEmailsCommand::class,\n Commands\\Mailboxes\\DeleteEmailMessagesCommand::class,\n DeleteEmailMessagesWithoutActivityCommand::class,\n\n Commands\\Tracks\\CheckIntegrity::class,\n Commands\\Twilio\\RemoteLifecycle::class,\n Commands\\Twilio\\SyncNumbers::class,\n Commands\\Crm\\SetupActivityTypeForFollowUp::class,\n Commands\\Activities\\CheckPlayable::class,\n Commands\\Activities\\ActivityDeleteCommand::class,\n Commands\\Activities\\Copy::class,\n Commands\\Activities\\ActivityHardDeleteCommand::class,\n Commands\\Reports\\Team::class,\n Commands\\Reports\\GenerateMarketingReport::class,\n Commands\\Reports\\AutomatedReportsCommand::class,\n Commands\\Reports\\AutomatedReportsSendCommand::class,\n Commands\\MuteOrganizerChannel::class,\n Commands\\Tracks\\DeleteTracks::class,\n Commands\\Tracks\\RetryDownload::class,\n Commands\\Tracks\\RetryFailedDownloads::class,\n Commands\\Twilio\\SyncAddresses::class,\n Commands\\Activities\\UpdateElasticSearch::class,\n Commands\\MakeSlackLiveCoachingChatNotesOn::class,\n Commands\\Activities\\PreMeetingNotification::class,\n ScheduleBotCommand::class,\n ImportRegionMeetingCommand::class,\n Commands\\Activities\\MonitorMeetingCountCommand::class,\n Commands\\Activities\\MonitorMeetingStartCommand::class,\n Commands\\Activities\\MonitorMeetingEndCommand::class,\n Commands\\SyncActivity::class,\n Commands\\PhpApm::class,\n Commands\\Crm\\SyncOpportunity::class,\n Commands\\Crm\\SyncLead::class,\n Commands\\Users\\SyncLicenceDataToSalesforce::class,\n Commands\\Crm\\UpdateOpportunitySpecifications::class,\n Commands\\Users\\SyncToIntercom::class,\n Commands\\Users\\SyncToUserPilot::class,\n Commands\\Teams\\SyncToPlanhat::class,\n Commands\\Twilio\\SetZoneAccess::class,\n Commands\\Users\\CreateDefaultSavedSearchesCommand::class,\n Commands\\Crm\\SendNotLogged::class,\n Commands\\Teams\\DeactivateTeamCommand::class,\n Commands\\Crm\\SyncFieldMetadata::class,\n Commands\\Postmark\\SyncEmailTemplatesCommand::class,\n Commands\\PlaybackThemes\\ImportTriggersFromTranslatedCsvCommand::class,\n Commands\\Activities\\PreMeetingReminder::class,\n Commands\\Activities\\CustomerActivitiesExport::class,\n Commands\\Users\\RefreshAccessToken::class,\n Commands\\Calendars\\SetupCalendarSubscription::class,\n Commands\\Activities\\InviteMeetingBot::class,\n Commands\\Activities\\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,\n Commands\\Crm\\MigrateProvider::class,\n Commands\\Activities\\MigrateLocationFromCalendarEventToActivities::class,\n Commands\\HelperTruncateCoachingTables::class,\n Commands\\FixCrossTenantIssues::class,\n Commands\\Activities\\CloudCall\\SetupIntegration::class,\n Commands\\Activities\\CloudTalk\\FixTimeZone::class,\n Commands\\Activities\\Orum\\SetupIntegration::class,\n Commands\\Activities\\JustCall\\SetupIntegration::class,\n Commands\\Activities\\RingCentral\\AddInboundPromptSupport::class,\n Commands\\Dialers\\Dialpad\\SubscribeToWebhooks::class,\n Commands\\RecalculateDealRisksCommand::class,\n SendDealsUpdateCommand::class,\n Commands\\Activities\\SetProviderCapabilitiesField::class,\n Commands\\Teams\\InitiallySetNotificationProviderTeamsTable::class,\n Commands\\Crm\\AddLayoutEntities::class,\n Commands\\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,\n Commands\\JiminnyTokenInfoCommand::class,\n Commands\\JiminnySetEncryptedTokenManagerModeCommand::class,\n Commands\\EncryptTokensCommand::class,\n Commands\\Dialers\\Aircall\\CheckAndRenewWebhooks::class,\n Commands\\Migrate\\MigrateTeamRegionCommand::class,\n Commands\\ManageScimForTeam::class,\n Commands\\Dialers\\SyncUsersCommand::class,\n Commands\\WhichWorkerIsWorkingOnWhichJob::class,\n Commands\\GroupSetDefaultLanguageCommand::class,\n Commands\\Dev\\AddRateLimitCommand::class,\n Commands\\Dev\\ImportCallsCommand::class,\n Commands\\DealInsights\\BuildDealInsightsLayoutCommand::class,\n Commands\\DealInsights\\DeleteAskJiminnyDealPrompts::class,\n Commands\\Crm\\MatchCrmObjectsCommand::class,\n Commands\\Activities\\SetupIntegration\\EightByEight::class,\n Commands\\Calendars\\RemoveCalendarEventActivitiesCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromGongCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromChorusCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromLeexiCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromAvomaCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromClariCommand::class,\n Commands\\Activities\\SetupIntegration\\ConnectAndSell::class,\n Commands\\Activities\\SetupIntegration\\CloudTalk::class,\n Commands\\Users\\CreateConferenceSlug::class,\n Commands\\Elasticsearch\\AsyncUpdateEsEntities::class,\n Commands\\Elasticsearch\\ResetAsyncElasticSearchCommand::class,\n Commands\\Playlists\\PlaylistSharesUpdateCommand::class,\n Commands\\Crm\\AutologDelayedCommand::class,\n Commands\\Activities\\HydrateDefaultActivityTypeCommand::class,\n Commands\\Crm\\CheckActivityLoggableCommand::class,\n Commands\\Activities\\MonitorDialerActivitiesCommand::class,\n Commands\\Activities\\SetupIntegration\\Xant::class,\n Commands\\ImportUsersFromCsvFile::class,\n Commands\\DevPostmanCommand::class,\n Commands\\Playlists\\FixTreeStructureCommand::class,\n Commands\\Zoom\\ResolvePmiLinksCommand::class,\n Commands\\MarkBranchForEnvironmentPipelineCommand::class,\n Commands\\Activities\\ProbeMediaSegmentsCommand::class,\n Commands\\Activities\\SetupIntegration\\AmazonConnect::class,\n Commands\\Playbooks\\ChangePlaybookActivityFieldCommand::class,\n MediaPipelineRestartCommand::class,\n Commands\\Dev\\FixHubSpotTokens::class,\n Commands\\Dev\\MonitorSocialAccountsState::class,\n Commands\\Activities\\SetupIntegration\\Vonage::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlex::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexDirect::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexSetDialerAuthCredentialsCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioSetS3RecordingCredentialsCommand::class,\n SendActionItemsCommand::class,\n Commands\\Users\\ChangeEmail::class,\n Commands\\Calendars\\ListUserGoogleCalendars::class,\n Commands\\Activities\\JustCall\\SyncPlaybackLinkToCrmCommand::class,\n Commands\\Activities\\HydrateCallWithCrmDataCommand::class,\n Commands\\Activities\\UpdateActivityElasticSearchDocumentCommand::class,\n Commands\\Activities\\SetupIntegration\\Talkdesk::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookListCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookShow::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioVideo::class,\n Commands\\Crm\\SetupCloseCrm::class,\n Commands\\Crm\\SetupCopperCrm::class,\n Commands\\Crm\\FullSyncOpportunityCommand::class,\n Commands\\Crm\\IntegrationApp\\CrmEntitiesFullSyncCommand::class,\n Commands\\Crm\\IntegrationApp\\ValidateConnectionCommand::class,\n Commands\\Activities\\Workflow\\RefreshCrmData::class,\n Commands\\Activities\\Migrator\\AnalyseGongCalls::class,\n Commands\\Users\\AddVoiceRoleToRecorderCommand::class,\n Commands\\Activities\\SyncMissingCallDispositions::class,\n Commands\\Calendars\\RemoveFutureCalendarEvents::class,\n FlushRolesPermissionsCache::class,\n Commands\\Activities\\SetupIntegration\\FiveNine::class,\n CalendarEventDeleteCancelledCommand::class,\n CalendarEventDeletePastCommand::class,\n ReportActivityProcessingTimeToDatadogCommand::class,\n ReportProcessingStatesToDatadogCommand::class,\n ReleaseNumbersCommand::class,\n BackfillOpportunityUserFromAccountCommand::class,\n RemoveExpiredRoleChangeEventsCommand::class,\n RemoveExpiredNudgesCommand::class,\n SendNudgeExpirationWarningsCommand::class,\n AutologOldActivitiesCommand::class,\n RemoveUnusedParticipantSpeechesCommand::class,\n DeleteActivitiesForChurnedTeamsCommand::class,\n HardDeleteActivitiesForChurnedTeamsCommand::class,\n TeamDeleteCommand::class,\n TeamsDeleteDeactivatedCommand::class,\n UpdateTeamsCommand::class,\n OverrideTranscriptionLocaleCommand::class,\n SyncSlackUserCommand::class,\n PurgeSoftDeletedOpportunitiesCommand::class,\n PurgeSyncBatchesCommand::class,\n ProphetAnalyzeClosedDealsCommand::class,\n DeleteChurnedSubAccounts::class,\n Commands\\ProphetAi\\DumpContext::class,\n DeletePredefinedSubAccounts::class,\n DeleteActivitiesForRetentionTeamsCommand::class,\n HardDeleteActivitiesTeamsCommand::class,\n TeamsDeleteRetentionCommand::class,\n TeamSettingPutCommand::class,\n StopHangingLivestreamsCommand::class,\n FixActivitiesOpportunity::class,\n Commands\\Activities\\SetupIntegration\\Salesforce\\SetupSalesforceIntegrationCommand::class,\n UpdateOldTranscriptionModelLocalesCommand::class,\n Commands\\Dev\\FixMissMatchedCrmActivitiesCommand::class,\n DownloadMissingTrackCommand::class,\n ActivitiesMatchCrmCommand::class,\n DeleteEmailDocumentsCommand::class,\n DeleteOldTranscriptionsCommand::class,\n DeleteS3LeftoversCommand::class,\n RemoveDeleteMarkersCommand::class,\n SyncTeamUsersCommand::class,\n ReassignTranscriptCommand::class,\n DiarizeViaAiParticipantIdentificationCommand::class,\n RestoreActivityTypeCommand::class,\n DeleteOldAiCrmNotesCommand::class,\n DeleteReportCommand::class,\n AutomatedReportsRetentionPolicyCommand::class,\n SyncHubspotActiveDeals::class,\n GenerateInternalWebhookToken::class,\n IssueMcpTokenCommand::class,\n RestoreActivityCrmProviderIdCommand::class,\n CleanupActivityTracksCommand::class,\n DeleteUnusedTracksCommand::class,\n RestoreTracksCommand::class,\n HubspotWebhookServiceCommand::class,\n ProcessMergedObjectsCommand::class,\n HubspotJournalPollingCommand::class,\n SetupJournalDealWebhookSubscriptionsCommand::class,\n ListJournalWebhookSubscriptionsCommand::class,\n RemoveGhostParticipantsCommand::class,\n AutodetectAiActivityTypeCommand::class,\n Commands\\Crm\\LogActivitiesCommand::class,\n Commands\\Crm\\MatchOpportunityActivitiesCommand::class,\n PurgeDeletedOpportunitiesCommand::class,\n CleanDuplicateFieldDataCommand::class,\n RetryProspectSummaryCommand::class,\n ProcessHubspotObjectsSyncBatches::class,\n SyncOpportunitiesMissingFieldDataCommand::class,\n RestoreDealAssociationsCommand::class,\n Commands\\Crm\\TestPipedriveOfficialSdkCommand::class,\n ];\n\n private Schedule $schedule;\n private string $output;\n\n protected function schedule(Schedule $schedule): void\n {\n $this->schedule = $schedule;\n $this->output = config('jiminny.scheduler_log');\n\n $schedule->useCache('redis');\n\n $currentMinute = (int) date('i');\n $currentDay = (int) date('w');\n\n $this->scheduleEveryMinute();\n $this->scheduleEveryTwoMinutes();\n $this->scheduleEveryFiveMinutes();\n $this->scheduleEveryTenMinutes();\n $this->scheduleEveryFifteenMinutes();\n $this->scheduleEveryThirtyMinutes();\n $this->scheduleHourly();\n $this->scheduleDaily();\n $this->scheduleWeekly($currentDay);\n $this->scheduleSpecificTimes();\n $this->scheduleDynamic($currentMinute);\n }\n\n protected function scheduleEveryMinute(): void\n {\n $this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();\n $this->scheduleCommand('dialers:monitor-activities')->everyMinute();\n $this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();\n $this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();\n\n $this->schedule->command('mailbox:batch:process', ['--max-batches=15'])\n ->everyMinute()\n ->sendOutputTo($this->output);\n }\n\n protected function scheduleEveryTwoMinutes(): void\n {\n $this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();\n }\n\n protected function scheduleEveryFiveMinutes(): void\n {\n $this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();\n // Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)\n $this->scheduleCommand('crm:sync-hubspot-objects', [], 4)\n ->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');\n $this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();\n\n $this->schedule->command('mailbox:batch:create')\n ->cron('2-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output);\n\n $this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])\n ->cron('3-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ->runInBackground();\n\n $this->schedule->command('hubspot:journal-poll', ['--start'])\n ->everyFiveMinutes()\n ->sendOutputTo($this->output)\n ->runInBackground();\n }\n\n protected function scheduleEveryTenMinutes(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();\n $this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('crm:reset-governor')->everyTenMinutes();\n }\n\n protected function scheduleEveryFifteenMinutes(): void\n {\n $this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();\n $this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');\n $this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n ],\n ])->everyFifteenMinutes();\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->cron('7,22,37,52 * * * *');\n }\n\n protected function scheduleEveryThirtyMinutes(): void\n {\n $this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');\n $this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();\n\n $this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)\n ->between('02:58', '05:29')\n ->everyThirtyMinutes()\n ->runInBackground();\n\n $this->scheduleActivitiesHardDelete();\n }\n\n protected function scheduleHourly(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();\n $this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');\n $this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');\n $this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');\n $this->scheduleCommand('automated-reports:send')->hourly();\n $this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);\n $this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);\n }\n\n protected function scheduleDaily(): void\n {\n $this->scheduleCommand('teams:sync-planhat')->daily();\n $this->scheduleCommand('twilio:sync-addresses')->daily();\n $this->scheduleCommand('twilio:sync-zone-access')->daily();\n $this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();\n $this->scheduleCommand('users:sync-licence-data')->daily();\n $this->scheduleCommand('users:sync-intercom-data')->daily();\n $this->scheduleCommand('nudges:send-expiration-warnings')->daily();\n $this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();\n }\n\n protected function scheduleWeekly(int $currentDay): void\n {\n if ($currentDay === 0) {\n $this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);\n }\n\n if ($currentDay === 6) {\n $this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_AMAZON_CONNECT,\n '--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->saturdays()->at('01:00')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)\n ->saturdays()->at('01:07')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)\n ->saturdays()->at('05:08')->runInBackground();\n $this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')\n ->weeklyOn(6, '6:00');\n $this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')\n ->weeklyOn(6, '7:00');\n }\n }\n\n protected function scheduleSpecificTimes(): void\n {\n $this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_DISCARDED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:20')->runInBackground();\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_PROCESSED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:30')->runInBackground();\n\n $this->scheduleCommand('automated-reports')->dailyAt('01:00');\n $this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');\n $this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');\n $this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');\n $this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');\n $this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');\n $this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('03:05');\n\n\n $this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');\n $this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');\n $this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');\n $this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');\n $this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');\n\n if (! $this->app->environment('production')) {\n $this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)\n ->dailyAt('04:02')->runInBackground();\n }\n\n $this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n ],\n ])->dailyAt('05:05');\n\n if (! $this->app->environment('qa')) {\n $this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');\n }\n\n $this->scheduleCommand('activity:sync-dispositions', [\n Activity::PROVIDER_HUBSPOT,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('07:05');\n }\n\n protected function scheduleDynamic(int $currentMinute): void\n {\n $this->scheduleHourlyFallbackActivitySyncs($currentMinute);\n $this->scheduleBullhornHeartbeat($currentMinute);\n }\n\n private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void\n {\n if ($offsetMinute === 0) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);\n } elseif ($offsetMinute === 1) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);\n } elseif ($offsetMinute === 2) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);\n }\n }\n\n private function scheduleBullhornHeartbeat(int $currentMinute): void\n {\n $bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);\n if ($bhHeartbeatInterval > 0) {\n $minutes = max((int) floor($bhHeartbeatInterval / 60), 1);\n if ($currentMinute % $minutes === 0) {\n $bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);\n if ($minutes > 30) {\n $bhEvent->hourly();\n } else {\n $bhEvent->cron(sprintf('*/%d * * * *', $minutes));\n }\n }\n }\n }\n\n private function scheduleActivitiesHardDelete(): void\n {\n if (config(key: 'jiminny.deploy_region') === 'eu') {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 1000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n } elseif ($this->app->environment('production')) {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 2000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n }\n }\n\n private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void\n {\n $this->scheduleCommand('activity:sync', [\n $provider,\n '--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->hourlyAt($offsetMinute);\n }\n\n /**\n * Register the Closure based commands for the application.\n */\n protected function commands(): void\n {\n require_once base_path('routes/console.php');\n }\n\n private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event\n {\n return $this->schedule\n ->command($name, $options)\n ->withoutOverlapping($expiresAt)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-935282521832906214
|
-8743917468487692599
|
idle
|
accessibility
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\DTO\Invitation;
use Jiminny\DTO\UserEmail;
use Jiminny\Http\Requests\Settings\Teams\CreateInvitationRequest;
use Jiminny\Http\Requests\Settings\Teams\CreateTeamRequest;
use Jiminny\Http\Requests\Settings\Teams\EditTeamRequest;
use Jiminny\Models\Group;
use Jiminny\Models\Invitation;
use Jiminny\Models\Role;
use Jiminny\Models\Team;
use Jiminny\Models\User;
class UserInvitationDTO
{
use UserEmail;
public string $email;
public ?string $secondaryEmail;
public ?int $groupId;
public int $teamId;
public bool $crmRequired;
public array $roleIds;
public bool $isOwner;
public ?User $currentUser = null;
/**
* @param array{
* email: string,
* secondaryEmail: string|null,
* groupId: int|null,
* teamId: int|string,
* crmRequired: bool,
* roleIds: int[],
* isOwner: bool,
* user?: User
* } $attributes
*/
private function __construct(array $attributes)
{
$this->email = mb_strtolower($attributes['email']);
$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);
$this->groupId = $attributes['groupId'];
$this->teamId = (int) $attributes['teamId'];
$this->crmRequired = (bool) $attributes['crmRequired'];
$this->roleIds = $attributes['roleIds'];
$this->isOwner = $attributes['isOwner'];
$this->currentUser = $attributes['user'] ?? null;
}
public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self
{
$roleIds = Role::whereIn('name', [
User::ROLE_ADMIN,
User::ROLE_RECORDER,
])->pluck('id')->toArray();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => $request->getOwnerEmail(),
'secondaryEmail' => null,
'groupId' => null,
'teamId' => $team->getId(),
'crmRequired' => true,
'roleIds' => $roleIds,
'user' => $currentUser,
'isOwner' => true,
]);
}
public static function fromRequest(CreateInvitationRequest $request): self
{
$data = $request->validated();
$groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;
$teamId = Team::uuid($data['team_id'])->getId();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => mb_strtolower($data['email']),
'secondaryEmail' => $data['secondary_email'] ?? null,
'groupId' => $groupId,
'teamId' => $teamId,
'crmRequired' => $data['crm_required'],
'roleIds' => $data['roles'],
'user' => $currentUser,
'isOwner' => false,
]);
}
public static function fromInvitation(Invitation $invitation, User $currentUser): self
{
$roles = $invitation->roles()->get();
$isOwner = $invitation->isOwner();
return new self([
'email' => $invitation->email,
'secondaryEmail' => $invitation->getSecondaryEmail(),
'groupId' => $invitation->group_id,
'teamId' => $invitation->team_id,
'crmRequired' => $invitation->crm_required,
'roleIds' => $roles->pluck('id')->toArray(),
'user' => $currentUser,
'isOwner' => $isOwner,
]);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
17
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Console;
use Illuminate\Console\ConfirmableTrait;
use Illuminate\Console\Scheduling\Event;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Jiminny\Component\Acl\RemoveExpiredRoleChangeEventsCommand;
use Jiminny\Component\ActionItems\Commands\SendActionItemsCommand;
use Jiminny\Component\AiActivityType\Commands\AutodetectAiActivityTypeCommand;
use Jiminny\Component\AskJiminnyAi\Commands\ProphetAnalyzeClosedDealsCommand;
use Jiminny\Component\Cache\Constants;
use Jiminny\Component\DealInsights\Commands\SendDealsUpdateCommand;
use Jiminny\Component\MediaPipeline\Command\MediaPipelineRestartCommand;
use Jiminny\Component\MediaPipeline\Command\ReportActivityProcessingTimeToDatadogCommand;
use Jiminny\Component\MediaPipeline\Command\ReportProcessingStatesToDatadogCommand;
use Jiminny\Component\Transcription\Commands\OverrideTranscriptionLocaleCommand;
use Jiminny\Component\Transcription\Commands\RetryFailedTranscriptionsCommand;
use Jiminny\Component\Transcription\Commands\RetryStuckTranscriptionsCommand;
use Jiminny\Console\Commands\Activities\ActivitiesMatchCrmCommand;
use Jiminny\Console\Commands\Activities\AutologOldActivitiesCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForRetentionTeamsCommand;
use Jiminny\Console\Commands\Activities\DownloadMissingTrackCommand;
use Jiminny\Console\Commands\Activities\FixActivitiesOpportunity;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesTeamsCommand;
use Jiminny\Console\Commands\Activities\ReassignTranscriptCommand;
use Jiminny\Console\Commands\Activities\ReindexRecentActivitiesCommand;
use Jiminny\Console\Commands\Activities\RetryProspectSummaryCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeleteCancelledCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeletePastCommand;
use Jiminny\Console\Commands\Crm\BackfillOpportunityUserFromAccountCommand;
use Jiminny\Console\Commands\Crm\CleanDuplicateFieldDataCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ProcessMergedObjectsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\RestoreDealAssociationsCommand;
use Jiminny\Console\Commands\Crm\ProcessHubspotObjectsSyncBatches;
use Jiminny\Console\Commands\Crm\PurgeDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ListJournalWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\SetupJournalDealWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\SyncHubspotActiveDeals;
use Jiminny\Console\Commands\Crm\SyncOpportunitiesMissingFieldDataCommand;
use Jiminny\Console\Commands\DeleteOldAiCrmNotesCommand;
use Jiminny\Console\Commands\DeleteS3LeftoversCommand;
use Jiminny\Console\Commands\DiarizeViaAiParticipantIdentificationCommand;
use Jiminny\Console\Commands\Elasticsearch\DeleteEmailDocumentsCommand;
use Jiminny\Console\Commands\Elasticsearch\RemoveGhostParticipantsCommand;
use Jiminny\Console\Commands\FlushRolesPermissionsCache;
use Jiminny\Console\Commands\GenerateInternalWebhookToken;
use Jiminny\Console\Commands\IssueMcpTokenCommand;
use Jiminny\Console\Commands\HubspotJournalPollingCommand;
use Jiminny\Console\Commands\HubspotWebhookServiceCommand;
use Jiminny\Console\Commands\Livestream\StopHangingLivestreamsCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteEmailMessagesWithoutActivityCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteInboxEmailsCommand;
use Jiminny\Console\Commands\PurgeSoftDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\PurgeSyncBatchesCommand;
use Jiminny\Console\Commands\RemoveDeleteMarkersCommand;
use Jiminny\Console\Commands\RemoveExpiredNudgesCommand;
use Jiminny\Console\Commands\RemoveUnusedParticipantSpeechesCommand;
use Jiminny\Console\Commands\Reports\AutomatedReportsRetentionPolicyCommand;
use Jiminny\Console\Commands\Reports\DeleteReportCommand;
use Jiminny\Console\Commands\RestoreActivityCrmProviderIdCommand;
use Jiminny\Console\Commands\RestoreActivityTypeCommand;
use Jiminny\Console\Commands\SendNudgeExpirationWarningsCommand;
use Jiminny\Console\Commands\Slack\SyncSlackUserCommand;
use Jiminny\Console\Commands\Teams\SyncTeamUsersCommand;
use Jiminny\Console\Commands\Teams\TeamDeleteCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteDeactivatedCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteRetentionCommand;
use Jiminny\Console\Commands\Teams\TeamSettingPutCommand;
use Jiminny\Console\Commands\Teams\UpdateTeamsCommand;
use Jiminny\Console\Commands\Tracks\CleanupActivityTracksCommand;
use Jiminny\Console\Commands\Tracks\DeleteUnusedTracksCommand;
use Jiminny\Console\Commands\Tracks\RestoreTracksCommand;
use Jiminny\Console\Commands\Transcription\DeleteOldTranscriptionsCommand;
use Jiminny\Console\Commands\Transcription\UpdateOldTranscriptionModelLocalesCommand;
use Jiminny\Console\Commands\Twilio\DeleteChurnedSubAccounts;
use Jiminny\Console\Commands\Twilio\DeletePredefinedSubAccounts;
use Jiminny\Console\Commands\Twilio\ReleaseNumbersCommand;
use Jiminny\Jobs\Activity\SyncActivity;
use Jiminny\Models\Activity;
use Jiminny\Models\InboxEmail;
use Jiminny\Services\RecallAI\Commands\ImportRegionMeetingCommand;
use Jiminny\Services\RecallAI\Commands\ScheduleBotCommand;
class Kernel extends ConsoleKernel
{
use ConfirmableTrait;
/**
* The Artisan commands provided by your application.
*
* @var string[]
*/
protected $commands = [
Commands\GeckoExport\GeckoExportTranscriptCommand::class,
Commands\GeckoExport\GeckoExportTranscriptionCommand::class,
Commands\GeckoExport\GeckoExportParticipantSpeechesCommand::class,
Commands\Activities\DeleteForCoachesCommand::class,
ReindexRecentActivitiesCommand::class,
Commands\Crm\BullhornPingCommand::class,
Commands\Crm\BullhornSessionCommand::class,
Commands\Crm\BullhornSearchCommand::class,
Commands\PlaybackThemes\TopicsConsolidateCommand::class,
Commands\PlaybackThemes\PlaybackThemesCopyCommand::class,
Commands\PlaybackThemes\AssignTopicsUsedBySingleTeamCommand::class,
Commands\PlaybackThemes\PlaybackThemesMigrateToVersionsCommand::class,
Commands\Vocabulary\VocabularyCopyCommand::class,
Commands\Transcription\TranscriptionPrintRaw::class,
Commands\Migrate\JiminnyMigratePopulateActivitySourceCommand::class,
Commands\EngagementStats\JiminnyEngagementStatsExplainCommand::class,
Commands\EngagementStatsRegenerateCommand::class,
Commands\Analytics\NumberOfActivitiesPerActivityTypeCommand::class,
Commands\Elasticsearch\MappingRunCommand::class,
Commands\Elasticsearch\MappingInstallCommand::class,
Commands\Elasticsearch\UpdateEsMappingSettingsCommand::class,
Commands\Analytics\TranscriptionWordMatchCommand::class,
Commands\JiminnyCacheClearCommand::class,
Commands\Transcription\TranscriptionSearchCommand::class,
RetryStuckTranscriptionsCommand::class,
RetryFailedTranscriptionsCommand::class,
Commands\JiminnyDebugCommand::class,
Commands\RunAiCallScoringForUntypedActivitiesCommand::class,
Commands\Calendars\SyncCalendars::class,
Commands\Calendars\SyncDeletedEvents::class,
Commands\Twilio\FetchMetrics::class,
Commands\Twilio\FetchEvents::class,
Commands\Twilio\FetchSummary::class,
Commands\Twilio\SyncZoneAccess::class,
Commands\DatabaseTableCount::class,
Commands\PurgeConferences::class,
Commands\ResetElasticSearch::class,
Commands\CreateDatabaseUsers::class,
Commands\Activities\NotifyNotLogged::class,
Commands\Crm\SyncTeamMetadata::class,
Commands\Crm\SyncProfileMetadata::class,
Commands\Crm\SyncContact::class,
Commands\Crm\SyncObjects::class,
Commands\Crm\SyncHubspotObjects::class,
Commands\Crm\SyncAccount::class,
Commands\Crm\ResetGovernorLimits::class,
Commands\Crm\ManageSyncStrategyCommand::class,
Commands\ImportRecording::class,
Commands\TrackImported::class,
Commands\Twilio\RecoverTwilioTracksCommand::class,
Commands\Crm\SetupLayouts::class,
Commands\Tracks\SyncTwilioTracks::class,
Commands\Activities\StatusCount::class,
Commands\Mailboxes\TextRelay\WatchMailboxEvents::class,
Commands\Mailboxes\InboxCreate::class,
Commands\Mailboxes\InboxSync::class,
Commands\Mailboxes\BatchCreate::class,
Commands\Mailboxes\BatchProcess::class,
Commands\Mailboxes\InboxPurge::class,
Commands\Mailboxes\BatchRetryFailed::class,
Commands\Mailboxes\BatchFailStalled::class,
Commands\Mailboxes\SkipListsRefresh::class,
Commands\Mailboxes\SkipListsDump::class,
Commands\Mailboxes\TextRelay\SyncMailbox::class,
Commands\Mailboxes\DeleteInboxEmailsCommand::class,
Commands\Mailboxes\DeleteEmailMessagesCommand::class,
DeleteEmailMessagesWithoutActivityCommand::class,
Commands\Tracks\CheckIntegrity::class,
Commands\Twilio\RemoteLifecycle::class,
Commands\Twilio\SyncNumbers::class,
Commands\Crm\SetupActivityTypeForFollowUp::class,
Commands\Activities\CheckPlayable::class,
Commands\Activities\ActivityDeleteCommand::class,
Commands\Activities\Copy::class,
Commands\Activities\ActivityHardDeleteCommand::class,
Commands\Reports\Team::class,
Commands\Reports\GenerateMarketingReport::class,
Commands\Reports\AutomatedReportsCommand::class,
Commands\Reports\AutomatedReportsSendCommand::class,
Commands\MuteOrganizerChannel::class,
Commands\Tracks\DeleteTracks::class,
Commands\Tracks\RetryDownload::class,
Commands\Tracks\RetryFailedDownloads::class,
Commands\Twilio\SyncAddresses::class,
Commands\Activities\UpdateElasticSearch::class,
Commands\MakeSlackLiveCoachingChatNotesOn::class,
Commands\Activities\PreMeetingNotification::class,
ScheduleBotCommand::class,
ImportRegionMeetingCommand::class,
Commands\Activities\MonitorMeetingCountCommand::class,
Commands\Activities\MonitorMeetingStartCommand::class,
Commands\Activities\MonitorMeetingEndCommand::class,
Commands\SyncActivity::class,
Commands\PhpApm::class,
Commands\Crm\SyncOpportunity::class,
Commands\Crm\SyncLead::class,
Commands\Users\SyncLicenceDataToSalesforce::class,
Commands\Crm\UpdateOpportunitySpecifications::class,
Commands\Users\SyncToIntercom::class,
Commands\Users\SyncToUserPilot::class,
Commands\Teams\SyncToPlanhat::class,
Commands\Twilio\SetZoneAccess::class,
Commands\Users\CreateDefaultSavedSearchesCommand::class,
Commands\Crm\SendNotLogged::class,
Commands\Teams\DeactivateTeamCommand::class,
Commands\Crm\SyncFieldMetadata::class,
Commands\Postmark\SyncEmailTemplatesCommand::class,
Commands\PlaybackThemes\ImportTriggersFromTranslatedCsvCommand::class,
Commands\Activities\PreMeetingReminder::class,
Commands\Activities\CustomerActivitiesExport::class,
Commands\Users\RefreshAccessToken::class,
Commands\Calendars\SetupCalendarSubscription::class,
Commands\Activities\InviteMeetingBot::class,
Commands\Activities\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,
Commands\Crm\MigrateProvider::class,
Commands\Activities\MigrateLocationFromCalendarEventToActivities::class,
Commands\HelperTruncateCoachingTables::class,
Commands\FixCrossTenantIssues::class,
Commands\Activities\CloudCall\SetupIntegration::class,
Commands\Activities\CloudTalk\FixTimeZone::class,
Commands\Activities\Orum\SetupIntegration::class,
Commands\Activities\JustCall\SetupIntegration::class,
Commands\Activities\RingCentral\AddInboundPromptSupport::class,
Commands\Dialers\Dialpad\SubscribeToWebhooks::class,
Commands\RecalculateDealRisksCommand::class,
SendDealsUpdateCommand::class,
Commands\Activities\SetProviderCapabilitiesField::class,
Commands\Teams\InitiallySetNotificationProviderTeamsTable::class,
Commands\Crm\AddLayoutEntities::class,
Commands\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,
Commands\JiminnyTokenInfoCommand::class,
Commands\JiminnySetEncryptedTokenManagerModeCommand::class,
Commands\EncryptTokensCommand::class,
Commands\Dialers\Aircall\CheckAndRenewWebhooks::class,
Commands\Migrate\MigrateTeamRegionCommand::class,
Commands\ManageScimForTeam::class,
Commands\Dialers\SyncUsersCommand::class,
Commands\WhichWorkerIsWorkingOnWhichJob::class,
Commands\GroupSetDefaultLanguageCommand::class,
Commands\Dev\AddRateLimitCommand::class,
Commands\Dev\ImportCallsCommand::class,
Commands\DealInsights\BuildDealInsightsLayoutCommand::class,
Commands\DealInsights\DeleteAskJiminnyDealPrompts::class,
Commands\Crm\MatchCrmObjectsCommand::class,
Commands\Activities\SetupIntegration\EightByEight::class,
Commands\Calendars\RemoveCalendarEventActivitiesCommand::class,
Commands\Activities\Migrator\MigrateFromGongCommand::class,
Commands\Activities\Migrator\MigrateFromChorusCommand::class,
Commands\Activities\Migrator\MigrateFromLeexiCommand::class,
Commands\Activities\Migrator\MigrateFromAvomaCommand::class,
Commands\Activities\Migrator\MigrateFromClariCommand::class,
Commands\Activities\SetupIntegration\ConnectAndSell::class,
Commands\Activities\SetupIntegration\CloudTalk::class,
Commands\Users\CreateConferenceSlug::class,
Commands\Elasticsearch\AsyncUpdateEsEntities::class,
Commands\Elasticsearch\ResetAsyncElasticSearchCommand::class,
Commands\Playlists\PlaylistSharesUpdateCommand::class,
Commands\Crm\AutologDelayedCommand::class,
Commands\Activities\HydrateDefaultActivityTypeCommand::class,
Commands\Crm\CheckActivityLoggableCommand::class,
Commands\Activities\MonitorDialerActivitiesCommand::class,
Commands\Activities\SetupIntegration\Xant::class,
Commands\ImportUsersFromCsvFile::class,
Commands\DevPostmanCommand::class,
Commands\Playlists\FixTreeStructureCommand::class,
Commands\Zoom\ResolvePmiLinksCommand::class,
Commands\MarkBranchForEnvironmentPipelineCommand::class,
Commands\Activities\ProbeMediaSegmentsCommand::class,
Commands\Activities\SetupIntegration\AmazonConnect::class,
Commands\Playbooks\ChangePlaybookActivityFieldCommand::class,
MediaPipelineRestartCommand::class,
Commands\Dev\FixHubSpotTokens::class,
Commands\Dev\MonitorSocialAccountsState::class,
Commands\Activities\SetupIntegration\Vonage::class,
Commands\Activities\SetupIntegration\TwilioFlex::class,
Commands\Activities\SetupIntegration\TwilioFlexDirect::class,
Commands\Activities\SetupIntegration\TwilioFlexSetDialerAuthCredentialsCommand::class,
Commands\Activities\SetupIntegration\TwilioSetS3RecordingCredentialsCommand::class,
SendActionItemsCommand::class,
Commands\Users\ChangeEmail::class,
Commands\Calendars\ListUserGoogleCalendars::class,
Commands\Activities\JustCall\SyncPlaybackLinkToCrmCommand::class,
Commands\Activities\HydrateCallWithCrmDataCommand::class,
Commands\Activities\UpdateActivityElasticSearchDocumentCommand::class,
Commands\Activities\SetupIntegration\Talkdesk::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookListCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookShow::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,
Commands\Activities\SetupIntegration\TwilioVideo::class,
Commands\Crm\SetupCloseCrm::class,
Commands\Crm\SetupCopperCrm::class,
Commands\Crm\FullSyncOpportunityCommand::class,
Commands\Crm\IntegrationApp\CrmEntitiesFullSyncCommand::class,
Commands\Crm\IntegrationApp\ValidateConnectionCommand::class,
Commands\Activities\Workflow\RefreshCrmData::class,
Commands\Activities\Migrator\AnalyseGongCalls::class,
Commands\Users\AddVoiceRoleToRecorderCommand::class,
Commands\Activities\SyncMissingCallDispositions::class,
Commands\Calendars\RemoveFutureCalendarEvents::class,
FlushRolesPermissionsCache::class,
Commands\Activities\SetupIntegration\FiveNine::class,
CalendarEventDeleteCancelledCommand::class,
CalendarEventDeletePastCommand::class,
ReportActivityProcessingTimeToDatadogCommand::class,
ReportProcessingStatesToDatadogCommand::class,
ReleaseNumbersCommand::class,
BackfillOpportunityUserFromAccountCommand::class,
RemoveExpiredRoleChangeEventsCommand::class,
RemoveExpiredNudgesCommand::class,
SendNudgeExpirationWarningsCommand::class,
AutologOldActivitiesCommand::class,
RemoveUnusedParticipantSpeechesCommand::class,
DeleteActivitiesForChurnedTeamsCommand::class,
HardDeleteActivitiesForChurnedTeamsCommand::class,
TeamDeleteCommand::class,
TeamsDeleteDeactivatedCommand::class,
UpdateTeamsCommand::class,
OverrideTranscriptionLocaleCommand::class,
SyncSlackUserCommand::class,
PurgeSoftDeletedOpportunitiesCommand::class,
PurgeSyncBatchesCommand::class,
ProphetAnalyzeClosedDealsCommand::class,
DeleteChurnedSubAccounts::class,
Commands\ProphetAi\DumpContext::class,
DeletePredefinedSubAccounts::class,
DeleteActivitiesForRetentionTeamsCommand::class,
HardDeleteActivitiesTeamsCommand::class,
TeamsDeleteRetentionCommand::class,
TeamSettingPutCommand::class,
StopHangingLivestreamsCommand::class,
FixActivitiesOpportunity::class,
Commands\Activities\SetupIntegration\Salesforce\SetupSalesforceIntegrationCommand::class,
UpdateOldTranscriptionModelLocalesCommand::class,
Commands\Dev\FixMissMatchedCrmActivitiesCommand::class,
DownloadMissingTrackCommand::class,
ActivitiesMatchCrmCommand::class,
DeleteEmailDocumentsCommand::class,
DeleteOldTranscriptionsCommand::class,
DeleteS3LeftoversCommand::class,
RemoveDeleteMarkersCommand::class,
SyncTeamUsersCommand::class,
ReassignTranscriptCommand::class,
DiarizeViaAiParticipantIdentificationCommand::class,
RestoreActivityTypeCommand::class,
DeleteOldAiCrmNotesCommand::class,
DeleteReportCommand::class,
AutomatedReportsRetentionPolicyCommand::class,
SyncHubspotActiveDeals::class,
GenerateInternalWebhookToken::class,
IssueMcpTokenCommand::class,
RestoreActivityCrmProviderIdCommand::class,
CleanupActivityTracksCommand::class,
DeleteUnusedTracksCommand::class,
RestoreTracksCommand::class,
HubspotWebhookServiceCommand::class,
ProcessMergedObjectsCommand::class,
HubspotJournalPollingCommand::class,
SetupJournalDealWebhookSubscriptionsCommand::class,
ListJournalWebhookSubscriptionsCommand::class,
RemoveGhostParticipantsCommand::class,
AutodetectAiActivityTypeCommand::class,
Commands\Crm\LogActivitiesCommand::class,
Commands\Crm\MatchOpportunityActivitiesCommand::class,
PurgeDeletedOpportunitiesCommand::class,
CleanDuplicateFieldDataCommand::class,
RetryProspectSummaryCommand::class,
ProcessHubspotObjectsSyncBatches::class,
SyncOpportunitiesMissingFieldDataCommand::class,
RestoreDealAssociationsCommand::class,
Commands\Crm\TestPipedriveOfficialSdkCommand::class,
];
private Schedule $schedule;
private string $output;
protected function schedule(Schedule $schedule): void
{
$this->schedule = $schedule;
$this->output = config('jiminny.scheduler_log');
$schedule->useCache('redis');
$currentMinute = (int) date('i');
$currentDay = (int) date('w');
$this->scheduleEveryMinute();
$this->scheduleEveryTwoMinutes();
$this->scheduleEveryFiveMinutes();
$this->scheduleEveryTenMinutes();
$this->scheduleEveryFifteenMinutes();
$this->scheduleEveryThirtyMinutes();
$this->scheduleHourly();
$this->scheduleDaily();
$this->scheduleWeekly($currentDay);
$this->scheduleSpecificTimes();
$this->scheduleDynamic($currentMinute);
}
protected function scheduleEveryMinute(): void
{
$this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();
$this->scheduleCommand('dialers:monitor-activities')->everyMinute();
$this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();
$this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();
$this->schedule->command('mailbox:batch:process', ['--max-batches=15'])
->everyMinute()
->sendOutputTo($this->output);
}
protected function scheduleEveryTwoMinutes(): void
{
$this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();
}
protected function scheduleEveryFiveMinutes(): void
{
$this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();
// Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)
$this->scheduleCommand('crm:sync-hubspot-objects', [], 4)
->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');
$this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();
$this->schedule->command('mailbox:batch:create')
->cron('2-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output);
$this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])
->cron('3-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output)
->runInBackground();
$this->schedule->command('hubspot:journal-poll', ['--start'])
->everyFiveMinutes()
->sendOutputTo($this->output)
->runInBackground();
}
protected function scheduleEveryTenMinutes(): void
{
$this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();
$this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('crm:reset-governor')->everyTenMinutes();
}
protected function scheduleEveryFifteenMinutes(): void
{
$this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();
$this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');
$this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
],
])->everyFifteenMinutes();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->cron('7,22,37,52 * * * *');
}
protected function scheduleEveryThirtyMinutes(): void
{
$this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');
$this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();
$this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)
->between('02:58', '05:29')
->everyThirtyMinutes()
->runInBackground();
$this->scheduleActivitiesHardDelete();
}
protected function scheduleHourly(): void
{
$this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();
$this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');
$this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');
$this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');
$this->scheduleCommand('automated-reports:send')->hourly();
$this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);
$this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);
}
protected function scheduleDaily(): void
{
$this->scheduleCommand('teams:sync-planhat')->daily();
$this->scheduleCommand('twilio:sync-addresses')->daily();
$this->scheduleCommand('twilio:sync-zone-access')->daily();
$this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();
$this->scheduleCommand('users:sync-licence-data')->daily();
$this->scheduleCommand('users:sync-intercom-data')->daily();
$this->scheduleCommand('nudges:send-expiration-warnings')->daily();
$this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();
}
protected function scheduleWeekly(int $currentDay): void
{
if ($currentDay === 0) {
$this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);
}
if ($currentDay === 6) {
$this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_AMAZON_CONNECT,
'--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->saturdays()->at('01:00')->runInBackground();
$this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)
->saturdays()->at('01:07')->runInBackground();
$this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)
->saturdays()->at('05:08')->runInBackground();
$this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')
->weeklyOn(6, '6:00');
$this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')
->weeklyOn(6, '7:00');
}
}
protected function scheduleSpecificTimes(): void
{
$this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_DISCARDED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:20')->runInBackground();
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_PROCESSED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:30')->runInBackground();
$this->scheduleCommand('automated-reports')->dailyAt('01:00');
$this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');
$this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');
$this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');
$this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');
$this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');
$this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('03:05');
$this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');
$this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');
$this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');
$this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');
$this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');
if (! $this->app->environment('production')) {
$this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)
->dailyAt('04:02')->runInBackground();
}
$this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
],
])->dailyAt('05:05');
if (! $this->app->environment('qa')) {
$this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');
}
$this->scheduleCommand('activity:sync-dispositions', [
Activity::PROVIDER_HUBSPOT,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('07:05');
}
protected function scheduleDynamic(int $currentMinute): void
{
$this->scheduleHourlyFallbackActivitySyncs($currentMinute);
$this->scheduleBullhornHeartbeat($currentMinute);
}
private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void
{
if ($offsetMinute === 0) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);
} elseif ($offsetMinute === 1) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);
} elseif ($offsetMinute === 2) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);
}
}
private function scheduleBullhornHeartbeat(int $currentMinute): void
{
$bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);
if ($bhHeartbeatInterval > 0) {
$minutes = max((int) floor($bhHeartbeatInterval / 60), 1);
if ($currentMinute % $minutes === 0) {
$bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);
if ($minutes > 30) {
$bhEvent->hourly();
} else {
$bhEvent->cron(sprintf('*/%d * * * *', $minutes));
}
}
}
}
private function scheduleActivitiesHardDelete(): void
{
if (config(key: 'jiminny.deploy_region') === 'eu') {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 1000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
} elseif ($this->app->environment('production')) {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 2000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
}
}
private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void
{
$this->scheduleCommand('activity:sync', [
$provider,
'--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->hourlyAt($offsetMinute);
}
/**
* Register the Closure based commands for the application.
*/
protected function commands(): void
{
require_once base_path('routes/console.php');
}
private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event
{
return $this->schedule
->command($name, $options)
->withoutOverlapping($expiresAt)
->onOneServer()
->sendOutputTo($this->output)
;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
50069
|
NULL
|
NULL
|
NULL
|
|
50072
|
1776
|
33
|
2026-05-18T07:15:10.882381+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088510882_m2.jpg...
|
PhpStorm
|
faVsco.js – Kernel.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\DTO\Invitation;
use Jiminny\DTO\UserEmail;
use Jiminny\Http\Requests\Settings\Teams\CreateInvitationRequest;
use Jiminny\Http\Requests\Settings\Teams\CreateTeamRequest;
use Jiminny\Http\Requests\Settings\Teams\EditTeamRequest;
use Jiminny\Models\Group;
use Jiminny\Models\Invitation;
use Jiminny\Models\Role;
use Jiminny\Models\Team;
use Jiminny\Models\User;
class UserInvitationDTO
{
use UserEmail;
public string $email;
public ?string $secondaryEmail;
public ?int $groupId;
public int $teamId;
public bool $crmRequired;
public array $roleIds;
public bool $isOwner;
public ?User $currentUser = null;
/**
* @param array{
* email: string,
* secondaryEmail: string|null,
* groupId: int|null,
* teamId: int|string,
* crmRequired: bool,
* roleIds: int[],
* isOwner: bool,
* user?: User
* } $attributes
*/
private function __construct(array $attributes)
{
$this->email = mb_strtolower($attributes['email']);
$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);
$this->groupId = $attributes['groupId'];
$this->teamId = (int) $attributes['teamId'];
$this->crmRequired = (bool) $attributes['crmRequired'];
$this->roleIds = $attributes['roleIds'];
$this->isOwner = $attributes['isOwner'];
$this->currentUser = $attributes['user'] ?? null;
}
public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self
{
$roleIds = Role::whereIn('name', [
User::ROLE_ADMIN,
User::ROLE_RECORDER,
])->pluck('id')->toArray();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => $request->getOwnerEmail(),
'secondaryEmail' => null,
'groupId' => null,
'teamId' => $team->getId(),
'crmRequired' => true,
'roleIds' => $roleIds,
'user' => $currentUser,
'isOwner' => true,
]);
}
public static function fromRequest(CreateInvitationRequest $request): self
{
$data = $request->validated();
$groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;
$teamId = Team::uuid($data['team_id'])->getId();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => mb_strtolower($data['email']),
'secondaryEmail' => $data['secondary_email'] ?? null,
'groupId' => $groupId,
'teamId' => $teamId,
'crmRequired' => $data['crm_required'],
'roleIds' => $data['roles'],
'user' => $currentUser,
'isOwner' => false,
]);
}
public static function fromInvitation(Invitation $invitation, User $currentUser): self
{
$roles = $invitation->roles()->get();
$isOwner = $invitation->isOwner();
return new self([
'email' => $invitation->email,
'secondaryEmail' => $invitation->getSecondaryEmail(),
'groupId' => $invitation->group_id,
'teamId' => $invitation->team_id,
'crmRequired' => $invitation->crm_required,
'roleIds' => $roles->pluck('id')->toArray(),
'user' => $currentUser,
'isOwner' => $isOwner,
]);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
17
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Console;
use Illuminate\Console\ConfirmableTrait;
use Illuminate\Console\Scheduling\Event;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Jiminny\Component\Acl\RemoveExpiredRoleChangeEventsCommand;
use Jiminny\Component\ActionItems\Commands\SendActionItemsCommand;
use Jiminny\Component\AiActivityType\Commands\AutodetectAiActivityTypeCommand;
use Jiminny\Component\AskJiminnyAi\Commands\ProphetAnalyzeClosedDealsCommand;
use Jiminny\Component\Cache\Constants;
use Jiminny\Component\DealInsights\Commands\SendDealsUpdateCommand;
use Jiminny\Component\MediaPipeline\Command\MediaPipelineRestartCommand;
use Jiminny\Component\MediaPipeline\Command\ReportActivityProcessingTimeToDatadogCommand;
use Jiminny\Component\MediaPipeline\Command\ReportProcessingStatesToDatadogCommand;
use Jiminny\Component\Transcription\Commands\OverrideTranscriptionLocaleCommand;
use Jiminny\Component\Transcription\Commands\RetryFailedTranscriptionsCommand;
use Jiminny\Component\Transcription\Commands\RetryStuckTranscriptionsCommand;
use Jiminny\Console\Commands\Activities\ActivitiesMatchCrmCommand;
use Jiminny\Console\Commands\Activities\AutologOldActivitiesCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForRetentionTeamsCommand;
use Jiminny\Console\Commands\Activities\DownloadMissingTrackCommand;
use Jiminny\Console\Commands\Activities\FixActivitiesOpportunity;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesTeamsCommand;
use Jiminny\Console\Commands\Activities\ReassignTranscriptCommand;
use Jiminny\Console\Commands\Activities\ReindexRecentActivitiesCommand;
use Jiminny\Console\Commands\Activities\RetryProspectSummaryCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeleteCancelledCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeletePastCommand;
use Jiminny\Console\Commands\Crm\BackfillOpportunityUserFromAccountCommand;
use Jiminny\Console\Commands\Crm\CleanDuplicateFieldDataCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ProcessMergedObjectsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\RestoreDealAssociationsCommand;
use Jiminny\Console\Commands\Crm\ProcessHubspotObjectsSyncBatches;
use Jiminny\Console\Commands\Crm\PurgeDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ListJournalWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\SetupJournalDealWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\SyncHubspotActiveDeals;
use Jiminny\Console\Commands\Crm\SyncOpportunitiesMissingFieldDataCommand;
use Jiminny\Console\Commands\DeleteOldAiCrmNotesCommand;
use Jiminny\Console\Commands\DeleteS3LeftoversCommand;
use Jiminny\Console\Commands\DiarizeViaAiParticipantIdentificationCommand;
use Jiminny\Console\Commands\Elasticsearch\DeleteEmailDocumentsCommand;
use Jiminny\Console\Commands\Elasticsearch\RemoveGhostParticipantsCommand;
use Jiminny\Console\Commands\FlushRolesPermissionsCache;
use Jiminny\Console\Commands\GenerateInternalWebhookToken;
use Jiminny\Console\Commands\IssueMcpTokenCommand;
use Jiminny\Console\Commands\HubspotJournalPollingCommand;
use Jiminny\Console\Commands\HubspotWebhookServiceCommand;
use Jiminny\Console\Commands\Livestream\StopHangingLivestreamsCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteEmailMessagesWithoutActivityCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteInboxEmailsCommand;
use Jiminny\Console\Commands\PurgeSoftDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\PurgeSyncBatchesCommand;
use Jiminny\Console\Commands\RemoveDeleteMarkersCommand;
use Jiminny\Console\Commands\RemoveExpiredNudgesCommand;
use Jiminny\Console\Commands\RemoveUnusedParticipantSpeechesCommand;
use Jiminny\Console\Commands\Reports\AutomatedReportsRetentionPolicyCommand;
use Jiminny\Console\Commands\Reports\DeleteReportCommand;
use Jiminny\Console\Commands\RestoreActivityCrmProviderIdCommand;
use Jiminny\Console\Commands\RestoreActivityTypeCommand;
use Jiminny\Console\Commands\SendNudgeExpirationWarningsCommand;
use Jiminny\Console\Commands\Slack\SyncSlackUserCommand;
use Jiminny\Console\Commands\Teams\SyncTeamUsersCommand;
use Jiminny\Console\Commands\Teams\TeamDeleteCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteDeactivatedCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteRetentionCommand;
use Jiminny\Console\Commands\Teams\TeamSettingPutCommand;
use Jiminny\Console\Commands\Teams\UpdateTeamsCommand;
use Jiminny\Console\Commands\Tracks\CleanupActivityTracksCommand;
use Jiminny\Console\Commands\Tracks\DeleteUnusedTracksCommand;
use Jiminny\Console\Commands\Tracks\RestoreTracksCommand;
use Jiminny\Console\Commands\Transcription\DeleteOldTranscriptionsCommand;
use Jiminny\Console\Commands\Transcription\UpdateOldTranscriptionModelLocalesCommand;
use Jiminny\Console\Commands\Twilio\DeleteChurnedSubAccounts;
use Jiminny\Console\Commands\Twilio\DeletePredefinedSubAccounts;
use Jiminny\Console\Commands\Twilio\ReleaseNumbersCommand;
use Jiminny\Jobs\Activity\SyncActivity;
use Jiminny\Models\Activity;
use Jiminny\Models\InboxEmail;
use Jiminny\Services\RecallAI\Commands\ImportRegionMeetingCommand;
use Jiminny\Services\RecallAI\Commands\ScheduleBotCommand;
class Kernel extends ConsoleKernel
{
use ConfirmableTrait;
/**
* The Artisan commands provided by your application.
*
* @var string[]
*/
protected $commands = [
Commands\GeckoExport\GeckoExportTranscriptCommand::class,
Commands\GeckoExport\GeckoExportTranscriptionCommand::class,
Commands\GeckoExport\GeckoExportParticipantSpeechesCommand::class,
Commands\Activities\DeleteForCoachesCommand::class,
ReindexRecentActivitiesCommand::class,
Commands\Crm\BullhornPingCommand::class,
Commands\Crm\BullhornSessionCommand::class,
Commands\Crm\BullhornSearchCommand::class,
Commands\PlaybackThemes\TopicsConsolidateCommand::class,
Commands\PlaybackThemes\PlaybackThemesCopyCommand::class,
Commands\PlaybackThemes\AssignTopicsUsedBySingleTeamCommand::class,
Commands\PlaybackThemes\PlaybackThemesMigrateToVersionsCommand::class,
Commands\Vocabulary\VocabularyCopyCommand::class,
Commands\Transcription\TranscriptionPrintRaw::class,
Commands\Migrate\JiminnyMigratePopulateActivitySourceCommand::class,
Commands\EngagementStats\JiminnyEngagementStatsExplainCommand::class,
Commands\EngagementStatsRegenerateCommand::class,
Commands\Analytics\NumberOfActivitiesPerActivityTypeCommand::class,
Commands\Elasticsearch\MappingRunCommand::class,
Commands\Elasticsearch\MappingInstallCommand::class,
Commands\Elasticsearch\UpdateEsMappingSettingsCommand::class,
Commands\Analytics\TranscriptionWordMatchCommand::class,
Commands\JiminnyCacheClearCommand::class,
Commands\Transcription\TranscriptionSearchCommand::class,
RetryStuckTranscriptionsCommand::class,
RetryFailedTranscriptionsCommand::class,
Commands\JiminnyDebugCommand::class,
Commands\RunAiCallScoringForUntypedActivitiesCommand::class,
Commands\Calendars\SyncCalendars::class,
Commands\Calendars\SyncDeletedEvents::class,
Commands\Twilio\FetchMetrics::class,
Commands\Twilio\FetchEvents::class,
Commands\Twilio\FetchSummary::class,
Commands\Twilio\SyncZoneAccess::class,
Commands\DatabaseTableCount::class,
Commands\PurgeConferences::class,
Commands\ResetElasticSearch::class,
Commands\CreateDatabaseUsers::class,
Commands\Activities\NotifyNotLogged::class,
Commands\Crm\SyncTeamMetadata::class,
Commands\Crm\SyncProfileMetadata::class,
Commands\Crm\SyncContact::class,
Commands\Crm\SyncObjects::class,
Commands\Crm\SyncHubspotObjects::class,
Commands\Crm\SyncAccount::class,
Commands\Crm\ResetGovernorLimits::class,
Commands\Crm\ManageSyncStrategyCommand::class,
Commands\ImportRecording::class,
Commands\TrackImported::class,
Commands\Twilio\RecoverTwilioTracksCommand::class,
Commands\Crm\SetupLayouts::class,
Commands\Tracks\SyncTwilioTracks::class,
Commands\Activities\StatusCount::class,
Commands\Mailboxes\TextRelay\WatchMailboxEvents::class,
Commands\Mailboxes\InboxCreate::class,
Commands\Mailboxes\InboxSync::class,
Commands\Mailboxes\BatchCreate::class,
Commands\Mailboxes\BatchProcess::class,
Commands\Mailboxes\InboxPurge::class,
Commands\Mailboxes\BatchRetryFailed::class,
Commands\Mailboxes\BatchFailStalled::class,
Commands\Mailboxes\SkipListsRefresh::class,
Commands\Mailboxes\SkipListsDump::class,
Commands\Mailboxes\TextRelay\SyncMailbox::class,
Commands\Mailboxes\DeleteInboxEmailsCommand::class,
Commands\Mailboxes\DeleteEmailMessagesCommand::class,
DeleteEmailMessagesWithoutActivityCommand::class,
Commands\Tracks\CheckIntegrity::class,
Commands\Twilio\RemoteLifecycle::class,
Commands\Twilio\SyncNumbers::class,
Commands\Crm\SetupActivityTypeForFollowUp::class,
Commands\Activities\CheckPlayable::class,
Commands\Activities\ActivityDeleteCommand::class,
Commands\Activities\Copy::class,
Commands\Activities\ActivityHardDeleteCommand::class,
Commands\Reports\Team::class,
Commands\Reports\GenerateMarketingReport::class,
Commands\Reports\AutomatedReportsCommand::class,
Commands\Reports\AutomatedReportsSendCommand::class,
Commands\MuteOrganizerChannel::class,
Commands\Tracks\DeleteTracks::class,
Commands\Tracks\RetryDownload::class,
Commands\Tracks\RetryFailedDownloads::class,
Commands\Twilio\SyncAddresses::class,
Commands\Activities\UpdateElasticSearch::class,
Commands\MakeSlackLiveCoachingChatNotesOn::class,
Commands\Activities\PreMeetingNotification::class,
ScheduleBotCommand::class,
ImportRegionMeetingCommand::class,
Commands\Activities\MonitorMeetingCountCommand::class,
Commands\Activities\MonitorMeetingStartCommand::class,
Commands\Activities\MonitorMeetingEndCommand::class,
Commands\SyncActivity::class,
Commands\PhpApm::class,
Commands\Crm\SyncOpportunity::class,
Commands\Crm\SyncLead::class,
Commands\Users\SyncLicenceDataToSalesforce::class,
Commands\Crm\UpdateOpportunitySpecifications::class,
Commands\Users\SyncToIntercom::class,
Commands\Users\SyncToUserPilot::class,
Commands\Teams\SyncToPlanhat::class,
Commands\Twilio\SetZoneAccess::class,
Commands\Users\CreateDefaultSavedSearchesCommand::class,
Commands\Crm\SendNotLogged::class,
Commands\Teams\DeactivateTeamCommand::class,
Commands\Crm\SyncFieldMetadata::class,
Commands\Postmark\SyncEmailTemplatesCommand::class,
Commands\PlaybackThemes\ImportTriggersFromTranslatedCsvCommand::class,
Commands\Activities\PreMeetingReminder::class,
Commands\Activities\CustomerActivitiesExport::class,
Commands\Users\RefreshAccessToken::class,
Commands\Calendars\SetupCalendarSubscription::class,
Commands\Activities\InviteMeetingBot::class,
Commands\Activities\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,
Commands\Crm\MigrateProvider::class,
Commands\Activities\MigrateLocationFromCalendarEventToActivities::class,
Commands\HelperTruncateCoachingTables::class,
Commands\FixCrossTenantIssues::class,
Commands\Activities\CloudCall\SetupIntegration::class,
Commands\Activities\CloudTalk\FixTimeZone::class,
Commands\Activities\Orum\SetupIntegration::class,
Commands\Activities\JustCall\SetupIntegration::class,
Commands\Activities\RingCentral\AddInboundPromptSupport::class,
Commands\Dialers\Dialpad\SubscribeToWebhooks::class,
Commands\RecalculateDealRisksCommand::class,
SendDealsUpdateCommand::class,
Commands\Activities\SetProviderCapabilitiesField::class,
Commands\Teams\InitiallySetNotificationProviderTeamsTable::class,
Commands\Crm\AddLayoutEntities::class,
Commands\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,
Commands\JiminnyTokenInfoCommand::class,
Commands\JiminnySetEncryptedTokenManagerModeCommand::class,
Commands\EncryptTokensCommand::class,
Commands\Dialers\Aircall\CheckAndRenewWebhooks::class,
Commands\Migrate\MigrateTeamRegionCommand::class,
Commands\ManageScimForTeam::class,
Commands\Dialers\SyncUsersCommand::class,
Commands\WhichWorkerIsWorkingOnWhichJob::class,
Commands\GroupSetDefaultLanguageCommand::class,
Commands\Dev\AddRateLimitCommand::class,
Commands\Dev\ImportCallsCommand::class,
Commands\DealInsights\BuildDealInsightsLayoutCommand::class,
Commands\DealInsights\DeleteAskJiminnyDealPrompts::class,
Commands\Crm\MatchCrmObjectsCommand::class,
Commands\Activities\SetupIntegration\EightByEight::class,
Commands\Calendars\RemoveCalendarEventActivitiesCommand::class,
Commands\Activities\Migrator\MigrateFromGongCommand::class,
Commands\Activities\Migrator\MigrateFromChorusCommand::class,
Commands\Activities\Migrator\MigrateFromLeexiCommand::class,
Commands\Activities\Migrator\MigrateFromAvomaCommand::class,
Commands\Activities\Migrator\MigrateFromClariCommand::class,
Commands\Activities\SetupIntegration\ConnectAndSell::class,
Commands\Activities\SetupIntegration\CloudTalk::class,
Commands\Users\CreateConferenceSlug::class,
Commands\Elasticsearch\AsyncUpdateEsEntities::class,
Commands\Elasticsearch\ResetAsyncElasticSearchCommand::class,
Commands\Playlists\PlaylistSharesUpdateCommand::class,
Commands\Crm\AutologDelayedCommand::class,
Commands\Activities\HydrateDefaultActivityTypeCommand::class,
Commands\Crm\CheckActivityLoggableCommand::class,
Commands\Activities\MonitorDialerActivitiesCommand::class,
Commands\Activities\SetupIntegration\Xant::class,
Commands\ImportUsersFromCsvFile::class,
Commands\DevPostmanCommand::class,
Commands\Playlists\FixTreeStructureCommand::class,
Commands\Zoom\ResolvePmiLinksCommand::class,
Commands\MarkBranchForEnvironmentPipelineCommand::class,
Commands\Activities\ProbeMediaSegmentsCommand::class,
Commands\Activities\SetupIntegration\AmazonConnect::class,
Commands\Playbooks\ChangePlaybookActivityFieldCommand::class,
MediaPipelineRestartCommand::class,
Commands\Dev\FixHubSpotTokens::class,
Commands\Dev\MonitorSocialAccountsState::class,
Commands\Activities\SetupIntegration\Vonage::class,
Commands\Activities\SetupIntegration\TwilioFlex::class,
Commands\Activities\SetupIntegration\TwilioFlexDirect::class,
Commands\Activities\SetupIntegration\TwilioFlexSetDialerAuthCredentialsCommand::class,
Commands\Activities\SetupIntegration\TwilioSetS3RecordingCredentialsCommand::class,
SendActionItemsCommand::class,
Commands\Users\ChangeEmail::class,
Commands\Calendars\ListUserGoogleCalendars::class,
Commands\Activities\JustCall\SyncPlaybackLinkToCrmCommand::class,
Commands\Activities\HydrateCallWithCrmDataCommand::class,
Commands\Activities\UpdateActivityElasticSearchDocumentCommand::class,
Commands\Activities\SetupIntegration\Talkdesk::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookListCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookShow::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,
Commands\Activities\SetupIntegration\TwilioVideo::class,
Commands\Crm\SetupCloseCrm::class,
Commands\Crm\SetupCopperCrm::class,
Commands\Crm\FullSyncOpportunityCommand::class,
Commands\Crm\IntegrationApp\CrmEntitiesFullSyncCommand::class,
Commands\Crm\IntegrationApp\ValidateConnectionCommand::class,
Commands\Activities\Workflow\RefreshCrmData::class,
Commands\Activities\Migrator\AnalyseGongCalls::class,
Commands\Users\AddVoiceRoleToRecorderCommand::class,
Commands\Activities\SyncMissingCallDispositions::class,
Commands\Calendars\RemoveFutureCalendarEvents::class,
FlushRolesPermissionsCache::class,
Commands\Activities\SetupIntegration\FiveNine::class,
CalendarEventDeleteCancelledCommand::class,
CalendarEventDeletePastCommand::class,
ReportActivityProcessingTimeToDatadogCommand::class,
ReportProcessingStatesToDatadogCommand::class,
ReleaseNumbersCommand::class,
BackfillOpportunityUserFromAccountCommand::class,
RemoveExpiredRoleChangeEventsCommand::class,
RemoveExpiredNudgesCommand::class,
SendNudgeExpirationWarningsCommand::class,
AutologOldActivitiesCommand::class,
RemoveUnusedParticipantSpeechesCommand::class,
DeleteActivitiesForChurnedTeamsCommand::class,
HardDeleteActivitiesForChurnedTeamsCommand::class,
TeamDeleteCommand::class,
TeamsDeleteDeactivatedCommand::class,
UpdateTeamsCommand::class,
OverrideTranscriptionLocaleCommand::class,
SyncSlackUserCommand::class,
PurgeSoftDeletedOpportunitiesCommand::class,
PurgeSyncBatchesCommand::class,
ProphetAnalyzeClosedDealsCommand::class,
DeleteChurnedSubAccounts::class,
Commands\ProphetAi\DumpContext::class,
DeletePredefinedSubAccounts::class,
DeleteActivitiesForRetentionTeamsCommand::class,
HardDeleteActivitiesTeamsCommand::class,
TeamsDeleteRetentionCommand::class,
TeamSettingPutCommand::class,
StopHangingLivestreamsCommand::class,
FixActivitiesOpportunity::class,
Commands\Activities\SetupIntegration\Salesforce\SetupSalesforceIntegrationCommand::class,
UpdateOldTranscriptionModelLocalesCommand::class,
Commands\Dev\FixMissMatchedCrmActivitiesCommand::class,
DownloadMissingTrackCommand::class,
ActivitiesMatchCrmCommand::class,
DeleteEmailDocumentsCommand::class,
DeleteOldTranscriptionsCommand::class,
DeleteS3LeftoversCommand::class,
RemoveDeleteMarkersCommand::class,
SyncTeamUsersCommand::class,
ReassignTranscriptCommand::class,
DiarizeViaAiParticipantIdentificationCommand::class,
RestoreActivityTypeCommand::class,
DeleteOldAiCrmNotesCommand::class,
DeleteReportCommand::class,
AutomatedReportsRetentionPolicyCommand::class,
SyncHubspotActiveDeals::class,
GenerateInternalWebhookToken::class,
IssueMcpTokenCommand::class,
RestoreActivityCrmProviderIdCommand::class,
CleanupActivityTracksCommand::class,
DeleteUnusedTracksCommand::class,
RestoreTracksCommand::class,
HubspotWebhookServiceCommand::class,
ProcessMergedObjectsCommand::class,
HubspotJournalPollingCommand::class,
SetupJournalDealWebhookSubscriptionsCommand::class,
ListJournalWebhookSubscriptionsCommand::class,
RemoveGhostParticipantsCommand::class,
AutodetectAiActivityTypeCommand::class,
Commands\Crm\LogActivitiesCommand::class,
Commands\Crm\MatchOpportunityActivitiesCommand::class,
PurgeDeletedOpportunitiesCommand::class,
CleanDuplicateFieldDataCommand::class,
RetryProspectSummaryCommand::class,
ProcessHubspotObjectsSyncBatches::class,
SyncOpportunitiesMissingFieldDataCommand::class,
RestoreDealAssociationsCommand::class,
Commands\Crm\TestPipedriveOfficialSdkCommand::class,
];
private Schedule $schedule;
private string $output;
protected function schedule(Schedule $schedule): void
{
$this->schedule = $schedule;
$this->output = config('jiminny.scheduler_log');
$schedule->useCache('redis');
$currentMinute = (int) date('i');
$currentDay = (int) date('w');
$this->scheduleEveryMinute();
$this->scheduleEveryTwoMinutes();
$this->scheduleEveryFiveMinutes();
$this->scheduleEveryTenMinutes();
$this->scheduleEveryFifteenMinutes();
$this->scheduleEveryThirtyMinutes();
$this->scheduleHourly();
$this->scheduleDaily();
$this->scheduleWeekly($currentDay);
$this->scheduleSpecificTimes();
$this->scheduleDynamic($currentMinute);
}
protected function scheduleEveryMinute(): void
{
$this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();
$this->scheduleCommand('dialers:monitor-activities')->everyMinute();
$this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();
$this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();
$this->schedule->command('mailbox:batch:process', ['--max-batches=15'])
->everyMinute()
->sendOutputTo($this->output);
}
protected function scheduleEveryTwoMinutes(): void
{
$this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();
}
protected function scheduleEveryFiveMinutes(): void
{
$this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();
// Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)
$this->scheduleCommand('crm:sync-hubspot-objects', [], 4)
->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');
$this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();
$this->schedule->command('mailbox:batch:create')
->cron('2-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output);
$this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])
->cron('3-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output)
->runInBackground();
$this->schedule->command('hubspot:journal-poll', ['--start'])
->everyFiveMinutes()
->sendOutputTo($this->output)
->runInBackground();
}
protected function scheduleEveryTenMinutes(): void
{
$this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();
$this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('crm:reset-governor')->everyTenMinutes();
}
protected function scheduleEveryFifteenMinutes(): void
{
$this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();
$this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');
$this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
],
])->everyFifteenMinutes();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->cron('7,22,37,52 * * * *');
}
protected function scheduleEveryThirtyMinutes(): void
{
$this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');
$this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();
$this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)
->between('02:58', '05:29')
->everyThirtyMinutes()
->runInBackground();
$this->scheduleActivitiesHardDelete();
}
protected function scheduleHourly(): void
{
$this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();
$this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');
$this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');
$this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');
$this->scheduleCommand('automated-reports:send')->hourly();
$this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);
$this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);
}
protected function scheduleDaily(): void
{
$this->scheduleCommand('teams:sync-planhat')->daily();
$this->scheduleCommand('twilio:sync-addresses')->daily();
$this->scheduleCommand('twilio:sync-zone-access')->daily();
$this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();
$this->scheduleCommand('users:sync-licence-data')->daily();
$this->scheduleCommand('users:sync-intercom-data')->daily();
$this->scheduleCommand('nudges:send-expiration-warnings')->daily();
$this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();
}
protected function scheduleWeekly(int $currentDay): void
{
if ($currentDay === 0) {
$this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);
}
if ($currentDay === 6) {
$this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_AMAZON_CONNECT,
'--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->saturdays()->at('01:00')->runInBackground();
$this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)
->saturdays()->at('01:07')->runInBackground();
$this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)
->saturdays()->at('05:08')->runInBackground();
$this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')
->weeklyOn(6, '6:00');
$this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')
->weeklyOn(6, '7:00');
}
}
protected function scheduleSpecificTimes(): void
{
$this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_DISCARDED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:20')->runInBackground();
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_PROCESSED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:30')->runInBackground();
$this->scheduleCommand('automated-reports')->dailyAt('01:00');
$this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');
$this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');
$this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');
$this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');
$this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');
$this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('03:05');
$this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');
$this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');
$this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');
$this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');
$this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');
if (! $this->app->environment('production')) {
$this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)
->dailyAt('04:02')->runInBackground();
}
$this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
],
])->dailyAt('05:05');
if (! $this->app->environment('qa')) {
$this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');
}
$this->scheduleCommand('activity:sync-dispositions', [
Activity::PROVIDER_HUBSPOT,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('07:05');
}
protected function scheduleDynamic(int $currentMinute): void
{
$this->scheduleHourlyFallbackActivitySyncs($currentMinute);
$this->scheduleBullhornHeartbeat($currentMinute);
}
private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void
{
if ($offsetMinute === 0) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);
} elseif ($offsetMinute === 1) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);
} elseif ($offsetMinute === 2) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);
}
}
private function scheduleBullhornHeartbeat(int $currentMinute): void
{
$bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);
if ($bhHeartbeatInterval > 0) {
$minutes = max((int) floor($bhHeartbeatInterval / 60), 1);
if ($currentMinute % $minutes === 0) {
$bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);
if ($minutes > 30) {
$bhEvent->hourly();
} else {
$bhEvent->cron(sprintf('*/%d * * * *', $minutes));
}
}
}
}
private function scheduleActivitiesHardDelete(): void
{
if (config(key: 'jiminny.deploy_region') === 'eu') {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 1000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
} elseif ($this->app->environment('production')) {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 2000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
}
}
private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void
{
$this->scheduleCommand('activity:sync', [
$provider,
'--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->hourlyAt($offsetMinute);
}
/**
* Register the Closure based commands for the application.
*/
protected function commands(): void
{
require_once base_path('routes/console.php');
}
private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event
{
return $this->schedule
->command($name, $options)
->withoutOverlapping($expiresAt)
->onOneServer()
->sendOutputTo($this->output)
;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.05618351,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.3380984,"top":0.29848364,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.3480718,"top":0.29848364,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.35771278,"top":0.29688746,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.3650266,"top":0.29688746,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\DTO\\Invitation;\n\nuse Jiminny\\DTO\\UserEmail;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateInvitationRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateTeamRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\EditTeamRequest;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Invitation;\nuse Jiminny\\Models\\Role;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\n\nclass UserInvitationDTO\n{\n use UserEmail;\n\n public string $email;\n public ?string $secondaryEmail;\n public ?int $groupId;\n public int $teamId;\n public bool $crmRequired;\n public array $roleIds;\n public bool $isOwner;\n public ?User $currentUser = null;\n\n /**\n * @param array{\n * email: string,\n * secondaryEmail: string|null,\n * groupId: int|null,\n * teamId: int|string,\n * crmRequired: bool,\n * roleIds: int[],\n * isOwner: bool,\n * user?: User\n * } $attributes\n */\n private function __construct(array $attributes)\n {\n $this->email = mb_strtolower($attributes['email']);\n $this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);\n $this->groupId = $attributes['groupId'];\n $this->teamId = (int) $attributes['teamId'];\n $this->crmRequired = (bool) $attributes['crmRequired'];\n $this->roleIds = $attributes['roleIds'];\n $this->isOwner = $attributes['isOwner'];\n $this->currentUser = $attributes['user'] ?? null;\n }\n\n public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self\n {\n $roleIds = Role::whereIn('name', [\n User::ROLE_ADMIN,\n User::ROLE_RECORDER,\n ])->pluck('id')->toArray();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => $request->getOwnerEmail(),\n 'secondaryEmail' => null,\n 'groupId' => null,\n 'teamId' => $team->getId(),\n 'crmRequired' => true,\n 'roleIds' => $roleIds,\n 'user' => $currentUser,\n 'isOwner' => true,\n ]);\n }\n\n public static function fromRequest(CreateInvitationRequest $request): self\n {\n $data = $request->validated();\n\n $groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;\n $teamId = Team::uuid($data['team_id'])->getId();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => mb_strtolower($data['email']),\n 'secondaryEmail' => $data['secondary_email'] ?? null,\n 'groupId' => $groupId,\n 'teamId' => $teamId,\n 'crmRequired' => $data['crm_required'],\n 'roleIds' => $data['roles'],\n 'user' => $currentUser,\n 'isOwner' => false,\n ]);\n }\n\n public static function fromInvitation(Invitation $invitation, User $currentUser): self\n {\n $roles = $invitation->roles()->get();\n $isOwner = $invitation->isOwner();\n\n return new self([\n 'email' => $invitation->email,\n 'secondaryEmail' => $invitation->getSecondaryEmail(),\n 'groupId' => $invitation->group_id,\n 'teamId' => $invitation->team_id,\n 'crmRequired' => $invitation->crm_required,\n 'roleIds' => $roles->pluck('id')->toArray(),\n 'user' => $currentUser,\n 'isOwner' => $isOwner,\n ]);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\DTO\\Invitation;\n\nuse Jiminny\\DTO\\UserEmail;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateInvitationRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateTeamRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\EditTeamRequest;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Invitation;\nuse Jiminny\\Models\\Role;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\n\nclass UserInvitationDTO\n{\n use UserEmail;\n\n public string $email;\n public ?string $secondaryEmail;\n public ?int $groupId;\n public int $teamId;\n public bool $crmRequired;\n public array $roleIds;\n public bool $isOwner;\n public ?User $currentUser = null;\n\n /**\n * @param array{\n * email: string,\n * secondaryEmail: string|null,\n * groupId: int|null,\n * teamId: int|string,\n * crmRequired: bool,\n * roleIds: int[],\n * isOwner: bool,\n * user?: User\n * } $attributes\n */\n private function __construct(array $attributes)\n {\n $this->email = mb_strtolower($attributes['email']);\n $this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);\n $this->groupId = $attributes['groupId'];\n $this->teamId = (int) $attributes['teamId'];\n $this->crmRequired = (bool) $attributes['crmRequired'];\n $this->roleIds = $attributes['roleIds'];\n $this->isOwner = $attributes['isOwner'];\n $this->currentUser = $attributes['user'] ?? null;\n }\n\n public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self\n {\n $roleIds = Role::whereIn('name', [\n User::ROLE_ADMIN,\n User::ROLE_RECORDER,\n ])->pluck('id')->toArray();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => $request->getOwnerEmail(),\n 'secondaryEmail' => null,\n 'groupId' => null,\n 'teamId' => $team->getId(),\n 'crmRequired' => true,\n 'roleIds' => $roleIds,\n 'user' => $currentUser,\n 'isOwner' => true,\n ]);\n }\n\n public static function fromRequest(CreateInvitationRequest $request): self\n {\n $data = $request->validated();\n\n $groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;\n $teamId = Team::uuid($data['team_id'])->getId();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => mb_strtolower($data['email']),\n 'secondaryEmail' => $data['secondary_email'] ?? null,\n 'groupId' => $groupId,\n 'teamId' => $teamId,\n 'crmRequired' => $data['crm_required'],\n 'roleIds' => $data['roles'],\n 'user' => $currentUser,\n 'isOwner' => false,\n ]);\n }\n\n public static function fromInvitation(Invitation $invitation, User $currentUser): self\n {\n $roles = $invitation->roles()->get();\n $isOwner = $invitation->isOwner();\n\n return new self([\n 'email' => $invitation->email,\n 'secondaryEmail' => $invitation->getSecondaryEmail(),\n 'groupId' => $invitation->group_id,\n 'teamId' => $invitation->team_id,\n 'crmRequired' => $invitation->crm_required,\n 'roleIds' => $roles->pluck('id')->toArray(),\n 'user' => $currentUser,\n 'isOwner' => $isOwner,\n ]);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.007978723,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.00930851,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.006981383,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Console;\n\nuse Illuminate\\Console\\ConfirmableTrait;\nuse Illuminate\\Console\\Scheduling\\Event;\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as ConsoleKernel;\nuse Jiminny\\Component\\Acl\\RemoveExpiredRoleChangeEventsCommand;\nuse Jiminny\\Component\\ActionItems\\Commands\\SendActionItemsCommand;\nuse Jiminny\\Component\\AiActivityType\\Commands\\AutodetectAiActivityTypeCommand;\nuse Jiminny\\Component\\AskJiminnyAi\\Commands\\ProphetAnalyzeClosedDealsCommand;\nuse Jiminny\\Component\\Cache\\Constants;\nuse Jiminny\\Component\\DealInsights\\Commands\\SendDealsUpdateCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\MediaPipelineRestartCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportActivityProcessingTimeToDatadogCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportProcessingStatesToDatadogCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\OverrideTranscriptionLocaleCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryFailedTranscriptionsCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryStuckTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ActivitiesMatchCrmCommand;\nuse Jiminny\\Console\\Commands\\Activities\\AutologOldActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForRetentionTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DownloadMissingTrackCommand;\nuse Jiminny\\Console\\Commands\\Activities\\FixActivitiesOpportunity;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReassignTranscriptCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReindexRecentActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\RetryProspectSummaryCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeleteCancelledCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeletePastCommand;\nuse Jiminny\\Console\\Commands\\Crm\\BackfillOpportunityUserFromAccountCommand;\nuse Jiminny\\Console\\Commands\\Crm\\CleanDuplicateFieldDataCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ProcessMergedObjectsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\RestoreDealAssociationsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\ProcessHubspotObjectsSyncBatches;\nuse Jiminny\\Console\\Commands\\Crm\\PurgeDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ListJournalWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\SetupJournalDealWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\SyncHubspotActiveDeals;\nuse Jiminny\\Console\\Commands\\Crm\\SyncOpportunitiesMissingFieldDataCommand;\nuse Jiminny\\Console\\Commands\\DeleteOldAiCrmNotesCommand;\nuse Jiminny\\Console\\Commands\\DeleteS3LeftoversCommand;\nuse Jiminny\\Console\\Commands\\DiarizeViaAiParticipantIdentificationCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\DeleteEmailDocumentsCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\RemoveGhostParticipantsCommand;\nuse Jiminny\\Console\\Commands\\FlushRolesPermissionsCache;\nuse Jiminny\\Console\\Commands\\GenerateInternalWebhookToken;\nuse Jiminny\\Console\\Commands\\IssueMcpTokenCommand;\nuse Jiminny\\Console\\Commands\\HubspotJournalPollingCommand;\nuse Jiminny\\Console\\Commands\\HubspotWebhookServiceCommand;\nuse Jiminny\\Console\\Commands\\Livestream\\StopHangingLivestreamsCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteEmailMessagesWithoutActivityCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteInboxEmailsCommand;\nuse Jiminny\\Console\\Commands\\PurgeSoftDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\PurgeSyncBatchesCommand;\nuse Jiminny\\Console\\Commands\\RemoveDeleteMarkersCommand;\nuse Jiminny\\Console\\Commands\\RemoveExpiredNudgesCommand;\nuse Jiminny\\Console\\Commands\\RemoveUnusedParticipantSpeechesCommand;\nuse Jiminny\\Console\\Commands\\Reports\\AutomatedReportsRetentionPolicyCommand;\nuse Jiminny\\Console\\Commands\\Reports\\DeleteReportCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityCrmProviderIdCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityTypeCommand;\nuse Jiminny\\Console\\Commands\\SendNudgeExpirationWarningsCommand;\nuse Jiminny\\Console\\Commands\\Slack\\SyncSlackUserCommand;\nuse Jiminny\\Console\\Commands\\Teams\\SyncTeamUsersCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamDeleteCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteDeactivatedCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteRetentionCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamSettingPutCommand;\nuse Jiminny\\Console\\Commands\\Teams\\UpdateTeamsCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\CleanupActivityTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\DeleteUnusedTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\RestoreTracksCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\DeleteOldTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\UpdateOldTranscriptionModelLocalesCommand;\nuse Jiminny\\Console\\Commands\\Twilio\\DeleteChurnedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\DeletePredefinedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\ReleaseNumbersCommand;\nuse Jiminny\\Jobs\\Activity\\SyncActivity;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\InboxEmail;\nuse Jiminny\\Services\\RecallAI\\Commands\\ImportRegionMeetingCommand;\nuse Jiminny\\Services\\RecallAI\\Commands\\ScheduleBotCommand;\n\nclass Kernel extends ConsoleKernel\n{\n use ConfirmableTrait;\n\n /**\n * The Artisan commands provided by your application.\n *\n * @var string[]\n */\n protected $commands = [\n Commands\\GeckoExport\\GeckoExportTranscriptCommand::class,\n Commands\\GeckoExport\\GeckoExportTranscriptionCommand::class,\n Commands\\GeckoExport\\GeckoExportParticipantSpeechesCommand::class,\n Commands\\Activities\\DeleteForCoachesCommand::class,\n ReindexRecentActivitiesCommand::class,\n Commands\\Crm\\BullhornPingCommand::class,\n Commands\\Crm\\BullhornSessionCommand::class,\n Commands\\Crm\\BullhornSearchCommand::class,\n Commands\\PlaybackThemes\\TopicsConsolidateCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesCopyCommand::class,\n Commands\\PlaybackThemes\\AssignTopicsUsedBySingleTeamCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesMigrateToVersionsCommand::class,\n Commands\\Vocabulary\\VocabularyCopyCommand::class,\n Commands\\Transcription\\TranscriptionPrintRaw::class,\n Commands\\Migrate\\JiminnyMigratePopulateActivitySourceCommand::class,\n Commands\\EngagementStats\\JiminnyEngagementStatsExplainCommand::class,\n Commands\\EngagementStatsRegenerateCommand::class,\n Commands\\Analytics\\NumberOfActivitiesPerActivityTypeCommand::class,\n Commands\\Elasticsearch\\MappingRunCommand::class,\n Commands\\Elasticsearch\\MappingInstallCommand::class,\n Commands\\Elasticsearch\\UpdateEsMappingSettingsCommand::class,\n Commands\\Analytics\\TranscriptionWordMatchCommand::class,\n Commands\\JiminnyCacheClearCommand::class,\n Commands\\Transcription\\TranscriptionSearchCommand::class,\n RetryStuckTranscriptionsCommand::class,\n RetryFailedTranscriptionsCommand::class,\n Commands\\JiminnyDebugCommand::class,\n Commands\\RunAiCallScoringForUntypedActivitiesCommand::class,\n Commands\\Calendars\\SyncCalendars::class,\n Commands\\Calendars\\SyncDeletedEvents::class,\n Commands\\Twilio\\FetchMetrics::class,\n Commands\\Twilio\\FetchEvents::class,\n Commands\\Twilio\\FetchSummary::class,\n Commands\\Twilio\\SyncZoneAccess::class,\n Commands\\DatabaseTableCount::class,\n Commands\\PurgeConferences::class,\n Commands\\ResetElasticSearch::class,\n Commands\\CreateDatabaseUsers::class,\n Commands\\Activities\\NotifyNotLogged::class,\n Commands\\Crm\\SyncTeamMetadata::class,\n Commands\\Crm\\SyncProfileMetadata::class,\n Commands\\Crm\\SyncContact::class,\n Commands\\Crm\\SyncObjects::class,\n Commands\\Crm\\SyncHubspotObjects::class,\n Commands\\Crm\\SyncAccount::class,\n Commands\\Crm\\ResetGovernorLimits::class,\n Commands\\Crm\\ManageSyncStrategyCommand::class,\n Commands\\ImportRecording::class,\n Commands\\TrackImported::class,\n Commands\\Twilio\\RecoverTwilioTracksCommand::class,\n Commands\\Crm\\SetupLayouts::class,\n Commands\\Tracks\\SyncTwilioTracks::class,\n Commands\\Activities\\StatusCount::class,\n\n Commands\\Mailboxes\\TextRelay\\WatchMailboxEvents::class,\n Commands\\Mailboxes\\InboxCreate::class,\n Commands\\Mailboxes\\InboxSync::class,\n Commands\\Mailboxes\\BatchCreate::class,\n Commands\\Mailboxes\\BatchProcess::class,\n Commands\\Mailboxes\\InboxPurge::class,\n Commands\\Mailboxes\\BatchRetryFailed::class,\n Commands\\Mailboxes\\BatchFailStalled::class,\n Commands\\Mailboxes\\SkipListsRefresh::class,\n Commands\\Mailboxes\\SkipListsDump::class,\n Commands\\Mailboxes\\TextRelay\\SyncMailbox::class,\n Commands\\Mailboxes\\DeleteInboxEmailsCommand::class,\n Commands\\Mailboxes\\DeleteEmailMessagesCommand::class,\n DeleteEmailMessagesWithoutActivityCommand::class,\n\n Commands\\Tracks\\CheckIntegrity::class,\n Commands\\Twilio\\RemoteLifecycle::class,\n Commands\\Twilio\\SyncNumbers::class,\n Commands\\Crm\\SetupActivityTypeForFollowUp::class,\n Commands\\Activities\\CheckPlayable::class,\n Commands\\Activities\\ActivityDeleteCommand::class,\n Commands\\Activities\\Copy::class,\n Commands\\Activities\\ActivityHardDeleteCommand::class,\n Commands\\Reports\\Team::class,\n Commands\\Reports\\GenerateMarketingReport::class,\n Commands\\Reports\\AutomatedReportsCommand::class,\n Commands\\Reports\\AutomatedReportsSendCommand::class,\n Commands\\MuteOrganizerChannel::class,\n Commands\\Tracks\\DeleteTracks::class,\n Commands\\Tracks\\RetryDownload::class,\n Commands\\Tracks\\RetryFailedDownloads::class,\n Commands\\Twilio\\SyncAddresses::class,\n Commands\\Activities\\UpdateElasticSearch::class,\n Commands\\MakeSlackLiveCoachingChatNotesOn::class,\n Commands\\Activities\\PreMeetingNotification::class,\n ScheduleBotCommand::class,\n ImportRegionMeetingCommand::class,\n Commands\\Activities\\MonitorMeetingCountCommand::class,\n Commands\\Activities\\MonitorMeetingStartCommand::class,\n Commands\\Activities\\MonitorMeetingEndCommand::class,\n Commands\\SyncActivity::class,\n Commands\\PhpApm::class,\n Commands\\Crm\\SyncOpportunity::class,\n Commands\\Crm\\SyncLead::class,\n Commands\\Users\\SyncLicenceDataToSalesforce::class,\n Commands\\Crm\\UpdateOpportunitySpecifications::class,\n Commands\\Users\\SyncToIntercom::class,\n Commands\\Users\\SyncToUserPilot::class,\n Commands\\Teams\\SyncToPlanhat::class,\n Commands\\Twilio\\SetZoneAccess::class,\n Commands\\Users\\CreateDefaultSavedSearchesCommand::class,\n Commands\\Crm\\SendNotLogged::class,\n Commands\\Teams\\DeactivateTeamCommand::class,\n Commands\\Crm\\SyncFieldMetadata::class,\n Commands\\Postmark\\SyncEmailTemplatesCommand::class,\n Commands\\PlaybackThemes\\ImportTriggersFromTranslatedCsvCommand::class,\n Commands\\Activities\\PreMeetingReminder::class,\n Commands\\Activities\\CustomerActivitiesExport::class,\n Commands\\Users\\RefreshAccessToken::class,\n Commands\\Calendars\\SetupCalendarSubscription::class,\n Commands\\Activities\\InviteMeetingBot::class,\n Commands\\Activities\\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,\n Commands\\Crm\\MigrateProvider::class,\n Commands\\Activities\\MigrateLocationFromCalendarEventToActivities::class,\n Commands\\HelperTruncateCoachingTables::class,\n Commands\\FixCrossTenantIssues::class,\n Commands\\Activities\\CloudCall\\SetupIntegration::class,\n Commands\\Activities\\CloudTalk\\FixTimeZone::class,\n Commands\\Activities\\Orum\\SetupIntegration::class,\n Commands\\Activities\\JustCall\\SetupIntegration::class,\n Commands\\Activities\\RingCentral\\AddInboundPromptSupport::class,\n Commands\\Dialers\\Dialpad\\SubscribeToWebhooks::class,\n Commands\\RecalculateDealRisksCommand::class,\n SendDealsUpdateCommand::class,\n Commands\\Activities\\SetProviderCapabilitiesField::class,\n Commands\\Teams\\InitiallySetNotificationProviderTeamsTable::class,\n Commands\\Crm\\AddLayoutEntities::class,\n Commands\\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,\n Commands\\JiminnyTokenInfoCommand::class,\n Commands\\JiminnySetEncryptedTokenManagerModeCommand::class,\n Commands\\EncryptTokensCommand::class,\n Commands\\Dialers\\Aircall\\CheckAndRenewWebhooks::class,\n Commands\\Migrate\\MigrateTeamRegionCommand::class,\n Commands\\ManageScimForTeam::class,\n Commands\\Dialers\\SyncUsersCommand::class,\n Commands\\WhichWorkerIsWorkingOnWhichJob::class,\n Commands\\GroupSetDefaultLanguageCommand::class,\n Commands\\Dev\\AddRateLimitCommand::class,\n Commands\\Dev\\ImportCallsCommand::class,\n Commands\\DealInsights\\BuildDealInsightsLayoutCommand::class,\n Commands\\DealInsights\\DeleteAskJiminnyDealPrompts::class,\n Commands\\Crm\\MatchCrmObjectsCommand::class,\n Commands\\Activities\\SetupIntegration\\EightByEight::class,\n Commands\\Calendars\\RemoveCalendarEventActivitiesCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromGongCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromChorusCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromLeexiCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromAvomaCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromClariCommand::class,\n Commands\\Activities\\SetupIntegration\\ConnectAndSell::class,\n Commands\\Activities\\SetupIntegration\\CloudTalk::class,\n Commands\\Users\\CreateConferenceSlug::class,\n Commands\\Elasticsearch\\AsyncUpdateEsEntities::class,\n Commands\\Elasticsearch\\ResetAsyncElasticSearchCommand::class,\n Commands\\Playlists\\PlaylistSharesUpdateCommand::class,\n Commands\\Crm\\AutologDelayedCommand::class,\n Commands\\Activities\\HydrateDefaultActivityTypeCommand::class,\n Commands\\Crm\\CheckActivityLoggableCommand::class,\n Commands\\Activities\\MonitorDialerActivitiesCommand::class,\n Commands\\Activities\\SetupIntegration\\Xant::class,\n Commands\\ImportUsersFromCsvFile::class,\n Commands\\DevPostmanCommand::class,\n Commands\\Playlists\\FixTreeStructureCommand::class,\n Commands\\Zoom\\ResolvePmiLinksCommand::class,\n Commands\\MarkBranchForEnvironmentPipelineCommand::class,\n Commands\\Activities\\ProbeMediaSegmentsCommand::class,\n Commands\\Activities\\SetupIntegration\\AmazonConnect::class,\n Commands\\Playbooks\\ChangePlaybookActivityFieldCommand::class,\n MediaPipelineRestartCommand::class,\n Commands\\Dev\\FixHubSpotTokens::class,\n Commands\\Dev\\MonitorSocialAccountsState::class,\n Commands\\Activities\\SetupIntegration\\Vonage::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlex::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexDirect::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexSetDialerAuthCredentialsCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioSetS3RecordingCredentialsCommand::class,\n SendActionItemsCommand::class,\n Commands\\Users\\ChangeEmail::class,\n Commands\\Calendars\\ListUserGoogleCalendars::class,\n Commands\\Activities\\JustCall\\SyncPlaybackLinkToCrmCommand::class,\n Commands\\Activities\\HydrateCallWithCrmDataCommand::class,\n Commands\\Activities\\UpdateActivityElasticSearchDocumentCommand::class,\n Commands\\Activities\\SetupIntegration\\Talkdesk::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookListCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookShow::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioVideo::class,\n Commands\\Crm\\SetupCloseCrm::class,\n Commands\\Crm\\SetupCopperCrm::class,\n Commands\\Crm\\FullSyncOpportunityCommand::class,\n Commands\\Crm\\IntegrationApp\\CrmEntitiesFullSyncCommand::class,\n Commands\\Crm\\IntegrationApp\\ValidateConnectionCommand::class,\n Commands\\Activities\\Workflow\\RefreshCrmData::class,\n Commands\\Activities\\Migrator\\AnalyseGongCalls::class,\n Commands\\Users\\AddVoiceRoleToRecorderCommand::class,\n Commands\\Activities\\SyncMissingCallDispositions::class,\n Commands\\Calendars\\RemoveFutureCalendarEvents::class,\n FlushRolesPermissionsCache::class,\n Commands\\Activities\\SetupIntegration\\FiveNine::class,\n CalendarEventDeleteCancelledCommand::class,\n CalendarEventDeletePastCommand::class,\n ReportActivityProcessingTimeToDatadogCommand::class,\n ReportProcessingStatesToDatadogCommand::class,\n ReleaseNumbersCommand::class,\n BackfillOpportunityUserFromAccountCommand::class,\n RemoveExpiredRoleChangeEventsCommand::class,\n RemoveExpiredNudgesCommand::class,\n SendNudgeExpirationWarningsCommand::class,\n AutologOldActivitiesCommand::class,\n RemoveUnusedParticipantSpeechesCommand::class,\n DeleteActivitiesForChurnedTeamsCommand::class,\n HardDeleteActivitiesForChurnedTeamsCommand::class,\n TeamDeleteCommand::class,\n TeamsDeleteDeactivatedCommand::class,\n UpdateTeamsCommand::class,\n OverrideTranscriptionLocaleCommand::class,\n SyncSlackUserCommand::class,\n PurgeSoftDeletedOpportunitiesCommand::class,\n PurgeSyncBatchesCommand::class,\n ProphetAnalyzeClosedDealsCommand::class,\n DeleteChurnedSubAccounts::class,\n Commands\\ProphetAi\\DumpContext::class,\n DeletePredefinedSubAccounts::class,\n DeleteActivitiesForRetentionTeamsCommand::class,\n HardDeleteActivitiesTeamsCommand::class,\n TeamsDeleteRetentionCommand::class,\n TeamSettingPutCommand::class,\n StopHangingLivestreamsCommand::class,\n FixActivitiesOpportunity::class,\n Commands\\Activities\\SetupIntegration\\Salesforce\\SetupSalesforceIntegrationCommand::class,\n UpdateOldTranscriptionModelLocalesCommand::class,\n Commands\\Dev\\FixMissMatchedCrmActivitiesCommand::class,\n DownloadMissingTrackCommand::class,\n ActivitiesMatchCrmCommand::class,\n DeleteEmailDocumentsCommand::class,\n DeleteOldTranscriptionsCommand::class,\n DeleteS3LeftoversCommand::class,\n RemoveDeleteMarkersCommand::class,\n SyncTeamUsersCommand::class,\n ReassignTranscriptCommand::class,\n DiarizeViaAiParticipantIdentificationCommand::class,\n RestoreActivityTypeCommand::class,\n DeleteOldAiCrmNotesCommand::class,\n DeleteReportCommand::class,\n AutomatedReportsRetentionPolicyCommand::class,\n SyncHubspotActiveDeals::class,\n GenerateInternalWebhookToken::class,\n IssueMcpTokenCommand::class,\n RestoreActivityCrmProviderIdCommand::class,\n CleanupActivityTracksCommand::class,\n DeleteUnusedTracksCommand::class,\n RestoreTracksCommand::class,\n HubspotWebhookServiceCommand::class,\n ProcessMergedObjectsCommand::class,\n HubspotJournalPollingCommand::class,\n SetupJournalDealWebhookSubscriptionsCommand::class,\n ListJournalWebhookSubscriptionsCommand::class,\n RemoveGhostParticipantsCommand::class,\n AutodetectAiActivityTypeCommand::class,\n Commands\\Crm\\LogActivitiesCommand::class,\n Commands\\Crm\\MatchOpportunityActivitiesCommand::class,\n PurgeDeletedOpportunitiesCommand::class,\n CleanDuplicateFieldDataCommand::class,\n RetryProspectSummaryCommand::class,\n ProcessHubspotObjectsSyncBatches::class,\n SyncOpportunitiesMissingFieldDataCommand::class,\n RestoreDealAssociationsCommand::class,\n Commands\\Crm\\TestPipedriveOfficialSdkCommand::class,\n ];\n\n private Schedule $schedule;\n private string $output;\n\n protected function schedule(Schedule $schedule): void\n {\n $this->schedule = $schedule;\n $this->output = config('jiminny.scheduler_log');\n\n $schedule->useCache('redis');\n\n $currentMinute = (int) date('i');\n $currentDay = (int) date('w');\n\n $this->scheduleEveryMinute();\n $this->scheduleEveryTwoMinutes();\n $this->scheduleEveryFiveMinutes();\n $this->scheduleEveryTenMinutes();\n $this->scheduleEveryFifteenMinutes();\n $this->scheduleEveryThirtyMinutes();\n $this->scheduleHourly();\n $this->scheduleDaily();\n $this->scheduleWeekly($currentDay);\n $this->scheduleSpecificTimes();\n $this->scheduleDynamic($currentMinute);\n }\n\n protected function scheduleEveryMinute(): void\n {\n $this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();\n $this->scheduleCommand('dialers:monitor-activities')->everyMinute();\n $this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();\n $this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();\n\n $this->schedule->command('mailbox:batch:process', ['--max-batches=15'])\n ->everyMinute()\n ->sendOutputTo($this->output);\n }\n\n protected function scheduleEveryTwoMinutes(): void\n {\n $this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();\n }\n\n protected function scheduleEveryFiveMinutes(): void\n {\n $this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();\n // Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)\n $this->scheduleCommand('crm:sync-hubspot-objects', [], 4)\n ->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');\n $this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();\n\n $this->schedule->command('mailbox:batch:create')\n ->cron('2-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output);\n\n $this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])\n ->cron('3-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ->runInBackground();\n\n $this->schedule->command('hubspot:journal-poll', ['--start'])\n ->everyFiveMinutes()\n ->sendOutputTo($this->output)\n ->runInBackground();\n }\n\n protected function scheduleEveryTenMinutes(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();\n $this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('crm:reset-governor')->everyTenMinutes();\n }\n\n protected function scheduleEveryFifteenMinutes(): void\n {\n $this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();\n $this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');\n $this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n ],\n ])->everyFifteenMinutes();\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->cron('7,22,37,52 * * * *');\n }\n\n protected function scheduleEveryThirtyMinutes(): void\n {\n $this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');\n $this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();\n\n $this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)\n ->between('02:58', '05:29')\n ->everyThirtyMinutes()\n ->runInBackground();\n\n $this->scheduleActivitiesHardDelete();\n }\n\n protected function scheduleHourly(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();\n $this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');\n $this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');\n $this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');\n $this->scheduleCommand('automated-reports:send')->hourly();\n $this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);\n $this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);\n }\n\n protected function scheduleDaily(): void\n {\n $this->scheduleCommand('teams:sync-planhat')->daily();\n $this->scheduleCommand('twilio:sync-addresses')->daily();\n $this->scheduleCommand('twilio:sync-zone-access')->daily();\n $this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();\n $this->scheduleCommand('users:sync-licence-data')->daily();\n $this->scheduleCommand('users:sync-intercom-data')->daily();\n $this->scheduleCommand('nudges:send-expiration-warnings')->daily();\n $this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();\n }\n\n protected function scheduleWeekly(int $currentDay): void\n {\n if ($currentDay === 0) {\n $this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);\n }\n\n if ($currentDay === 6) {\n $this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_AMAZON_CONNECT,\n '--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->saturdays()->at('01:00')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)\n ->saturdays()->at('01:07')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)\n ->saturdays()->at('05:08')->runInBackground();\n $this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')\n ->weeklyOn(6, '6:00');\n $this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')\n ->weeklyOn(6, '7:00');\n }\n }\n\n protected function scheduleSpecificTimes(): void\n {\n $this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_DISCARDED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:20')->runInBackground();\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_PROCESSED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:30')->runInBackground();\n\n $this->scheduleCommand('automated-reports')->dailyAt('01:00');\n $this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');\n $this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');\n $this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');\n $this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');\n $this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');\n $this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('03:05');\n\n\n $this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');\n $this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');\n $this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');\n $this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');\n $this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');\n\n if (! $this->app->environment('production')) {\n $this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)\n ->dailyAt('04:02')->runInBackground();\n }\n\n $this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n ],\n ])->dailyAt('05:05');\n\n if (! $this->app->environment('qa')) {\n $this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');\n }\n\n $this->scheduleCommand('activity:sync-dispositions', [\n Activity::PROVIDER_HUBSPOT,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('07:05');\n }\n\n protected function scheduleDynamic(int $currentMinute): void\n {\n $this->scheduleHourlyFallbackActivitySyncs($currentMinute);\n $this->scheduleBullhornHeartbeat($currentMinute);\n }\n\n private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void\n {\n if ($offsetMinute === 0) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);\n } elseif ($offsetMinute === 1) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);\n } elseif ($offsetMinute === 2) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);\n }\n }\n\n private function scheduleBullhornHeartbeat(int $currentMinute): void\n {\n $bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);\n if ($bhHeartbeatInterval > 0) {\n $minutes = max((int) floor($bhHeartbeatInterval / 60), 1);\n if ($currentMinute % $minutes === 0) {\n $bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);\n if ($minutes > 30) {\n $bhEvent->hourly();\n } else {\n $bhEvent->cron(sprintf('*/%d * * * *', $minutes));\n }\n }\n }\n }\n\n private function scheduleActivitiesHardDelete(): void\n {\n if (config(key: 'jiminny.deploy_region') === 'eu') {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 1000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n } elseif ($this->app->environment('production')) {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 2000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n }\n }\n\n private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void\n {\n $this->scheduleCommand('activity:sync', [\n $provider,\n '--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->hourlyAt($offsetMinute);\n }\n\n /**\n * Register the Closure based commands for the application.\n */\n protected function commands(): void\n {\n require_once base_path('routes/console.php');\n }\n\n private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event\n {\n return $this->schedule\n ->command($name, $options)\n ->withoutOverlapping($expiresAt)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\Console;\n\nuse Illuminate\\Console\\ConfirmableTrait;\nuse Illuminate\\Console\\Scheduling\\Event;\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as ConsoleKernel;\nuse Jiminny\\Component\\Acl\\RemoveExpiredRoleChangeEventsCommand;\nuse Jiminny\\Component\\ActionItems\\Commands\\SendActionItemsCommand;\nuse Jiminny\\Component\\AiActivityType\\Commands\\AutodetectAiActivityTypeCommand;\nuse Jiminny\\Component\\AskJiminnyAi\\Commands\\ProphetAnalyzeClosedDealsCommand;\nuse Jiminny\\Component\\Cache\\Constants;\nuse Jiminny\\Component\\DealInsights\\Commands\\SendDealsUpdateCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\MediaPipelineRestartCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportActivityProcessingTimeToDatadogCommand;\nuse Jiminny\\Component\\MediaPipeline\\Command\\ReportProcessingStatesToDatadogCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\OverrideTranscriptionLocaleCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryFailedTranscriptionsCommand;\nuse Jiminny\\Component\\Transcription\\Commands\\RetryStuckTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ActivitiesMatchCrmCommand;\nuse Jiminny\\Console\\Commands\\Activities\\AutologOldActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DeleteActivitiesForRetentionTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\DownloadMissingTrackCommand;\nuse Jiminny\\Console\\Commands\\Activities\\FixActivitiesOpportunity;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesForChurnedTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\HardDeleteActivitiesTeamsCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReassignTranscriptCommand;\nuse Jiminny\\Console\\Commands\\Activities\\ReindexRecentActivitiesCommand;\nuse Jiminny\\Console\\Commands\\Activities\\RetryProspectSummaryCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeleteCancelledCommand;\nuse Jiminny\\Console\\Commands\\Calendars\\Events\\CalendarEventDeletePastCommand;\nuse Jiminny\\Console\\Commands\\Crm\\BackfillOpportunityUserFromAccountCommand;\nuse Jiminny\\Console\\Commands\\Crm\\CleanDuplicateFieldDataCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ProcessMergedObjectsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\RestoreDealAssociationsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\ProcessHubspotObjectsSyncBatches;\nuse Jiminny\\Console\\Commands\\Crm\\PurgeDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\ListJournalWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\Hubspot\\SetupJournalDealWebhookSubscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Crm\\SyncHubspotActiveDeals;\nuse Jiminny\\Console\\Commands\\Crm\\SyncOpportunitiesMissingFieldDataCommand;\nuse Jiminny\\Console\\Commands\\DeleteOldAiCrmNotesCommand;\nuse Jiminny\\Console\\Commands\\DeleteS3LeftoversCommand;\nuse Jiminny\\Console\\Commands\\DiarizeViaAiParticipantIdentificationCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\DeleteEmailDocumentsCommand;\nuse Jiminny\\Console\\Commands\\Elasticsearch\\RemoveGhostParticipantsCommand;\nuse Jiminny\\Console\\Commands\\FlushRolesPermissionsCache;\nuse Jiminny\\Console\\Commands\\GenerateInternalWebhookToken;\nuse Jiminny\\Console\\Commands\\IssueMcpTokenCommand;\nuse Jiminny\\Console\\Commands\\HubspotJournalPollingCommand;\nuse Jiminny\\Console\\Commands\\HubspotWebhookServiceCommand;\nuse Jiminny\\Console\\Commands\\Livestream\\StopHangingLivestreamsCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteEmailMessagesWithoutActivityCommand;\nuse Jiminny\\Console\\Commands\\Mailboxes\\DeleteInboxEmailsCommand;\nuse Jiminny\\Console\\Commands\\PurgeSoftDeletedOpportunitiesCommand;\nuse Jiminny\\Console\\Commands\\PurgeSyncBatchesCommand;\nuse Jiminny\\Console\\Commands\\RemoveDeleteMarkersCommand;\nuse Jiminny\\Console\\Commands\\RemoveExpiredNudgesCommand;\nuse Jiminny\\Console\\Commands\\RemoveUnusedParticipantSpeechesCommand;\nuse Jiminny\\Console\\Commands\\Reports\\AutomatedReportsRetentionPolicyCommand;\nuse Jiminny\\Console\\Commands\\Reports\\DeleteReportCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityCrmProviderIdCommand;\nuse Jiminny\\Console\\Commands\\RestoreActivityTypeCommand;\nuse Jiminny\\Console\\Commands\\SendNudgeExpirationWarningsCommand;\nuse Jiminny\\Console\\Commands\\Slack\\SyncSlackUserCommand;\nuse Jiminny\\Console\\Commands\\Teams\\SyncTeamUsersCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamDeleteCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteDeactivatedCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamsDeleteRetentionCommand;\nuse Jiminny\\Console\\Commands\\Teams\\TeamSettingPutCommand;\nuse Jiminny\\Console\\Commands\\Teams\\UpdateTeamsCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\CleanupActivityTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\DeleteUnusedTracksCommand;\nuse Jiminny\\Console\\Commands\\Tracks\\RestoreTracksCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\DeleteOldTranscriptionsCommand;\nuse Jiminny\\Console\\Commands\\Transcription\\UpdateOldTranscriptionModelLocalesCommand;\nuse Jiminny\\Console\\Commands\\Twilio\\DeleteChurnedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\DeletePredefinedSubAccounts;\nuse Jiminny\\Console\\Commands\\Twilio\\ReleaseNumbersCommand;\nuse Jiminny\\Jobs\\Activity\\SyncActivity;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\InboxEmail;\nuse Jiminny\\Services\\RecallAI\\Commands\\ImportRegionMeetingCommand;\nuse Jiminny\\Services\\RecallAI\\Commands\\ScheduleBotCommand;\n\nclass Kernel extends ConsoleKernel\n{\n use ConfirmableTrait;\n\n /**\n * The Artisan commands provided by your application.\n *\n * @var string[]\n */\n protected $commands = [\n Commands\\GeckoExport\\GeckoExportTranscriptCommand::class,\n Commands\\GeckoExport\\GeckoExportTranscriptionCommand::class,\n Commands\\GeckoExport\\GeckoExportParticipantSpeechesCommand::class,\n Commands\\Activities\\DeleteForCoachesCommand::class,\n ReindexRecentActivitiesCommand::class,\n Commands\\Crm\\BullhornPingCommand::class,\n Commands\\Crm\\BullhornSessionCommand::class,\n Commands\\Crm\\BullhornSearchCommand::class,\n Commands\\PlaybackThemes\\TopicsConsolidateCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesCopyCommand::class,\n Commands\\PlaybackThemes\\AssignTopicsUsedBySingleTeamCommand::class,\n Commands\\PlaybackThemes\\PlaybackThemesMigrateToVersionsCommand::class,\n Commands\\Vocabulary\\VocabularyCopyCommand::class,\n Commands\\Transcription\\TranscriptionPrintRaw::class,\n Commands\\Migrate\\JiminnyMigratePopulateActivitySourceCommand::class,\n Commands\\EngagementStats\\JiminnyEngagementStatsExplainCommand::class,\n Commands\\EngagementStatsRegenerateCommand::class,\n Commands\\Analytics\\NumberOfActivitiesPerActivityTypeCommand::class,\n Commands\\Elasticsearch\\MappingRunCommand::class,\n Commands\\Elasticsearch\\MappingInstallCommand::class,\n Commands\\Elasticsearch\\UpdateEsMappingSettingsCommand::class,\n Commands\\Analytics\\TranscriptionWordMatchCommand::class,\n Commands\\JiminnyCacheClearCommand::class,\n Commands\\Transcription\\TranscriptionSearchCommand::class,\n RetryStuckTranscriptionsCommand::class,\n RetryFailedTranscriptionsCommand::class,\n Commands\\JiminnyDebugCommand::class,\n Commands\\RunAiCallScoringForUntypedActivitiesCommand::class,\n Commands\\Calendars\\SyncCalendars::class,\n Commands\\Calendars\\SyncDeletedEvents::class,\n Commands\\Twilio\\FetchMetrics::class,\n Commands\\Twilio\\FetchEvents::class,\n Commands\\Twilio\\FetchSummary::class,\n Commands\\Twilio\\SyncZoneAccess::class,\n Commands\\DatabaseTableCount::class,\n Commands\\PurgeConferences::class,\n Commands\\ResetElasticSearch::class,\n Commands\\CreateDatabaseUsers::class,\n Commands\\Activities\\NotifyNotLogged::class,\n Commands\\Crm\\SyncTeamMetadata::class,\n Commands\\Crm\\SyncProfileMetadata::class,\n Commands\\Crm\\SyncContact::class,\n Commands\\Crm\\SyncObjects::class,\n Commands\\Crm\\SyncHubspotObjects::class,\n Commands\\Crm\\SyncAccount::class,\n Commands\\Crm\\ResetGovernorLimits::class,\n Commands\\Crm\\ManageSyncStrategyCommand::class,\n Commands\\ImportRecording::class,\n Commands\\TrackImported::class,\n Commands\\Twilio\\RecoverTwilioTracksCommand::class,\n Commands\\Crm\\SetupLayouts::class,\n Commands\\Tracks\\SyncTwilioTracks::class,\n Commands\\Activities\\StatusCount::class,\n\n Commands\\Mailboxes\\TextRelay\\WatchMailboxEvents::class,\n Commands\\Mailboxes\\InboxCreate::class,\n Commands\\Mailboxes\\InboxSync::class,\n Commands\\Mailboxes\\BatchCreate::class,\n Commands\\Mailboxes\\BatchProcess::class,\n Commands\\Mailboxes\\InboxPurge::class,\n Commands\\Mailboxes\\BatchRetryFailed::class,\n Commands\\Mailboxes\\BatchFailStalled::class,\n Commands\\Mailboxes\\SkipListsRefresh::class,\n Commands\\Mailboxes\\SkipListsDump::class,\n Commands\\Mailboxes\\TextRelay\\SyncMailbox::class,\n Commands\\Mailboxes\\DeleteInboxEmailsCommand::class,\n Commands\\Mailboxes\\DeleteEmailMessagesCommand::class,\n DeleteEmailMessagesWithoutActivityCommand::class,\n\n Commands\\Tracks\\CheckIntegrity::class,\n Commands\\Twilio\\RemoteLifecycle::class,\n Commands\\Twilio\\SyncNumbers::class,\n Commands\\Crm\\SetupActivityTypeForFollowUp::class,\n Commands\\Activities\\CheckPlayable::class,\n Commands\\Activities\\ActivityDeleteCommand::class,\n Commands\\Activities\\Copy::class,\n Commands\\Activities\\ActivityHardDeleteCommand::class,\n Commands\\Reports\\Team::class,\n Commands\\Reports\\GenerateMarketingReport::class,\n Commands\\Reports\\AutomatedReportsCommand::class,\n Commands\\Reports\\AutomatedReportsSendCommand::class,\n Commands\\MuteOrganizerChannel::class,\n Commands\\Tracks\\DeleteTracks::class,\n Commands\\Tracks\\RetryDownload::class,\n Commands\\Tracks\\RetryFailedDownloads::class,\n Commands\\Twilio\\SyncAddresses::class,\n Commands\\Activities\\UpdateElasticSearch::class,\n Commands\\MakeSlackLiveCoachingChatNotesOn::class,\n Commands\\Activities\\PreMeetingNotification::class,\n ScheduleBotCommand::class,\n ImportRegionMeetingCommand::class,\n Commands\\Activities\\MonitorMeetingCountCommand::class,\n Commands\\Activities\\MonitorMeetingStartCommand::class,\n Commands\\Activities\\MonitorMeetingEndCommand::class,\n Commands\\SyncActivity::class,\n Commands\\PhpApm::class,\n Commands\\Crm\\SyncOpportunity::class,\n Commands\\Crm\\SyncLead::class,\n Commands\\Users\\SyncLicenceDataToSalesforce::class,\n Commands\\Crm\\UpdateOpportunitySpecifications::class,\n Commands\\Users\\SyncToIntercom::class,\n Commands\\Users\\SyncToUserPilot::class,\n Commands\\Teams\\SyncToPlanhat::class,\n Commands\\Twilio\\SetZoneAccess::class,\n Commands\\Users\\CreateDefaultSavedSearchesCommand::class,\n Commands\\Crm\\SendNotLogged::class,\n Commands\\Teams\\DeactivateTeamCommand::class,\n Commands\\Crm\\SyncFieldMetadata::class,\n Commands\\Postmark\\SyncEmailTemplatesCommand::class,\n Commands\\PlaybackThemes\\ImportTriggersFromTranslatedCsvCommand::class,\n Commands\\Activities\\PreMeetingReminder::class,\n Commands\\Activities\\CustomerActivitiesExport::class,\n Commands\\Users\\RefreshAccessToken::class,\n Commands\\Calendars\\SetupCalendarSubscription::class,\n Commands\\Activities\\InviteMeetingBot::class,\n Commands\\Activities\\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,\n Commands\\Crm\\MigrateProvider::class,\n Commands\\Activities\\MigrateLocationFromCalendarEventToActivities::class,\n Commands\\HelperTruncateCoachingTables::class,\n Commands\\FixCrossTenantIssues::class,\n Commands\\Activities\\CloudCall\\SetupIntegration::class,\n Commands\\Activities\\CloudTalk\\FixTimeZone::class,\n Commands\\Activities\\Orum\\SetupIntegration::class,\n Commands\\Activities\\JustCall\\SetupIntegration::class,\n Commands\\Activities\\RingCentral\\AddInboundPromptSupport::class,\n Commands\\Dialers\\Dialpad\\SubscribeToWebhooks::class,\n Commands\\RecalculateDealRisksCommand::class,\n SendDealsUpdateCommand::class,\n Commands\\Activities\\SetProviderCapabilitiesField::class,\n Commands\\Teams\\InitiallySetNotificationProviderTeamsTable::class,\n Commands\\Crm\\AddLayoutEntities::class,\n Commands\\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,\n Commands\\JiminnyTokenInfoCommand::class,\n Commands\\JiminnySetEncryptedTokenManagerModeCommand::class,\n Commands\\EncryptTokensCommand::class,\n Commands\\Dialers\\Aircall\\CheckAndRenewWebhooks::class,\n Commands\\Migrate\\MigrateTeamRegionCommand::class,\n Commands\\ManageScimForTeam::class,\n Commands\\Dialers\\SyncUsersCommand::class,\n Commands\\WhichWorkerIsWorkingOnWhichJob::class,\n Commands\\GroupSetDefaultLanguageCommand::class,\n Commands\\Dev\\AddRateLimitCommand::class,\n Commands\\Dev\\ImportCallsCommand::class,\n Commands\\DealInsights\\BuildDealInsightsLayoutCommand::class,\n Commands\\DealInsights\\DeleteAskJiminnyDealPrompts::class,\n Commands\\Crm\\MatchCrmObjectsCommand::class,\n Commands\\Activities\\SetupIntegration\\EightByEight::class,\n Commands\\Calendars\\RemoveCalendarEventActivitiesCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromGongCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromChorusCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromLeexiCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromAvomaCommand::class,\n Commands\\Activities\\Migrator\\MigrateFromClariCommand::class,\n Commands\\Activities\\SetupIntegration\\ConnectAndSell::class,\n Commands\\Activities\\SetupIntegration\\CloudTalk::class,\n Commands\\Users\\CreateConferenceSlug::class,\n Commands\\Elasticsearch\\AsyncUpdateEsEntities::class,\n Commands\\Elasticsearch\\ResetAsyncElasticSearchCommand::class,\n Commands\\Playlists\\PlaylistSharesUpdateCommand::class,\n Commands\\Crm\\AutologDelayedCommand::class,\n Commands\\Activities\\HydrateDefaultActivityTypeCommand::class,\n Commands\\Crm\\CheckActivityLoggableCommand::class,\n Commands\\Activities\\MonitorDialerActivitiesCommand::class,\n Commands\\Activities\\SetupIntegration\\Xant::class,\n Commands\\ImportUsersFromCsvFile::class,\n Commands\\DevPostmanCommand::class,\n Commands\\Playlists\\FixTreeStructureCommand::class,\n Commands\\Zoom\\ResolvePmiLinksCommand::class,\n Commands\\MarkBranchForEnvironmentPipelineCommand::class,\n Commands\\Activities\\ProbeMediaSegmentsCommand::class,\n Commands\\Activities\\SetupIntegration\\AmazonConnect::class,\n Commands\\Playbooks\\ChangePlaybookActivityFieldCommand::class,\n MediaPipelineRestartCommand::class,\n Commands\\Dev\\FixHubSpotTokens::class,\n Commands\\Dev\\MonitorSocialAccountsState::class,\n Commands\\Activities\\SetupIntegration\\Vonage::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlex::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexDirect::class,\n Commands\\Activities\\SetupIntegration\\TwilioFlexSetDialerAuthCredentialsCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioSetS3RecordingCredentialsCommand::class,\n SendActionItemsCommand::class,\n Commands\\Users\\ChangeEmail::class,\n Commands\\Calendars\\ListUserGoogleCalendars::class,\n Commands\\Activities\\JustCall\\SyncPlaybackLinkToCrmCommand::class,\n Commands\\Activities\\HydrateCallWithCrmDataCommand::class,\n Commands\\Activities\\UpdateActivityElasticSearchDocumentCommand::class,\n Commands\\Activities\\SetupIntegration\\Talkdesk::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookListCommand::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookShow::class,\n Commands\\Transcription\\Microsoft\\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,\n Commands\\Activities\\SetupIntegration\\TwilioVideo::class,\n Commands\\Crm\\SetupCloseCrm::class,\n Commands\\Crm\\SetupCopperCrm::class,\n Commands\\Crm\\FullSyncOpportunityCommand::class,\n Commands\\Crm\\IntegrationApp\\CrmEntitiesFullSyncCommand::class,\n Commands\\Crm\\IntegrationApp\\ValidateConnectionCommand::class,\n Commands\\Activities\\Workflow\\RefreshCrmData::class,\n Commands\\Activities\\Migrator\\AnalyseGongCalls::class,\n Commands\\Users\\AddVoiceRoleToRecorderCommand::class,\n Commands\\Activities\\SyncMissingCallDispositions::class,\n Commands\\Calendars\\RemoveFutureCalendarEvents::class,\n FlushRolesPermissionsCache::class,\n Commands\\Activities\\SetupIntegration\\FiveNine::class,\n CalendarEventDeleteCancelledCommand::class,\n CalendarEventDeletePastCommand::class,\n ReportActivityProcessingTimeToDatadogCommand::class,\n ReportProcessingStatesToDatadogCommand::class,\n ReleaseNumbersCommand::class,\n BackfillOpportunityUserFromAccountCommand::class,\n RemoveExpiredRoleChangeEventsCommand::class,\n RemoveExpiredNudgesCommand::class,\n SendNudgeExpirationWarningsCommand::class,\n AutologOldActivitiesCommand::class,\n RemoveUnusedParticipantSpeechesCommand::class,\n DeleteActivitiesForChurnedTeamsCommand::class,\n HardDeleteActivitiesForChurnedTeamsCommand::class,\n TeamDeleteCommand::class,\n TeamsDeleteDeactivatedCommand::class,\n UpdateTeamsCommand::class,\n OverrideTranscriptionLocaleCommand::class,\n SyncSlackUserCommand::class,\n PurgeSoftDeletedOpportunitiesCommand::class,\n PurgeSyncBatchesCommand::class,\n ProphetAnalyzeClosedDealsCommand::class,\n DeleteChurnedSubAccounts::class,\n Commands\\ProphetAi\\DumpContext::class,\n DeletePredefinedSubAccounts::class,\n DeleteActivitiesForRetentionTeamsCommand::class,\n HardDeleteActivitiesTeamsCommand::class,\n TeamsDeleteRetentionCommand::class,\n TeamSettingPutCommand::class,\n StopHangingLivestreamsCommand::class,\n FixActivitiesOpportunity::class,\n Commands\\Activities\\SetupIntegration\\Salesforce\\SetupSalesforceIntegrationCommand::class,\n UpdateOldTranscriptionModelLocalesCommand::class,\n Commands\\Dev\\FixMissMatchedCrmActivitiesCommand::class,\n DownloadMissingTrackCommand::class,\n ActivitiesMatchCrmCommand::class,\n DeleteEmailDocumentsCommand::class,\n DeleteOldTranscriptionsCommand::class,\n DeleteS3LeftoversCommand::class,\n RemoveDeleteMarkersCommand::class,\n SyncTeamUsersCommand::class,\n ReassignTranscriptCommand::class,\n DiarizeViaAiParticipantIdentificationCommand::class,\n RestoreActivityTypeCommand::class,\n DeleteOldAiCrmNotesCommand::class,\n DeleteReportCommand::class,\n AutomatedReportsRetentionPolicyCommand::class,\n SyncHubspotActiveDeals::class,\n GenerateInternalWebhookToken::class,\n IssueMcpTokenCommand::class,\n RestoreActivityCrmProviderIdCommand::class,\n CleanupActivityTracksCommand::class,\n DeleteUnusedTracksCommand::class,\n RestoreTracksCommand::class,\n HubspotWebhookServiceCommand::class,\n ProcessMergedObjectsCommand::class,\n HubspotJournalPollingCommand::class,\n SetupJournalDealWebhookSubscriptionsCommand::class,\n ListJournalWebhookSubscriptionsCommand::class,\n RemoveGhostParticipantsCommand::class,\n AutodetectAiActivityTypeCommand::class,\n Commands\\Crm\\LogActivitiesCommand::class,\n Commands\\Crm\\MatchOpportunityActivitiesCommand::class,\n PurgeDeletedOpportunitiesCommand::class,\n CleanDuplicateFieldDataCommand::class,\n RetryProspectSummaryCommand::class,\n ProcessHubspotObjectsSyncBatches::class,\n SyncOpportunitiesMissingFieldDataCommand::class,\n RestoreDealAssociationsCommand::class,\n Commands\\Crm\\TestPipedriveOfficialSdkCommand::class,\n ];\n\n private Schedule $schedule;\n private string $output;\n\n protected function schedule(Schedule $schedule): void\n {\n $this->schedule = $schedule;\n $this->output = config('jiminny.scheduler_log');\n\n $schedule->useCache('redis');\n\n $currentMinute = (int) date('i');\n $currentDay = (int) date('w');\n\n $this->scheduleEveryMinute();\n $this->scheduleEveryTwoMinutes();\n $this->scheduleEveryFiveMinutes();\n $this->scheduleEveryTenMinutes();\n $this->scheduleEveryFifteenMinutes();\n $this->scheduleEveryThirtyMinutes();\n $this->scheduleHourly();\n $this->scheduleDaily();\n $this->scheduleWeekly($currentDay);\n $this->scheduleSpecificTimes();\n $this->scheduleDynamic($currentMinute);\n }\n\n protected function scheduleEveryMinute(): void\n {\n $this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();\n $this->scheduleCommand('dialers:monitor-activities')->everyMinute();\n $this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();\n $this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();\n\n $this->schedule->command('mailbox:batch:process', ['--max-batches=15'])\n ->everyMinute()\n ->sendOutputTo($this->output);\n }\n\n protected function scheduleEveryTwoMinutes(): void\n {\n $this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();\n }\n\n protected function scheduleEveryFiveMinutes(): void\n {\n $this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();\n // Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)\n $this->scheduleCommand('crm:sync-hubspot-objects', [], 4)\n ->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');\n $this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();\n $this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();\n $this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();\n\n $this->schedule->command('mailbox:batch:create')\n ->cron('2-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output);\n\n $this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])\n ->cron('3-59/5 * * * *')\n ->withoutOverlapping(180)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ->runInBackground();\n\n $this->schedule->command('hubspot:journal-poll', ['--start'])\n ->everyFiveMinutes()\n ->sendOutputTo($this->output)\n ->runInBackground();\n }\n\n protected function scheduleEveryTenMinutes(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();\n $this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');\n $this->scheduleCommand('crm:reset-governor')->everyTenMinutes();\n }\n\n protected function scheduleEveryFifteenMinutes(): void\n {\n $this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();\n $this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');\n $this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');\n $this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n ],\n ])->everyFifteenMinutes();\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_RINGCENTRAL,\n Activity::PROVIDER_AVAYA,\n Activity::PROVIDER_TELUS,\n Activity::PROVIDER_TALKDESK,\n '--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->cron('7,22,37,52 * * * *');\n }\n\n protected function scheduleEveryThirtyMinutes(): void\n {\n $this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');\n $this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();\n\n $this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)\n ->between('02:58', '05:29')\n ->everyThirtyMinutes()\n ->runInBackground();\n\n $this->scheduleActivitiesHardDelete();\n }\n\n protected function scheduleHourly(): void\n {\n $this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();\n $this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');\n $this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');\n $this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');\n $this->scheduleCommand('automated-reports:send')->hourly();\n $this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);\n $this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);\n }\n\n protected function scheduleDaily(): void\n {\n $this->scheduleCommand('teams:sync-planhat')->daily();\n $this->scheduleCommand('twilio:sync-addresses')->daily();\n $this->scheduleCommand('twilio:sync-zone-access')->daily();\n $this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();\n $this->scheduleCommand('users:sync-licence-data')->daily();\n $this->scheduleCommand('users:sync-intercom-data')->daily();\n $this->scheduleCommand('nudges:send-expiration-warnings')->daily();\n $this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();\n }\n\n protected function scheduleWeekly(int $currentDay): void\n {\n if ($currentDay === 0) {\n $this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);\n }\n\n if ($currentDay === 6) {\n $this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_AMAZON_CONNECT,\n '--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->saturdays()->at('01:00')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)\n ->saturdays()->at('01:07')->runInBackground();\n $this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)\n ->saturdays()->at('05:08')->runInBackground();\n $this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')\n ->weeklyOn(6, '6:00');\n $this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')\n ->weeklyOn(6, '7:00');\n }\n }\n\n protected function scheduleSpecificTimes(): void\n {\n $this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_DISCARDED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:20')->runInBackground();\n\n $this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [\n '--status' => InboxEmail::STATUS_PROCESSED,\n '--to' => now()->subWeeks(2)->format('Y-m-d'),\n ])->saturdays()->at('00:30')->runInBackground();\n\n $this->scheduleCommand('automated-reports')->dailyAt('01:00');\n $this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');\n $this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');\n $this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');\n $this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');\n $this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');\n $this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');\n\n $this->scheduleCommand('activity:sync', [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('03:05');\n\n\n $this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');\n $this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');\n $this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');\n $this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');\n $this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');\n\n if (! $this->app->environment('production')) {\n $this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)\n ->dailyAt('04:02')->runInBackground();\n }\n\n $this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');\n\n $this->scheduleCommand('activity:sync', [\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--skipProviders' => [\n Activity::PROVIDER_VONAGE,\n Activity::PROVIDER_FIVE_NINE,\n ],\n ])->dailyAt('05:05');\n\n if (! $this->app->environment('qa')) {\n $this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');\n }\n\n $this->scheduleCommand('activity:sync-dispositions', [\n Activity::PROVIDER_HUBSPOT,\n '--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->dailyAt('07:05');\n }\n\n protected function scheduleDynamic(int $currentMinute): void\n {\n $this->scheduleHourlyFallbackActivitySyncs($currentMinute);\n $this->scheduleBullhornHeartbeat($currentMinute);\n }\n\n private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void\n {\n if ($offsetMinute === 0) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);\n } elseif ($offsetMinute === 1) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);\n } elseif ($offsetMinute === 2) {\n $this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);\n }\n }\n\n private function scheduleBullhornHeartbeat(int $currentMinute): void\n {\n $bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);\n if ($bhHeartbeatInterval > 0) {\n $minutes = max((int) floor($bhHeartbeatInterval / 60), 1);\n if ($currentMinute % $minutes === 0) {\n $bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);\n if ($minutes > 30) {\n $bhEvent->hourly();\n } else {\n $bhEvent->cron(sprintf('*/%d * * * *', $minutes));\n }\n }\n }\n }\n\n private function scheduleActivitiesHardDelete(): void\n {\n if (config(key: 'jiminny.deploy_region') === 'eu') {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 1000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n } elseif ($this->app->environment('production')) {\n $this->scheduleCommand(\n name: 'activities:hard-delete',\n options: ['--limit' => 2000, '--jobs' => 20],\n expiresAt: 29\n )\n ->between('02:59', '07:02')->everyThirtyMinutes()\n ->runInBackground();\n }\n }\n\n private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void\n {\n $this->scheduleCommand('activity:sync', [\n $provider,\n '--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n '--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),\n ])->hourlyAt($offsetMinute);\n }\n\n /**\n * Register the Closure based commands for the application.\n */\n protected function commands(): void\n {\n require_once base_path('routes/console.php');\n }\n\n private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event\n {\n return $this->schedule\n ->command($name, $options)\n ->withoutOverlapping($expiresAt)\n ->onOneServer()\n ->sendOutputTo($this->output)\n ;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-935282521832906214
|
-8743917468487692599
|
idle
|
accessibility
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\DTO\Invitation;
use Jiminny\DTO\UserEmail;
use Jiminny\Http\Requests\Settings\Teams\CreateInvitationRequest;
use Jiminny\Http\Requests\Settings\Teams\CreateTeamRequest;
use Jiminny\Http\Requests\Settings\Teams\EditTeamRequest;
use Jiminny\Models\Group;
use Jiminny\Models\Invitation;
use Jiminny\Models\Role;
use Jiminny\Models\Team;
use Jiminny\Models\User;
class UserInvitationDTO
{
use UserEmail;
public string $email;
public ?string $secondaryEmail;
public ?int $groupId;
public int $teamId;
public bool $crmRequired;
public array $roleIds;
public bool $isOwner;
public ?User $currentUser = null;
/**
* @param array{
* email: string,
* secondaryEmail: string|null,
* groupId: int|null,
* teamId: int|string,
* crmRequired: bool,
* roleIds: int[],
* isOwner: bool,
* user?: User
* } $attributes
*/
private function __construct(array $attributes)
{
$this->email = mb_strtolower($attributes['email']);
$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);
$this->groupId = $attributes['groupId'];
$this->teamId = (int) $attributes['teamId'];
$this->crmRequired = (bool) $attributes['crmRequired'];
$this->roleIds = $attributes['roleIds'];
$this->isOwner = $attributes['isOwner'];
$this->currentUser = $attributes['user'] ?? null;
}
public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self
{
$roleIds = Role::whereIn('name', [
User::ROLE_ADMIN,
User::ROLE_RECORDER,
])->pluck('id')->toArray();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => $request->getOwnerEmail(),
'secondaryEmail' => null,
'groupId' => null,
'teamId' => $team->getId(),
'crmRequired' => true,
'roleIds' => $roleIds,
'user' => $currentUser,
'isOwner' => true,
]);
}
public static function fromRequest(CreateInvitationRequest $request): self
{
$data = $request->validated();
$groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;
$teamId = Team::uuid($data['team_id'])->getId();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => mb_strtolower($data['email']),
'secondaryEmail' => $data['secondary_email'] ?? null,
'groupId' => $groupId,
'teamId' => $teamId,
'crmRequired' => $data['crm_required'],
'roleIds' => $data['roles'],
'user' => $currentUser,
'isOwner' => false,
]);
}
public static function fromInvitation(Invitation $invitation, User $currentUser): self
{
$roles = $invitation->roles()->get();
$isOwner = $invitation->isOwner();
return new self([
'email' => $invitation->email,
'secondaryEmail' => $invitation->getSecondaryEmail(),
'groupId' => $invitation->group_id,
'teamId' => $invitation->team_id,
'crmRequired' => $invitation->crm_required,
'roleIds' => $roles->pluck('id')->toArray(),
'user' => $currentUser,
'isOwner' => $isOwner,
]);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
17
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Console;
use Illuminate\Console\ConfirmableTrait;
use Illuminate\Console\Scheduling\Event;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Jiminny\Component\Acl\RemoveExpiredRoleChangeEventsCommand;
use Jiminny\Component\ActionItems\Commands\SendActionItemsCommand;
use Jiminny\Component\AiActivityType\Commands\AutodetectAiActivityTypeCommand;
use Jiminny\Component\AskJiminnyAi\Commands\ProphetAnalyzeClosedDealsCommand;
use Jiminny\Component\Cache\Constants;
use Jiminny\Component\DealInsights\Commands\SendDealsUpdateCommand;
use Jiminny\Component\MediaPipeline\Command\MediaPipelineRestartCommand;
use Jiminny\Component\MediaPipeline\Command\ReportActivityProcessingTimeToDatadogCommand;
use Jiminny\Component\MediaPipeline\Command\ReportProcessingStatesToDatadogCommand;
use Jiminny\Component\Transcription\Commands\OverrideTranscriptionLocaleCommand;
use Jiminny\Component\Transcription\Commands\RetryFailedTranscriptionsCommand;
use Jiminny\Component\Transcription\Commands\RetryStuckTranscriptionsCommand;
use Jiminny\Console\Commands\Activities\ActivitiesMatchCrmCommand;
use Jiminny\Console\Commands\Activities\AutologOldActivitiesCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\DeleteActivitiesForRetentionTeamsCommand;
use Jiminny\Console\Commands\Activities\DownloadMissingTrackCommand;
use Jiminny\Console\Commands\Activities\FixActivitiesOpportunity;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesForChurnedTeamsCommand;
use Jiminny\Console\Commands\Activities\HardDeleteActivitiesTeamsCommand;
use Jiminny\Console\Commands\Activities\ReassignTranscriptCommand;
use Jiminny\Console\Commands\Activities\ReindexRecentActivitiesCommand;
use Jiminny\Console\Commands\Activities\RetryProspectSummaryCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeleteCancelledCommand;
use Jiminny\Console\Commands\Calendars\Events\CalendarEventDeletePastCommand;
use Jiminny\Console\Commands\Crm\BackfillOpportunityUserFromAccountCommand;
use Jiminny\Console\Commands\Crm\CleanDuplicateFieldDataCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ProcessMergedObjectsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\RestoreDealAssociationsCommand;
use Jiminny\Console\Commands\Crm\ProcessHubspotObjectsSyncBatches;
use Jiminny\Console\Commands\Crm\PurgeDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\Crm\Hubspot\ListJournalWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\Hubspot\SetupJournalDealWebhookSubscriptionsCommand;
use Jiminny\Console\Commands\Crm\SyncHubspotActiveDeals;
use Jiminny\Console\Commands\Crm\SyncOpportunitiesMissingFieldDataCommand;
use Jiminny\Console\Commands\DeleteOldAiCrmNotesCommand;
use Jiminny\Console\Commands\DeleteS3LeftoversCommand;
use Jiminny\Console\Commands\DiarizeViaAiParticipantIdentificationCommand;
use Jiminny\Console\Commands\Elasticsearch\DeleteEmailDocumentsCommand;
use Jiminny\Console\Commands\Elasticsearch\RemoveGhostParticipantsCommand;
use Jiminny\Console\Commands\FlushRolesPermissionsCache;
use Jiminny\Console\Commands\GenerateInternalWebhookToken;
use Jiminny\Console\Commands\IssueMcpTokenCommand;
use Jiminny\Console\Commands\HubspotJournalPollingCommand;
use Jiminny\Console\Commands\HubspotWebhookServiceCommand;
use Jiminny\Console\Commands\Livestream\StopHangingLivestreamsCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteEmailMessagesWithoutActivityCommand;
use Jiminny\Console\Commands\Mailboxes\DeleteInboxEmailsCommand;
use Jiminny\Console\Commands\PurgeSoftDeletedOpportunitiesCommand;
use Jiminny\Console\Commands\PurgeSyncBatchesCommand;
use Jiminny\Console\Commands\RemoveDeleteMarkersCommand;
use Jiminny\Console\Commands\RemoveExpiredNudgesCommand;
use Jiminny\Console\Commands\RemoveUnusedParticipantSpeechesCommand;
use Jiminny\Console\Commands\Reports\AutomatedReportsRetentionPolicyCommand;
use Jiminny\Console\Commands\Reports\DeleteReportCommand;
use Jiminny\Console\Commands\RestoreActivityCrmProviderIdCommand;
use Jiminny\Console\Commands\RestoreActivityTypeCommand;
use Jiminny\Console\Commands\SendNudgeExpirationWarningsCommand;
use Jiminny\Console\Commands\Slack\SyncSlackUserCommand;
use Jiminny\Console\Commands\Teams\SyncTeamUsersCommand;
use Jiminny\Console\Commands\Teams\TeamDeleteCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteDeactivatedCommand;
use Jiminny\Console\Commands\Teams\TeamsDeleteRetentionCommand;
use Jiminny\Console\Commands\Teams\TeamSettingPutCommand;
use Jiminny\Console\Commands\Teams\UpdateTeamsCommand;
use Jiminny\Console\Commands\Tracks\CleanupActivityTracksCommand;
use Jiminny\Console\Commands\Tracks\DeleteUnusedTracksCommand;
use Jiminny\Console\Commands\Tracks\RestoreTracksCommand;
use Jiminny\Console\Commands\Transcription\DeleteOldTranscriptionsCommand;
use Jiminny\Console\Commands\Transcription\UpdateOldTranscriptionModelLocalesCommand;
use Jiminny\Console\Commands\Twilio\DeleteChurnedSubAccounts;
use Jiminny\Console\Commands\Twilio\DeletePredefinedSubAccounts;
use Jiminny\Console\Commands\Twilio\ReleaseNumbersCommand;
use Jiminny\Jobs\Activity\SyncActivity;
use Jiminny\Models\Activity;
use Jiminny\Models\InboxEmail;
use Jiminny\Services\RecallAI\Commands\ImportRegionMeetingCommand;
use Jiminny\Services\RecallAI\Commands\ScheduleBotCommand;
class Kernel extends ConsoleKernel
{
use ConfirmableTrait;
/**
* The Artisan commands provided by your application.
*
* @var string[]
*/
protected $commands = [
Commands\GeckoExport\GeckoExportTranscriptCommand::class,
Commands\GeckoExport\GeckoExportTranscriptionCommand::class,
Commands\GeckoExport\GeckoExportParticipantSpeechesCommand::class,
Commands\Activities\DeleteForCoachesCommand::class,
ReindexRecentActivitiesCommand::class,
Commands\Crm\BullhornPingCommand::class,
Commands\Crm\BullhornSessionCommand::class,
Commands\Crm\BullhornSearchCommand::class,
Commands\PlaybackThemes\TopicsConsolidateCommand::class,
Commands\PlaybackThemes\PlaybackThemesCopyCommand::class,
Commands\PlaybackThemes\AssignTopicsUsedBySingleTeamCommand::class,
Commands\PlaybackThemes\PlaybackThemesMigrateToVersionsCommand::class,
Commands\Vocabulary\VocabularyCopyCommand::class,
Commands\Transcription\TranscriptionPrintRaw::class,
Commands\Migrate\JiminnyMigratePopulateActivitySourceCommand::class,
Commands\EngagementStats\JiminnyEngagementStatsExplainCommand::class,
Commands\EngagementStatsRegenerateCommand::class,
Commands\Analytics\NumberOfActivitiesPerActivityTypeCommand::class,
Commands\Elasticsearch\MappingRunCommand::class,
Commands\Elasticsearch\MappingInstallCommand::class,
Commands\Elasticsearch\UpdateEsMappingSettingsCommand::class,
Commands\Analytics\TranscriptionWordMatchCommand::class,
Commands\JiminnyCacheClearCommand::class,
Commands\Transcription\TranscriptionSearchCommand::class,
RetryStuckTranscriptionsCommand::class,
RetryFailedTranscriptionsCommand::class,
Commands\JiminnyDebugCommand::class,
Commands\RunAiCallScoringForUntypedActivitiesCommand::class,
Commands\Calendars\SyncCalendars::class,
Commands\Calendars\SyncDeletedEvents::class,
Commands\Twilio\FetchMetrics::class,
Commands\Twilio\FetchEvents::class,
Commands\Twilio\FetchSummary::class,
Commands\Twilio\SyncZoneAccess::class,
Commands\DatabaseTableCount::class,
Commands\PurgeConferences::class,
Commands\ResetElasticSearch::class,
Commands\CreateDatabaseUsers::class,
Commands\Activities\NotifyNotLogged::class,
Commands\Crm\SyncTeamMetadata::class,
Commands\Crm\SyncProfileMetadata::class,
Commands\Crm\SyncContact::class,
Commands\Crm\SyncObjects::class,
Commands\Crm\SyncHubspotObjects::class,
Commands\Crm\SyncAccount::class,
Commands\Crm\ResetGovernorLimits::class,
Commands\Crm\ManageSyncStrategyCommand::class,
Commands\ImportRecording::class,
Commands\TrackImported::class,
Commands\Twilio\RecoverTwilioTracksCommand::class,
Commands\Crm\SetupLayouts::class,
Commands\Tracks\SyncTwilioTracks::class,
Commands\Activities\StatusCount::class,
Commands\Mailboxes\TextRelay\WatchMailboxEvents::class,
Commands\Mailboxes\InboxCreate::class,
Commands\Mailboxes\InboxSync::class,
Commands\Mailboxes\BatchCreate::class,
Commands\Mailboxes\BatchProcess::class,
Commands\Mailboxes\InboxPurge::class,
Commands\Mailboxes\BatchRetryFailed::class,
Commands\Mailboxes\BatchFailStalled::class,
Commands\Mailboxes\SkipListsRefresh::class,
Commands\Mailboxes\SkipListsDump::class,
Commands\Mailboxes\TextRelay\SyncMailbox::class,
Commands\Mailboxes\DeleteInboxEmailsCommand::class,
Commands\Mailboxes\DeleteEmailMessagesCommand::class,
DeleteEmailMessagesWithoutActivityCommand::class,
Commands\Tracks\CheckIntegrity::class,
Commands\Twilio\RemoteLifecycle::class,
Commands\Twilio\SyncNumbers::class,
Commands\Crm\SetupActivityTypeForFollowUp::class,
Commands\Activities\CheckPlayable::class,
Commands\Activities\ActivityDeleteCommand::class,
Commands\Activities\Copy::class,
Commands\Activities\ActivityHardDeleteCommand::class,
Commands\Reports\Team::class,
Commands\Reports\GenerateMarketingReport::class,
Commands\Reports\AutomatedReportsCommand::class,
Commands\Reports\AutomatedReportsSendCommand::class,
Commands\MuteOrganizerChannel::class,
Commands\Tracks\DeleteTracks::class,
Commands\Tracks\RetryDownload::class,
Commands\Tracks\RetryFailedDownloads::class,
Commands\Twilio\SyncAddresses::class,
Commands\Activities\UpdateElasticSearch::class,
Commands\MakeSlackLiveCoachingChatNotesOn::class,
Commands\Activities\PreMeetingNotification::class,
ScheduleBotCommand::class,
ImportRegionMeetingCommand::class,
Commands\Activities\MonitorMeetingCountCommand::class,
Commands\Activities\MonitorMeetingStartCommand::class,
Commands\Activities\MonitorMeetingEndCommand::class,
Commands\SyncActivity::class,
Commands\PhpApm::class,
Commands\Crm\SyncOpportunity::class,
Commands\Crm\SyncLead::class,
Commands\Users\SyncLicenceDataToSalesforce::class,
Commands\Crm\UpdateOpportunitySpecifications::class,
Commands\Users\SyncToIntercom::class,
Commands\Users\SyncToUserPilot::class,
Commands\Teams\SyncToPlanhat::class,
Commands\Twilio\SetZoneAccess::class,
Commands\Users\CreateDefaultSavedSearchesCommand::class,
Commands\Crm\SendNotLogged::class,
Commands\Teams\DeactivateTeamCommand::class,
Commands\Crm\SyncFieldMetadata::class,
Commands\Postmark\SyncEmailTemplatesCommand::class,
Commands\PlaybackThemes\ImportTriggersFromTranslatedCsvCommand::class,
Commands\Activities\PreMeetingReminder::class,
Commands\Activities\CustomerActivitiesExport::class,
Commands\Users\RefreshAccessToken::class,
Commands\Calendars\SetupCalendarSubscription::class,
Commands\Activities\InviteMeetingBot::class,
Commands\Activities\ChangeActivitiesPlaybookCategoryOnPlaybookChange::class,
Commands\Crm\MigrateProvider::class,
Commands\Activities\MigrateLocationFromCalendarEventToActivities::class,
Commands\HelperTruncateCoachingTables::class,
Commands\FixCrossTenantIssues::class,
Commands\Activities\CloudCall\SetupIntegration::class,
Commands\Activities\CloudTalk\FixTimeZone::class,
Commands\Activities\Orum\SetupIntegration::class,
Commands\Activities\JustCall\SetupIntegration::class,
Commands\Activities\RingCentral\AddInboundPromptSupport::class,
Commands\Dialers\Dialpad\SubscribeToWebhooks::class,
Commands\RecalculateDealRisksCommand::class,
SendDealsUpdateCommand::class,
Commands\Activities\SetProviderCapabilitiesField::class,
Commands\Teams\InitiallySetNotificationProviderTeamsTable::class,
Commands\Crm\AddLayoutEntities::class,
Commands\PropagateCoachingFeedbackCreatedAtToSectionFeedbacks::class,
Commands\JiminnyTokenInfoCommand::class,
Commands\JiminnySetEncryptedTokenManagerModeCommand::class,
Commands\EncryptTokensCommand::class,
Commands\Dialers\Aircall\CheckAndRenewWebhooks::class,
Commands\Migrate\MigrateTeamRegionCommand::class,
Commands\ManageScimForTeam::class,
Commands\Dialers\SyncUsersCommand::class,
Commands\WhichWorkerIsWorkingOnWhichJob::class,
Commands\GroupSetDefaultLanguageCommand::class,
Commands\Dev\AddRateLimitCommand::class,
Commands\Dev\ImportCallsCommand::class,
Commands\DealInsights\BuildDealInsightsLayoutCommand::class,
Commands\DealInsights\DeleteAskJiminnyDealPrompts::class,
Commands\Crm\MatchCrmObjectsCommand::class,
Commands\Activities\SetupIntegration\EightByEight::class,
Commands\Calendars\RemoveCalendarEventActivitiesCommand::class,
Commands\Activities\Migrator\MigrateFromGongCommand::class,
Commands\Activities\Migrator\MigrateFromChorusCommand::class,
Commands\Activities\Migrator\MigrateFromLeexiCommand::class,
Commands\Activities\Migrator\MigrateFromAvomaCommand::class,
Commands\Activities\Migrator\MigrateFromClariCommand::class,
Commands\Activities\SetupIntegration\ConnectAndSell::class,
Commands\Activities\SetupIntegration\CloudTalk::class,
Commands\Users\CreateConferenceSlug::class,
Commands\Elasticsearch\AsyncUpdateEsEntities::class,
Commands\Elasticsearch\ResetAsyncElasticSearchCommand::class,
Commands\Playlists\PlaylistSharesUpdateCommand::class,
Commands\Crm\AutologDelayedCommand::class,
Commands\Activities\HydrateDefaultActivityTypeCommand::class,
Commands\Crm\CheckActivityLoggableCommand::class,
Commands\Activities\MonitorDialerActivitiesCommand::class,
Commands\Activities\SetupIntegration\Xant::class,
Commands\ImportUsersFromCsvFile::class,
Commands\DevPostmanCommand::class,
Commands\Playlists\FixTreeStructureCommand::class,
Commands\Zoom\ResolvePmiLinksCommand::class,
Commands\MarkBranchForEnvironmentPipelineCommand::class,
Commands\Activities\ProbeMediaSegmentsCommand::class,
Commands\Activities\SetupIntegration\AmazonConnect::class,
Commands\Playbooks\ChangePlaybookActivityFieldCommand::class,
MediaPipelineRestartCommand::class,
Commands\Dev\FixHubSpotTokens::class,
Commands\Dev\MonitorSocialAccountsState::class,
Commands\Activities\SetupIntegration\Vonage::class,
Commands\Activities\SetupIntegration\TwilioFlex::class,
Commands\Activities\SetupIntegration\TwilioFlexDirect::class,
Commands\Activities\SetupIntegration\TwilioFlexSetDialerAuthCredentialsCommand::class,
Commands\Activities\SetupIntegration\TwilioSetS3RecordingCredentialsCommand::class,
SendActionItemsCommand::class,
Commands\Users\ChangeEmail::class,
Commands\Calendars\ListUserGoogleCalendars::class,
Commands\Activities\JustCall\SyncPlaybackLinkToCrmCommand::class,
Commands\Activities\HydrateCallWithCrmDataCommand::class,
Commands\Activities\UpdateActivityElasticSearchDocumentCommand::class,
Commands\Activities\SetupIntegration\Talkdesk::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookRegisterCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookListCommand::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookShow::class,
Commands\Transcription\Microsoft\TranscriptionProviderMicrosoftWebhookDeleteCommand::class,
Commands\Activities\SetupIntegration\TwilioVideo::class,
Commands\Crm\SetupCloseCrm::class,
Commands\Crm\SetupCopperCrm::class,
Commands\Crm\FullSyncOpportunityCommand::class,
Commands\Crm\IntegrationApp\CrmEntitiesFullSyncCommand::class,
Commands\Crm\IntegrationApp\ValidateConnectionCommand::class,
Commands\Activities\Workflow\RefreshCrmData::class,
Commands\Activities\Migrator\AnalyseGongCalls::class,
Commands\Users\AddVoiceRoleToRecorderCommand::class,
Commands\Activities\SyncMissingCallDispositions::class,
Commands\Calendars\RemoveFutureCalendarEvents::class,
FlushRolesPermissionsCache::class,
Commands\Activities\SetupIntegration\FiveNine::class,
CalendarEventDeleteCancelledCommand::class,
CalendarEventDeletePastCommand::class,
ReportActivityProcessingTimeToDatadogCommand::class,
ReportProcessingStatesToDatadogCommand::class,
ReleaseNumbersCommand::class,
BackfillOpportunityUserFromAccountCommand::class,
RemoveExpiredRoleChangeEventsCommand::class,
RemoveExpiredNudgesCommand::class,
SendNudgeExpirationWarningsCommand::class,
AutologOldActivitiesCommand::class,
RemoveUnusedParticipantSpeechesCommand::class,
DeleteActivitiesForChurnedTeamsCommand::class,
HardDeleteActivitiesForChurnedTeamsCommand::class,
TeamDeleteCommand::class,
TeamsDeleteDeactivatedCommand::class,
UpdateTeamsCommand::class,
OverrideTranscriptionLocaleCommand::class,
SyncSlackUserCommand::class,
PurgeSoftDeletedOpportunitiesCommand::class,
PurgeSyncBatchesCommand::class,
ProphetAnalyzeClosedDealsCommand::class,
DeleteChurnedSubAccounts::class,
Commands\ProphetAi\DumpContext::class,
DeletePredefinedSubAccounts::class,
DeleteActivitiesForRetentionTeamsCommand::class,
HardDeleteActivitiesTeamsCommand::class,
TeamsDeleteRetentionCommand::class,
TeamSettingPutCommand::class,
StopHangingLivestreamsCommand::class,
FixActivitiesOpportunity::class,
Commands\Activities\SetupIntegration\Salesforce\SetupSalesforceIntegrationCommand::class,
UpdateOldTranscriptionModelLocalesCommand::class,
Commands\Dev\FixMissMatchedCrmActivitiesCommand::class,
DownloadMissingTrackCommand::class,
ActivitiesMatchCrmCommand::class,
DeleteEmailDocumentsCommand::class,
DeleteOldTranscriptionsCommand::class,
DeleteS3LeftoversCommand::class,
RemoveDeleteMarkersCommand::class,
SyncTeamUsersCommand::class,
ReassignTranscriptCommand::class,
DiarizeViaAiParticipantIdentificationCommand::class,
RestoreActivityTypeCommand::class,
DeleteOldAiCrmNotesCommand::class,
DeleteReportCommand::class,
AutomatedReportsRetentionPolicyCommand::class,
SyncHubspotActiveDeals::class,
GenerateInternalWebhookToken::class,
IssueMcpTokenCommand::class,
RestoreActivityCrmProviderIdCommand::class,
CleanupActivityTracksCommand::class,
DeleteUnusedTracksCommand::class,
RestoreTracksCommand::class,
HubspotWebhookServiceCommand::class,
ProcessMergedObjectsCommand::class,
HubspotJournalPollingCommand::class,
SetupJournalDealWebhookSubscriptionsCommand::class,
ListJournalWebhookSubscriptionsCommand::class,
RemoveGhostParticipantsCommand::class,
AutodetectAiActivityTypeCommand::class,
Commands\Crm\LogActivitiesCommand::class,
Commands\Crm\MatchOpportunityActivitiesCommand::class,
PurgeDeletedOpportunitiesCommand::class,
CleanDuplicateFieldDataCommand::class,
RetryProspectSummaryCommand::class,
ProcessHubspotObjectsSyncBatches::class,
SyncOpportunitiesMissingFieldDataCommand::class,
RestoreDealAssociationsCommand::class,
Commands\Crm\TestPipedriveOfficialSdkCommand::class,
];
private Schedule $schedule;
private string $output;
protected function schedule(Schedule $schedule): void
{
$this->schedule = $schedule;
$this->output = config('jiminny.scheduler_log');
$schedule->useCache('redis');
$currentMinute = (int) date('i');
$currentDay = (int) date('w');
$this->scheduleEveryMinute();
$this->scheduleEveryTwoMinutes();
$this->scheduleEveryFiveMinutes();
$this->scheduleEveryTenMinutes();
$this->scheduleEveryFifteenMinutes();
$this->scheduleEveryThirtyMinutes();
$this->scheduleHourly();
$this->scheduleDaily();
$this->scheduleWeekly($currentDay);
$this->scheduleSpecificTimes();
$this->scheduleDynamic($currentMinute);
}
protected function scheduleEveryMinute(): void
{
$this->scheduleCommand('meeting-bot:schedule-bot', expiresAt: 1)->everyMinute();
$this->scheduleCommand('dialers:monitor-activities')->everyMinute();
$this->scheduleCommand('jiminny:monitor-social-accounts')->everyMinute();
$this->scheduleCommand('mailbox:skip-lists:refresh')->everyMinute();
$this->schedule->command('mailbox:batch:process', ['--max-batches=15'])
->everyMinute()
->sendOutputTo($this->output);
}
protected function scheduleEveryTwoMinutes(): void
{
$this->scheduleCommand('conference:monitor:count', [], 2)->everyTwoMinutes();
}
protected function scheduleEveryFiveMinutes(): void
{
$this->scheduleCommand('activity:purge-stale', [], 4)->everyFiveMinutes();
// Offset by 1 minute to avoid overlap with crm:sync-objects (runs at :14 and :44)
$this->scheduleCommand('crm:sync-hubspot-objects', [], 4)
->cron('1,6,11,16,21,26,31,36,41,46,51,56 * * * *');
$this->scheduleCommand('mailbox:text-relay:sync')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-notification', [], 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:start', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('conference:monitor:end', expiresAt: 3)->everyFiveMinutes();
$this->scheduleCommand('jiminny:fix-hubspot-tokens')->everyFiveMinutes();
$this->scheduleCommand('conference:pre-meeting-reminder')->everyFiveMinutes()->runInBackground();
$this->schedule->command('mailbox:batch:create')
->cron('2-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output);
$this->schedule->command('mailbox:batch:retry-failed', ['--max-batches=15'])
->cron('3-59/5 * * * *')
->withoutOverlapping(180)
->onOneServer()
->sendOutputTo($this->output)
->runInBackground();
$this->schedule->command('hubspot:journal-poll', ['--start'])
->everyFiveMinutes()
->sendOutputTo($this->output)
->runInBackground();
}
protected function scheduleEveryTenMinutes(): void
{
$this->scheduleCommand('jiminny:transcription:retry-failed')->everyTenMinutes();
$this->scheduleCommand('activity:notify-not-logged')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('activity:status-count')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('mailbox:sync')->cron('6,16,26,36,46,56 * * * *');
$this->scheduleCommand('crm:reset-governor')->everyTenMinutes();
}
protected function scheduleEveryFifteenMinutes(): void
{
$this->scheduleCommand('datadog:report:processing-sla-activities')->everyFifteenMinutes();
$this->scheduleCommand('calendar:sync', ['--dateMode=daily'], 14)->cron('13,28,43,58 * * * *');
$this->scheduleCommand('activity:aircall:check-and-renew')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('track:retry-failed-downloads')->cron('9,24,39,54 * * * *');
$this->scheduleCommand('crm:autolog-delayed')->cron('3,18,33,48 * * * *');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
],
])->everyFifteenMinutes();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_RINGCENTRAL,
Activity::PROVIDER_AVAYA,
Activity::PROVIDER_TELUS,
Activity::PROVIDER_TALKDESK,
'--from' => now()->subMinutes(16)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->cron('7,22,37,52 * * * *');
}
protected function scheduleEveryThirtyMinutes(): void
{
$this->scheduleCommand('crm:sync-objects')->cron('14,44 * * * *');
$this->scheduleCommand('mailbox:batch:fail-stalled')->everyThirtyMinutes();
$this->scheduleCommand('activities:delete-activities-for-deactivated-teams', expiresAt: 5)
->between('02:58', '05:29')
->everyThirtyMinutes()
->runInBackground();
$this->scheduleActivitiesHardDelete();
}
protected function scheduleHourly(): void
{
$this->scheduleCommand('jiminny:transcription:retry-stuck')->hourly();
$this->scheduleCommand('twilio:recover-tracks')->cron('22 * * * *');
$this->scheduleCommand('dialers:sync-users')->cron('22 * * * *');
$this->scheduleCommand('datadog:report:failed-processing-states')->cron('22 * * * *');
$this->scheduleCommand('automated-reports:send')->hourly();
$this->scheduleCommand('deal-insights:send-update')->hourlyAt(0);
$this->scheduleCommand('crm:integration-app-validate-team-connection')->hourlyAt(23);
}
protected function scheduleDaily(): void
{
$this->scheduleCommand('teams:sync-planhat')->daily();
$this->scheduleCommand('twilio:sync-addresses')->daily();
$this->scheduleCommand('twilio:sync-zone-access')->daily();
$this->scheduleCommand('mailbox:text-relay:watch-text-events')->daily();
$this->scheduleCommand('users:sync-licence-data')->daily();
$this->scheduleCommand('users:sync-intercom-data')->daily();
$this->scheduleCommand('nudges:send-expiration-warnings')->daily();
$this->scheduleCommand('nudges-data-clean-up', ['--deleteExpiredNudges'])->daily();
}
protected function scheduleWeekly(int $currentDay): void
{
if ($currentDay === 0) {
$this->scheduleCommand('crm:update-opp-specs')->weeklyOn(0);
}
if ($currentDay === 6) {
$this->scheduleCommand('jiminny:acl:remove-expired-role-change-events')->saturdays();
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_AMAZON_CONNECT,
'--from' => now()->subDays(7)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->saturdays()->at('01:00')->runInBackground();
$this->scheduleCommand('calendar:event:delete-past', ['--force'], 60)
->saturdays()->at('01:07')->runInBackground();
$this->scheduleCommand('calendar:event:delete-cancelled', ['--force'], 60 * 47 + 52)
->saturdays()->at('05:08')->runInBackground();
$this->scheduleCommand('nudges-data-clean-up --squashNudgeRuns')
->weeklyOn(6, '6:00');
$this->scheduleCommand('nudges-data-clean-up --pruneOldRuns --retentionDays=35')
->weeklyOn(6, '7:00');
}
}
protected function scheduleSpecificTimes(): void
{
$this->scheduleCommand('deal-risks:calculate', ['--cronjob'])->dailyAt('00:00');
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_DISCARDED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:20')->runInBackground();
$this->scheduleCommand(DeleteInboxEmailsCommand::NAME, [
'--status' => InboxEmail::STATUS_PROCESSED,
'--to' => now()->subWeeks(2)->format('Y-m-d'),
])->saturdays()->at('00:30')->runInBackground();
$this->scheduleCommand('automated-reports')->dailyAt('01:00');
$this->scheduleCommand('crm:sync-team-metadata')->dailyAt('01:05');
$this->scheduleCommand('crm:sync-profile-metadata')->dailyAt('01:05');
$this->scheduleCommand('calendar:sync-deleted-events')->dailyAt('01:10');
$this->scheduleCommand('teams:delete-retention')->dailyAt('02:55');
$this->scheduleCommand('teams:delete-deactivated')->dailyAt('02:58');
$this->scheduleCommand('twilio:remote-lifecycle')->dailyAt('03:00');
$this->scheduleCommand('activity:sync', [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('03:05');
$this->scheduleCommand('activities:delete-retention-teams', expiresAt: 240)->dailyAt('03:04');
$this->scheduleCommand('automated-reports:run-retention-policy', expiresAt: 120)->dailyAt('03:15');
$this->scheduleCommand('stop:hanging:livestreams')->dailyAt('03:30');
$this->scheduleCommand('crm:purge-sync-batches')->dailyAt('03:45');
$this->scheduleCommand('twilio:sync-numbers')->dailyAt('04:00');
if (! $this->app->environment('production')) {
$this->scheduleCommand('activities:hard-delete', ['--limit' => 1000, '--jobs' => 5], 60)
->dailyAt('04:02')->runInBackground();
}
$this->scheduleCommand('crm:full-sync-opportunity')->dailyAt('05:00');
$this->scheduleCommand('activity:sync', [
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--skipProviders' => [
Activity::PROVIDER_VONAGE,
Activity::PROVIDER_FIVE_NINE,
],
])->dailyAt('05:05');
if (! $this->app->environment('qa')) {
$this->scheduleCommand('ai-crm-notes:delete-old')->dailyAt('07:00');
}
$this->scheduleCommand('activity:sync-dispositions', [
Activity::PROVIDER_HUBSPOT,
'--from' => now()->subDay()->startOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->subDay()->endOfDay()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->dailyAt('07:05');
}
protected function scheduleDynamic(int $currentMinute): void
{
$this->scheduleHourlyFallbackActivitySyncs($currentMinute);
$this->scheduleBullhornHeartbeat($currentMinute);
}
private function scheduleHourlyFallbackActivitySyncs(int $offsetMinute): void
{
if ($offsetMinute === 0) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUD_TALK, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_VONAGE, 6, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_CLOUDCALL_US, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_FIVE_NINE, 3, 0);
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_HUBSPOT, 1, 0);
} elseif ($offsetMinute === 1) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_RINGCENTRAL, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 1);
} elseif ($offsetMinute === 2) {
$this->scheduleHourlyFallbackActivitySync(Activity::PROVIDER_AVAYA, Constants::RINGCENTRAL_CALL_LOG_LOOK_BACK_HOURS, 2);
}
}
private function scheduleBullhornHeartbeat(int $currentMinute): void
{
$bhHeartbeatInterval = config('services.bullhorn.heartbeatInterval', 0);
if ($bhHeartbeatInterval > 0) {
$minutes = max((int) floor($bhHeartbeatInterval / 60), 1);
if ($currentMinute % $minutes === 0) {
$bhEvent = $this->scheduleCommand('crm:bullhorn:ping', ['--heartbeat']);
if ($minutes > 30) {
$bhEvent->hourly();
} else {
$bhEvent->cron(sprintf('*/%d * * * *', $minutes));
}
}
}
}
private function scheduleActivitiesHardDelete(): void
{
if (config(key: 'jiminny.deploy_region') === 'eu') {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 1000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
} elseif ($this->app->environment('production')) {
$this->scheduleCommand(
name: 'activities:hard-delete',
options: ['--limit' => 2000, '--jobs' => 20],
expiresAt: 29
)
->between('02:59', '07:02')->everyThirtyMinutes()
->runInBackground();
}
}
private function scheduleHourlyFallbackActivitySync(string $provider, int $hours, int $offsetMinute = 0): void
{
$this->scheduleCommand('activity:sync', [
$provider,
'--from' => now()->subHours($hours)->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
'--to' => now()->startOfMinute()->format(SyncActivity::ALLOWED_DATE_FORMAT),
])->hourlyAt($offsetMinute);
}
/**
* Register the Closure based commands for the application.
*/
protected function commands(): void
{
require_once base_path('routes/console.php');
}
private function scheduleCommand(string $name, array $options = [], $expiresAt = 60 * 3): Event
{
return $this->schedule
->command($name, $options)
->withoutOverlapping($expiresAt)
->onOneServer()
->sendOutputTo($this->output)
;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
50068
|
NULL
|
NULL
|
NULL
|
|
50073
|
1775
|
44
|
2026-05-18T07:15:22.214285+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088522214_m1.jpg...
|
PhpStorm
|
faVsco.js – Kernel.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
4013489942575271730
|
-7483500116281160310
|
idle
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
Finder FileEditView•••<→ C= [1 Google MeetGoWindowHelp‹ $0 • [ Preparation for Refi... in 4h 45 m [AJ• =@ meet.google.com/landing?authuser=[EMAIL]* 100% <4 &• Mon 18 May 10:15:22.10:15 AM • Mon, May 18+MeetingsD* CallsSecure video conferencingfor everyoneConnect, collaborate, and celebrate from anywhere withGoogle MeetEk New meetingEnter a code or nicknameJoin |3:00 PMSupport Daily3:00 PMPreparation for Refinement4:00 PM[Platform] Refinement QFrom your Google Calendar account: [EMAIL] more about Google Meet...
|
50069
|
NULL
|
NULL
|
NULL
|
|
50075
|
1776
|
34
|
2026-05-18T07:15:24.421241+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088524421_m2.jpg...
|
Finder
|
Work
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"bounds":{"left":0.5046542,"top":0.061452515,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"bounds":{"left":0.51263297,"top":0.08140463,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"bounds":{"left":0.51263297,"top":0.103751,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"bounds":{"left":0.51263297,"top":0.12609737,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"bounds":{"left":0.51263297,"top":0.14844373,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"bounds":{"left":0.51263297,"top":0.1707901,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"}]...
|
7438588266421464298
|
-626844400981122102
|
app_switch
|
hybrid
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
PhostormINavicarecodeFV faVsco.js?° pipedrive-sdk-pocroledey© WhichWorkerlsWorkingOnWhichJob.php(C) ConvertLeadActivities.ongPurgelookupcache.onp© SyncToPlanhat.php> @ Scheduling› D Contractsc createrlaybookcreatedevent.ong• _ Domainv ODTO0 Activitypnp api.onoc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.pho— customerApiC) PlanhatactivityListener.php(C)AskAnythinaPromptService.php(C) AutomatedReportsRepository.ohp_ ExternalServicelntegrations©AutomatedReportsCommand.ohpC) RequestGenerateReport.Job.ohv) ImportcalliInvitation(C)AutomatedReportResult.ohv(C) AutomatedRenort.ohoV EditTeamModal.vueC) UserinvitationdTo.ohpRolesaSCIMCreateTeamRequest.php© UserinvitationDTO.php xclass UserInvitationntoroleras: intlunA2Y4A117 Scorecardi1sowner: b00l.ServiceMUsersuser?: Usen* SattributesT UserEmail.php• M Smails→ M Snumeprivate function __construct(array $attributes)D EventsM ActivitiosSthis->email = mb strtolowerSattributesi'ematl'):>@ ActivityProviderSthis->secondarvemail = Sthis->normalizeNullableSattributes/.secondarvEmaTM AiAutomation$this->groupld = $attributes['groupid'];D AudioTm Rote> D Coaching$this->teamid = (int) $attributes['teamId'];$this->crmRequired = (bool) $attributes['crmRequired']:$this->roleIds = $attributes('rolelds']:_conterencesSthis-sichwnen = Sattnihutecfrichwnentl.,m connections$this->currentUser = Sattributes['user'] ?? null;• _ ermc) Activitycancelled.phpc)ActivitycancelledAsNoshow.phpC) ActivityLeadConverted.phppublic static function for0wner(CreateTeamRequest|EditTeamRequest Sreguest. TeC) ActivityLinkedToerm.phpc) Activitvloaged.onoSroleIds = Role::whereIn( colC)ActivitvScheduled.ohvUser::ROLE ADMINC) AutoLoaActivitv.ohrUser::ROLE RECURDERC) EmailWithCRMObiectsProcessed.ono1)->pluck( colur'id')->toArrayO:C) FollowuoScheduled.ohoC) LeadConverted.oho** ovar User Scurrentlser */C) Stacechanded.nhnScurrentUser = Sreauest->usero:M Dialers> M Meccadesreturn new selfal'email' => Sreauest->aet0wnerEma1loliteamtdt= Steam->aettdiol999 MB ne'crmRequired' => true,'poleTdst => SroleTdsl(e) ActivituCrontod nhn'user' => $currentUser,(e) ActivitvCrmProvidedUodated.ono=custom.log=laravel.logA SF [jiminny@localhost]& console (STAGINGIA HS_local [jiminny@localhost]A console (PROD]fii users (PROD]TestPipedriveOfficialSdkCommand.php© Kernel.php x# console EUl3563573583601374376 O1416456457—486class kernel excenas consolekerneRestoreTracksCommand::class,alle lelond ilalnlelakervsenolminteinteleeeProcessMerged0bjectsCommand::class,nuospordournatroccingconmand..c.asssecupsournacueatweonooksudscrapcronsconmand..class.LiscuournaLweonooksuoscrzpcronscommane..crasskemovebnostrarccrpancscommand..classAUCOdeCeCCALACCIVicy ypecommand::classcommanas crm Logacciv1c1escommana::classPurgeveleredupporcuniclestommand::classkecrvrrospecrsummarvcommand.: classSvncopportunztrestissingF1eldbatacommand::class.Commands Crm.TestPipedrive0fficialSdkcommand::class.orivate Schedule Sschedule:nrivate strind Soutout.protected function schedule(Schedule $schedule): voidt...hTusageprotected function scheduleEveryMinute: void{...}1 usageprotected function scheduleEveryTwoMinutes: void{...}protected function scheduleEveryFiveMinutes(: void{...}protected function scheduleEveryTenMinutesO: voidf...}1 usageprotected function scheduleEveryFifteenMinutesO: void{...}l1usade.protected function scheduleEveryThirtvMinutes(): voids...}1 usageorotected function schedulelourlvo: void..,X Reject File +xaRenect509+ 2 of 2 files →lled (15 minutes adolCascade• Debugging Pipedrive# Preparation for Refi... in 4h 45 m100% C47 • Mon 18 May 10:15:24AskJiminnyReportActivityServiceTest v+0..theldealisito reolace vil for w2. Thislis why therel's task to reolace SDKin the fuirst olace. Reviewlin the code allthe endooints usedlandltindlits eauievalentlin new SDKlusing N22 files +76-28\Ask anvthina (84L)÷ « CodeSWF.16•Reiect alllAccent allWN Windsurf Toams 270-1UTF.8io 4 spaces...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50074
|
1775
|
45
|
2026-05-18T07:15:24.421683+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088524421_m1.jpg...
|
Finder
|
Work
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"on_screen":true,"role_description":"text"}]...
|
5123308607699617931
|
-621562209662933029
|
app_switch
|
hybrid
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Fi Favourites
jiminny
AirDrop
Recents
Applications
Finder FileEdit ViewGo< → G11 Google MeetWindowHelp‹ $0 • [ Preparation for Refi... in 4 h 45 m• =@ meet.google.com/landing?authuser=lukas.kovalik@jiminny.com100% C4 8• Mon 18 May 10:15:2410:15 AM • Mon, May 18+MeetingsD CallsSecure video conferencingfor everyoneConnect, collaborate, and celebrate from anywhere withGanale MestPS-$1Finder3:00 PMSupport Daily3:00 PMPreparation for Refinement4:00 PM[Platform] Refinement OFrom your Google Calendar account: [EMAIL] more about Google MeetLộ3...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50076
|
1775
|
46
|
2026-05-18T07:15:25.747522+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088525747_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Finder FileEditView•••<→ C= [1 Google MeetGoWin Finder FileEditView•••<→ C= [1 Google MeetGoWindowHelp‹ $0 • [ Preparation for Refi... in 4h 45 m t [AJ• =@ meet.google.com/landing?authuser=[EMAIL]* 100% <4 &• Mon 18 May 10:15:2510:15 AM • Mon, May 18+MeetingsD* CallsSecure video conferencingfor everyoneConnect, collaborate, and celebrate from anywhere withGoogle MeetEk New meetingEnter a code or nicknameJoin3:00 PMSupport Daily3:00 PMPreparation for Refinement4:00 PM[Platform] Refinement QFrom your Google Calendar account: [EMAIL] more about Google Meet...
|
NULL
|
8507914800867352753
|
NULL
|
visual_change
|
ocr
|
NULL
|
Finder FileEditView•••<→ C= [1 Google MeetGoWin Finder FileEditView•••<→ C= [1 Google MeetGoWindowHelp‹ $0 • [ Preparation for Refi... in 4h 45 m t [AJ• =@ meet.google.com/landing?authuser=[EMAIL]* 100% <4 &• Mon 18 May 10:15:2510:15 AM • Mon, May 18+MeetingsD* CallsSecure video conferencingfor everyoneConnect, collaborate, and celebrate from anywhere withGoogle MeetEk New meetingEnter a code or nicknameJoin3:00 PMSupport Daily3:00 PMPreparation for Refinement4:00 PM[Platform] Refinement QFrom your Google Calendar account: [EMAIL] more about Google Meet...
|
50074
|
NULL
|
NULL
|
NULL
|
|
50077
|
1776
|
35
|
2026-05-18T07:15:28.663529+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088528663_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rinderWindowrTavsco.sroledey® ActivityController.p rinderWindowrTavsco.sroledey® ActivityController.php© WhichWorkerlsWorkingOnWhichJob.php> @ Scheduling©ConvertLeadActivities.phpPurgelookupcache.onp© SyncToPlanhat.php› D Contractsc createrlaybookcreatedevent.ong• _ Domainv ODTOD Activity— customerApiphp api.phpTeamController.phgc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.phoC) PlanhatactivityListener.php(C)AskAnythinaPromptService.php© AutomatedReportsRepository.php_ ExternalServicelntegrations©AutomatedReportsCommand.ohpphp aoiv2.ohdC) RequestGenerateReport.Job.ohv) ImportcalliInvitation(C)AutomatedReportResult.ohv(C) AutomatedRenort.ohoV EditTeamModal.vueC) UserinvitationdTo.ohpRolesaSCIM• ScorecardServiceDUsers€ UserEmail.php> D Emails→ M SnumeEventsDActivities› D ActivityProviderAiAutomation• D AudioD Bots> D Coaching® CreateTeamRequest.php© UserInvitationDTO.php xclass UserInvitationntoroleras: intlun42Y4AisOwner: bool,user?: Usen* Sattributesprivate function __construct(array $attributes)_conterences> D ConnectionsSthis->email = mb strtolowerSattributesi'emai'1):$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEma$this->groupId = $attributes['groupId'];$this->teamId = (int) $attributes['teamId'];$this->crmRequired = (bool) $attributes[ 'crmReguired'];$this-›roleIds = $attributes['roleIds'];$this->isOwner = Sattributes['isOwner'];$this->currentUser = $attributes['user'] ?? null;v ermc) Activitycancelled.phpc) ActivitycancelledAsNoshow.phpC) ActivityLeadConverted.phppublic static function for0wner(CreateTeamRequest|EditTeamRequest $request,C) ActivityLinkedToerm.phpc) Activitvloaged.onoC)ActivitvScheduled.ohv$roleIds = Role::whereIn( coluUser::ROLE ADMINC) AutoLoaActivitv.ohrC) EmailWithCRMObiectsProcessed.onoUser::ROLE RECURDER1) ->pluck( colum'id') ->toArray();C) FollowuoScheduled.ono©LeadConverted.php** ovar User Scurrentlser */C) Stacechanded.nhnScurrentUser = Sreauest->usero:M Dialers> • Messagesreturn new selfal'email' => Sreauest->aet0wnerEma1loliteamtdt= Steam->aettdiol999 MB ne'crmReguired' = true,'poleTdst => SroleTdsl©ActivityCreated.php'user' => $currentUser,© ActivityCrmProvidedUpdated.phpE custom.log#laravel.logA HS_local (jiminny@localhost]A SF [jiminny@localhost]A console (PROD]# console Eul355356357358360362V 3653653673691374376 đ456457—486class kernel excenas consolekernelRestoreTracksCommand: :class,alle lelond iainlalakeHnveelmintennte eProcessMerged0bjectsCommand: :clasHubspotJournalPolLingCommand: :clalsecupsournalueatweonookouoscriptListJournalWebhookSubscriptionsCoomlalVomalatelawanCalnlntooAUCOdeCECCALACCIViCy ypelommand.commanos crm Logacc1viclesCommancommanas crm nacchupporcunityact!Purgeveleredupporcunlclestommandkecrvrrospecrsummarvcommand..clasSvncopoortunztrestissingF1eldbat.Commands Crm TestPipedrivedfficinrivate Schedule Sschedule:orotected function schedule ScheduleTusageprotected function scheduleEveryMinutprotected function scheduleEveryTwoMiprotected function scheduleEveryFiveMprotected function scheduleEveryTenMiprotected function schedule-vervr1fte1usade.orotected function schedule-vervthirt1 usageorotected function scheduleHourlvo:88E0Cravouinitjiminny•) AirDrop• Recents* Applications9 Documents• Downloadsi lukas• iCloud Drive999 Svnc toldeE GARMINDXP4800PLUS-B5F =® Network• CRMOrange• Red• Yellow• Green• Blue• Purple@ All Tags...workback/rorwareName: CleanShot 2026-05-18 at 09.46.25.mp4EN BE Chapter 2026-05-15 (Claude Code).mp4= Daily 2026-05-15.mp4Dallv 2026-05-14.m04ew Planning 2026-04-15.mp4aa Planning 2026-05-13.mp4• кetro 2020-00-12.mo4•: Dailv 2026-05-12 mo4E PLanhat Petko interest event 2026-05-11.mp4* Daily 2026-05-11.mp4Dailv 2026-05-08.mo4*и 1-1 2026-05-07.mp41-1 2026-04-24.M04= Daily 2026-04-24.mn4em User Pilot introduction Adi 2026-04-23.mp4m Daily 2026-04-23.mp4Dailv 2026-04-22.moL= Refinement 2026-04-06.mp4- Daily 2026-04-21.mp4Refineent 2026-04-20.mo4Daily 2026-04-20 mn4*z Daily 2026-04-17.mp4Ws Daily 2026-04-16.mp4• Daily 2026-04-14.mp4• User pilot (Adi) 2026-04-09.mp4Dailv 2026-04-09.mo4wa Daily 2026 04-09 mл/a Daily 2026-04-07.mp4"a Daily 2026-04-06.mp4les Planning 2026-04-01 & task split.mp4Retro 2026-03-31.mp4Dailv 2026-03-31.mo4- Refinement 2026-03-30.mp4=: Daily 2026-03-27.mp4• Daily 2026-02-26 mn/- Daily 2026-03-24.mp4- Refinement 2026-03-23.mp4= Daillv 2026-03-23.mo4** BE chapter 2026-03-20.mp4- Daily 2026-03-20.mp4# Planina 2026-03-18-converted.mp4Refinement 2026-02-09-converted.mp4Ea Daily 2026-03-19.mp4- Review 2026-03-18.mp4Dlanina 2026-03-18.mn/Ru Retro 2026-03-17.mp4: Refinement 2026-03-16.mp4F Daily 2026,02.16 mn/lI Daily 2026-03-13.mp41: 1-1 2026-03-12.mp4oroupj Preparation for Refi... in 4h 45 m100% 2Q SearchShare Add Tags ActionDate ModifiedToday at 10:1315 May 2026 at 10:5415 May 2026 at 10:0214 Mav 2026 at 10.1k13 May 2026 at 13:0912 May Z0z6 al 1/:3012 Mav 2026 at 10:1311 May 2026 at 12:2211 May 2026 at 10:028 Mav 2026 at 10:227 May 2026 at 18:217 May 2026 at 10:1024 Apr 2026 at 14:4424 Apr 2026 at 10:1123 Apr 2026 at 11:5823 Apr 2026 at 10:3222 Aor 2026 at 10:2121 Apr 2026 at 11:0221 Apr 2026 at 10:0020 Aor 2026 at 16:5620 Apr 2026 at 10:0617 Apr 2026 at 10:1616 Apr 2026 at 10:0014 Aor 2026 at 17:3714 Apr 2026 at 10:099 Apr 2026 at 14:479 Aor 2026 at 10:078 Apr 2026 at 10:137 Apr 2026 at 10:016 Apr 2026 at 10:083 Aor 2026 at 10:211 Apr 2026 at 12:2031 Mar 2026 at 18:2931 Mar 2026 at 10:1030 Mar 2026 at 17:1227 Mar 2026 at 10:0926 Mar 2026 at 0:50l24 Mar 2026 at 10:0023 Mar 2026 at 17:0323 Mar 2026 at 10:0020 Mar 2026 at 11:4620 Mar 2026 at 10:0619 Mar 2026 at 12:0119 Mar 2026 at 11:3519 Mar 2026 at 9:5718 Mar 2026 at 16:2017 Mar 2026 at 17:4016 Mar 2026 at 16:5516 Mar 2026 at 10:02Mon 18 May 10:15:28982 MEMPEG-4 movie737,7 MBMPEG-4 movie557,5 MBMPEG-4 movie968.5 M:MPEG-4 movie2,79 GBMPEG-4 movie1,87 CBT0s GtMPEG-4 movie1.02 GEMPEG-4 movie144,5 MBMPEG-4 movie491,3 MBMPEG-4 movie1.37 G:MPEG-4 movie1,55 GB MPEG-4 movie931,7 MB1,86 G.MPEG-4 movie832 2 MBMPEG-4 movie724 MBMPEG-4 movie1,74 GBMPEG-4 movie1.36 GEMPEG-4 movie2,41 GBMPEG-4 movie567,8 MB4.25 G:MPEG-4 movie698,5 MBMPEG-4 movie1,16 GBMPEG-4 movie513,4 MBMPEG-4 movie1.44 GEMPEG-4 movie924,4 MB MPEG-4 movie362,6 MB748.8 M:MPEG-4 movie1,04 GBMPEG-4 movie575,5 MBMPEG-4 movie720,5 MBMPEG-4 movie1.02 GEMPEG-4 movie4,68 GBMPEG-4 movie3,4 GB923.6 M:2,77 GBMPEG-4 movieMPEG-4 movieMPEG-4 movie884,3 MBMPEG-4 movieA766MPMDEG-A movie550,8 MB MPEG-4 movie3,44 GB438.9 M:MPEG-4 movie1,68 GBMPEG-4 movie2.38 GBMPEG-4 movie226 GR MDSG-A movid386,3 MB MPEG-4 movie705,8 MB1 .78 G:1,53 GBMPEG-4 movie4.19 GBMPEG-4 movie502 2 MPMDEG.A movid1,02 GB MPEG-4 movieMPEG-4 movie1 or 161 selected, 7. 89 TB available...
|
NULL
|
8140718977654185821
|
NULL
|
click
|
ocr
|
NULL
|
rinderWindowrTavsco.sroledey® ActivityController.p rinderWindowrTavsco.sroledey® ActivityController.php© WhichWorkerlsWorkingOnWhichJob.php> @ Scheduling©ConvertLeadActivities.phpPurgelookupcache.onp© SyncToPlanhat.php› D Contractsc createrlaybookcreatedevent.ong• _ Domainv ODTOD Activity— customerApiphp api.phpTeamController.phgc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.phoC) PlanhatactivityListener.php(C)AskAnythinaPromptService.php© AutomatedReportsRepository.php_ ExternalServicelntegrations©AutomatedReportsCommand.ohpphp aoiv2.ohdC) RequestGenerateReport.Job.ohv) ImportcalliInvitation(C)AutomatedReportResult.ohv(C) AutomatedRenort.ohoV EditTeamModal.vueC) UserinvitationdTo.ohpRolesaSCIM• ScorecardServiceDUsers€ UserEmail.php> D Emails→ M SnumeEventsDActivities› D ActivityProviderAiAutomation• D AudioD Bots> D Coaching® CreateTeamRequest.php© UserInvitationDTO.php xclass UserInvitationntoroleras: intlun42Y4AisOwner: bool,user?: Usen* Sattributesprivate function __construct(array $attributes)_conterences> D ConnectionsSthis->email = mb strtolowerSattributesi'emai'1):$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEma$this->groupId = $attributes['groupId'];$this->teamId = (int) $attributes['teamId'];$this->crmRequired = (bool) $attributes[ 'crmReguired'];$this-›roleIds = $attributes['roleIds'];$this->isOwner = Sattributes['isOwner'];$this->currentUser = $attributes['user'] ?? null;v ermc) Activitycancelled.phpc) ActivitycancelledAsNoshow.phpC) ActivityLeadConverted.phppublic static function for0wner(CreateTeamRequest|EditTeamRequest $request,C) ActivityLinkedToerm.phpc) Activitvloaged.onoC)ActivitvScheduled.ohv$roleIds = Role::whereIn( coluUser::ROLE ADMINC) AutoLoaActivitv.ohrC) EmailWithCRMObiectsProcessed.onoUser::ROLE RECURDER1) ->pluck( colum'id') ->toArray();C) FollowuoScheduled.ono©LeadConverted.php** ovar User Scurrentlser */C) Stacechanded.nhnScurrentUser = Sreauest->usero:M Dialers> • Messagesreturn new selfal'email' => Sreauest->aet0wnerEma1loliteamtdt= Steam->aettdiol999 MB ne'crmReguired' = true,'poleTdst => SroleTdsl©ActivityCreated.php'user' => $currentUser,© ActivityCrmProvidedUpdated.phpE custom.log#laravel.logA HS_local (jiminny@localhost]A SF [jiminny@localhost]A console (PROD]# console Eul355356357358360362V 3653653673691374376 đ456457—486class kernel excenas consolekernelRestoreTracksCommand: :class,alle lelond iainlalakeHnveelmintennte eProcessMerged0bjectsCommand: :clasHubspotJournalPolLingCommand: :clalsecupsournalueatweonookouoscriptListJournalWebhookSubscriptionsCoomlalVomalatelawanCalnlntooAUCOdeCECCALACCIViCy ypelommand.commanos crm Logacc1viclesCommancommanas crm nacchupporcunityact!Purgeveleredupporcunlclestommandkecrvrrospecrsummarvcommand..clasSvncopoortunztrestissingF1eldbat.Commands Crm TestPipedrivedfficinrivate Schedule Sschedule:orotected function schedule ScheduleTusageprotected function scheduleEveryMinutprotected function scheduleEveryTwoMiprotected function scheduleEveryFiveMprotected function scheduleEveryTenMiprotected function schedule-vervr1fte1usade.orotected function schedule-vervthirt1 usageorotected function scheduleHourlvo:88E0Cravouinitjiminny•) AirDrop• Recents* Applications9 Documents• Downloadsi lukas• iCloud Drive999 Svnc toldeE GARMINDXP4800PLUS-B5F =® Network• CRMOrange• Red• Yellow• Green• Blue• Purple@ All Tags...workback/rorwareName: CleanShot 2026-05-18 at 09.46.25.mp4EN BE Chapter 2026-05-15 (Claude Code).mp4= Daily 2026-05-15.mp4Dallv 2026-05-14.m04ew Planning 2026-04-15.mp4aa Planning 2026-05-13.mp4• кetro 2020-00-12.mo4•: Dailv 2026-05-12 mo4E PLanhat Petko interest event 2026-05-11.mp4* Daily 2026-05-11.mp4Dailv 2026-05-08.mo4*и 1-1 2026-05-07.mp41-1 2026-04-24.M04= Daily 2026-04-24.mn4em User Pilot introduction Adi 2026-04-23.mp4m Daily 2026-04-23.mp4Dailv 2026-04-22.moL= Refinement 2026-04-06.mp4- Daily 2026-04-21.mp4Refineent 2026-04-20.mo4Daily 2026-04-20 mn4*z Daily 2026-04-17.mp4Ws Daily 2026-04-16.mp4• Daily 2026-04-14.mp4• User pilot (Adi) 2026-04-09.mp4Dailv 2026-04-09.mo4wa Daily 2026 04-09 mл/a Daily 2026-04-07.mp4"a Daily 2026-04-06.mp4les Planning 2026-04-01 & task split.mp4Retro 2026-03-31.mp4Dailv 2026-03-31.mo4- Refinement 2026-03-30.mp4=: Daily 2026-03-27.mp4• Daily 2026-02-26 mn/- Daily 2026-03-24.mp4- Refinement 2026-03-23.mp4= Daillv 2026-03-23.mo4** BE chapter 2026-03-20.mp4- Daily 2026-03-20.mp4# Planina 2026-03-18-converted.mp4Refinement 2026-02-09-converted.mp4Ea Daily 2026-03-19.mp4- Review 2026-03-18.mp4Dlanina 2026-03-18.mn/Ru Retro 2026-03-17.mp4: Refinement 2026-03-16.mp4F Daily 2026,02.16 mn/lI Daily 2026-03-13.mp41: 1-1 2026-03-12.mp4oroupj Preparation for Refi... in 4h 45 m100% 2Q SearchShare Add Tags ActionDate ModifiedToday at 10:1315 May 2026 at 10:5415 May 2026 at 10:0214 Mav 2026 at 10.1k13 May 2026 at 13:0912 May Z0z6 al 1/:3012 Mav 2026 at 10:1311 May 2026 at 12:2211 May 2026 at 10:028 Mav 2026 at 10:227 May 2026 at 18:217 May 2026 at 10:1024 Apr 2026 at 14:4424 Apr 2026 at 10:1123 Apr 2026 at 11:5823 Apr 2026 at 10:3222 Aor 2026 at 10:2121 Apr 2026 at 11:0221 Apr 2026 at 10:0020 Aor 2026 at 16:5620 Apr 2026 at 10:0617 Apr 2026 at 10:1616 Apr 2026 at 10:0014 Aor 2026 at 17:3714 Apr 2026 at 10:099 Apr 2026 at 14:479 Aor 2026 at 10:078 Apr 2026 at 10:137 Apr 2026 at 10:016 Apr 2026 at 10:083 Aor 2026 at 10:211 Apr 2026 at 12:2031 Mar 2026 at 18:2931 Mar 2026 at 10:1030 Mar 2026 at 17:1227 Mar 2026 at 10:0926 Mar 2026 at 0:50l24 Mar 2026 at 10:0023 Mar 2026 at 17:0323 Mar 2026 at 10:0020 Mar 2026 at 11:4620 Mar 2026 at 10:0619 Mar 2026 at 12:0119 Mar 2026 at 11:3519 Mar 2026 at 9:5718 Mar 2026 at 16:2017 Mar 2026 at 17:4016 Mar 2026 at 16:5516 Mar 2026 at 10:02Mon 18 May 10:15:28982 MEMPEG-4 movie737,7 MBMPEG-4 movie557,5 MBMPEG-4 movie968.5 M:MPEG-4 movie2,79 GBMPEG-4 movie1,87 CBT0s GtMPEG-4 movie1.02 GEMPEG-4 movie144,5 MBMPEG-4 movie491,3 MBMPEG-4 movie1.37 G:MPEG-4 movie1,55 GB MPEG-4 movie931,7 MB1,86 G.MPEG-4 movie832 2 MBMPEG-4 movie724 MBMPEG-4 movie1,74 GBMPEG-4 movie1.36 GEMPEG-4 movie2,41 GBMPEG-4 movie567,8 MB4.25 G:MPEG-4 movie698,5 MBMPEG-4 movie1,16 GBMPEG-4 movie513,4 MBMPEG-4 movie1.44 GEMPEG-4 movie924,4 MB MPEG-4 movie362,6 MB748.8 M:MPEG-4 movie1,04 GBMPEG-4 movie575,5 MBMPEG-4 movie720,5 MBMPEG-4 movie1.02 GEMPEG-4 movie4,68 GBMPEG-4 movie3,4 GB923.6 M:2,77 GBMPEG-4 movieMPEG-4 movieMPEG-4 movie884,3 MBMPEG-4 movieA766MPMDEG-A movie550,8 MB MPEG-4 movie3,44 GB438.9 M:MPEG-4 movie1,68 GBMPEG-4 movie2.38 GBMPEG-4 movie226 GR MDSG-A movid386,3 MB MPEG-4 movie705,8 MB1 .78 G:1,53 GBMPEG-4 movie4.19 GBMPEG-4 movie502 2 MPMDEG.A movid1,02 GB MPEG-4 movieMPEG-4 movie1 or 161 selected, 7. 89 TB available...
|
50075
|
NULL
|
NULL
|
NULL
|
|
50078
|
1775
|
47
|
2026-05-18T07:15:30.981502+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088530981_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Finder FileEditViewGo<→c= [1 Google MeetWindowH Finder FileEditViewGo<→c= [1 Google MeetWindowHelp‹ $0 • [ Preparation for Refi... in 4h 45 m t [AJ• =@ meet.google.com/landing?authuser=[EMAIL]* 100% <4 &• Mon 18 May 10:15:3010:15 AM • Mon, May 18+MeetingsD* CallsSecure video conferencingfor everyoneConnect, collaborate, and celebrate from anywhere withGoogle MeetEk New meetingEnter a code or nicknameJoin |3:00 PMSupport Daily3:00 PMPreparation for Refinement4:00 PM[Platform] Refinement QFrom your Google Calendar account: [EMAIL] more about Google Meet...
|
NULL
|
-2283609698464861946
|
NULL
|
click
|
ocr
|
NULL
|
Finder FileEditViewGo<→c= [1 Google MeetWindowH Finder FileEditViewGo<→c= [1 Google MeetWindowHelp‹ $0 • [ Preparation for Refi... in 4h 45 m t [AJ• =@ meet.google.com/landing?authuser=[EMAIL]* 100% <4 &• Mon 18 May 10:15:3010:15 AM • Mon, May 18+MeetingsD* CallsSecure video conferencingfor everyoneConnect, collaborate, and celebrate from anywhere withGoogle MeetEk New meetingEnter a code or nicknameJoin |3:00 PMSupport Daily3:00 PMPreparation for Refinement4:00 PM[Platform] Refinement QFrom your Google Calendar account: [EMAIL] more about Google Meet...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50079
|
NULL
|
0
|
2026-05-18T07:15:32.093975+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088532093_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rinderWindowrTavsco.sProleteyCActivityController.o rinderWindowrTavsco.sProleteyCActivityController.ong© WhichWorkerlsWorkingOnWhichJob.phpC)ConvertLeadActivities.pnpPurgelookupcache.onp© SyncToPlanhat.php> @ Scheduling› D Contractsc createrlaybookcreatedevent.ong• _ Domainv ODTO0 Activitypnp api.onoTeamController.phgc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.pho— customerApiC) PlanhatactivityListener.php(C)AskAnythinaPromptService.php(C) AutomatedReportsRepository.php_ ExternalServicelntegrations©AutomatedReportsCommand.ohpphp aoiv2.ohdC) RequestGenerateReport.Job.ohv) ImportcalliInvitation(C)AutomatedReportResult.ohv(C) AutomatedRenort.ohoV EditTeamModal.vueC) UserinvitationdTo.ohpRolesaSCIMCreateTeamRequest.php© UserinvitationDTO.php xclass UserInvitationntoroleras: intlun42Y4A117 Scorecardi1sowner: b00l.ServiceM UsersT UserEmail.phpM Smailsuser?: Usen* Sattributes→ M Snumeprivate function __construct(array $attributes)D EventsM ActivitiesSthis->email = mb strtolowerSattributesi'ematlri):>@ ActivityProviderSthis->secondarvemail = Sthis->normalizeNullableSattributes/secondarvEmaTM AiAutomation$this->groupld = $attributes['groupid'];• & Audio.Tm Rote>D Coaching$this->teamid = (int) $attributes['teamId'];$this->crmRequired = (bool) $attributes['crmRequired']:$this->roleIds = $attributes('rolelds']:_conterencesSthis-sichwnen = Sattrihutecfrichwnent1»,m connections$this->currentUser = Sattributes['user'] ?? null;v ermc) Activitycancelled.phpc)ActivitycancelledAsNoshow.phpC) ActivityLeadConverted.phppublic static function for0wner(CreateTeamRequest|EditTeamRequest Sreguest.C) ActivityLinkedToerm.phpc) Activitvloaged.onoSroleIds = Role::whereIn( colC)ActivitvScheduled.ohvUser::ROLE ADMINC) AutoLoaActivitv.ohrUser::ROLE RECURDERC) EmailWithCRMObiectsProcessed.ono1)->pluck( colur'id')->toArrayO:C) FollowuoScheduled.onoC) LeadConverted.oho** ovar User Scurrentlser */C) Stacechanded.nhnScurrentUser = Sreauest->usero:M Dialers> M Meccadesreturn new selfal'email' => Sreauest->aet0wnerEma1loliteamtdt= Steam->aettdiol999 MB ne'crmRequired' => true,'poleTdst => SroleTdsl(e) ActivituCrontod nhn'user' => $currentUser,© ActivityCrmProvidedUpdated.php=custom.log=laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]# console EUl355356357358360362v 3633653673683691374376 O1456457—486class kernel excenas consolekernelRestoreTracksCommand::class,alule lelond iainlalakenveenelnintennte eProcessMerged0bjectsCommand::cla:Huhcnot lounnal Poll inaCommand• • clasecupsournalueatweonooksuoscriptLict.lourna1WehhookSuhcenintioncd.AUCOdeCECCALACCIViCy ypelommand.commanos crm Logacc1viclesCommancommanas crm nacchupporcunityact!Purgeveleredupporcunlclestommandkecrvrrospecrsummarvcommand..clasSvncOpportunztrestissingFieldbat.Commands Crm TestPipedrivedfficiorivate Schedule Sschedule:orotected function schedule ScheduleTusageprotected function scheduleEveryMinutprotected function scheduleEveryTwoM:procected function scheduleFvonvsivovprotected function scheduleEveryTenMprotected function schedulezvery-1fte1usade.orotected function schedule-vervthirt1 usageorotected function scheduleHourlvo:88E0Cravouinit• jiminny(• AirDrop•) Recents* Applications9 Documents(• Downloadci lukas• iCloud Drive999 Svnc toldeE GARMINDXP4800PLUS-B5F =4 Network• CRMOrange• Red• Yellow• Green• Blue• Purple• All Tags...workback/rorwareNamena Dailv 2026-05-18 at 09.46.25.mo4EX BE Chapter 2026-05-15 (Claude Code).mp4= Daily 2026-05-15.mp4Dallv 2026-05-14.m04ew Planning 2026-04-15.mp4Ra Planning 2026-05-13.mp4• кetro 2020-00-12.mo4•: Dailv 2026-05-12 mo4PLanhat Petko interest event 2026-05-11.mp4* Daily 2026-05-11.mp4Dailv 2026-05-08.mo4я 1-1 2026-05-07.mp41-1 2026-04-24.M04= Daily 2026-04-24.mn4ee User Pilot introduction Adi 2026-04-23.mp4#n Daily 2026-04-23.mp4Dailv 2026-04-22.moLиR Refinement 2026-04-06.mp4Daily 2026-04-21.mp4Refineent 2026-04-20.mo4Daily 2026-04-20 mn4t Daily 2026-04-17.mpWs Daily 2026-04-16.mp4Daily 2026-04-14.mp4• User pilot (Adi) 2026-04-09.mp4Dailv 2026-04-09.mo4wa Daily 2026 04-09 mл/t Daily 2026-04-07 mn4"a Daily 2026-04-06.mp4las Plannina 2026-04-01 & task split.mp4Retro 2026-03-31.mp4Dailv 2026-03-31.mo4- Refinement 2026-03-30.mp4=: Daily 2026-03-27.mp4• Daily 2026-02-26 mn/• Daily 2026-03-24.mp4- Refinement 2026-03-23.mp4= Daillv 2026-03-23.mo4** BE chapter 2026-03-20.mp4- Daily 2026-03-20.mp4# Planina 2026-03-18-converted.mp4E Pafinement 2026.02.00-convertod mn//PER Daily 2026-03-19.mp4= Review 2026-03-18.mp4Dlanina 2026-03-18.mn/TDotra 0ne00.17 mлл.: Refinement 2026-03-16.mp4F Daily 2026,02.16 mn/la Daily 2026-03-13.mр4ih 1-1 2026-03-12.mp4000 Voroup# Preparation for Refi... in 4h 45 m100% 2Q SearchShare Add Tags ActionDate Modifiedloday at 10:13Todav at 10:1315 May 2026 at 10:5415 May 2026 at 10:0214 Mav 2026 at 10.1k13 May 2026 at 13:0913 May 2026 at 10:5112 May Z0zo al1/.3012 Mav 2026 at 10:1311 May 2026 at 12:2211 May 2026 at 10:028 Mav 2026 at 10:227 May 2026 at 18:217 May 2026 at 10:1024 Apr 2026 at 14:4424 Aor 2026 at 10:1123 Apr 2026 at 11:5823 Apr 2026 at 10:3222 Aor 2026 at 10:2121 Apr 2026 at 11:0221 Apr 2026 at 10:0020 Aor 2026 at 16:5620 Anr 2026 at 10:0617 Apr 2026 at 10:1616 Apr 2026 at 10:0014 Aor 2026 at 17:3714 Apr 2026 at 10:099 Apr 2026 at 14:479 Aor 2026 at 10:07QAnr 2026 at 10:127 Apr 2026 at 10:016 Apr 2026 at 10:083 Aor 2026 at 10:211 Apr 2026 at 12:2031 Mar 2026 at 18:2931 Mar 2026 at 10:1020 Mar 2026 at 17:1227 Mar 2026 at 10:0926 Mar 2026 at 0:50l24 Mar 2026 at 10:0023 Mar 2026 at 17:0323 Mar 2026 at 10:00Mer dt 41:1620 Mar 2026 at 10:0619 Mar 2026 at 12:0110 Mar 2026 at 11:2519 Mar 2026 at 9:5718 Mar 2026 at 16:2017 Mor 2006 6t 17:1016 Mar 2026 at 16:5516 Mar 2026 at 10:02Mon 18 May 10:15:31982 MEMPEG-4 movie737,7 MBMPEG-4 movie557,5 MBMPEG-4 movie968.5 M:MPEG-4 movie2,79 GBMDEG-A movie1,87 CBT0s GtMPEG-4 movie1.02 GEMPEG-4 movie144,5 MBMPEG-4 movie491,3 MEMPEG-4 movie1.37 G:MPEG-4 movie1,55 GB MPEG-4 movie931,7 MB1,86 G.MPEG-4 movie832 2 MBMPFG-A movid724 MBMPEG-4 movie1,74 GBMPEG-4 movie1.36 GEMPEG-4 movie2,41 GBMPEG-4 movie567,8 MB4.25 G:MPEG-4 movie698 5 MRMPEG-A movie1,16 GBMPEG-4 movie513,4 MBMPEG-4 movie1.44 GEMPEG-4 movie924,4 MB MPEG-4 movie362,6 MB748.8 M:MPEG-4 movie1,04 GBMDEC A movic575,5 MBMPEG-4 movie720,5 MEMPEG-4 movie1.02 GEMPEG-4 movie4,68 GBMPEG-4 movie3,4 GBMPEG-4 movie923.6 M:MPEG-4 movien 77 CpMDEC.A movidMPEG-4 movie884,3 MEMPEG-4 movieA766MPMDEG-A movie550,8 MB MPEG-4 movie3,44 GB438.9 M:1.68 GBMPEG-4 movieMDECA movid2.38 GBMPEG-4 movie226 GR MDSG-A movid386.3 MB MPEG-4 movie705,8 MB1 .78 G:15a epMDECA movid4.19 GBMPEG-4 movie502 2 MPMDEG.A movid1.02 GB MPEG-4 movieMPEG-4 movie1 or 161 selected, 7. 89 TB available...
|
NULL
|
4492136251444179136
|
NULL
|
click
|
ocr
|
NULL
|
rinderWindowrTavsco.sProleteyCActivityController.o rinderWindowrTavsco.sProleteyCActivityController.ong© WhichWorkerlsWorkingOnWhichJob.phpC)ConvertLeadActivities.pnpPurgelookupcache.onp© SyncToPlanhat.php> @ Scheduling› D Contractsc createrlaybookcreatedevent.ong• _ Domainv ODTO0 Activitypnp api.onoTeamController.phgc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.pho— customerApiC) PlanhatactivityListener.php(C)AskAnythinaPromptService.php(C) AutomatedReportsRepository.php_ ExternalServicelntegrations©AutomatedReportsCommand.ohpphp aoiv2.ohdC) RequestGenerateReport.Job.ohv) ImportcalliInvitation(C)AutomatedReportResult.ohv(C) AutomatedRenort.ohoV EditTeamModal.vueC) UserinvitationdTo.ohpRolesaSCIMCreateTeamRequest.php© UserinvitationDTO.php xclass UserInvitationntoroleras: intlun42Y4A117 Scorecardi1sowner: b00l.ServiceM UsersT UserEmail.phpM Smailsuser?: Usen* Sattributes→ M Snumeprivate function __construct(array $attributes)D EventsM ActivitiesSthis->email = mb strtolowerSattributesi'ematlri):>@ ActivityProviderSthis->secondarvemail = Sthis->normalizeNullableSattributes/secondarvEmaTM AiAutomation$this->groupld = $attributes['groupid'];• & Audio.Tm Rote>D Coaching$this->teamid = (int) $attributes['teamId'];$this->crmRequired = (bool) $attributes['crmRequired']:$this->roleIds = $attributes('rolelds']:_conterencesSthis-sichwnen = Sattrihutecfrichwnent1»,m connections$this->currentUser = Sattributes['user'] ?? null;v ermc) Activitycancelled.phpc)ActivitycancelledAsNoshow.phpC) ActivityLeadConverted.phppublic static function for0wner(CreateTeamRequest|EditTeamRequest Sreguest.C) ActivityLinkedToerm.phpc) Activitvloaged.onoSroleIds = Role::whereIn( colC)ActivitvScheduled.ohvUser::ROLE ADMINC) AutoLoaActivitv.ohrUser::ROLE RECURDERC) EmailWithCRMObiectsProcessed.ono1)->pluck( colur'id')->toArrayO:C) FollowuoScheduled.onoC) LeadConverted.oho** ovar User Scurrentlser */C) Stacechanded.nhnScurrentUser = Sreauest->usero:M Dialers> M Meccadesreturn new selfal'email' => Sreauest->aet0wnerEma1loliteamtdt= Steam->aettdiol999 MB ne'crmRequired' => true,'poleTdst => SroleTdsl(e) ActivituCrontod nhn'user' => $currentUser,© ActivityCrmProvidedUpdated.php=custom.log=laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]# console EUl355356357358360362v 3633653673683691374376 O1456457—486class kernel excenas consolekernelRestoreTracksCommand::class,alule lelond iainlalakenveenelnintennte eProcessMerged0bjectsCommand::cla:Huhcnot lounnal Poll inaCommand• • clasecupsournalueatweonooksuoscriptLict.lourna1WehhookSuhcenintioncd.AUCOdeCECCALACCIViCy ypelommand.commanos crm Logacc1viclesCommancommanas crm nacchupporcunityact!Purgeveleredupporcunlclestommandkecrvrrospecrsummarvcommand..clasSvncOpportunztrestissingFieldbat.Commands Crm TestPipedrivedfficiorivate Schedule Sschedule:orotected function schedule ScheduleTusageprotected function scheduleEveryMinutprotected function scheduleEveryTwoM:procected function scheduleFvonvsivovprotected function scheduleEveryTenMprotected function schedulezvery-1fte1usade.orotected function schedule-vervthirt1 usageorotected function scheduleHourlvo:88E0Cravouinit• jiminny(• AirDrop•) Recents* Applications9 Documents(• Downloadci lukas• iCloud Drive999 Svnc toldeE GARMINDXP4800PLUS-B5F =4 Network• CRMOrange• Red• Yellow• Green• Blue• Purple• All Tags...workback/rorwareNamena Dailv 2026-05-18 at 09.46.25.mo4EX BE Chapter 2026-05-15 (Claude Code).mp4= Daily 2026-05-15.mp4Dallv 2026-05-14.m04ew Planning 2026-04-15.mp4Ra Planning 2026-05-13.mp4• кetro 2020-00-12.mo4•: Dailv 2026-05-12 mo4PLanhat Petko interest event 2026-05-11.mp4* Daily 2026-05-11.mp4Dailv 2026-05-08.mo4я 1-1 2026-05-07.mp41-1 2026-04-24.M04= Daily 2026-04-24.mn4ee User Pilot introduction Adi 2026-04-23.mp4#n Daily 2026-04-23.mp4Dailv 2026-04-22.moLиR Refinement 2026-04-06.mp4Daily 2026-04-21.mp4Refineent 2026-04-20.mo4Daily 2026-04-20 mn4t Daily 2026-04-17.mpWs Daily 2026-04-16.mp4Daily 2026-04-14.mp4• User pilot (Adi) 2026-04-09.mp4Dailv 2026-04-09.mo4wa Daily 2026 04-09 mл/t Daily 2026-04-07 mn4"a Daily 2026-04-06.mp4las Plannina 2026-04-01 & task split.mp4Retro 2026-03-31.mp4Dailv 2026-03-31.mo4- Refinement 2026-03-30.mp4=: Daily 2026-03-27.mp4• Daily 2026-02-26 mn/• Daily 2026-03-24.mp4- Refinement 2026-03-23.mp4= Daillv 2026-03-23.mo4** BE chapter 2026-03-20.mp4- Daily 2026-03-20.mp4# Planina 2026-03-18-converted.mp4E Pafinement 2026.02.00-convertod mn//PER Daily 2026-03-19.mp4= Review 2026-03-18.mp4Dlanina 2026-03-18.mn/TDotra 0ne00.17 mлл.: Refinement 2026-03-16.mp4F Daily 2026,02.16 mn/la Daily 2026-03-13.mр4ih 1-1 2026-03-12.mp4000 Voroup# Preparation for Refi... in 4h 45 m100% 2Q SearchShare Add Tags ActionDate Modifiedloday at 10:13Todav at 10:1315 May 2026 at 10:5415 May 2026 at 10:0214 Mav 2026 at 10.1k13 May 2026 at 13:0913 May 2026 at 10:5112 May Z0zo al1/.3012 Mav 2026 at 10:1311 May 2026 at 12:2211 May 2026 at 10:028 Mav 2026 at 10:227 May 2026 at 18:217 May 2026 at 10:1024 Apr 2026 at 14:4424 Aor 2026 at 10:1123 Apr 2026 at 11:5823 Apr 2026 at 10:3222 Aor 2026 at 10:2121 Apr 2026 at 11:0221 Apr 2026 at 10:0020 Aor 2026 at 16:5620 Anr 2026 at 10:0617 Apr 2026 at 10:1616 Apr 2026 at 10:0014 Aor 2026 at 17:3714 Apr 2026 at 10:099 Apr 2026 at 14:479 Aor 2026 at 10:07QAnr 2026 at 10:127 Apr 2026 at 10:016 Apr 2026 at 10:083 Aor 2026 at 10:211 Apr 2026 at 12:2031 Mar 2026 at 18:2931 Mar 2026 at 10:1020 Mar 2026 at 17:1227 Mar 2026 at 10:0926 Mar 2026 at 0:50l24 Mar 2026 at 10:0023 Mar 2026 at 17:0323 Mar 2026 at 10:00Mer dt 41:1620 Mar 2026 at 10:0619 Mar 2026 at 12:0110 Mar 2026 at 11:2519 Mar 2026 at 9:5718 Mar 2026 at 16:2017 Mor 2006 6t 17:1016 Mar 2026 at 16:5516 Mar 2026 at 10:02Mon 18 May 10:15:31982 MEMPEG-4 movie737,7 MBMPEG-4 movie557,5 MBMPEG-4 movie968.5 M:MPEG-4 movie2,79 GBMDEG-A movie1,87 CBT0s GtMPEG-4 movie1.02 GEMPEG-4 movie144,5 MBMPEG-4 movie491,3 MEMPEG-4 movie1.37 G:MPEG-4 movie1,55 GB MPEG-4 movie931,7 MB1,86 G.MPEG-4 movie832 2 MBMPFG-A movid724 MBMPEG-4 movie1,74 GBMPEG-4 movie1.36 GEMPEG-4 movie2,41 GBMPEG-4 movie567,8 MB4.25 G:MPEG-4 movie698 5 MRMPEG-A movie1,16 GBMPEG-4 movie513,4 MBMPEG-4 movie1.44 GEMPEG-4 movie924,4 MB MPEG-4 movie362,6 MB748.8 M:MPEG-4 movie1,04 GBMDEC A movic575,5 MBMPEG-4 movie720,5 MEMPEG-4 movie1.02 GEMPEG-4 movie4,68 GBMPEG-4 movie3,4 GBMPEG-4 movie923.6 M:MPEG-4 movien 77 CpMDEC.A movidMPEG-4 movie884,3 MEMPEG-4 movieA766MPMDEG-A movie550,8 MB MPEG-4 movie3,44 GB438.9 M:1.68 GBMPEG-4 movieMDECA movid2.38 GBMPEG-4 movie226 GR MDSG-A movid386.3 MB MPEG-4 movie705,8 MB1 .78 G:15a epMDECA movid4.19 GBMPEG-4 movie502 2 MPMDEG.A movid1.02 GB MPEG-4 movieMPEG-4 movie1 or 161 selected, 7. 89 TB available...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50080
|
1775
|
48
|
2026-05-18T07:15:32.806+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088532806_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Finder FileEditView•••<→ C= [1 Google MeetGoWin Finder FileEditView•••<→ C= [1 Google MeetGoWindowHelp‹ $0 • [ Preparation for Refi... in 4h 45 m [AJ• =@ meet.google.com/landing?authuser=[EMAIL]* 100% <4 &• Mon 18 May 10:15:32.10:15 AM • Mon, May 18+MeetingsD* CallsSecure video conferencingfor everyoneConnect, collaborate, and celebrate from anywhere withGoogle MeetEk New meetingEnter a code or nicknameJoin3:00 PMSupport Daily3:00 PMPreparation for Refinement4:00 PM[Platform] Refinement QFrom your Google Calendar account: [EMAIL] more about Google Meet...
|
NULL
|
835854265128283455
|
NULL
|
visual_change
|
ocr
|
NULL
|
Finder FileEditView•••<→ C= [1 Google MeetGoWin Finder FileEditView•••<→ C= [1 Google MeetGoWindowHelp‹ $0 • [ Preparation for Refi... in 4h 45 m [AJ• =@ meet.google.com/landing?authuser=[EMAIL]* 100% <4 &• Mon 18 May 10:15:32.10:15 AM • Mon, May 18+MeetingsD* CallsSecure video conferencingfor everyoneConnect, collaborate, and celebrate from anywhere withGoogle MeetEk New meetingEnter a code or nicknameJoin3:00 PMSupport Daily3:00 PMPreparation for Refinement4:00 PM[Platform] Refinement QFrom your Google Calendar account: [EMAIL] more about Google Meet...
|
50078
|
NULL
|
NULL
|
NULL
|
|
50081
|
NULL
|
0
|
2026-05-18T07:15:36.760771+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088536760_m1.jpg...
|
Finder
|
Work
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
GARMIN
Eject
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:15
--
Folder
Daily 2026-05-18.mp4
Today at 10:13
982 MB
MPEG-4 movie
BE Chapter 2026-05-15 (Claude Code).mp4
15 May 2026 at 10:54
737,7 MB
MPEG-4 movie
Daily 2026-05-15.mp4
15 May 2026 at 10:02
557,5 MB...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Downloads","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"iCloud","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"iCloud Drive","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sync folder","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Locations","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"GARMIN","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Network","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tags","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"CRM","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Orange","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Red","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yellow","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Green","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Blue","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Purple","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"All Tags…","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Name","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Date Modified","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Size","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Kind","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"2026","depth":7,"on_screen":true,"value":"2026","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:15","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-18.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Today at 10:13","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"982 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"BE Chapter 2026-05-15 (Claude Code).mp4","depth":7,"on_screen":true,"value":"BE Chapter 2026-05-15 (Claude Code).mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 May 2026 at 10:54","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"737,7 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-15.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 May 2026 at 10:02","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"557,5 MB","depth":7,"on_screen":true,"role_description":"text"}]...
|
-4910430396234543922
|
-1752003452132892815
|
visual_change
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
GARMIN
Eject
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:15
--
Folder
Daily 2026-05-18.mp4
Today at 10:13
982 MB
MPEG-4 movie
BE Chapter 2026-05-15 (Claude Code).mp4
15 May 2026 at 10:54
737,7 MB
MPEG-4 movie
Daily 2026-05-15.mp4
15 May 2026 at 10:02
557,5 MB...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50082
|
1778
|
0
|
2026-05-18T07:16:05.478836+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088565478_m2.jpg...
|
Finder
|
Work
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
GARMIN
Eject
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:15
--
Folder
Daily 2026-05-18.mp4
Today at 10:13
982 MB
MPEG-4 movie
BE Chapter 2026-05-15 (Claude Code).mp4
15 May 2026 at 10:54
737,7 MB
MPEG-4 movie
Daily 2026-05-15.mp4
15 May 2026 at 10:02
557,5 MB
MPEG-4 movie
Daily 2026-05-14.mp4
14 May 2026 at 10:13
968,5 MB
MPEG-4 movie
Planning 2026-04-15.mp4
13 May 2026 at 13:09
2,79 GB
MPEG-4 movie
Planning 2026-05-13.mp4
13 May 2026 at 10:51
1,87 GB
MPEG-4 movie
Retro 2026-05-12.mp4
12 May 2026 at 17:36
1,03 GB
MPEG-4 movie
Daily 2026-05-12.mp4
12 May 2026 at 10:13
1,02 GB
MPEG-4 movie
PLanhat Petko interest event 2026-05-11.mp4...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"bounds":{"left":0.5046542,"top":0.061452515,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"bounds":{"left":0.51263297,"top":0.08140463,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"bounds":{"left":0.51263297,"top":0.103751,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"bounds":{"left":0.51263297,"top":0.12609737,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"bounds":{"left":0.51263297,"top":0.14844373,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"bounds":{"left":0.51263297,"top":0.1707901,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Downloads","depth":6,"bounds":{"left":0.51263297,"top":0.19313647,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":6,"bounds":{"left":0.51263297,"top":0.21548285,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"iCloud","depth":6,"bounds":{"left":0.5046542,"top":0.2434158,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"iCloud Drive","depth":6,"bounds":{"left":0.51263297,"top":0.26336792,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sync folder","depth":6,"bounds":{"left":0.51263297,"top":0.2857143,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Locations","depth":6,"bounds":{"left":0.5046542,"top":0.31364724,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"GARMIN","depth":6,"bounds":{"left":0.51263297,"top":0.33359936,"width":0.043218084,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"bounds":{"left":0.55651593,"top":0.33519554,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":6,"bounds":{"left":0.51263297,"top":0.35594574,"width":0.043218084,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"bounds":{"left":0.55651593,"top":0.3575419,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Network","depth":6,"bounds":{"left":0.51263297,"top":0.3782921,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tags","depth":6,"bounds":{"left":0.5046542,"top":0.40622506,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"CRM","depth":6,"bounds":{"left":0.51263297,"top":0.42617717,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Orange","depth":6,"bounds":{"left":0.51263297,"top":0.44852355,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Red","depth":6,"bounds":{"left":0.51263297,"top":0.4708699,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yellow","depth":6,"bounds":{"left":0.51263297,"top":0.49321628,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Green","depth":6,"bounds":{"left":0.51263297,"top":0.51556265,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Blue","depth":6,"bounds":{"left":0.51263297,"top":0.53790903,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Purple","depth":6,"bounds":{"left":0.51263297,"top":0.5602554,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"All Tags…","depth":6,"bounds":{"left":0.51263297,"top":0.5826017,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Name","depth":7,"bounds":{"left":0.5827792,"top":0.06624102,"width":0.011635638,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Date Modified","depth":7,"bounds":{"left":0.8656915,"top":0.06624102,"width":0.026928192,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Size","depth":7,"bounds":{"left":0.92586434,"top":0.06624102,"width":0.008976064,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Kind","depth":7,"bounds":{"left":0.9581117,"top":0.06624102,"width":0.00930851,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"2026","depth":7,"bounds":{"left":0.5827792,"top":0.079010375,"width":0.013297873,"height":0.012769354},"on_screen":true,"value":"2026","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:15","depth":7,"bounds":{"left":0.8656915,"top":0.079010375,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.079010375,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"bounds":{"left":0.9581117,"top":0.079010375,"width":0.014295213,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-18.mp4","depth":7,"bounds":{"left":0.58776593,"top":0.09497207,"width":0.04886968,"height":0.012769354},"on_screen":true,"value":"Daily 2026-05-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Today at 10:13","depth":7,"bounds":{"left":0.8656915,"top":0.09497207,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"982 MB","depth":7,"bounds":{"left":0.9375,"top":0.09497207,"width":0.017287234,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9581117,"top":0.09497207,"width":0.032912236,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"BE Chapter 2026-05-15 (Claude Code).mp4","depth":7,"bounds":{"left":0.58776593,"top":0.11093376,"width":0.09208777,"height":0.012769354},"on_screen":true,"value":"BE Chapter 2026-05-15 (Claude Code).mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 May 2026 at 10:54","depth":7,"bounds":{"left":0.8656915,"top":0.11093376,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"737,7 MB","depth":7,"bounds":{"left":0.93351066,"top":0.11093376,"width":0.021276595,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9581117,"top":0.11093376,"width":0.032912236,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-15.mp4","depth":7,"bounds":{"left":0.58776593,"top":0.12689546,"width":0.04886968,"height":0.012769354},"on_screen":true,"value":"Daily 2026-05-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 May 2026 at 10:02","depth":7,"bounds":{"left":0.8656915,"top":0.12689546,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"557,5 MB","depth":7,"bounds":{"left":0.93351066,"top":0.12689546,"width":0.021276595,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9581117,"top":0.12689546,"width":0.032912236,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-14.mp4","depth":7,"bounds":{"left":0.58776593,"top":0.14285715,"width":0.04886968,"height":0.012769354},"on_screen":true,"value":"Daily 2026-05-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 May 2026 at 10:13","depth":7,"bounds":{"left":0.8656915,"top":0.14285715,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"968,5 MB","depth":7,"bounds":{"left":0.93351066,"top":0.14285715,"width":0.021276595,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9581117,"top":0.14285715,"width":0.032912236,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-04-15.mp4","depth":7,"bounds":{"left":0.58776593,"top":0.15881884,"width":0.05618351,"height":0.012769354},"on_screen":true,"value":"Planning 2026-04-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 May 2026 at 13:09","depth":7,"bounds":{"left":0.8656915,"top":0.15881884,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2,79 GB","depth":7,"bounds":{"left":0.9368351,"top":0.15881884,"width":0.017952127,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9581117,"top":0.15881884,"width":0.032912236,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-05-13.mp4","depth":7,"bounds":{"left":0.58776593,"top":0.17478053,"width":0.05618351,"height":0.012769354},"on_screen":true,"value":"Planning 2026-05-13.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 May 2026 at 10:51","depth":7,"bounds":{"left":0.8656915,"top":0.17478053,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,87 GB","depth":7,"bounds":{"left":0.9368351,"top":0.17478053,"width":0.017952127,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9581117,"top":0.17478053,"width":0.032912236,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-05-12.mp4","depth":7,"bounds":{"left":0.58776593,"top":0.19074222,"width":0.049534574,"height":0.012769354},"on_screen":true,"value":"Retro 2026-05-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 May 2026 at 17:36","depth":7,"bounds":{"left":0.8656915,"top":0.19074222,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,03 GB","depth":7,"bounds":{"left":0.9368351,"top":0.19074222,"width":0.017952127,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9581117,"top":0.19074222,"width":0.032912236,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-12.mp4","depth":7,"bounds":{"left":0.58776593,"top":0.20670392,"width":0.04886968,"height":0.012769354},"on_screen":true,"value":"Daily 2026-05-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 May 2026 at 10:13","depth":7,"bounds":{"left":0.8656915,"top":0.20670392,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,02 GB","depth":7,"bounds":{"left":0.9368351,"top":0.20670392,"width":0.017952127,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9581117,"top":0.20670392,"width":0.032912236,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"PLanhat Petko interest event 2026-05-11.mp4","depth":7,"bounds":{"left":0.58776593,"top":0.22266561,"width":0.09607713,"height":0.012769354},"on_screen":true,"value":"PLanhat Petko interest event 2026-05-11.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
2032991112358850975
|
-7656205070252552903
|
idle
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
GARMIN
Eject
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:15
--
Folder
Daily 2026-05-18.mp4
Today at 10:13
982 MB
MPEG-4 movie
BE Chapter 2026-05-15 (Claude Code).mp4
15 May 2026 at 10:54
737,7 MB
MPEG-4 movie
Daily 2026-05-15.mp4
15 May 2026 at 10:02
557,5 MB
MPEG-4 movie
Daily 2026-05-14.mp4
14 May 2026 at 10:13
968,5 MB
MPEG-4 movie
Planning 2026-04-15.mp4
13 May 2026 at 13:09
2,79 GB
MPEG-4 movie
Planning 2026-05-13.mp4
13 May 2026 at 10:51
1,87 GB
MPEG-4 movie
Retro 2026-05-12.mp4
12 May 2026 at 17:36
1,03 GB
MPEG-4 movie
Daily 2026-05-12.mp4
12 May 2026 at 10:13
1,02 GB
MPEG-4 movie
PLanhat Petko interest event 2026-05-11.mp4...
|
50079
|
NULL
|
NULL
|
NULL
|
|
50083
|
1777
|
0
|
2026-05-18T07:16:07.082786+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088567082_m1.jpg...
|
Finder
|
Work
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
GARMIN
Eject
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:15
--
Folder
Daily 2026-05-18.mp4
Today at 10:13
982 MB
MPEG-4 movie
BE Chapter 2026-05-15 (Claude Code).mp4
15 May 2026 at 10:54
737,7 MB
MPEG-4 movie
Daily 2026-05-15.mp4
15 May 2026 at 10:02
557,5 MB
MPEG-4 movie
Daily 2026-05-14.mp4
14 May 2026 at 10:13
968,5 MB
MPEG-4 movie
Planning 2026-04-15.mp4
13 May 2026 at 13:09
2,79 GB
MPEG-4 movie
Planning 2026-05-13.mp4
13 May 2026 at 10:51
1,87 GB
MPEG-4 movie
Retro 2026-05-12.mp4
12 May 2026 at 17:36
1,03 GB
MPEG-4 movie
Daily 2026-05-12.mp4
12 May 2026 at 10:13
1,02 GB
MPEG-4 movie
PLanhat Petko interest event 2026-05-11.mp4
11 May 2026 at 12:22
144,5 MB
MPEG-4 movie
Daily 2026-05-11.mp4
11 May 2026 at 10:02
491,3 MB
MPEG-4 movie
Daily 2026-05-08.mp4
8 May 2026 at 10:22
1,37 GB
MPEG-4 movie
1-1 2026-05-07.mp4
7 May 2026 at 18:21
1,55 GB
MPEG-4 movie
Daily 2026-05-07.mp4
7 May 2026 at 10:10
931,7 MB
MPEG-4 movie
1-1 2026-04-24.mp4
24 Apr 2026 at 14:44
1,86 GB
MPEG-4 movie
Daily 2026-04-24.mp4
24 Apr 2026 at 10:11
832,2 MB
MPEG-4 movie
User Pilot introduction Adi 2026-04-23.mp4...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Downloads","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"iCloud","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"iCloud Drive","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sync folder","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Locations","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"GARMIN","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Network","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tags","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"CRM","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Orange","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Red","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yellow","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Green","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Blue","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Purple","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"All Tags…","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Name","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Date Modified","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Size","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Kind","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"2026","depth":7,"on_screen":true,"value":"2026","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:15","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-18.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Today at 10:13","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"982 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"BE Chapter 2026-05-15 (Claude Code).mp4","depth":7,"on_screen":true,"value":"BE Chapter 2026-05-15 (Claude Code).mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 May 2026 at 10:54","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"737,7 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-15.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 May 2026 at 10:02","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"557,5 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-14.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 May 2026 at 10:13","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"968,5 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-04-15.mp4","depth":7,"on_screen":true,"value":"Planning 2026-04-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 May 2026 at 13:09","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2,79 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-05-13.mp4","depth":7,"on_screen":true,"value":"Planning 2026-05-13.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 May 2026 at 10:51","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,87 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-05-12.mp4","depth":7,"on_screen":true,"value":"Retro 2026-05-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 May 2026 at 17:36","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,03 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-12.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 May 2026 at 10:13","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,02 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"PLanhat Petko interest event 2026-05-11.mp4","depth":7,"on_screen":true,"value":"PLanhat Petko interest event 2026-05-11.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11 May 2026 at 12:22","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"144,5 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-11.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-11.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11 May 2026 at 10:02","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"491,3 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-08.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-08.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8 May 2026 at 10:22","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,37 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"1-1 2026-05-07.mp4","depth":7,"on_screen":true,"value":"1-1 2026-05-07.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7 May 2026 at 18:21","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,55 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-07.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-07.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7 May 2026 at 10:10","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"931,7 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"1-1 2026-04-24.mp4","depth":7,"on_screen":true,"value":"1-1 2026-04-24.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"24 Apr 2026 at 14:44","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,86 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-24.mp4","depth":7,"on_screen":true,"value":"Daily 2026-04-24.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"24 Apr 2026 at 10:11","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"832,2 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"User Pilot introduction Adi 2026-04-23.mp4","depth":7,"on_screen":true,"value":"User Pilot introduction Adi 2026-04-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
49272443325652742
|
-7660990007418242775
|
idle
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
GARMIN
Eject
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:15
--
Folder
Daily 2026-05-18.mp4
Today at 10:13
982 MB
MPEG-4 movie
BE Chapter 2026-05-15 (Claude Code).mp4
15 May 2026 at 10:54
737,7 MB
MPEG-4 movie
Daily 2026-05-15.mp4
15 May 2026 at 10:02
557,5 MB
MPEG-4 movie
Daily 2026-05-14.mp4
14 May 2026 at 10:13
968,5 MB
MPEG-4 movie
Planning 2026-04-15.mp4
13 May 2026 at 13:09
2,79 GB
MPEG-4 movie
Planning 2026-05-13.mp4
13 May 2026 at 10:51
1,87 GB
MPEG-4 movie
Retro 2026-05-12.mp4
12 May 2026 at 17:36
1,03 GB
MPEG-4 movie
Daily 2026-05-12.mp4
12 May 2026 at 10:13
1,02 GB
MPEG-4 movie
PLanhat Petko interest event 2026-05-11.mp4
11 May 2026 at 12:22
144,5 MB
MPEG-4 movie
Daily 2026-05-11.mp4
11 May 2026 at 10:02
491,3 MB
MPEG-4 movie
Daily 2026-05-08.mp4
8 May 2026 at 10:22
1,37 GB
MPEG-4 movie
1-1 2026-05-07.mp4
7 May 2026 at 18:21
1,55 GB
MPEG-4 movie
Daily 2026-05-07.mp4
7 May 2026 at 10:10
931,7 MB
MPEG-4 movie
1-1 2026-04-24.mp4
24 Apr 2026 at 14:44
1,86 GB
MPEG-4 movie
Daily 2026-04-24.mp4
24 Apr 2026 at 10:11
832,2 MB
MPEG-4 movie
User Pilot introduction Adi 2026-04-23.mp4...
|
50081
|
NULL
|
NULL
|
NULL
|
|
50084
|
1777
|
1
|
2026-05-18T07:16:16.088152+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088576088_m1.jpg...
|
Finder
|
Work
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
GARMIN
Eject
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:15
--
Folder
Daily 2026-05-18.mp4
Today at 10:13
982 MB
MPEG-4 movie
BE Chapter 2026-05-15 (Claude Code).mp4
15 May 2026 at 10:54
737,7 MB
MPEG-4 movie
Daily 2026-05-15.mp4
15 May 2026 at 10:02
557,5 MB
MPEG-4 movie
Daily 2026-05-14.mp4
14 May 2026 at 10:13
968,5 MB
MPEG-4 movie
Planning 2026-04-15.mp4
13 May 2026 at 13:09
2,79 GB
MPEG-4 movie
Planning 2026-05-13.mp4
13 May 2026 at 10:51
1,87 GB
MPEG-4 movie
Retro 2026-05-12.mp4
12 May 2026 at 17:36
1,03 GB
MPEG-4 movie
Daily 2026-05-12.mp4
12 May 2026 at 10:13
1,02 GB
MPEG-4 movie
PLanhat Petko interest event 2026-05-11.mp4
11 May 2026 at 12:22
144,5 MB
MPEG-4 movie
Daily 2026-05-11.mp4
11 May 2026 at 10:02
491,3 MB
MPEG-4 movie
Daily 2026-05-08.mp4
8 May 2026 at 10:22
1,37 GB
MPEG-4 movie
1-1 2026-05-07.mp4
7 May 2026 at 18:21
1,55 GB
MPEG-4 movie
Daily 2026-05-07.mp4
7 May 2026 at 10:10
931,7 MB
MPEG-4 movie
1-1 2026-04-24.mp4
24 Apr 2026 at 14:44
1,86 GB
MPEG-4 movie
Daily 2026-04-24.mp4...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Downloads","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"iCloud","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"iCloud Drive","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sync folder","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Locations","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"GARMIN","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Network","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tags","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"CRM","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Orange","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Red","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yellow","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Green","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Blue","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Purple","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"All Tags…","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Name","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Date Modified","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Size","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Kind","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"2026","depth":7,"on_screen":true,"value":"2026","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:15","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-18.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Today at 10:13","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"982 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"BE Chapter 2026-05-15 (Claude Code).mp4","depth":7,"on_screen":true,"value":"BE Chapter 2026-05-15 (Claude Code).mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 May 2026 at 10:54","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"737,7 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-15.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 May 2026 at 10:02","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"557,5 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-14.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 May 2026 at 10:13","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"968,5 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-04-15.mp4","depth":7,"on_screen":true,"value":"Planning 2026-04-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 May 2026 at 13:09","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2,79 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-05-13.mp4","depth":7,"on_screen":true,"value":"Planning 2026-05-13.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 May 2026 at 10:51","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,87 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-05-12.mp4","depth":7,"on_screen":true,"value":"Retro 2026-05-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 May 2026 at 17:36","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,03 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-12.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 May 2026 at 10:13","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,02 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"PLanhat Petko interest event 2026-05-11.mp4","depth":7,"on_screen":true,"value":"PLanhat Petko interest event 2026-05-11.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11 May 2026 at 12:22","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"144,5 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-11.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-11.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11 May 2026 at 10:02","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"491,3 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-08.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-08.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8 May 2026 at 10:22","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,37 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"1-1 2026-05-07.mp4","depth":7,"on_screen":true,"value":"1-1 2026-05-07.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7 May 2026 at 18:21","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,55 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-07.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-07.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7 May 2026 at 10:10","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"931,7 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"1-1 2026-04-24.mp4","depth":7,"on_screen":true,"value":"1-1 2026-04-24.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"24 Apr 2026 at 14:44","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,86 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-24.mp4","depth":7,"on_screen":true,"value":"Daily 2026-04-24.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-737848291253558889
|
-7656485445718197975
|
visual_change
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
GARMIN
Eject
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:15
--
Folder
Daily 2026-05-18.mp4
Today at 10:13
982 MB
MPEG-4 movie
BE Chapter 2026-05-15 (Claude Code).mp4
15 May 2026 at 10:54
737,7 MB
MPEG-4 movie
Daily 2026-05-15.mp4
15 May 2026 at 10:02
557,5 MB
MPEG-4 movie
Daily 2026-05-14.mp4
14 May 2026 at 10:13
968,5 MB
MPEG-4 movie
Planning 2026-04-15.mp4
13 May 2026 at 13:09
2,79 GB
MPEG-4 movie
Planning 2026-05-13.mp4
13 May 2026 at 10:51
1,87 GB
MPEG-4 movie
Retro 2026-05-12.mp4
12 May 2026 at 17:36
1,03 GB
MPEG-4 movie
Daily 2026-05-12.mp4
12 May 2026 at 10:13
1,02 GB
MPEG-4 movie
PLanhat Petko interest event 2026-05-11.mp4
11 May 2026 at 12:22
144,5 MB
MPEG-4 movie
Daily 2026-05-11.mp4
11 May 2026 at 10:02
491,3 MB
MPEG-4 movie
Daily 2026-05-08.mp4
8 May 2026 at 10:22
1,37 GB
MPEG-4 movie
1-1 2026-05-07.mp4
7 May 2026 at 18:21
1,55 GB
MPEG-4 movie
Daily 2026-05-07.mp4
7 May 2026 at 10:10
931,7 MB
MPEG-4 movie
1-1 2026-04-24.mp4
24 Apr 2026 at 14:44
1,86 GB
MPEG-4 movie
Daily 2026-04-24.mp4...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50085
|
1777
|
2
|
2026-05-18T07:16:17.526238+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088577526_m1.jpg...
|
Finder
|
Work
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
GARMIN
Eject
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:15
--
Folder
Daily 2026-05-18.mp4
Today at 10:13
982 MB
MPEG-4 movie
BE Chapter 2026-05-15 (Claude Code).mp4
15 May 2026 at 10:54
737,7 MB
MPEG-4 movie
Daily 2026-05-15.mp4
15 May 2026 at 10:02
557,5 MB
MPEG-4 movie
Daily 2026-05-14.mp4
14 May 2026 at 10:13
968,5 MB
MPEG-4 movie
Planning 2026-04-15.mp4
13 May 2026 at 13:09
2,79 GB
MPEG-4 movie
Planning 2026-05-13.mp4
13 May 2026 at 10:51
1,87 GB
MPEG-4 movie
Retro 2026-05-12.mp4
12 May 2026 at 17:36
1,03 GB
MPEG-4 movie
Daily 2026-05-12.mp4
12 May 2026 at 10:13
1,02 GB
MPEG-4 movie
PLanhat Petko interest event 2026-05-11.mp4
11 May 2026 at 12:22
144,5 MB
MPEG-4 movie
Daily 2026-05-11.mp4
11 May 2026 at 10:02
491,3 MB...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Downloads","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"iCloud","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"iCloud Drive","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sync folder","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Locations","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"GARMIN","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Network","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tags","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"CRM","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Orange","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Red","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yellow","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Green","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Blue","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Purple","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"All Tags…","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Name","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Date Modified","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Size","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Kind","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"2026","depth":7,"on_screen":true,"value":"2026","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:15","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-18.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Today at 10:13","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"982 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"BE Chapter 2026-05-15 (Claude Code).mp4","depth":7,"on_screen":true,"value":"BE Chapter 2026-05-15 (Claude Code).mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 May 2026 at 10:54","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"737,7 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-15.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 May 2026 at 10:02","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"557,5 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-14.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 May 2026 at 10:13","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"968,5 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-04-15.mp4","depth":7,"on_screen":true,"value":"Planning 2026-04-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 May 2026 at 13:09","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2,79 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-05-13.mp4","depth":7,"on_screen":true,"value":"Planning 2026-05-13.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 May 2026 at 10:51","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,87 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-05-12.mp4","depth":7,"on_screen":true,"value":"Retro 2026-05-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 May 2026 at 17:36","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,03 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-12.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 May 2026 at 10:13","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1,02 GB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"PLanhat Petko interest event 2026-05-11.mp4","depth":7,"on_screen":true,"value":"PLanhat Petko interest event 2026-05-11.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11 May 2026 at 12:22","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"144,5 MB","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-11.mp4","depth":7,"on_screen":true,"value":"Daily 2026-05-11.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11 May 2026 at 10:02","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"491,3 MB","depth":7,"on_screen":true,"role_description":"text"}]...
|
-1542480317122713172
|
-7660990144851388119
|
click
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
GARMIN
Eject
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:15
--
Folder
Daily 2026-05-18.mp4
Today at 10:13
982 MB
MPEG-4 movie
BE Chapter 2026-05-15 (Claude Code).mp4
15 May 2026 at 10:54
737,7 MB
MPEG-4 movie
Daily 2026-05-15.mp4
15 May 2026 at 10:02
557,5 MB
MPEG-4 movie
Daily 2026-05-14.mp4
14 May 2026 at 10:13
968,5 MB
MPEG-4 movie
Planning 2026-04-15.mp4
13 May 2026 at 13:09
2,79 GB
MPEG-4 movie
Planning 2026-05-13.mp4
13 May 2026 at 10:51
1,87 GB
MPEG-4 movie
Retro 2026-05-12.mp4
12 May 2026 at 17:36
1,03 GB
MPEG-4 movie
Daily 2026-05-12.mp4
12 May 2026 at 10:13
1,02 GB
MPEG-4 movie
PLanhat Petko interest event 2026-05-11.mp4
11 May 2026 at 12:22
144,5 MB
MPEG-4 movie
Daily 2026-05-11.mp4
11 May 2026 at 10:02
491,3 MB...
|
50084
|
NULL
|
NULL
|
NULL
|
|
50086
|
1778
|
1
|
2026-05-18T07:16:17.526243+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088577526_m2.jpg...
|
Finder
|
Work
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
GARMIN
Eject
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:15
--
Folder
Daily 2026-05-18.mp4
Today at 10:13
982 MB
MPEG-4 movie
BE Chapter 2026-05-15 (Claude Code).mp4
15 May 2026 at 10:54
737,7 MB
MPEG-4 movie
Daily 2026-05-15.mp4
15 May 2026 at 10:02
557,5 MB
MPEG-4 movie
Daily 2026-05-14.mp4
14 May 2026 at 10:13
968,5 MB
MPEG-4 movie...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"bounds":{"left":0.5046542,"top":0.061452515,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"bounds":{"left":0.51263297,"top":0.08140463,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"bounds":{"left":0.51263297,"top":0.103751,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"bounds":{"left":0.51263297,"top":0.12609737,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"bounds":{"left":0.51263297,"top":0.14844373,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"bounds":{"left":0.51263297,"top":0.1707901,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Downloads","depth":6,"bounds":{"left":0.51263297,"top":0.19313647,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":6,"bounds":{"left":0.51263297,"top":0.21548285,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"iCloud","depth":6,"bounds":{"left":0.5046542,"top":0.2434158,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"iCloud Drive","depth":6,"bounds":{"left":0.51263297,"top":0.26336792,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sync folder","depth":6,"bounds":{"left":0.51263297,"top":0.2857143,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Locations","depth":6,"bounds":{"left":0.5046542,"top":0.31364724,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"GARMIN","depth":6,"bounds":{"left":0.51263297,"top":0.33359936,"width":0.043218084,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"bounds":{"left":0.55651593,"top":0.33519554,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":6,"bounds":{"left":0.51263297,"top":0.35594574,"width":0.043218084,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"bounds":{"left":0.55651593,"top":0.3575419,"width":0.0043218085,"height":0.009577015},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Network","depth":6,"bounds":{"left":0.51263297,"top":0.3782921,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tags","depth":6,"bounds":{"left":0.5046542,"top":0.40622506,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"CRM","depth":6,"bounds":{"left":0.51263297,"top":0.42617717,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Orange","depth":6,"bounds":{"left":0.51263297,"top":0.44852355,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Red","depth":6,"bounds":{"left":0.51263297,"top":0.4708699,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yellow","depth":6,"bounds":{"left":0.51263297,"top":0.49321628,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Green","depth":6,"bounds":{"left":0.51263297,"top":0.51556265,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Blue","depth":6,"bounds":{"left":0.51263297,"top":0.53790903,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Purple","depth":6,"bounds":{"left":0.51263297,"top":0.5602554,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"All Tags…","depth":6,"bounds":{"left":0.51263297,"top":0.5826017,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Name","depth":7,"bounds":{"left":0.5827792,"top":0.06624102,"width":0.011635638,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Date Modified","depth":7,"bounds":{"left":0.8656915,"top":0.06624102,"width":0.026928192,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Size","depth":7,"bounds":{"left":0.92586434,"top":0.06624102,"width":0.008976064,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Kind","depth":7,"bounds":{"left":0.9581117,"top":0.06624102,"width":0.00930851,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"2026","depth":7,"bounds":{"left":0.5827792,"top":0.079010375,"width":0.013297873,"height":0.012769354},"on_screen":true,"value":"2026","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:15","depth":7,"bounds":{"left":0.8656915,"top":0.079010375,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.079010375,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"bounds":{"left":0.9581117,"top":0.079010375,"width":0.014295213,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-18.mp4","depth":7,"bounds":{"left":0.58776593,"top":0.09497207,"width":0.04886968,"height":0.012769354},"on_screen":true,"value":"Daily 2026-05-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Today at 10:13","depth":7,"bounds":{"left":0.8656915,"top":0.09497207,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"982 MB","depth":7,"bounds":{"left":0.9375,"top":0.09497207,"width":0.017287234,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9581117,"top":0.09497207,"width":0.032912236,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"BE Chapter 2026-05-15 (Claude Code).mp4","depth":7,"bounds":{"left":0.58776593,"top":0.11093376,"width":0.09208777,"height":0.012769354},"on_screen":true,"value":"BE Chapter 2026-05-15 (Claude Code).mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 May 2026 at 10:54","depth":7,"bounds":{"left":0.8656915,"top":0.11093376,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"737,7 MB","depth":7,"bounds":{"left":0.93351066,"top":0.11093376,"width":0.021276595,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9581117,"top":0.11093376,"width":0.032912236,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-15.mp4","depth":7,"bounds":{"left":0.58776593,"top":0.12689546,"width":0.04886968,"height":0.012769354},"on_screen":true,"value":"Daily 2026-05-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 May 2026 at 10:02","depth":7,"bounds":{"left":0.8656915,"top":0.12689546,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"557,5 MB","depth":7,"bounds":{"left":0.93351066,"top":0.12689546,"width":0.021276595,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9581117,"top":0.12689546,"width":0.032912236,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-05-14.mp4","depth":7,"bounds":{"left":0.58776593,"top":0.14285715,"width":0.04886968,"height":0.012769354},"on_screen":true,"value":"Daily 2026-05-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 May 2026 at 10:13","depth":7,"bounds":{"left":0.8656915,"top":0.14285715,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"968,5 MB","depth":7,"bounds":{"left":0.93351066,"top":0.14285715,"width":0.021276595,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9581117,"top":0.14285715,"width":0.032912236,"height":0.012769354},"on_screen":true,"role_description":"text"}]...
|
5880718226558877625
|
-4057828972236611839
|
click
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
GARMIN
Eject
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:15
--
Folder
Daily 2026-05-18.mp4
Today at 10:13
982 MB
MPEG-4 movie
BE Chapter 2026-05-15 (Claude Code).mp4
15 May 2026 at 10:54
737,7 MB
MPEG-4 movie
Daily 2026-05-15.mp4
15 May 2026 at 10:02
557,5 MB
MPEG-4 movie
Daily 2026-05-14.mp4
14 May 2026 at 10:13
968,5 MB
MPEG-4 movie...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50087
|
1777
|
3
|
2026-05-18T07:16:20.873722+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088580873_m1.jpg...
|
Firefox
|
Google Meet — Work
|
1
|
meet.google.com/landing?authuser=lukas.kovalik@jim meet.google.com/landing?authuser=lukas.kovalik@jiminny.com...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Google Meet
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Google Meet","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true}]...
|
7030733337310412771
|
3739875602477945958
|
click
|
hybrid
|
NULL
|
Google Meet
Finder FileEditViewGoWindowHelp‹ >0 Google Meet
Finder FileEditViewGoWindowHelp‹ >0 • $ Preparation for Refi... in 4h 44m t (AJ• =@ meet.google.com/landing?authuser=[EMAIL]* 100% <4 &• Mon 18 May 10:16:20= [1 Google Meet10:16 AM • Mon, May 18+MeetingsD* CallsSecure video conferencingfor everyoneConnect, collaborate, and celebrate from anywhere withGoogle MeetEk New meetingEnter a code or nicknameJoin |3:00 PMSupport Daily3:00 PMPreparation for Refinement4:00 PM[Platform] Refinement QFrom your Google Calendar account: [EMAIL] more about Google Meet...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50088
|
1778
|
2
|
2026-05-18T07:16:20.874234+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088580874_m2.jpg...
|
Firefox
|
Google Meet — Work
|
1
|
meet.google.com/landing?authuser=lukas.kovalik@jim meet.google.com/landing?authuser=lukas.kovalik@jiminny.com...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rindelWindowrTavsco.sroledey© WhichWorkerlsWorking rindelWindowrTavsco.sroledey© WhichWorkerlsWorkingOnWhichJob.php> @ Scheduling› D Contracts• _ Domainv ODTO0 Activity— customerApi_ ExternalServicelntegrations) ImportcalliInvitationC) UserinvitationdTo.ohpRolesaSCIM117 ScorecardServiceM UsersT UserEmail.php• M Smails→ M SnumeD EventsM Activitios>@ ActivityProviderTM AiAutomation• & Audio.Tm Rote>D Coaching_conterences,m connectionsv ermc) Activitycancelled.phpc)ActivitycancelledAsNoshow.phpC) ActivityLeadConverted.phpC) ActivityLinkedToerm.phpc) Activitvloaged.onoC)ActivitvScheduled.ohvC) AutoLoaActivitv.ohrC) EmailWithCRMObiectsProcessed.onoC) FollowuoScheduled.onoC) LeadConverted.ohoC) Stacechanded.nhnM Dialers> M MescadesTm ParticinantsM ProviderM Seccions• MSmslm Coftnhandm Vidon(e) ActivituCrontod nhn© ActivityCrmProvidedUpdated.phpCActivityController.ong(C)ConvertLeadActivities.onpPurgelookupcache.onp© SyncToPlanhat.phpc createrlaybookcreatedevent.ongpnp api.onoTeamController.phgc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.phoC) PlanhatactivityListener.php(C)AskAnythinaPromptService.php(C) AutomatedReportsRepository.ohp©AutomatedReportsCommand.ohpC) RequestGenerateReport.Job.ohv(C)AutomatedReportResult.ohvC. AutomatedReport.ohoV EditTeamModal.vue© CreateTeamRequest.php© UserinvitationDTO.php xclass UserInvitationntoroleras: intlA2Y4A1sowner: b00l.user?: Usen* Sattributesprivate function __construct(array $attributes)Sthis->email = mb strtolowerSattributesi'ematlri):Sthis->secondarvEmail = Sthis->normalizeNullableSattributesi'secondarvEma$this->groupld = $attributes['groupid'];$this->teamid = (int) $attributes['teamId'];$this->crmRequired = (bool) $attributes['crmRequired']:$this->roleIds = $attributes('rolelds']:Sthis-sichwnen = Sattrihutecfrichwnent1»$this->currentUser = Sattributes['user'] ?? null;public static function for0wner(CreateTeamRequest|EditTeamRequest Sreguest.SroleIds = Role::whereInd coUser::ROLE ADMINUser::ROLE RECURDER1)->pluck( colu'id')->toArrayO:** ovar User Scurrentlser */ScurrentUser = Sreauest->usero:return new selfal'email' => Sreauest->aet0wnerEma1loliteamtdt= Steam->aettdiol'crmRequired' => true,'poleTdst => SroleTdsl'user' => $currentUser,=custom.loglaravel.log4 SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]# console Eulclass kernel excenas consolekerne355356357358360362V 3653653663673683691374376 O1456457—486RestoreTracksCommand::class,alule lelond iainlalakenveenelnintennte eProcessMerged0bjectsCommand::cla:Huhcnot lounnal Poll inaCommand• • clasecupsournalueatweonooksuoscriptLict.lourna1WehhookSuhcenintioncd.AUCOdeCECCALACCIViCy ypelommand.commanos crm Logacc1viclesCommancommanas crm nacchupporcunityact!Purgeveleredupporcunlclestommandkecrvrrospecrsummarvcommand..clasSvncOpportunztrestissingFieldbat.Commands Crm TestPipedrivedfficinrivate Schedule Sschedule:orotected function schedule ScheduleTusageprotected function scheduleEveryMinutprotected function scheduleEveryTwoM:procected function scheduleFvonvsivovprotected function scheduleEveryTenMprotected function schedulezvery-1fte1usade.orotected function schedule-vervthirt1 usageorotected function scheduleHourlvo:88E0C000 V• jiminny(• AirDrop•) Recents* Applications9 Documents(• Downloadci lukas• iCloud Drive999 Svnc toldeE GARMINL DXP4800PLUS-B5F =4 Network• CRMOrange• Red• Yellow• Green• Blue• Purple• All Tags...workback/rorwareNamena Dailv 2026-05-18.mo4EX BE Chapter 2026-05-15 (Claude Code).mp4= Daily 2026-05-15.mp4Dallv 2026-05-14.m04ew Planning 2026-04-15.mp4Ra Planning 2026-05-13.mp4• кetro 2020-00-12.mo4•: Dailv 2026-05-12 mo4PLanhat Petko interest event 2026-05-11.mp4* Daily 2026-05-11.mp4Dailv 2026-05-08.mo4я 1-1 2026-05-07.mp41-1 2026-04-24.M04= Daily 2026-04-24.mn4er User Pilot introduction Adi 2026-04-23.mp4Rn Daily 2026-04-23.mp4Dailv 2026-04-22.moLиR Refinement 2026-04-06.mp4Daily 2026-04-21.mp4Refineent 2026-04-20.mo4Daily 2026-04-20 mn4t Daily 2026-04-17.mpWs Daily 2026-04-16.mp4Daily 2026-04-14.mp4• User pilot (Adi) 2026-04-09.mp4Dailv 2026-04-09.mo4wa Daily 2026 04-09 mл/t Daily 2026-04-07 mn4"a Daily 2026-04-06.mp4las Plannina 2026-04-01 & task split.mp4Retro 2026-03-31.mp4Dailv 2026-03-31.mo4- Refinement 2026-03-30.mp4=: Daily 2026-03-27.mp4• Daily 2026-02-26 mn/• Daily 2026-03-24.mp4- Refinement 2026-03-23.mp4= Daillv 2026-03-23.mo4** BE chapter 2026-03-20.mp4- Daily 2026-03-20.mp4am Planing 2026-03-18-converted.mp4E Pafinement 2026.02.00-convertod mn//PER Daily 2026-03-19.mp4= Review 2026-03-18.mp4Dlanina 2026-03-18.mn/TDotra 0ne00.17 mлл.: Refinement 2026-03-16.mp4F Daily 2026,02.16 mn/la Daily 2026-03-13.mр4ih 1-1 2026-03-12.mp4Preparation for Refi... in 4h 44 m100% 2?.Mon 18 May 10:16:20Q SearchShare Add TagsActionDate ModifiecTodav at 10:1615 May 2026 at 10:5415 May 2026 at 10:0214 Mav 2026 at 10.1k13 May 2026 at 13:0912 May Z0zo al1/.3012 Mav 2026 at 10:1311 May 2026 at 12:2211 Mav 2026 at 10:028 Mav 2026 at 10:227 May 2026 at 18:217 May 2026 at 10:1024 Apr 2026 at 14:4424 Aor 2026 at 10:1123 Apr 2026 at 11:5823 Apr 2026 at 10:3222 Aor 2026 at 10:2121 Apr 2026 at 11:0221 Apr 2026 at 10:0020 Aor 2026 at 16:5620 Anr 2026 at 10:0617 Apr 2026 at 10:1616 Apr 2026 at 10:0014 Aor 2026 at 17:3714 Apr 2026 at 10:099 Apr 2026 at 14:479 Aor 2026 at 10:07QAnr 2026 at 10:126 Apr 2026 at 10:083 Aor 2026 at 10:211 Apr 2026 at 12:2031 Mar 2026 at 18:2931 Mar 2026 at 10:1020 Mar 2026 at 17:1227 Mar 2026 at 10:0926 Mar 2026 at 0:50l24 Mar 2026 at 10:0023 Mar 2026 at 17:0323 Mar 2026 at 10:00Mer dt 41:1620 Mar 2026 at 10:0619 Mar 2026 at 12:0110 Mar 2026 at 11:2519 Mar 2026 at 9:5718 Mar 2026 at 16:2017 Mor 2006 6t 17:1016 Mar 2026 at 16:5516 Mar 2026 at 10:02982 MEMPEG-4 movie737,7 MB MPEG-4 movie557,5 MB968.5 M:MPEG-4 movien 70 GP1,87 GBT0s GtMDEG-A movieMPEG-4 movie1.02 GEMPEG-4 movie144,5 MBMPEG-4 movie491,3 MBMPEG-4 movie1.37 G:MPEG-4 movie1,55 GB MPEG-4 movie1,86 G.MPEG-4 movie832 2 MBMPFG-A movid724 MBMPEG-4 movie1,74 GBMPEG-4 movie1.36 GEMPEG-4 movie2,41 GB567,8 MB4.25 G:MDEeA movioMPEG-4 movie698 5 MR1,16 GB513,4 MBMPEG-A movieMPEG-4 movieMPEG-4 movie1.44 GEMPEG-4 movie924,4 MB MPEG-4 movie748.8 MEMPEG-4 movie1OиLCP575,5 MB720,5 MBMDEC A movicMPEG-4 movieMPEG-4 movie1.02 GEMPEG-4 movie4,68 GBMDEAA mowid3,4 GB923,6 MEn 77 CpMPEG-4 movieMDEC.A movid641,8 MB884,3 MEMPEG-4 movieMPEG-4 movieA766MPMDEG-A movie550.8 MB MPEG-4 movie3,44 GB438.9 M:4 60 cplMPEG-4 movieMDECA movid430,4 MB2.38 GBMPEG-4 movie226 GR MDSG-A movid386.3 MB MPEG-4 movie705,8 MB1 .78 G:15a epMDECA movid4.19 GB502 2 MPMPEG-4 movieMDEG.A movid1.02 GB MPEG-4 movieMPEG-4 movie1 or 161 selected, 7. 89 TB available...
|
NULL
|
-5873583697639064659
|
NULL
|
click
|
ocr
|
NULL
|
rindelWindowrTavsco.sroledey© WhichWorkerlsWorking rindelWindowrTavsco.sroledey© WhichWorkerlsWorkingOnWhichJob.php> @ Scheduling› D Contracts• _ Domainv ODTO0 Activity— customerApi_ ExternalServicelntegrations) ImportcalliInvitationC) UserinvitationdTo.ohpRolesaSCIM117 ScorecardServiceM UsersT UserEmail.php• M Smails→ M SnumeD EventsM Activitios>@ ActivityProviderTM AiAutomation• & Audio.Tm Rote>D Coaching_conterences,m connectionsv ermc) Activitycancelled.phpc)ActivitycancelledAsNoshow.phpC) ActivityLeadConverted.phpC) ActivityLinkedToerm.phpc) Activitvloaged.onoC)ActivitvScheduled.ohvC) AutoLoaActivitv.ohrC) EmailWithCRMObiectsProcessed.onoC) FollowuoScheduled.onoC) LeadConverted.ohoC) Stacechanded.nhnM Dialers> M MescadesTm ParticinantsM ProviderM Seccions• MSmslm Coftnhandm Vidon(e) ActivituCrontod nhn© ActivityCrmProvidedUpdated.phpCActivityController.ong(C)ConvertLeadActivities.onpPurgelookupcache.onp© SyncToPlanhat.phpc createrlaybookcreatedevent.ongpnp api.onoTeamController.phgc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.phoC) PlanhatactivityListener.php(C)AskAnythinaPromptService.php(C) AutomatedReportsRepository.ohp©AutomatedReportsCommand.ohpC) RequestGenerateReport.Job.ohv(C)AutomatedReportResult.ohvC. AutomatedReport.ohoV EditTeamModal.vue© CreateTeamRequest.php© UserinvitationDTO.php xclass UserInvitationntoroleras: intlA2Y4A1sowner: b00l.user?: Usen* Sattributesprivate function __construct(array $attributes)Sthis->email = mb strtolowerSattributesi'ematlri):Sthis->secondarvEmail = Sthis->normalizeNullableSattributesi'secondarvEma$this->groupld = $attributes['groupid'];$this->teamid = (int) $attributes['teamId'];$this->crmRequired = (bool) $attributes['crmRequired']:$this->roleIds = $attributes('rolelds']:Sthis-sichwnen = Sattrihutecfrichwnent1»$this->currentUser = Sattributes['user'] ?? null;public static function for0wner(CreateTeamRequest|EditTeamRequest Sreguest.SroleIds = Role::whereInd coUser::ROLE ADMINUser::ROLE RECURDER1)->pluck( colu'id')->toArrayO:** ovar User Scurrentlser */ScurrentUser = Sreauest->usero:return new selfal'email' => Sreauest->aet0wnerEma1loliteamtdt= Steam->aettdiol'crmRequired' => true,'poleTdst => SroleTdsl'user' => $currentUser,=custom.loglaravel.log4 SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]# console Eulclass kernel excenas consolekerne355356357358360362V 3653653663673683691374376 O1456457—486RestoreTracksCommand::class,alule lelond iainlalakenveenelnintennte eProcessMerged0bjectsCommand::cla:Huhcnot lounnal Poll inaCommand• • clasecupsournalueatweonooksuoscriptLict.lourna1WehhookSuhcenintioncd.AUCOdeCECCALACCIViCy ypelommand.commanos crm Logacc1viclesCommancommanas crm nacchupporcunityact!Purgeveleredupporcunlclestommandkecrvrrospecrsummarvcommand..clasSvncOpportunztrestissingFieldbat.Commands Crm TestPipedrivedfficinrivate Schedule Sschedule:orotected function schedule ScheduleTusageprotected function scheduleEveryMinutprotected function scheduleEveryTwoM:procected function scheduleFvonvsivovprotected function scheduleEveryTenMprotected function schedulezvery-1fte1usade.orotected function schedule-vervthirt1 usageorotected function scheduleHourlvo:88E0C000 V• jiminny(• AirDrop•) Recents* Applications9 Documents(• Downloadci lukas• iCloud Drive999 Svnc toldeE GARMINL DXP4800PLUS-B5F =4 Network• CRMOrange• Red• Yellow• Green• Blue• Purple• All Tags...workback/rorwareNamena Dailv 2026-05-18.mo4EX BE Chapter 2026-05-15 (Claude Code).mp4= Daily 2026-05-15.mp4Dallv 2026-05-14.m04ew Planning 2026-04-15.mp4Ra Planning 2026-05-13.mp4• кetro 2020-00-12.mo4•: Dailv 2026-05-12 mo4PLanhat Petko interest event 2026-05-11.mp4* Daily 2026-05-11.mp4Dailv 2026-05-08.mo4я 1-1 2026-05-07.mp41-1 2026-04-24.M04= Daily 2026-04-24.mn4er User Pilot introduction Adi 2026-04-23.mp4Rn Daily 2026-04-23.mp4Dailv 2026-04-22.moLиR Refinement 2026-04-06.mp4Daily 2026-04-21.mp4Refineent 2026-04-20.mo4Daily 2026-04-20 mn4t Daily 2026-04-17.mpWs Daily 2026-04-16.mp4Daily 2026-04-14.mp4• User pilot (Adi) 2026-04-09.mp4Dailv 2026-04-09.mo4wa Daily 2026 04-09 mл/t Daily 2026-04-07 mn4"a Daily 2026-04-06.mp4las Plannina 2026-04-01 & task split.mp4Retro 2026-03-31.mp4Dailv 2026-03-31.mo4- Refinement 2026-03-30.mp4=: Daily 2026-03-27.mp4• Daily 2026-02-26 mn/• Daily 2026-03-24.mp4- Refinement 2026-03-23.mp4= Daillv 2026-03-23.mo4** BE chapter 2026-03-20.mp4- Daily 2026-03-20.mp4am Planing 2026-03-18-converted.mp4E Pafinement 2026.02.00-convertod mn//PER Daily 2026-03-19.mp4= Review 2026-03-18.mp4Dlanina 2026-03-18.mn/TDotra 0ne00.17 mлл.: Refinement 2026-03-16.mp4F Daily 2026,02.16 mn/la Daily 2026-03-13.mр4ih 1-1 2026-03-12.mp4Preparation for Refi... in 4h 44 m100% 2?.Mon 18 May 10:16:20Q SearchShare Add TagsActionDate ModifiecTodav at 10:1615 May 2026 at 10:5415 May 2026 at 10:0214 Mav 2026 at 10.1k13 May 2026 at 13:0912 May Z0zo al1/.3012 Mav 2026 at 10:1311 May 2026 at 12:2211 Mav 2026 at 10:028 Mav 2026 at 10:227 May 2026 at 18:217 May 2026 at 10:1024 Apr 2026 at 14:4424 Aor 2026 at 10:1123 Apr 2026 at 11:5823 Apr 2026 at 10:3222 Aor 2026 at 10:2121 Apr 2026 at 11:0221 Apr 2026 at 10:0020 Aor 2026 at 16:5620 Anr 2026 at 10:0617 Apr 2026 at 10:1616 Apr 2026 at 10:0014 Aor 2026 at 17:3714 Apr 2026 at 10:099 Apr 2026 at 14:479 Aor 2026 at 10:07QAnr 2026 at 10:126 Apr 2026 at 10:083 Aor 2026 at 10:211 Apr 2026 at 12:2031 Mar 2026 at 18:2931 Mar 2026 at 10:1020 Mar 2026 at 17:1227 Mar 2026 at 10:0926 Mar 2026 at 0:50l24 Mar 2026 at 10:0023 Mar 2026 at 17:0323 Mar 2026 at 10:00Mer dt 41:1620 Mar 2026 at 10:0619 Mar 2026 at 12:0110 Mar 2026 at 11:2519 Mar 2026 at 9:5718 Mar 2026 at 16:2017 Mor 2006 6t 17:1016 Mar 2026 at 16:5516 Mar 2026 at 10:02982 MEMPEG-4 movie737,7 MB MPEG-4 movie557,5 MB968.5 M:MPEG-4 movien 70 GP1,87 GBT0s GtMDEG-A movieMPEG-4 movie1.02 GEMPEG-4 movie144,5 MBMPEG-4 movie491,3 MBMPEG-4 movie1.37 G:MPEG-4 movie1,55 GB MPEG-4 movie1,86 G.MPEG-4 movie832 2 MBMPFG-A movid724 MBMPEG-4 movie1,74 GBMPEG-4 movie1.36 GEMPEG-4 movie2,41 GB567,8 MB4.25 G:MDEeA movioMPEG-4 movie698 5 MR1,16 GB513,4 MBMPEG-A movieMPEG-4 movieMPEG-4 movie1.44 GEMPEG-4 movie924,4 MB MPEG-4 movie748.8 MEMPEG-4 movie1OиLCP575,5 MB720,5 MBMDEC A movicMPEG-4 movieMPEG-4 movie1.02 GEMPEG-4 movie4,68 GBMDEAA mowid3,4 GB923,6 MEn 77 CpMPEG-4 movieMDEC.A movid641,8 MB884,3 MEMPEG-4 movieMPEG-4 movieA766MPMDEG-A movie550.8 MB MPEG-4 movie3,44 GB438.9 M:4 60 cplMPEG-4 movieMDECA movid430,4 MB2.38 GBMPEG-4 movie226 GR MDSG-A movid386.3 MB MPEG-4 movie705,8 MB1 .78 G:15a epMDECA movid4.19 GB502 2 MPMPEG-4 movieMDEG.A movid1.02 GB MPEG-4 movieMPEG-4 movie1 or 161 selected, 7. 89 TB available...
|
50086
|
NULL
|
NULL
|
NULL
|
|
50089
|
1777
|
4
|
2026-05-18T07:16:21.932239+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088581932_m1.jpg...
|
Firefox
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/software/c/projects/JY/ jiminny.atlassian.net/jira/software/c/projects/JY/boards/37?selectedIssue=JY-20613...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Firefox FileEdit View< → C=11 Google MeetHistor Firefox FileEdit View< → C=11 Google MeetHistoryBookmarksProfiles ToolsWindowHelpR<→0 • j Preparation for Refi…. in 4h 44 m=@ meet.google.com/landing?authuser=lukas.kovalik@jiminny.com100% & 8• Mon 18 May 10:16:2110:16 AM • Mon, May 18+MeetingsD CallsSecure video conferencingfor everyoneConnect, collaborate, and celebrate from anywhere withGoogle MeetEk New meetingEnter a code or nicknameJoin3:00 PMSupport Daily3:00 PMPreparation for Refinement4:00 PM[Platform] Refinement QFrom your Google Calendar account: [EMAIL] more about Google Meet...
|
NULL
|
-3252404671025415535
|
NULL
|
click
|
ocr
|
NULL
|
Firefox FileEdit View< → C=11 Google MeetHistor Firefox FileEdit View< → C=11 Google MeetHistoryBookmarksProfiles ToolsWindowHelpR<→0 • j Preparation for Refi…. in 4h 44 m=@ meet.google.com/landing?authuser=lukas.kovalik@jiminny.com100% & 8• Mon 18 May 10:16:2110:16 AM • Mon, May 18+MeetingsD CallsSecure video conferencingfor everyoneConnect, collaborate, and celebrate from anywhere withGoogle MeetEk New meetingEnter a code or nicknameJoin3:00 PMSupport Daily3:00 PMPreparation for Refinement4:00 PM[Platform] Refinement QFrom your Google Calendar account: [EMAIL] more about Google Meet...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50090
|
1778
|
3
|
2026-05-18T07:16:24.838252+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088584838_m2.jpg...
|
Firefox
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/software/c/projects/JY/ jiminny.atlassian.net/jira/software/c/projects/JY/boards/37?selectedIssue=JY-20613...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Close tab
JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app
JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app
[JY-20891] Sidekick SMS issue - Jira
[JY-20891] Sidekick SMS issue - Jira
[JY-20915] Add environment-specific email domains for text relay to prevent duplicate processing - Jira
[JY-20915] Add environment-specific email domains for text relay to prevent duplicate processing - Jira
Usage | Windsurf
Usage | Windsurf
[SRD-6853] Moxso - Potential deal stages bug - Jira
[SRD-6853] Moxso - Potential deal stages bug - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Feed — jiminny — Sentry
[JY-20906] Review of Pipedrive SDK - Jira
[JY-20906] Review of Pipedrive SDK - Jira
Pipedrive API Reference and Documentation
Pipedrive API Reference and Documentation
pipedrive/client-php: Pipedrive API client for PHP...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.05905826,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.15658244,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20891] Sidekick SMS issue - Jira","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20891] Sidekick SMS issue - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.064494684,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20915] Add environment-specific email domains for text relay to prevent duplicate processing - Jira","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20915] Add environment-specific email domains for text relay to prevent duplicate processing - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.16121309,"width":0.18068483,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Usage | Windsurf","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Usage | Windsurf","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.029920213,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6853] Moxso - Potential deal stages bug - Jira","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6853] Moxso - Potential deal stages bug - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.09158909,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.039228722,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.042719416,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20906] Review of Pipedrive SDK - Jira","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20906] Review of Pipedrive SDK - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.07413564,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipedrive API Reference and Documentation","depth":4,"bounds":{"left":0.0,"top":0.3463687,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipedrive API Reference and Documentation","depth":5,"bounds":{"left":0.013297873,"top":0.3575419,"width":0.07679521,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"pipedrive/client-php: Pipedrive API client for PHP","depth":4,"bounds":{"left":0.0,"top":0.3790902,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-408985423549154466
|
-5745150655269539732
|
click
|
accessibility
|
NULL
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Close tab
JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app
JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app
[JY-20891] Sidekick SMS issue - Jira
[JY-20891] Sidekick SMS issue - Jira
[JY-20915] Add environment-specific email domains for text relay to prevent duplicate processing - Jira
[JY-20915] Add environment-specific email domains for text relay to prevent duplicate processing - Jira
Usage | Windsurf
Usage | Windsurf
[SRD-6853] Moxso - Potential deal stages bug - Jira
[SRD-6853] Moxso - Potential deal stages bug - Jira
Pipelines - jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Feed — jiminny — Sentry
[JY-20906] Review of Pipedrive SDK - Jira
[JY-20906] Review of Pipedrive SDK - Jira
Pipedrive API Reference and Documentation
Pipedrive API Reference and Documentation
pipedrive/client-php: Pipedrive API client for PHP...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50091
|
1777
|
5
|
2026-05-18T07:16:25.279314+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088585279_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpDOCKER81DEV (-zsh)DOCKER (docker-compose)docker_lamp_1docker_lamp_12026-05-1807:15:02,865 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_1amp_11 2026-05-1807:15:03,887 INFO spawned:artisan-schedule_00' with pid 18414docker_lamp_12026-05-1807:15:04,898 INFO success:NGstate,process hasstayedupfor>artisan-schedule_00 enteredRUNNIthan 1 seconds (startsecs)docker_1amp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_1amp_1atroutes/api.php:731docker_lamp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_lamp_1730docker_1amp_1→ 731Enum: :MANAGE_INTEGRATIONSdocker_lamp_1›vaiue],732IntegrationsI>group(['middleware'permission: "static function !(RouterSromtesvoid{PermissionSrouter->postC/integrationsIntegrationController:iclass,'internal'])docker_lamp_1733docker_1amp_1734->name( "api, integrations. internal');Srouter->put('/integrations', LIntegrationController::class,'toggleStatus'])docker_lamp_1735-›name('api.integrations.toggle_status');docker_lamp_1docker_lamp_+2vendor framesdocker_1amp_1docker_lamp_13docker_Lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing \Router: :group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider: :mapApiRoutes(Object(Illuminate\Routing \Router))docker_lamp_1docker_lamp_11 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_lamp_11 2026-05-1807:16:16,095 INFO spawned: 'artisan-schedule_00'with pid 18601docker_lamp_112026-05-1807:16:17,141 INFO success: artisan-schedule_00 entered RUNNINGstate, process hasstayed up for › than 1 seconds (startsecs)• Preparation for Refi... in 4h 44 m100% <78• Mon 18 May 10:16:25PROD (ssh)T81O ₴2APP (-zsh)screenpipe"*3XIT2PROD (ssh)Run 'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsfile in /Users/lukas or its parentsPoetry could not find a pyproject. tom file in Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|Y4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ I27 EXT (-zsh)file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|View in Docker DesktopView ConfigEnable Watch...
|
NULL
|
-8813866107790782239
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpDOCKER81DEV (-zsh)DOCKER (docker-compose)docker_lamp_1docker_lamp_12026-05-1807:15:02,865 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_1amp_11 2026-05-1807:15:03,887 INFO spawned:artisan-schedule_00' with pid 18414docker_lamp_12026-05-1807:15:04,898 INFO success:NGstate,process hasstayedupfor>artisan-schedule_00 enteredRUNNIthan 1 seconds (startsecs)docker_1amp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_1amp_1atroutes/api.php:731docker_lamp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_lamp_1730docker_1amp_1→ 731Enum: :MANAGE_INTEGRATIONSdocker_lamp_1›vaiue],732IntegrationsI>group(['middleware'permission: "static function !(RouterSromtesvoid{PermissionSrouter->postC/integrationsIntegrationController:iclass,'internal'])docker_lamp_1733docker_1amp_1734->name( "api, integrations. internal');Srouter->put('/integrations', LIntegrationController::class,'toggleStatus'])docker_lamp_1735-›name('api.integrations.toggle_status');docker_lamp_1docker_lamp_+2vendor framesdocker_1amp_1docker_lamp_13docker_Lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing \Router: :group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider: :mapApiRoutes(Object(Illuminate\Routing \Router))docker_lamp_1docker_lamp_11 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_lamp_11 2026-05-1807:16:16,095 INFO spawned: 'artisan-schedule_00'with pid 18601docker_lamp_112026-05-1807:16:17,141 INFO success: artisan-schedule_00 entered RUNNINGstate, process hasstayed up for › than 1 seconds (startsecs)• Preparation for Refi... in 4h 44 m100% <78• Mon 18 May 10:16:25PROD (ssh)T81O ₴2APP (-zsh)screenpipe"*3XIT2PROD (ssh)Run 'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsfile in /Users/lukas or its parentsPoetry could not find a pyproject. tom file in Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|Y4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ I27 EXT (-zsh)file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|View in Docker DesktopView ConfigEnable Watch...
|
50089
|
NULL
|
NULL
|
NULL
|
|
50092
|
1778
|
4
|
2026-05-18T07:16:25.980281+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088585980_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DMSActivityMoreSlackcalVIewMistonWindowhelp@ Descr DMSActivityMoreSlackcalVIewMistonWindowhelp@ Describe what you are looking forJiminny... ~& platform-inn...& 10C Unreads@ Threads6a HuddlesDrafts & sent8) DirectoriesMessagesChannel OverviewMore01Ab External connectionst Starred8 jiminny-x-integrati...& platform-inner-team# Channels# alerts# ai-chapter# backend# bugsi confusion-clinic# curiosity_lab# engineering# general# jiminny-bg" natform-nickets# product_launches# random# releases# sofia-officehttos://iiminnv.atlassian.net/browse/JY-20534(edited))6 attachments +e Sory X-2092 inira CtoudeFallback mechanism for users ...ea Saoyso20 tairn GoxdcCall Scoring filter for Exec rep...SCIM > Allow customers to m...F Story JY-20878 in Jira CloudEnable users to use their new ..Users can filter Scores in Team...F Story JY-20847 in Jira Cloudf Story JY-20534 in ira CloudeAl Call Scoring quick access in...Nikolay Yankov 12:39 PMРазбира се, каквото кажетеMessage & platform-inner-team+ Aa IE BacklogI Active sprints0000гEpic vorama promots isAJ Report7 eeee —is celered out Is25 0000 -May1[PASSWORD_DOTS]= (aI? ooed —TypeIN DEV 3MCP > Enable u:JIMINNY MCP COIIn DevI JY-20833MCP > Enable u:and their detailsJIMINNY MCP COIn Dev[ JY-20835Allow owner's rosettina uo a triaEMPROVEMENT OFIn Dev# JY-20613Q Search& JY-12253 / [I JY-20613Allow owner's role to be selected when setting up a trialDescriptionStoyan is seeing more cases where the Owner doesn't want to connect their calendar and email to Jiminny.This is because they don't want to be a recorder. Currently when a trial is created we give the Owner aRecorder role by default. In most cases he really needs to be a recorder.• allow Implementations to select the role of the owner when setting up a trialoput the field bellow the Owner email fieldo the choices should only be - Recorder, Recorder & Voice, Analyst• single select• this option shouldn't appear when editing an organisation• when the owner signs in, they should have the selected role + Admin permissionsSubtasksAdd subtaskLinked work itemsAdd linked work itemActivityAllComments History Work logAdd a comment...Suggest a reply... Status update...ThankS….Pro tip: press (M) to commentN0 x0ny 2028 41 15:57• The new field will be at the place of Import Opportunities Sync Period• Import Opportunities Sync Period goes on 3rd row, 1st column+ CreateIn Dev v* Improve StoryDetailsAssigneeReporterDeveloomentIComponentsSub-ProductLabelsStory pointestimateStory PointsOrganisatioPriorityFix versionsSprintDaysNeed QA@ Lukas Kovalik@ Galya DimitrovaQ Open with VS Code33 Create branch& Create commitPlatformAdd optionsNoneNone2NoneParent= MediumNonePlatform Sprint 4 Q21.5Yes→ JY-12253 Improvement of ourCanny LinksOpen Canny Links> More fields Original estimate, Time trackingj Preparation for Refi... in 4h 44m100% 28• Mon 18 May 10:16:255 Ask Rovowork itemsE Docs@ Shortcutsil Slack integration§ Reporting CenterComplete sprintGroup: QueriesPO ACCEPTANCEDEPLOY 7AJ Panorama tor Call Scorina in ODAUTOMATED AL SCORINGDeoloved… JY-2036105 • •e.=[Deadline 25 May] Migrate depricatedGemini s.l rlasn Lue Preview modelMAINTENANCEDeployed…JY-208801Al•00=Setup test coverage for Prophet in SonarMAINTENANCEDeplovedv JY-19951[Deadline 17 Junel Miarate depricatedGemini modelsMATNTENANCEDeployedE JY-202720 •.=₽Sidekick SMS issueDeployed8 JY-2089172 •0=@Update activity stage on opportunityuodateDeployed** JY-20903UndateActivitvElasticSearchDocumentCcmmand...
|
NULL
|
3435853653756277875
|
NULL
|
visual_change
|
ocr
|
NULL
|
DMSActivityMoreSlackcalVIewMistonWindowhelp@ Descr DMSActivityMoreSlackcalVIewMistonWindowhelp@ Describe what you are looking forJiminny... ~& platform-inn...& 10C Unreads@ Threads6a HuddlesDrafts & sent8) DirectoriesMessagesChannel OverviewMore01Ab External connectionst Starred8 jiminny-x-integrati...& platform-inner-team# Channels# alerts# ai-chapter# backend# bugsi confusion-clinic# curiosity_lab# engineering# general# jiminny-bg" natform-nickets# product_launches# random# releases# sofia-officehttos://iiminnv.atlassian.net/browse/JY-20534(edited))6 attachments +e Sory X-2092 inira CtoudeFallback mechanism for users ...ea Saoyso20 tairn GoxdcCall Scoring filter for Exec rep...SCIM > Allow customers to m...F Story JY-20878 in Jira CloudEnable users to use their new ..Users can filter Scores in Team...F Story JY-20847 in Jira Cloudf Story JY-20534 in ira CloudeAl Call Scoring quick access in...Nikolay Yankov 12:39 PMРазбира се, каквото кажетеMessage & platform-inner-team+ Aa IE BacklogI Active sprints0000гEpic vorama promots isAJ Report7 eeee —is celered out Is25 0000 -May1[PASSWORD_DOTS]= (aI? ooed —TypeIN DEV 3MCP > Enable u:JIMINNY MCP COIIn DevI JY-20833MCP > Enable u:and their detailsJIMINNY MCP COIn Dev[ JY-20835Allow owner's rosettina uo a triaEMPROVEMENT OFIn Dev# JY-20613Q Search& JY-12253 / [I JY-20613Allow owner's role to be selected when setting up a trialDescriptionStoyan is seeing more cases where the Owner doesn't want to connect their calendar and email to Jiminny.This is because they don't want to be a recorder. Currently when a trial is created we give the Owner aRecorder role by default. In most cases he really needs to be a recorder.• allow Implementations to select the role of the owner when setting up a trialoput the field bellow the Owner email fieldo the choices should only be - Recorder, Recorder & Voice, Analyst• single select• this option shouldn't appear when editing an organisation• when the owner signs in, they should have the selected role + Admin permissionsSubtasksAdd subtaskLinked work itemsAdd linked work itemActivityAllComments History Work logAdd a comment...Suggest a reply... Status update...ThankS….Pro tip: press (M) to commentN0 x0ny 2028 41 15:57• The new field will be at the place of Import Opportunities Sync Period• Import Opportunities Sync Period goes on 3rd row, 1st column+ CreateIn Dev v* Improve StoryDetailsAssigneeReporterDeveloomentIComponentsSub-ProductLabelsStory pointestimateStory PointsOrganisatioPriorityFix versionsSprintDaysNeed QA@ Lukas Kovalik@ Galya DimitrovaQ Open with VS Code33 Create branch& Create commitPlatformAdd optionsNoneNone2NoneParent= MediumNonePlatform Sprint 4 Q21.5Yes→ JY-12253 Improvement of ourCanny LinksOpen Canny Links> More fields Original estimate, Time trackingj Preparation for Refi... in 4h 44m100% 28• Mon 18 May 10:16:255 Ask Rovowork itemsE Docs@ Shortcutsil Slack integration§ Reporting CenterComplete sprintGroup: QueriesPO ACCEPTANCEDEPLOY 7AJ Panorama tor Call Scorina in ODAUTOMATED AL SCORINGDeoloved… JY-2036105 • •e.=[Deadline 25 May] Migrate depricatedGemini s.l rlasn Lue Preview modelMAINTENANCEDeployed…JY-208801Al•00=Setup test coverage for Prophet in SonarMAINTENANCEDeplovedv JY-19951[Deadline 17 Junel Miarate depricatedGemini modelsMATNTENANCEDeployedE JY-202720 •.=₽Sidekick SMS issueDeployed8 JY-2089172 •0=@Update activity stage on opportunityuodateDeployed** JY-20903UndateActivitvElasticSearchDocumentCcmmand...
|
50090
|
NULL
|
NULL
|
NULL
|
|
50093
|
1777
|
6
|
2026-05-18T07:16:28.261934+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088588261_m1.jpg...
|
iTerm2
|
DOCKER (docker-compose)
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
docker_lamp_1 | 2026-05-18 06:43:37 Jiminny\Job docker_lamp_1 | 2026-05-18 06:43:37 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:43:38 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] 1s DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:44:17 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:35 Running ['artisan' dialers:monitor-activities] . 8s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:44 Running ['artisan' jiminny:monitor-social-accounts] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:49 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:53 Running ['artisan' mailbox:batch:process --max-batches=15] 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:45:01 Running ['artisan' conference:monitor:count] ... 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
ngrok | t=2026-05-18T06:45:10+0000 lvl=info msg="join connections" obj=join id=09cbfa895989 l=[IP_ADDRESS]:3080 r=[IP_ADDRESS]:27787
docker_lamp_1 | 2026-05-18 06:45:09 Running ['artisan' crm:sync-objects] [IP_ADDRESS] - 18/May/2026:06:45:10 +0000 "POST /index.php" 204 /home/jiminny/public/index.php [PHONE] www
docker_lamp_1 | 2026-05-18 06:45:12 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | Syncing objects for Salesforce Team (6473c918-d8db-4ded-a52b-4febfd7b7c02) since 2026-03-19 20:14:10 (delay: 0s)
docker_lamp_1 | Team Edge Communications (c3a725ef-fc5e-4c7b-9231-6379b2834101) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Burlington Textiles Corp of America (72c0ccae-28a5-44bd-a0b4-958e73135463) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Uber (1c523aed-80e3-4c44-b215-7f0b027a03a2) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Vonage (c6030540-121e-4d6b-9261-8d82105817bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Nexmo (eaba09e1-4973-4077-b041-ad389248318c) is not yet assigned an owner. skipping...
docker_lamp_1 | Team SF (018e2d7c-ed01-4af2-be33-5c28f454a185) is not yet assigned an owner. skipping...
docker_lamp_1 | Team NewAccount (27325244-25d7-4431-aac4-9ddb2bde6b45) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for Pipedrive, Inc. (51467630-d89d-480b-be20-933e64a042f7) since 2026-05-15 13:44:19 (delay: 2s)
docker_lamp_1 | Syncing objects for Copper (396ed57c-e3c4-49be-8290-37c32955f7c7) since 2026-05-15 18:14:17 (delay: 4s)
docker_lamp_1 | Syncing objects for Pipedrive External Test (fda3cbdf-1117-4ba5-86f8-775f548b3a28) since 2026-05-15 13:44:23 (delay: 6s)
docker_lamp_1 | Syncing objects for Close (3ff5a02a-86fb-4357-b1d6-a04e26c38602) since 2026-05-15 18:14:21 (delay: 8s)
docker_lamp_1 | Team DeewanyAccount (cfaf90cb-ecf0-432c-a655-a22d9985e4c8) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for Bullhorn (1640a0ac-19da-4c3b-90f7-87525f07a6d2) since 2026-02-19 13:28:05 (delay: 10s)
docker_lamp_1 | Team Horen test (93d8f8f2-dd61-4137-97de-a02a9d3751bb) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Ahmed Hamadi (191379e4-5e90-4419-8ffd-4804a5abb565) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Ahmed Testing (3b2e1fad-bc5f-4322-84d2-a7440f78c5d7) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Ahmed jiminny (1dbd47b8-bbf8-4bbb-8e28-67b9c91f566e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Testers Inc (ec0767d5-1248-4447-b316-94dd9a30d52b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Copper Team (817c8ce1-8e22-4ac8-8fca-8df1131963ab) is not yet assigned an owner. skipping...
docker_lamp_1 | Team TheBestPlace Ever (dbb998f9-70eb-4f11-a9f2-d9f6157f4035) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Horen's apartments (e10bb4ea-6c89-4fe3-be3b-0a278aa81180) is not yet assigned an owner. skipping...
docker_lamp_1 | Team New Org Test (2cb527b6-73a4-46be-b7b2-b0097b494cc5) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Pipedrive test org (18ea22be-6e0b-461c-a4db-536c022aac73) is not yet assigned an owner. skipping...
docker_lamp_1 | Team BigChairs Inc. (16dcfaf9-44b4-4cc2-9ead-f98dd0cad4dd) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for GL 500 (0c33bf2d-1c77-4200-8ed6-6147ad444c30) since 2026-02-19 13:26:04 (delay: 12s)
docker_lamp_1 | Team Loren X (243d7d4b-1849-46c2-9dfb-4462f52020ef) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Laravel Company 2024 (e466d657-c26d-4281-9ed5-73890fe711f6) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Barbara Fuchs (bea0fcf3-f8f9-471d-92c4-d1b7d1a2e228) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test salesforce auto sync (2c2e652e-1cbb-4620-852d-e73bef0ab4a9) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Bullhorn (83c14120-cdb1-42e9-b0ac-16ef11320a8f) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Globo Tech (fb8d5211-3c4d-4804-9223-b091670ffd79) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Laravel 11 Company 2024 (780c6836-764b-4e47-9a05-cfefbab6e590) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Nikon7 (e9bff902-edc3-4b0b-89b1-2a9aa43d940a) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for Dev Zoho CRM client (1ece66c8-feb1-4df1-b321-21607daf4623) since 2026-05-15 18:14:27 (delay: 14s)
docker_lamp_1 | [PASSWORD_DOTS] 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Delete\DeleteContactJob ....... RUNNING
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Delete\DeleteContactJob . 185.83ms DONE
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
ngrok | t=2026-05-18T06:45:13+0000 lvl=info msg="join connections" obj=join id=97a3e43cd14a l=[IP_ADDRESS]:3080 r=[IP_ADDRESS]:62747
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 100.50ms DONE
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Delete\VerifyActivityCrmTaskJob RUNNING
ngrok | t=2026-05-18T06:45:13+0000 lvl=info msg="join connections" obj=join id=dd34011e0f3d l=[IP_ADDRESS]:3080 r=[IP_ADDRESS]:8208
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Jobs\Crm\Delete\VerifyActivityCrmTaskJob 273.69ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | [IP_ADDRESS] - 18/May/2026:06:45:13 +0000 "POST /index.php" 204 /home/jiminny/public/index.php [PHONE] www
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 23.15ms DONE
docker_lamp_1 | [IP_ADDRESS] - 18/May/2026:06:45:13 +0000 "POST /index.php" 204 /home/jiminny/public/index.php 197.456 32768 www
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 4.10ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 6.20ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 4.95ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 4.13ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData .... 551.13ms DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData .... 195.34ms DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData .... 153.79ms DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData .... 369.02ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData .... 140.71ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch .. 7.48ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch . 10.82ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch .. 8.23ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch . 22.23ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch . 57.73ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 92.23ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:18 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:18 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:20 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 2s DONE
docker_lamp_1 | 2026-05-18 06:45:20 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:21 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 393.12ms DONE
docker_lamp_1 | 2026-05-18 06:45:21 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:23 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | 2026-05-18 06:45:23 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:23 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 151.03ms DONE
docker_lamp_1 | 2026-05-18 06:45:24 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:24 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 139.21ms DONE
docker_lamp_1 | 2026-05-18 06:45:25 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] 9s DONE
docker_lamp_1 | 2026-05-18 06:45:25 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:26 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:28 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] 2s DONE
docker_lamp_1 | 2026-05-18 06:45:28 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:28 Jiminny\Jobs\Crm\MatchActivityCrmData .... 147.21ms DONE
docker_lamp_1 | 2026-05-18 06:45:31 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 5s DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:46:06 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:11 Running ['artisan' dialers:monitor-activities] 12s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:24 Running ['artisan' jiminny:monitor-social-accounts] 16s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:41 Running ['artisan' mailbox:skip-lists:refresh] . 8s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:49 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:53 Running ['artisan' conference:monitor:count] .. 10s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:47:13,407Z", "level": "WARN", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][438] overhead, spent [628ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
docker_lamp_1 | 2026-05-18 06:47:03 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-15 18:11:10 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | .. 17s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:47:21 Running ['artisan' activity:notify-not-logged] 2026-05-18 06:47:22 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:22 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 140.74ms DONE
docker_lamp_1 | 2026-05-18 06:47:22 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:25 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 3s DONE
docker_lamp_1 | 2026-05-18 06:47:25 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 289.88ms DONE
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 128.92ms DONE
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\Hubspot\ImportAccountBatch .... RUNNING
docker_lamp_1 | 2026-05-18 06:47:27 Jiminny\Jobs\Crm\Hubspot\ImportAccountBatch .... 1s DONE
docker_lamp_1 | 2026-05-18 06:47:27 Jiminny\Jobs\Crm\Hubspot\ImportContactBatch .... RUNNING
docker_lamp_1 | 2026-05-18 06:47:29 Jiminny\Jobs\Crm\Hubspot\ImportContactBatch .... 2s DONE
docker_lamp_1 | 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:47:36 Running ['artisan' activity:status-count] []..... 12s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:47:48 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 170.82ms DONE
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 266.09ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:48:09 Running ['artisan' meeting-bot:schedule-bot] ... 9s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:48:19 Running ['artisan' dialers:monitor-activities] 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:48:34 Running ['artisan' jiminny:monitor-social-accounts] 15s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:48:49 Running ['artisan' mailbox:skip-lists:refresh] 20s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:49:10 Running ['artisan' mailbox:batch:process --max-batches=15] 10s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:49:21 Running ['artisan' conference:monitor:count] .. 15s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 45.88ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams:
docker_lamp_1 | ....... 22s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:autolog-delayed > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:29,648Z", "level": "INFO", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][632] overhead, spent [409ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:33,468Z", "level": "INFO", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][young][635][17] duration [857ms], collections [1]/[1.5s], total [857ms]/[2.9s], memory [295.3mb]->[223.6mb]/[700mb], all_pools {[young] [79mb]->[1mb]/[0b]}{[old] [213.8mb]->[215.8mb]/[700mb]}{[survivor] [2.5mb]->[6.8mb]/[0b]}", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:33,480Z", "level": "WARN", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][635] overhead, spent [857ms] collecting in the last [1.5s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:44,501Z", "level": "WARN", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][644] overhead, spent [557ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:51:13,924Z", "level": "INFO", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][663] overhead, spent [268ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:52:05 Running ['artisan' meeting-bot:schedule-bot] .. 40s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:52:46 Running ['artisan' dialers:monitor-activities] 19s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:05 Running ['artisan' jiminny:monitor-social-accounts] 21s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:27 Running ['artisan' mailbox:skip-lists:refresh] 16s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:43 Running ['artisan' mailbox:batch:process --max-batches=15] 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:58 Running ['artisan' conference:monitor:count] .. 27s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:54:25 Running ['artisan' mailbox:batch:create] ...... 31s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:54:56 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00'] 2026-05-18 06:54:56 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:54:57 Jiminny\Jobs\Mailbox\CreateBatches ....... 692.78ms DONE
docker_lamp_1 | 33s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:56:15 Running ['artisan' meeting-bot:schedule-bot] .. 20s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:56:37 Running ['artisan' dialers:monitor-activities] 32s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:57:09 Running ['artisan' jiminny:monitor-social-accounts] 34s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:57:44 Running ['artisan' mailbox:skip-lists:refresh] 54s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:58:39 Running ['artisan' mailbox:batch:process --max-batches=15] 46s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:59:25 Running ['artisan' conference:monitor:count] .. 23s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:59:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 06:47:22 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | 2026-05-18 07:00:02 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | .. 12s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:00:02 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 2s DONE
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 194.29ms DONE
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 121.55ms DONE
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:00:05 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 318.98ms DONE
docker_lamp_1 | 24s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:00:27 Running ['artisan' activity:status-count] []..... 22s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:00:50 Running ['artisan' mailbox:sync] Queueing 1 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 19s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 07:01:10 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:01:11 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 324.59ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:02:27 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:02:45 Running ['artisan' dialers:monitor-activities] 26s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:03:12 Running ['artisan' jiminny:monitor-social-accounts] 22s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:03:34 Running ['artisan' mailbox:skip-lists:refresh] 31s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:04:06 Running ['artisan' mailbox:batch:process --max-batches=15] 19s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:04:26 Running ['artisan' conference:monitor:count] .. 29s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:04:55 Running ['artisan' mailbox:batch:create] ...... 20s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:05:16 Running ['artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00'] 2026-05-18 07:05:17 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:05:17 Jiminny\Jobs\Mailbox\CreateBatches ....... 512.67ms DONE
docker_lamp_1 | 18s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:06:16 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:22 Running ['artisan' dialers:monitor-activities] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:27 Running ['artisan' jiminny:monitor-social-accounts] 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:32 Running ['artisan' mailbox:skip-lists:refresh] . 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:39 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:43 Running ['artisan' conference:monitor:count] ... 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 07:00:02 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | ... 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:55 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:06:56 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 735.72ms DONE
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 100.30ms DONE
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 69.88ms DONE
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 64.30ms DONE
docker_lamp_1 | . 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:07:02 Running ['artisan' activity:status-count] []...... 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:07:08 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 07:07:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:07:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 182.34ms DONE
docker_lamp_1 | 2026-05-18 07:07:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:07:17 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 366.64ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:08:06 Running ['artisan' meeting-bot:schedule-bot] ... 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:11 Running ['artisan' dialers:monitor-activities] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:15 Running ['artisan' jiminny:monitor-social-accounts] 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:23 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:28 Running ['artisan' mailbox:batch:process --max-batches=15] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:33 Running ['artisan' conference:monitor:count] ... 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:38 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 2.92ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:09:06 Running ['artisan' meeting-bot:schedule-bot] ... 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:13 Running ['artisan' dialers:monitor-activities] . 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:20 Running ['artisan' jiminny:monitor-social-accounts] 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:24 Running ['artisan' mailbox:skip-lists:refresh] . 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:32 Running ['artisan' mailbox:batch:process --max-batches=15] 18s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:50 Running ['artisan' activity:aircall:check-and-renew]
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:aircall:check-and-renew > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:10:05 Running ['artisan' track:retry-failed-downloads]
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' track:retry-failed-downloads > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:11:07,782 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:11:09,274 INFO spawned: 'artisan-schedule_00' with pid 17764
docker_lamp_1 | 2026-05-18 07:11:10,285 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:12:06,357 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:12:07,367 INFO spawned: 'artisan-schedule_00' with pid 17927
docker_lamp_1 | 2026-05-18 07:12:08,372 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:13:06,637 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:13:07,667 INFO spawned: 'artisan-schedule_00' with pid 18092
docker_lamp_1 | 2026-05-18 07:13:08,674 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:14:05,420 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:14:06,470 INFO spawned: 'artisan-schedule_00' with pid 18248
docker_lamp_1 | 2026-05-18 07:14:07,481 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleSta...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"docker_lamp_1 | 2026-05-18 06:43:37 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-18 06:43:38 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. 1s DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:44:17 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:35 Running ['artisan' dialers:monitor-activities] . 8s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:44 Running ['artisan' jiminny:monitor-social-accounts] 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:49 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:53 Running ['artisan' mailbox:batch:process --max-batches=15] 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:45:01 Running ['artisan' conference:monitor:count] ... 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \nngrok | t=2026-05-18T06:45:10+0000 lvl=info msg=\"join connections\" obj=join id=09cbfa895989 l=172.18.0.5:3080 r=54.174.62.141:27787\ndocker_lamp_1 | 2026-05-18 06:45:09 Running ['artisan' crm:sync-objects] 127.0.0.1 - 18/May/2026:06:45:10 +0000 \"POST /index.php\" 204 /home/jiminny/public/index.php 646.584 6144 www\ndocker_lamp_1 | 2026-05-18 06:45:12 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | Syncing objects for Salesforce Team (6473c918-d8db-4ded-a52b-4febfd7b7c02) since 2026-03-19 20:14:10 (delay: 0s)\ndocker_lamp_1 | Team Edge Communications (c3a725ef-fc5e-4c7b-9231-6379b2834101) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Burlington Textiles Corp of America (72c0ccae-28a5-44bd-a0b4-958e73135463) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Uber (1c523aed-80e3-4c44-b215-7f0b027a03a2) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Vonage (c6030540-121e-4d6b-9261-8d82105817bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Nexmo (eaba09e1-4973-4077-b041-ad389248318c) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team SF (018e2d7c-ed01-4af2-be33-5c28f454a185) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team NewAccount (27325244-25d7-4431-aac4-9ddb2bde6b45) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for Pipedrive, Inc. (51467630-d89d-480b-be20-933e64a042f7) since 2026-05-15 13:44:19 (delay: 2s)\ndocker_lamp_1 | Syncing objects for Copper (396ed57c-e3c4-49be-8290-37c32955f7c7) since 2026-05-15 18:14:17 (delay: 4s)\ndocker_lamp_1 | Syncing objects for Pipedrive External Test (fda3cbdf-1117-4ba5-86f8-775f548b3a28) since 2026-05-15 13:44:23 (delay: 6s)\ndocker_lamp_1 | Syncing objects for Close (3ff5a02a-86fb-4357-b1d6-a04e26c38602) since 2026-05-15 18:14:21 (delay: 8s)\ndocker_lamp_1 | Team DeewanyAccount (cfaf90cb-ecf0-432c-a655-a22d9985e4c8) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for Bullhorn (1640a0ac-19da-4c3b-90f7-87525f07a6d2) since 2026-02-19 13:28:05 (delay: 10s)\ndocker_lamp_1 | Team Horen test (93d8f8f2-dd61-4137-97de-a02a9d3751bb) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Ahmed Hamadi (191379e4-5e90-4419-8ffd-4804a5abb565) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Ahmed Testing (3b2e1fad-bc5f-4322-84d2-a7440f78c5d7) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Ahmed jiminny (1dbd47b8-bbf8-4bbb-8e28-67b9c91f566e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Testers Inc (ec0767d5-1248-4447-b316-94dd9a30d52b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Copper Team (817c8ce1-8e22-4ac8-8fca-8df1131963ab) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team TheBestPlace Ever (dbb998f9-70eb-4f11-a9f2-d9f6157f4035) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Horen's apartments (e10bb4ea-6c89-4fe3-be3b-0a278aa81180) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team New Org Test (2cb527b6-73a4-46be-b7b2-b0097b494cc5) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Pipedrive test org (18ea22be-6e0b-461c-a4db-536c022aac73) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team BigChairs Inc. (16dcfaf9-44b4-4cc2-9ead-f98dd0cad4dd) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for GL 500 (0c33bf2d-1c77-4200-8ed6-6147ad444c30) since 2026-02-19 13:26:04 (delay: 12s)\ndocker_lamp_1 | Team Loren X (243d7d4b-1849-46c2-9dfb-4462f52020ef) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Laravel Company 2024 (e466d657-c26d-4281-9ed5-73890fe711f6) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Barbara Fuchs (bea0fcf3-f8f9-471d-92c4-d1b7d1a2e228) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test salesforce auto sync (2c2e652e-1cbb-4620-852d-e73bef0ab4a9) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Bullhorn (83c14120-cdb1-42e9-b0ac-16ef11320a8f) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Globo Tech (fb8d5211-3c4d-4804-9223-b091670ffd79) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Laravel 11 Company 2024 (780c6836-764b-4e47-9a05-cfefbab6e590) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Nikon7 (e9bff902-edc3-4b0b-89b1-2a9aa43d940a) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for Dev Zoho CRM client (1ece66c8-feb1-4df1-b321-21607daf4623) since 2026-05-15 18:14:27 (delay: 14s)\ndocker_lamp_1 | ........... 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Delete\\DeleteContactJob ....... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Delete\\DeleteContactJob . 185.83ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\nngrok | t=2026-05-18T06:45:13+0000 lvl=info msg=\"join connections\" obj=join id=97a3e43cd14a l=172.18.0.5:3080 r=54.174.62.141:62747\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\SyncObjects ............. 100.50ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Delete\\VerifyActivityCrmTaskJob RUNNING\nngrok | t=2026-05-18T06:45:13+0000 lvl=info msg=\"join connections\" obj=join id=dd34011e0f3d l=172.18.0.5:3080 r=54.174.62.146:8208\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Jobs\\Crm\\Delete\\VerifyActivityCrmTaskJob 273.69ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | 127.0.0.1 - 18/May/2026:06:45:13 +0000 \"POST /index.php\" 204 /home/jiminny/public/index.php 400.026 6144 www\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 23.15ms DONE\ndocker_lamp_1 | 127.0.0.1 - 18/May/2026:06:45:13 +0000 \"POST /index.php\" 204 /home/jiminny/public/index.php 197.456 32768 www\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 4.10ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 6.20ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 4.95ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 4.13ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 551.13ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 195.34ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 153.79ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 369.02ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 140.71ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch .. 7.48ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch . 10.82ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch .. 8.23ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch . 22.23ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch . 57.73ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\SyncObjects .............. 92.23ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:18 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:18 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:20 Jiminny\\Jobs\\Crm\\SyncObjects ................... 2s DONE\ndocker_lamp_1 | 2026-05-18 06:45:20 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:21 Jiminny\\Jobs\\Crm\\SyncObjects ............. 393.12ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:21 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:23 Jiminny\\Jobs\\Crm\\SyncObjects ................... 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:23 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:23 Jiminny\\Jobs\\Crm\\SyncObjects ............. 151.03ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:24 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:24 Jiminny\\Jobs\\Crm\\SyncObjects ............. 139.21ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:25 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... 9s DONE\ndocker_lamp_1 | 2026-05-18 06:45:25 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:26 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:28 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... 2s DONE\ndocker_lamp_1 | 2026-05-18 06:45:28 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:28 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 147.21ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:31 Jiminny\\Jobs\\Crm\\SyncObjects ................... 5s DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:46:06 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:11 Running ['artisan' dialers:monitor-activities] 12s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:24 Running ['artisan' jiminny:monitor-social-accounts] 16s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:41 Running ['artisan' mailbox:skip-lists:refresh] . 8s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:49 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:53 Running ['artisan' conference:monitor:count] .. 10s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:47:13,407Z\", \"level\": \"WARN\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][438] overhead, spent [628ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\ndocker_lamp_1 | 2026-05-18 06:47:03 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-15 18:11:10 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | .. 17s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:47:21 Running ['artisan' activity:notify-not-logged] 2026-05-18 06:47:22 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:22 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 140.74ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:22 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:25 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ 3s DONE\ndocker_lamp_1 | 2026-05-18 06:47:25 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 289.88ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 128.92ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\Hubspot\\ImportAccountBatch .... RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:27 Jiminny\\Jobs\\Crm\\Hubspot\\ImportAccountBatch .... 1s DONE\ndocker_lamp_1 | 2026-05-18 06:47:27 Jiminny\\Jobs\\Crm\\Hubspot\\ImportContactBatch .... RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:29 Jiminny\\Jobs\\Crm\\Hubspot\\ImportContactBatch .... 2s DONE\ndocker_lamp_1 | 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:47:36 Running ['artisan' activity:status-count] []..... 12s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:47:48 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.\ndocker_lamp_1 | ............... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 170.82ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 266.09ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:48:09 Running ['artisan' meeting-bot:schedule-bot] ... 9s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:48:19 Running ['artisan' dialers:monitor-activities] 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:48:34 Running ['artisan' jiminny:monitor-social-accounts] 15s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:48:49 Running ['artisan' mailbox:skip-lists:refresh] 20s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:49:10 Running ['artisan' mailbox:batch:process --max-batches=15] 10s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:49:21 Running ['artisan' conference:monitor:count] .. 15s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 45.88ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams: \ndocker_lamp_1 | ....... 22s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:autolog-delayed > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:29,648Z\", \"level\": \"INFO\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][632] overhead, spent [409ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:33,468Z\", \"level\": \"INFO\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][young][635][17] duration [857ms], collections [1]/[1.5s], total [857ms]/[2.9s], memory [295.3mb]->[223.6mb]/[700mb], all_pools {[young] [79mb]->[1mb]/[0b]}{[old] [213.8mb]->[215.8mb]/[700mb]}{[survivor] [2.5mb]->[6.8mb]/[0b]}\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:33,480Z\", \"level\": \"WARN\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][635] overhead, spent [857ms] collecting in the last [1.5s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:44,501Z\", \"level\": \"WARN\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][644] overhead, spent [557ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:51:13,924Z\", \"level\": \"INFO\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][663] overhead, spent [268ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:52:05 Running ['artisan' meeting-bot:schedule-bot] .. 40s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:52:46 Running ['artisan' dialers:monitor-activities] 19s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:05 Running ['artisan' jiminny:monitor-social-accounts] 21s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:27 Running ['artisan' mailbox:skip-lists:refresh] 16s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:43 Running ['artisan' mailbox:batch:process --max-batches=15] 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:58 Running ['artisan' conference:monitor:count] .. 27s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:54:25 Running ['artisan' mailbox:batch:create] ...... 31s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:54:56 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00'] 2026-05-18 06:54:56 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-18 06:54:57 Jiminny\\Jobs\\Mailbox\\CreateBatches ....... 692.78ms DONE\ndocker_lamp_1 | 33s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:56:15 Running ['artisan' meeting-bot:schedule-bot] .. 20s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:56:37 Running ['artisan' dialers:monitor-activities] 32s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:57:09 Running ['artisan' jiminny:monitor-social-accounts] 34s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:57:44 Running ['artisan' mailbox:skip-lists:refresh] 54s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:58:39 Running ['artisan' mailbox:batch:process --max-batches=15] 46s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:59:25 Running ['artisan' conference:monitor:count] .. 23s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:59:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 06:47:22 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | 2026-05-18 07:00:02 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | .. 12s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:00:02 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ 2s DONE\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 194.29ms DONE\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 121.55ms DONE\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:00:05 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 318.98ms DONE\ndocker_lamp_1 | 24s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:00:27 Running ['artisan' activity:status-count] []..... 22s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:00:50 Running ['artisan' mailbox:sync] Queueing 1 inbox(es) for sync.\ndocker_lamp_1 | .............. 19s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 07:01:10 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 07:01:11 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 324.59ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:02:27 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:02:45 Running ['artisan' dialers:monitor-activities] 26s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:03:12 Running ['artisan' jiminny:monitor-social-accounts] 22s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:03:34 Running ['artisan' mailbox:skip-lists:refresh] 31s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:04:06 Running ['artisan' mailbox:batch:process --max-batches=15] 19s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:04:26 Running ['artisan' conference:monitor:count] .. 29s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:04:55 Running ['artisan' mailbox:batch:create] ...... 20s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:05:16 Running ['artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00'] 2026-05-18 07:05:17 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-18 07:05:17 Jiminny\\Jobs\\Mailbox\\CreateBatches ....... 512.67ms DONE\ndocker_lamp_1 | 18s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:06:16 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:22 Running ['artisan' dialers:monitor-activities] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:27 Running ['artisan' jiminny:monitor-social-accounts] 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:32 Running ['artisan' mailbox:skip-lists:refresh] . 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:39 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:43 Running ['artisan' conference:monitor:count] ... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 07:00:02 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | ... 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:55 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:06:56 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 735.72ms DONE\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 100.30ms DONE\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 69.88ms DONE\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 64.30ms DONE\ndocker_lamp_1 | . 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:07:02 Running ['artisan' activity:status-count] []...... 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:07:08 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.\ndocker_lamp_1 | ............... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 07:07:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 07:07:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 182.34ms DONE\ndocker_lamp_1 | 2026-05-18 07:07:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 07:07:17 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 366.64ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:08:06 Running ['artisan' meeting-bot:schedule-bot] ... 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:11 Running ['artisan' dialers:monitor-activities] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:15 Running ['artisan' jiminny:monitor-social-accounts] 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:23 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:28 Running ['artisan' mailbox:batch:process --max-batches=15] 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:33 Running ['artisan' conference:monitor:count] ... 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:38 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 2.92ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:09:06 Running ['artisan' meeting-bot:schedule-bot] ... 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:13 Running ['artisan' dialers:monitor-activities] . 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:20 Running ['artisan' jiminny:monitor-social-accounts] 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:24 Running ['artisan' mailbox:skip-lists:refresh] . 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:32 Running ['artisan' mailbox:batch:process --max-batches=15] 18s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:50 Running ['artisan' activity:aircall:check-and-renew] \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:aircall:check-and-renew > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:10:05 Running ['artisan' track:retry-failed-downloads] \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' track:retry-failed-downloads > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:11:07,782 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:11:09,274 INFO spawned: 'artisan-schedule_00' with pid 17764\ndocker_lamp_1 | 2026-05-18 07:11:10,285 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:12:06,357 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:12:07,367 INFO spawned: 'artisan-schedule_00' with pid 17927\ndocker_lamp_1 | 2026-05-18 07:12:08,372 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:13:06,637 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:13:07,667 INFO spawned: 'artisan-schedule_00' with pid 18092\ndocker_lamp_1 | 2026-05-18 07:13:08,674 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:14:05,420 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:14:06,470 INFO spawned: 'artisan-schedule_00' with pid 18248\ndocker_lamp_1 | 2026-05-18 07:14:07,481 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:15:02,865 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18414\ndocker_lamp_1 | 2026-05-18 07:15:04,898 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00' with pid 18601\ndocker_lamp_1 | 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\n\n\nv View in Docker Desktop o View Config w Enable Watch","depth":4,"on_screen":true,"value":"docker_lamp_1 | 2026-05-18 06:43:37 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-18 06:43:38 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. 1s DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:44:17 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:35 Running ['artisan' dialers:monitor-activities] . 8s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:44 Running ['artisan' jiminny:monitor-social-accounts] 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:49 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:53 Running ['artisan' mailbox:batch:process --max-batches=15] 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:45:01 Running ['artisan' conference:monitor:count] ... 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \nngrok | t=2026-05-18T06:45:10+0000 lvl=info msg=\"join connections\" obj=join id=09cbfa895989 l=172.18.0.5:3080 r=54.174.62.141:27787\ndocker_lamp_1 | 2026-05-18 06:45:09 Running ['artisan' crm:sync-objects] 127.0.0.1 - 18/May/2026:06:45:10 +0000 \"POST /index.php\" 204 /home/jiminny/public/index.php 646.584 6144 www\ndocker_lamp_1 | 2026-05-18 06:45:12 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | Syncing objects for Salesforce Team (6473c918-d8db-4ded-a52b-4febfd7b7c02) since 2026-03-19 20:14:10 (delay: 0s)\ndocker_lamp_1 | Team Edge Communications (c3a725ef-fc5e-4c7b-9231-6379b2834101) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Burlington Textiles Corp of America (72c0ccae-28a5-44bd-a0b4-958e73135463) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Uber (1c523aed-80e3-4c44-b215-7f0b027a03a2) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Vonage (c6030540-121e-4d6b-9261-8d82105817bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Nexmo (eaba09e1-4973-4077-b041-ad389248318c) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team SF (018e2d7c-ed01-4af2-be33-5c28f454a185) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team NewAccount (27325244-25d7-4431-aac4-9ddb2bde6b45) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for Pipedrive, Inc. (51467630-d89d-480b-be20-933e64a042f7) since 2026-05-15 13:44:19 (delay: 2s)\ndocker_lamp_1 | Syncing objects for Copper (396ed57c-e3c4-49be-8290-37c32955f7c7) since 2026-05-15 18:14:17 (delay: 4s)\ndocker_lamp_1 | Syncing objects for Pipedrive External Test (fda3cbdf-1117-4ba5-86f8-775f548b3a28) since 2026-05-15 13:44:23 (delay: 6s)\ndocker_lamp_1 | Syncing objects for Close (3ff5a02a-86fb-4357-b1d6-a04e26c38602) since 2026-05-15 18:14:21 (delay: 8s)\ndocker_lamp_1 | Team DeewanyAccount (cfaf90cb-ecf0-432c-a655-a22d9985e4c8) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for Bullhorn (1640a0ac-19da-4c3b-90f7-87525f07a6d2) since 2026-02-19 13:28:05 (delay: 10s)\ndocker_lamp_1 | Team Horen test (93d8f8f2-dd61-4137-97de-a02a9d3751bb) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Ahmed Hamadi (191379e4-5e90-4419-8ffd-4804a5abb565) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Ahmed Testing (3b2e1fad-bc5f-4322-84d2-a7440f78c5d7) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Ahmed jiminny (1dbd47b8-bbf8-4bbb-8e28-67b9c91f566e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Testers Inc (ec0767d5-1248-4447-b316-94dd9a30d52b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Copper Team (817c8ce1-8e22-4ac8-8fca-8df1131963ab) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team TheBestPlace Ever (dbb998f9-70eb-4f11-a9f2-d9f6157f4035) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Horen's apartments (e10bb4ea-6c89-4fe3-be3b-0a278aa81180) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team New Org Test (2cb527b6-73a4-46be-b7b2-b0097b494cc5) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Pipedrive test org (18ea22be-6e0b-461c-a4db-536c022aac73) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team BigChairs Inc. (16dcfaf9-44b4-4cc2-9ead-f98dd0cad4dd) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for GL 500 (0c33bf2d-1c77-4200-8ed6-6147ad444c30) since 2026-02-19 13:26:04 (delay: 12s)\ndocker_lamp_1 | Team Loren X (243d7d4b-1849-46c2-9dfb-4462f52020ef) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Laravel Company 2024 (e466d657-c26d-4281-9ed5-73890fe711f6) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Barbara Fuchs (bea0fcf3-f8f9-471d-92c4-d1b7d1a2e228) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test salesforce auto sync (2c2e652e-1cbb-4620-852d-e73bef0ab4a9) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Bullhorn (83c14120-cdb1-42e9-b0ac-16ef11320a8f) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Globo Tech (fb8d5211-3c4d-4804-9223-b091670ffd79) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Laravel 11 Company 2024 (780c6836-764b-4e47-9a05-cfefbab6e590) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Nikon7 (e9bff902-edc3-4b0b-89b1-2a9aa43d940a) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for Dev Zoho CRM client (1ece66c8-feb1-4df1-b321-21607daf4623) since 2026-05-15 18:14:27 (delay: 14s)\ndocker_lamp_1 | ........... 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Delete\\DeleteContactJob ....... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Delete\\DeleteContactJob . 185.83ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\nngrok | t=2026-05-18T06:45:13+0000 lvl=info msg=\"join connections\" obj=join id=97a3e43cd14a l=172.18.0.5:3080 r=54.174.62.141:62747\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\SyncObjects ............. 100.50ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Delete\\VerifyActivityCrmTaskJob RUNNING\nngrok | t=2026-05-18T06:45:13+0000 lvl=info msg=\"join connections\" obj=join id=dd34011e0f3d l=172.18.0.5:3080 r=54.174.62.146:8208\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Jobs\\Crm\\Delete\\VerifyActivityCrmTaskJob 273.69ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | 127.0.0.1 - 18/May/2026:06:45:13 +0000 \"POST /index.php\" 204 /home/jiminny/public/index.php 400.026 6144 www\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 23.15ms DONE\ndocker_lamp_1 | 127.0.0.1 - 18/May/2026:06:45:13 +0000 \"POST /index.php\" 204 /home/jiminny/public/index.php 197.456 32768 www\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 4.10ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 6.20ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 4.95ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 4.13ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 551.13ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 195.34ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 153.79ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 369.02ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 140.71ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch .. 7.48ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch . 10.82ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch .. 8.23ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch . 22.23ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch . 57.73ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\SyncObjects .............. 92.23ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:18 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:18 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:20 Jiminny\\Jobs\\Crm\\SyncObjects ................... 2s DONE\ndocker_lamp_1 | 2026-05-18 06:45:20 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:21 Jiminny\\Jobs\\Crm\\SyncObjects ............. 393.12ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:21 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:23 Jiminny\\Jobs\\Crm\\SyncObjects ................... 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:23 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:23 Jiminny\\Jobs\\Crm\\SyncObjects ............. 151.03ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:24 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:24 Jiminny\\Jobs\\Crm\\SyncObjects ............. 139.21ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:25 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... 9s DONE\ndocker_lamp_1 | 2026-05-18 06:45:25 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:26 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:28 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... 2s DONE\ndocker_lamp_1 | 2026-05-18 06:45:28 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:28 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 147.21ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:31 Jiminny\\Jobs\\Crm\\SyncObjects ................... 5s DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:46:06 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:11 Running ['artisan' dialers:monitor-activities] 12s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:24 Running ['artisan' jiminny:monitor-social-accounts] 16s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:41 Running ['artisan' mailbox:skip-lists:refresh] . 8s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:49 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:53 Running ['artisan' conference:monitor:count] .. 10s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:47:13,407Z\", \"level\": \"WARN\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][438] overhead, spent [628ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\ndocker_lamp_1 | 2026-05-18 06:47:03 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-15 18:11:10 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | .. 17s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:47:21 Running ['artisan' activity:notify-not-logged] 2026-05-18 06:47:22 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:22 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 140.74ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:22 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:25 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ 3s DONE\ndocker_lamp_1 | 2026-05-18 06:47:25 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 289.88ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 128.92ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\Hubspot\\ImportAccountBatch .... RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:27 Jiminny\\Jobs\\Crm\\Hubspot\\ImportAccountBatch .... 1s DONE\ndocker_lamp_1 | 2026-05-18 06:47:27 Jiminny\\Jobs\\Crm\\Hubspot\\ImportContactBatch .... RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:29 Jiminny\\Jobs\\Crm\\Hubspot\\ImportContactBatch .... 2s DONE\ndocker_lamp_1 | 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:47:36 Running ['artisan' activity:status-count] []..... 12s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:47:48 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.\ndocker_lamp_1 | ............... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 170.82ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 266.09ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:48:09 Running ['artisan' meeting-bot:schedule-bot] ... 9s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:48:19 Running ['artisan' dialers:monitor-activities] 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:48:34 Running ['artisan' jiminny:monitor-social-accounts] 15s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:48:49 Running ['artisan' mailbox:skip-lists:refresh] 20s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:49:10 Running ['artisan' mailbox:batch:process --max-batches=15] 10s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:49:21 Running ['artisan' conference:monitor:count] .. 15s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 45.88ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams: \ndocker_lamp_1 | ....... 22s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:autolog-delayed > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:29,648Z\", \"level\": \"INFO\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][632] overhead, spent [409ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:33,468Z\", \"level\": \"INFO\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][young][635][17] duration [857ms], collections [1]/[1.5s], total [857ms]/[2.9s], memory [295.3mb]->[223.6mb]/[700mb], all_pools {[young] [79mb]->[1mb]/[0b]}{[old] [213.8mb]->[215.8mb]/[700mb]}{[survivor] [2.5mb]->[6.8mb]/[0b]}\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:33,480Z\", \"level\": \"WARN\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][635] overhead, spent [857ms] collecting in the last [1.5s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:44,501Z\", \"level\": \"WARN\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][644] overhead, spent [557ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:51:13,924Z\", \"level\": \"INFO\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][663] overhead, spent [268ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:52:05 Running ['artisan' meeting-bot:schedule-bot] .. 40s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:52:46 Running ['artisan' dialers:monitor-activities] 19s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:05 Running ['artisan' jiminny:monitor-social-accounts] 21s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:27 Running ['artisan' mailbox:skip-lists:refresh] 16s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:43 Running ['artisan' mailbox:batch:process --max-batches=15] 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:58 Running ['artisan' conference:monitor:count] .. 27s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:54:25 Running ['artisan' mailbox:batch:create] ...... 31s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:54:56 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00'] 2026-05-18 06:54:56 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-18 06:54:57 Jiminny\\Jobs\\Mailbox\\CreateBatches ....... 692.78ms DONE\ndocker_lamp_1 | 33s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:56:15 Running ['artisan' meeting-bot:schedule-bot] .. 20s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:56:37 Running ['artisan' dialers:monitor-activities] 32s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:57:09 Running ['artisan' jiminny:monitor-social-accounts] 34s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:57:44 Running ['artisan' mailbox:skip-lists:refresh] 54s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:58:39 Running ['artisan' mailbox:batch:process --max-batches=15] 46s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:59:25 Running ['artisan' conference:monitor:count] .. 23s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:59:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 06:47:22 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | 2026-05-18 07:00:02 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | .. 12s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:00:02 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ 2s DONE\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 194.29ms DONE\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 121.55ms DONE\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:00:05 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 318.98ms DONE\ndocker_lamp_1 | 24s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:00:27 Running ['artisan' activity:status-count] []..... 22s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:00:50 Running ['artisan' mailbox:sync] Queueing 1 inbox(es) for sync.\ndocker_lamp_1 | .............. 19s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 07:01:10 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 07:01:11 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 324.59ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:02:27 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:02:45 Running ['artisan' dialers:monitor-activities] 26s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:03:12 Running ['artisan' jiminny:monitor-social-accounts] 22s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:03:34 Running ['artisan' mailbox:skip-lists:refresh] 31s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:04:06 Running ['artisan' mailbox:batch:process --max-batches=15] 19s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:04:26 Running ['artisan' conference:monitor:count] .. 29s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:04:55 Running ['artisan' mailbox:batch:create] ...... 20s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:05:16 Running ['artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00'] 2026-05-18 07:05:17 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-18 07:05:17 Jiminny\\Jobs\\Mailbox\\CreateBatches ....... 512.67ms DONE\ndocker_lamp_1 | 18s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:06:16 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:22 Running ['artisan' dialers:monitor-activities] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:27 Running ['artisan' jiminny:monitor-social-accounts] 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:32 Running ['artisan' mailbox:skip-lists:refresh] . 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:39 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:43 Running ['artisan' conference:monitor:count] ... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 07:00:02 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | ... 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:55 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:06:56 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 735.72ms DONE\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 100.30ms DONE\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 69.88ms DONE\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 64.30ms DONE\ndocker_lamp_1 | . 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:07:02 Running ['artisan' activity:status-count] []...... 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:07:08 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.\ndocker_lamp_1 | ............... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 07:07:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 07:07:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 182.34ms DONE\ndocker_lamp_1 | 2026-05-18 07:07:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 07:07:17 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 366.64ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:08:06 Running ['artisan' meeting-bot:schedule-bot] ... 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:11 Running ['artisan' dialers:monitor-activities] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:15 Running ['artisan' jiminny:monitor-social-accounts] 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:23 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:28 Running ['artisan' mailbox:batch:process --max-batches=15] 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:33 Running ['artisan' conference:monitor:count] ... 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:38 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 2.92ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:09:06 Running ['artisan' meeting-bot:schedule-bot] ... 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:13 Running ['artisan' dialers:monitor-activities] . 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:20 Running ['artisan' jiminny:monitor-social-accounts] 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:24 Running ['artisan' mailbox:skip-lists:refresh] . 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:32 Running ['artisan' mailbox:batch:process --max-batches=15] 18s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:50 Running ['artisan' activity:aircall:check-and-renew] \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:aircall:check-and-renew > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:10:05 Running ['artisan' track:retry-failed-downloads] \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' track:retry-failed-downloads > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:11:07,782 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:11:09,274 INFO spawned: 'artisan-schedule_00' with pid 17764\ndocker_lamp_1 | 2026-05-18 07:11:10,285 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:12:06,357 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:12:07,367 INFO spawned: 'artisan-schedule_00' with pid 17927\ndocker_lamp_1 | 2026-05-18 07:12:08,372 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:13:06,637 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:13:07,667 INFO spawned: 'artisan-schedule_00' with pid 18092\ndocker_lamp_1 | 2026-05-18 07:13:08,674 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:14:05,420 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:14:06,470 INFO spawned: 'artisan-schedule_00' with pid 18248\ndocker_lamp_1 | 2026-05-18 07:14:07,481 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:15:02,865 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18414\ndocker_lamp_1 | 2026-05-18 07:15:04,898 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00' with pid 18601\ndocker_lamp_1 | 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\n\n\nv View in Docker Desktop o View Config w Enable Watch","is_focused":true},{"role":"AXButton","text":"Menu","depth":3,"bounds":{"left":0.4861111,"top":0.08944444,"width":0.010416667,"height":0.016666668},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥1 DOCKER (docker-compose)","depth":3,"bounds":{"left":0.01875,"top":0.09,"width":0.46388888,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Sat May 16 18:04:33 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod\n(lukas@jiminny-prod-bastion) Verification code: \nWelcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Mon May 18 07:10:15 UTC 2026\n\n System load: 0.08 Processes: 131\n Usage of /: 58.5% of 7.57GB Users logged in: 3\n Memory usage: 35% IPv4 address for eth0: 10.30.45.167\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n48 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu May 14 07:41:36 2026 from 212.5.153.87\nlukas@jiminny-prod-bastion:~$","depth":5,"on_screen":true,"value":"Last login: Sat May 16 18:04:33 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod\n(lukas@jiminny-prod-bastion) Verification code: \nWelcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Mon May 18 07:10:15 UTC 2026\n\n System load: 0.08 Processes: 131\n Usage of /: 58.5% of 7.57GB Users logged in: 3\n Memory usage: 35% IPv4 address for eth0: 10.30.45.167\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n48 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu May 14 07:41:36 2026 from 212.5.153.87\nlukas@jiminny-prod-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.08944444,"width":0.010416667,"height":0.016666668},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥2 PROD (ssh)","depth":4,"bounds":{"left":0.52013886,"top":0.09,"width":0.46458334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Sat May 16 18:04:33 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.26222223,"width":0.4986111,"height":0.14222223},"on_screen":true,"lines":[{"char_start":0,"char_count":43,"bounds":{"left":0.5048611,"top":0.26222223,"width":0.23888889,"height":0.02}},{"char_start":43,"char_count":1,"bounds":{"left":0.5048611,"top":0.2822222,"width":0.0055555557,"height":0.02}},{"char_start":44,"char_count":75,"bounds":{"left":0.5048611,"top":0.30222222,"width":0.41666666,"height":0.02}},{"char_start":119,"char_count":1,"bounds":{"left":0.5048611,"top":0.32222223,"width":0.0055555557,"height":0.02}},{"char_start":120,"char_count":75,"bounds":{"left":0.5048611,"top":0.3422222,"width":0.41666666,"height":0.02}},{"char_start":195,"char_count":44,"bounds":{"left":0.5048611,"top":0.36222222,"width":0.24444444,"height":0.02}}],"value":"Last login: Sat May 16 18:04:33 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.23944445,"width":0.010416667,"height":0.016666668},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥3 EU (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.24,"width":0.46458334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Sat May 16 18:04:33 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ stg\n(lukas@jiminny-stage-bastion) Verification code: \nConnection closed by 52.15.189.246 port 22\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ stg\n(lukas@jiminny-stage-bastion) Verification code: \nWelcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1052-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Mon May 18 06:46:53 UTC 2026\n\n System load: 0.0 Processes: 119\n Usage of /: 57.3% of 7.57GB Users logged in: 1\n Memory usage: 29% IPv4 address for ens5: 10.30.46.154\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n92 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\n\n*** System restart required ***\nLast login: Fri May 15 13:31:17 2026 from 212.5.153.87\nlukas@jiminny-stage-bastion:~$","depth":5,"on_screen":true,"value":"Last login: Sat May 16 18:04:33 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ stg\n(lukas@jiminny-stage-bastion) Verification code: \nConnection closed by 52.15.189.246 port 22\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ stg\n(lukas@jiminny-stage-bastion) Verification code: \nWelcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1052-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Mon May 18 06:46:53 UTC 2026\n\n System load: 0.0 Processes: 119\n Usage of /: 57.3% of 7.57GB Users logged in: 1\n Memory usage: 29% IPv4 address for ens5: 10.30.46.154\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n92 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\n\n*** System restart required ***\nLast login: Fri May 15 13:31:17 2026 from 212.5.153.87\nlukas@jiminny-stage-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.40944445,"width":0.010416667,"height":0.016666668},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥4 STAGE (ssh)","depth":4,"bounds":{"left":0.52013886,"top":0.41,"width":0.46458334,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon May 18 09:17:28 on ttys003\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.5822222,"width":0.4986111,"height":0.12222222},"on_screen":true,"lines":[{"char_start":0,"char_count":43,"bounds":{"left":0.5048611,"top":0.5822222,"width":0.23888889,"height":0.02}},{"char_start":43,"char_count":1,"bounds":{"left":0.5048611,"top":0.6022222,"width":0.0055555557,"height":0.02}},{"char_start":44,"char_count":75,"bounds":{"left":0.5048611,"top":0.62222224,"width":0.41666666,"height":0.02}},{"char_start":119,"char_count":1,"bounds":{"left":0.5048611,"top":0.6422222,"width":0.0055555557,"height":0.02}},{"char_start":120,"char_count":75,"bounds":{"left":0.5048611,"top":0.6622222,"width":0.41666666,"height":0.02}},{"char_start":195,"char_count":44,"bounds":{"left":0.5048611,"top":0.68222225,"width":0.24444444,"height":0.02}}],"value":"Last login: Mon May 18 09:17:28 on ttys003\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true}]...
|
3128998236328465234
|
347664749489868784
|
visual_change
|
accessibility
|
NULL
|
docker_lamp_1 | 2026-05-18 06:43:37 Jiminny\Job docker_lamp_1 | 2026-05-18 06:43:37 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:43:38 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] 1s DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:44:17 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:35 Running ['artisan' dialers:monitor-activities] . 8s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:44 Running ['artisan' jiminny:monitor-social-accounts] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:49 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:53 Running ['artisan' mailbox:batch:process --max-batches=15] 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:45:01 Running ['artisan' conference:monitor:count] ... 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
ngrok | t=2026-05-18T06:45:10+0000 lvl=info msg="join connections" obj=join id=09cbfa895989 l=[IP_ADDRESS]:3080 r=[IP_ADDRESS]:27787
docker_lamp_1 | 2026-05-18 06:45:09 Running ['artisan' crm:sync-objects] [IP_ADDRESS] - 18/May/2026:06:45:10 +0000 "POST /index.php" 204 /home/jiminny/public/index.php [PHONE] www
docker_lamp_1 | 2026-05-18 06:45:12 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | Syncing objects for Salesforce Team (6473c918-d8db-4ded-a52b-4febfd7b7c02) since 2026-03-19 20:14:10 (delay: 0s)
docker_lamp_1 | Team Edge Communications (c3a725ef-fc5e-4c7b-9231-6379b2834101) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Burlington Textiles Corp of America (72c0ccae-28a5-44bd-a0b4-958e73135463) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Uber (1c523aed-80e3-4c44-b215-7f0b027a03a2) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Vonage (c6030540-121e-4d6b-9261-8d82105817bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Nexmo (eaba09e1-4973-4077-b041-ad389248318c) is not yet assigned an owner. skipping...
docker_lamp_1 | Team SF (018e2d7c-ed01-4af2-be33-5c28f454a185) is not yet assigned an owner. skipping...
docker_lamp_1 | Team NewAccount (27325244-25d7-4431-aac4-9ddb2bde6b45) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for Pipedrive, Inc. (51467630-d89d-480b-be20-933e64a042f7) since 2026-05-15 13:44:19 (delay: 2s)
docker_lamp_1 | Syncing objects for Copper (396ed57c-e3c4-49be-8290-37c32955f7c7) since 2026-05-15 18:14:17 (delay: 4s)
docker_lamp_1 | Syncing objects for Pipedrive External Test (fda3cbdf-1117-4ba5-86f8-775f548b3a28) since 2026-05-15 13:44:23 (delay: 6s)
docker_lamp_1 | Syncing objects for Close (3ff5a02a-86fb-4357-b1d6-a04e26c38602) since 2026-05-15 18:14:21 (delay: 8s)
docker_lamp_1 | Team DeewanyAccount (cfaf90cb-ecf0-432c-a655-a22d9985e4c8) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for Bullhorn (1640a0ac-19da-4c3b-90f7-87525f07a6d2) since 2026-02-19 13:28:05 (delay: 10s)
docker_lamp_1 | Team Horen test (93d8f8f2-dd61-4137-97de-a02a9d3751bb) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Ahmed Hamadi (191379e4-5e90-4419-8ffd-4804a5abb565) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Ahmed Testing (3b2e1fad-bc5f-4322-84d2-a7440f78c5d7) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Ahmed jiminny (1dbd47b8-bbf8-4bbb-8e28-67b9c91f566e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Testers Inc (ec0767d5-1248-4447-b316-94dd9a30d52b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Copper Team (817c8ce1-8e22-4ac8-8fca-8df1131963ab) is not yet assigned an owner. skipping...
docker_lamp_1 | Team TheBestPlace Ever (dbb998f9-70eb-4f11-a9f2-d9f6157f4035) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Horen's apartments (e10bb4ea-6c89-4fe3-be3b-0a278aa81180) is not yet assigned an owner. skipping...
docker_lamp_1 | Team New Org Test (2cb527b6-73a4-46be-b7b2-b0097b494cc5) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Pipedrive test org (18ea22be-6e0b-461c-a4db-536c022aac73) is not yet assigned an owner. skipping...
docker_lamp_1 | Team BigChairs Inc. (16dcfaf9-44b4-4cc2-9ead-f98dd0cad4dd) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for GL 500 (0c33bf2d-1c77-4200-8ed6-6147ad444c30) since 2026-02-19 13:26:04 (delay: 12s)
docker_lamp_1 | Team Loren X (243d7d4b-1849-46c2-9dfb-4462f52020ef) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Laravel Company 2024 (e466d657-c26d-4281-9ed5-73890fe711f6) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Barbara Fuchs (bea0fcf3-f8f9-471d-92c4-d1b7d1a2e228) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test salesforce auto sync (2c2e652e-1cbb-4620-852d-e73bef0ab4a9) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Bullhorn (83c14120-cdb1-42e9-b0ac-16ef11320a8f) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Globo Tech (fb8d5211-3c4d-4804-9223-b091670ffd79) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Laravel 11 Company 2024 (780c6836-764b-4e47-9a05-cfefbab6e590) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Nikon7 (e9bff902-edc3-4b0b-89b1-2a9aa43d940a) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for Dev Zoho CRM client (1ece66c8-feb1-4df1-b321-21607daf4623) since 2026-05-15 18:14:27 (delay: 14s)
docker_lamp_1 | [PASSWORD_DOTS] 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Delete\DeleteContactJob ....... RUNNING
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Delete\DeleteContactJob . 185.83ms DONE
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
ngrok | t=2026-05-18T06:45:13+0000 lvl=info msg="join connections" obj=join id=97a3e43cd14a l=[IP_ADDRESS]:3080 r=[IP_ADDRESS]:62747
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 100.50ms DONE
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Delete\VerifyActivityCrmTaskJob RUNNING
ngrok | t=2026-05-18T06:45:13+0000 lvl=info msg="join connections" obj=join id=dd34011e0f3d l=[IP_ADDRESS]:3080 r=[IP_ADDRESS]:8208
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Jobs\Crm\Delete\VerifyActivityCrmTaskJob 273.69ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | [IP_ADDRESS] - 18/May/2026:06:45:13 +0000 "POST /index.php" 204 /home/jiminny/public/index.php [PHONE] www
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 23.15ms DONE
docker_lamp_1 | [IP_ADDRESS] - 18/May/2026:06:45:13 +0000 "POST /index.php" 204 /home/jiminny/public/index.php 197.456 32768 www
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 4.10ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 6.20ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 4.95ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 4.13ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData .... 551.13ms DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData .... 195.34ms DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData .... 153.79ms DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData .... 369.02ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData .... 140.71ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch .. 7.48ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch . 10.82ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch .. 8.23ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch . 22.23ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch . 57.73ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 92.23ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:18 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:18 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:20 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 2s DONE
docker_lamp_1 | 2026-05-18 06:45:20 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:21 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 393.12ms DONE
docker_lamp_1 | 2026-05-18 06:45:21 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:23 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | 2026-05-18 06:45:23 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:23 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 151.03ms DONE
docker_lamp_1 | 2026-05-18 06:45:24 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:24 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 139.21ms DONE
docker_lamp_1 | 2026-05-18 06:45:25 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] 9s DONE
docker_lamp_1 | 2026-05-18 06:45:25 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:26 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:28 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] 2s DONE
docker_lamp_1 | 2026-05-18 06:45:28 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:28 Jiminny\Jobs\Crm\MatchActivityCrmData .... 147.21ms DONE
docker_lamp_1 | 2026-05-18 06:45:31 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 5s DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:46:06 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:11 Running ['artisan' dialers:monitor-activities] 12s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:24 Running ['artisan' jiminny:monitor-social-accounts] 16s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:41 Running ['artisan' mailbox:skip-lists:refresh] . 8s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:49 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:53 Running ['artisan' conference:monitor:count] .. 10s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:47:13,407Z", "level": "WARN", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][438] overhead, spent [628ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
docker_lamp_1 | 2026-05-18 06:47:03 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-15 18:11:10 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | .. 17s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:47:21 Running ['artisan' activity:notify-not-logged] 2026-05-18 06:47:22 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:22 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 140.74ms DONE
docker_lamp_1 | 2026-05-18 06:47:22 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:25 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 3s DONE
docker_lamp_1 | 2026-05-18 06:47:25 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 289.88ms DONE
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 128.92ms DONE
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\Hubspot\ImportAccountBatch .... RUNNING
docker_lamp_1 | 2026-05-18 06:47:27 Jiminny\Jobs\Crm\Hubspot\ImportAccountBatch .... 1s DONE
docker_lamp_1 | 2026-05-18 06:47:27 Jiminny\Jobs\Crm\Hubspot\ImportContactBatch .... RUNNING
docker_lamp_1 | 2026-05-18 06:47:29 Jiminny\Jobs\Crm\Hubspot\ImportContactBatch .... 2s DONE
docker_lamp_1 | 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:47:36 Running ['artisan' activity:status-count] []..... 12s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:47:48 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 170.82ms DONE
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 266.09ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:48:09 Running ['artisan' meeting-bot:schedule-bot] ... 9s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:48:19 Running ['artisan' dialers:monitor-activities] 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:48:34 Running ['artisan' jiminny:monitor-social-accounts] 15s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:48:49 Running ['artisan' mailbox:skip-lists:refresh] 20s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:49:10 Running ['artisan' mailbox:batch:process --max-batches=15] 10s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:49:21 Running ['artisan' conference:monitor:count] .. 15s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 45.88ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams:
docker_lamp_1 | ....... 22s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:autolog-delayed > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:29,648Z", "level": "INFO", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][632] overhead, spent [409ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:33,468Z", "level": "INFO", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][young][635][17] duration [857ms], collections [1]/[1.5s], total [857ms]/[2.9s], memory [295.3mb]->[223.6mb]/[700mb], all_pools {[young] [79mb]->[1mb]/[0b]}{[old] [213.8mb]->[215.8mb]/[700mb]}{[survivor] [2.5mb]->[6.8mb]/[0b]}", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:33,480Z", "level": "WARN", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][635] overhead, spent [857ms] collecting in the last [1.5s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:44,501Z", "level": "WARN", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][644] overhead, spent [557ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:51:13,924Z", "level": "INFO", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][663] overhead, spent [268ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:52:05 Running ['artisan' meeting-bot:schedule-bot] .. 40s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:52:46 Running ['artisan' dialers:monitor-activities] 19s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:05 Running ['artisan' jiminny:monitor-social-accounts] 21s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:27 Running ['artisan' mailbox:skip-lists:refresh] 16s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:43 Running ['artisan' mailbox:batch:process --max-batches=15] 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:58 Running ['artisan' conference:monitor:count] .. 27s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:54:25 Running ['artisan' mailbox:batch:create] ...... 31s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:54:56 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00'] 2026-05-18 06:54:56 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:54:57 Jiminny\Jobs\Mailbox\CreateBatches ....... 692.78ms DONE
docker_lamp_1 | 33s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:56:15 Running ['artisan' meeting-bot:schedule-bot] .. 20s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:56:37 Running ['artisan' dialers:monitor-activities] 32s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:57:09 Running ['artisan' jiminny:monitor-social-accounts] 34s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:57:44 Running ['artisan' mailbox:skip-lists:refresh] 54s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:58:39 Running ['artisan' mailbox:batch:process --max-batches=15] 46s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:59:25 Running ['artisan' conference:monitor:count] .. 23s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:59:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 06:47:22 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | 2026-05-18 07:00:02 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | .. 12s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:00:02 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 2s DONE
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 194.29ms DONE
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 121.55ms DONE
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:00:05 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 318.98ms DONE
docker_lamp_1 | 24s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:00:27 Running ['artisan' activity:status-count] []..... 22s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:00:50 Running ['artisan' mailbox:sync] Queueing 1 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 19s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 07:01:10 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:01:11 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 324.59ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:02:27 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:02:45 Running ['artisan' dialers:monitor-activities] 26s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:03:12 Running ['artisan' jiminny:monitor-social-accounts] 22s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:03:34 Running ['artisan' mailbox:skip-lists:refresh] 31s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:04:06 Running ['artisan' mailbox:batch:process --max-batches=15] 19s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:04:26 Running ['artisan' conference:monitor:count] .. 29s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:04:55 Running ['artisan' mailbox:batch:create] ...... 20s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:05:16 Running ['artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00'] 2026-05-18 07:05:17 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:05:17 Jiminny\Jobs\Mailbox\CreateBatches ....... 512.67ms DONE
docker_lamp_1 | 18s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:06:16 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:22 Running ['artisan' dialers:monitor-activities] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:27 Running ['artisan' jiminny:monitor-social-accounts] 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:32 Running ['artisan' mailbox:skip-lists:refresh] . 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:39 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:43 Running ['artisan' conference:monitor:count] ... 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 07:00:02 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | ... 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:55 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:06:56 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 735.72ms DONE
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 100.30ms DONE
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 69.88ms DONE
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 64.30ms DONE
docker_lamp_1 | . 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:07:02 Running ['artisan' activity:status-count] []...... 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:07:08 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 07:07:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:07:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 182.34ms DONE
docker_lamp_1 | 2026-05-18 07:07:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:07:17 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 366.64ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:08:06 Running ['artisan' meeting-bot:schedule-bot] ... 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:11 Running ['artisan' dialers:monitor-activities] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:15 Running ['artisan' jiminny:monitor-social-accounts] 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:23 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:28 Running ['artisan' mailbox:batch:process --max-batches=15] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:33 Running ['artisan' conference:monitor:count] ... 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:38 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 2.92ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:09:06 Running ['artisan' meeting-bot:schedule-bot] ... 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:13 Running ['artisan' dialers:monitor-activities] . 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:20 Running ['artisan' jiminny:monitor-social-accounts] 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:24 Running ['artisan' mailbox:skip-lists:refresh] . 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:32 Running ['artisan' mailbox:batch:process --max-batches=15] 18s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:50 Running ['artisan' activity:aircall:check-and-renew]
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:aircall:check-and-renew > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:10:05 Running ['artisan' track:retry-failed-downloads]
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' track:retry-failed-downloads > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:11:07,782 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:11:09,274 INFO spawned: 'artisan-schedule_00' with pid 17764
docker_lamp_1 | 2026-05-18 07:11:10,285 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:12:06,357 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:12:07,367 INFO spawned: 'artisan-schedule_00' with pid 17927
docker_lamp_1 | 2026-05-18 07:12:08,372 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:13:06,637 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:13:07,667 INFO spawned: 'artisan-schedule_00' with pid 18092
docker_lamp_1 | 2026-05-18 07:13:08,674 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:14:05,420 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:14:06,470 INFO spawned: 'artisan-schedule_00' with pid 18248
docker_lamp_1 | 2026-05-18 07:14:07,481 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleSta...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50094
|
1778
|
5
|
2026-05-18T07:16:28.992763+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088588992_m2.jpg...
|
iTerm2
|
DOCKER (docker-compose)
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
docker_lamp_1 | 2026-05-18 06:43:37 Jiminny\Job docker_lamp_1 | 2026-05-18 06:43:37 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:43:38 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] 1s DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:44:17 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:35 Running ['artisan' dialers:monitor-activities] . 8s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:44 Running ['artisan' jiminny:monitor-social-accounts] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:49 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:53 Running ['artisan' mailbox:batch:process --max-batches=15] 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:45:01 Running ['artisan' conference:monitor:count] ... 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
ngrok | t=2026-05-18T06:45:10+0000 lvl=info msg="join connections" obj=join id=09cbfa895989 l=[IP_ADDRESS]:3080 r=[IP_ADDRESS]:27787
docker_lamp_1 | 2026-05-18 06:45:09 Running ['artisan' crm:sync-objects] [IP_ADDRESS] - 18/May/2026:06:45:10 +0000 "POST /index.php" 204 /home/jiminny/public/index.php [PHONE] www
docker_lamp_1 | 2026-05-18 06:45:12 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | Syncing objects for Salesforce Team (6473c918-d8db-4ded-a52b-4febfd7b7c02) since 2026-03-19 20:14:10 (delay: 0s)
docker_lamp_1 | Team Edge Communications (c3a725ef-fc5e-4c7b-9231-6379b2834101) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Burlington Textiles Corp of America (72c0ccae-28a5-44bd-a0b4-958e73135463) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Uber (1c523aed-80e3-4c44-b215-7f0b027a03a2) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Vonage (c6030540-121e-4d6b-9261-8d82105817bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Nexmo (eaba09e1-4973-4077-b041-ad389248318c) is not yet assigned an owner. skipping...
docker_lamp_1 | Team SF (018e2d7c-ed01-4af2-be33-5c28f454a185) is not yet assigned an owner. skipping...
docker_lamp_1 | Team NewAccount (27325244-25d7-4431-aac4-9ddb2bde6b45) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for Pipedrive, Inc. (51467630-d89d-480b-be20-933e64a042f7) since 2026-05-15 13:44:19 (delay: 2s)
docker_lamp_1 | Syncing objects for Copper (396ed57c-e3c4-49be-8290-37c32955f7c7) since 2026-05-15 18:14:17 (delay: 4s)
docker_lamp_1 | Syncing objects for Pipedrive External Test (fda3cbdf-1117-4ba5-86f8-775f548b3a28) since 2026-05-15 13:44:23 (delay: 6s)
docker_lamp_1 | Syncing objects for Close (3ff5a02a-86fb-4357-b1d6-a04e26c38602) since 2026-05-15 18:14:21 (delay: 8s)
docker_lamp_1 | Team DeewanyAccount (cfaf90cb-ecf0-432c-a655-a22d9985e4c8) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for Bullhorn (1640a0ac-19da-4c3b-90f7-87525f07a6d2) since 2026-02-19 13:28:05 (delay: 10s)
docker_lamp_1 | Team Horen test (93d8f8f2-dd61-4137-97de-a02a9d3751bb) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Ahmed Hamadi (191379e4-5e90-4419-8ffd-4804a5abb565) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Ahmed Testing (3b2e1fad-bc5f-4322-84d2-a7440f78c5d7) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Ahmed jiminny (1dbd47b8-bbf8-4bbb-8e28-67b9c91f566e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Testers Inc (ec0767d5-1248-4447-b316-94dd9a30d52b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Copper Team (817c8ce1-8e22-4ac8-8fca-8df1131963ab) is not yet assigned an owner. skipping...
docker_lamp_1 | Team TheBestPlace Ever (dbb998f9-70eb-4f11-a9f2-d9f6157f4035) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Horen's apartments (e10bb4ea-6c89-4fe3-be3b-0a278aa81180) is not yet assigned an owner. skipping...
docker_lamp_1 | Team New Org Test (2cb527b6-73a4-46be-b7b2-b0097b494cc5) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Pipedrive test org (18ea22be-6e0b-461c-a4db-536c022aac73) is not yet assigned an owner. skipping...
docker_lamp_1 | Team BigChairs Inc. (16dcfaf9-44b4-4cc2-9ead-f98dd0cad4dd) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for GL 500 (0c33bf2d-1c77-4200-8ed6-6147ad444c30) since 2026-02-19 13:26:04 (delay: 12s)
docker_lamp_1 | Team Loren X (243d7d4b-1849-46c2-9dfb-4462f52020ef) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Laravel Company 2024 (e466d657-c26d-4281-9ed5-73890fe711f6) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Barbara Fuchs (bea0fcf3-f8f9-471d-92c4-d1b7d1a2e228) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test salesforce auto sync (2c2e652e-1cbb-4620-852d-e73bef0ab4a9) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Bullhorn (83c14120-cdb1-42e9-b0ac-16ef11320a8f) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Globo Tech (fb8d5211-3c4d-4804-9223-b091670ffd79) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Laravel 11 Company 2024 (780c6836-764b-4e47-9a05-cfefbab6e590) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Nikon7 (e9bff902-edc3-4b0b-89b1-2a9aa43d940a) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for Dev Zoho CRM client (1ece66c8-feb1-4df1-b321-21607daf4623) since 2026-05-15 18:14:27 (delay: 14s)
docker_lamp_1 | [PASSWORD_DOTS] 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Delete\DeleteContactJob ....... RUNNING
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Delete\DeleteContactJob . 185.83ms DONE
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
ngrok | t=2026-05-18T06:45:13+0000 lvl=info msg="join connections" obj=join id=97a3e43cd14a l=[IP_ADDRESS]:3080 r=[IP_ADDRESS]:62747
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 100.50ms DONE
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Delete\VerifyActivityCrmTaskJob RUNNING
ngrok | t=2026-05-18T06:45:13+0000 lvl=info msg="join connections" obj=join id=dd34011e0f3d l=[IP_ADDRESS]:3080 r=[IP_ADDRESS]:8208
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Jobs\Crm\Delete\VerifyActivityCrmTaskJob 273.69ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | [IP_ADDRESS] - 18/May/2026:06:45:13 +0000 "POST /index.php" 204 /home/jiminny/public/index.php [PHONE] www
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 23.15ms DONE
docker_lamp_1 | [IP_ADDRESS] - 18/May/2026:06:45:13 +0000 "POST /index.php" 204 /home/jiminny/public/index.php 197.456 32768 www
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 4.10ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 6.20ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 4.95ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 4.13ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData .... 551.13ms DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData .... 195.34ms DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData .... 153.79ms DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData .... 369.02ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData .... 140.71ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch .. 7.48ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch . 10.82ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch .. 8.23ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch . 22.23ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch . 57.73ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 92.23ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:18 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:18 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:20 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 2s DONE
docker_lamp_1 | 2026-05-18 06:45:20 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:21 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 393.12ms DONE
docker_lamp_1 | 2026-05-18 06:45:21 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:23 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | 2026-05-18 06:45:23 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:23 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 151.03ms DONE
docker_lamp_1 | 2026-05-18 06:45:24 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:24 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 139.21ms DONE
docker_lamp_1 | 2026-05-18 06:45:25 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] 9s DONE
docker_lamp_1 | 2026-05-18 06:45:25 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:26 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:28 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] 2s DONE
docker_lamp_1 | 2026-05-18 06:45:28 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:28 Jiminny\Jobs\Crm\MatchActivityCrmData .... 147.21ms DONE
docker_lamp_1 | 2026-05-18 06:45:31 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 5s DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:46:06 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:11 Running ['artisan' dialers:monitor-activities] 12s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:24 Running ['artisan' jiminny:monitor-social-accounts] 16s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:41 Running ['artisan' mailbox:skip-lists:refresh] . 8s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:49 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:53 Running ['artisan' conference:monitor:count] .. 10s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:47:13,407Z", "level": "WARN", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][438] overhead, spent [628ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
docker_lamp_1 | 2026-05-18 06:47:03 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-15 18:11:10 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | .. 17s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:47:21 Running ['artisan' activity:notify-not-logged] 2026-05-18 06:47:22 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:22 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 140.74ms DONE
docker_lamp_1 | 2026-05-18 06:47:22 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:25 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 3s DONE
docker_lamp_1 | 2026-05-18 06:47:25 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 289.88ms DONE
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 128.92ms DONE
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\Hubspot\ImportAccountBatch .... RUNNING
docker_lamp_1 | 2026-05-18 06:47:27 Jiminny\Jobs\Crm\Hubspot\ImportAccountBatch .... 1s DONE
docker_lamp_1 | 2026-05-18 06:47:27 Jiminny\Jobs\Crm\Hubspot\ImportContactBatch .... RUNNING
docker_lamp_1 | 2026-05-18 06:47:29 Jiminny\Jobs\Crm\Hubspot\ImportContactBatch .... 2s DONE
docker_lamp_1 | 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:47:36 Running ['artisan' activity:status-count] []..... 12s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:47:48 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 170.82ms DONE
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 266.09ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:48:09 Running ['artisan' meeting-bot:schedule-bot] ... 9s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:48:19 Running ['artisan' dialers:monitor-activities] 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:48:34 Running ['artisan' jiminny:monitor-social-accounts] 15s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:48:49 Running ['artisan' mailbox:skip-lists:refresh] 20s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:49:10 Running ['artisan' mailbox:batch:process --max-batches=15] 10s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:49:21 Running ['artisan' conference:monitor:count] .. 15s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 45.88ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams:
docker_lamp_1 | ....... 22s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:autolog-delayed > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:29,648Z", "level": "INFO", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][632] overhead, spent [409ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:33,468Z", "level": "INFO", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][young][635][17] duration [857ms], collections [1]/[1.5s], total [857ms]/[2.9s], memory [295.3mb]->[223.6mb]/[700mb], all_pools {[young] [79mb]->[1mb]/[0b]}{[old] [213.8mb]->[215.8mb]/[700mb]}{[survivor] [2.5mb]->[6.8mb]/[0b]}", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:33,480Z", "level": "WARN", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][635] overhead, spent [857ms] collecting in the last [1.5s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:44,501Z", "level": "WARN", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][644] overhead, spent [557ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:51:13,924Z", "level": "INFO", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][663] overhead, spent [268ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:52:05 Running ['artisan' meeting-bot:schedule-bot] .. 40s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:52:46 Running ['artisan' dialers:monitor-activities] 19s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:05 Running ['artisan' jiminny:monitor-social-accounts] 21s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:27 Running ['artisan' mailbox:skip-lists:refresh] 16s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:43 Running ['artisan' mailbox:batch:process --max-batches=15] 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:58 Running ['artisan' conference:monitor:count] .. 27s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:54:25 Running ['artisan' mailbox:batch:create] ...... 31s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:54:56 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00'] 2026-05-18 06:54:56 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:54:57 Jiminny\Jobs\Mailbox\CreateBatches ....... 692.78ms DONE
docker_lamp_1 | 33s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:56:15 Running ['artisan' meeting-bot:schedule-bot] .. 20s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:56:37 Running ['artisan' dialers:monitor-activities] 32s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:57:09 Running ['artisan' jiminny:monitor-social-accounts] 34s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:57:44 Running ['artisan' mailbox:skip-lists:refresh] 54s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:58:39 Running ['artisan' mailbox:batch:process --max-batches=15] 46s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:59:25 Running ['artisan' conference:monitor:count] .. 23s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:59:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 06:47:22 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | 2026-05-18 07:00:02 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | .. 12s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:00:02 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 2s DONE
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 194.29ms DONE
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 121.55ms DONE
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:00:05 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 318.98ms DONE
docker_lamp_1 | 24s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:00:27 Running ['artisan' activity:status-count] []..... 22s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:00:50 Running ['artisan' mailbox:sync] Queueing 1 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 19s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 07:01:10 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:01:11 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 324.59ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:02:27 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:02:45 Running ['artisan' dialers:monitor-activities] 26s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:03:12 Running ['artisan' jiminny:monitor-social-accounts] 22s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:03:34 Running ['artisan' mailbox:skip-lists:refresh] 31s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:04:06 Running ['artisan' mailbox:batch:process --max-batches=15] 19s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:04:26 Running ['artisan' conference:monitor:count] .. 29s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:04:55 Running ['artisan' mailbox:batch:create] ...... 20s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:05:16 Running ['artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00'] 2026-05-18 07:05:17 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:05:17 Jiminny\Jobs\Mailbox\CreateBatches ....... 512.67ms DONE
docker_lamp_1 | 18s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:06:16 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:22 Running ['artisan' dialers:monitor-activities] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:27 Running ['artisan' jiminny:monitor-social-accounts] 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:32 Running ['artisan' mailbox:skip-lists:refresh] . 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:39 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:43 Running ['artisan' conference:monitor:count] ... 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 07:00:02 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | ... 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:55 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:06:56 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 735.72ms DONE
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 100.30ms DONE
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 69.88ms DONE
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 64.30ms DONE
docker_lamp_1 | . 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:07:02 Running ['artisan' activity:status-count] []...... 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:07:08 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 07:07:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:07:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 182.34ms DONE
docker_lamp_1 | 2026-05-18 07:07:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:07:17 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 366.64ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:08:06 Running ['artisan' meeting-bot:schedule-bot] ... 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:11 Running ['artisan' dialers:monitor-activities] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:15 Running ['artisan' jiminny:monitor-social-accounts] 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:23 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:28 Running ['artisan' mailbox:batch:process --max-batches=15] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:33 Running ['artisan' conference:monitor:count] ... 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:38 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 2.92ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:09:06 Running ['artisan' meeting-bot:schedule-bot] ... 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:13 Running ['artisan' dialers:monitor-activities] . 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:20 Running ['artisan' jiminny:monitor-social-accounts] 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:24 Running ['artisan' mailbox:skip-lists:refresh] . 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:32 Running ['artisan' mailbox:batch:process --max-batches=15] 18s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:50 Running ['artisan' activity:aircall:check-and-renew]
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:aircall:check-and-renew > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:10:05 Running ['artisan' track:retry-failed-downloads]
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' track:retry-failed-downloads > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:11:07,782 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:11:09,274 INFO spawned: 'artisan-schedule_00' with pid 17764
docker_lamp_1 | 2026-05-18 07:11:10,285 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:12:06,357 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:12:07,367 INFO spawned: 'artisan-schedule_00' with pid 17927
docker_lamp_1 | 2026-05-18 07:12:08,372 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:13:06,637 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:13:07,667 INFO spawned: 'artisan-schedule_00' with pid 18092
docker_lamp_1 | 2026-05-18 07:13:08,674 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:14:05,420 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:14:06,470 INFO spawned: 'artisan-schedule_00' with pid 18248
docker_lamp_1 | 2026-05-18 07:14:07,481 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleSta...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"docker_lamp_1 | 2026-05-18 06:43:37 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-18 06:43:38 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. 1s DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:44:17 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:35 Running ['artisan' dialers:monitor-activities] . 8s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:44 Running ['artisan' jiminny:monitor-social-accounts] 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:49 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:53 Running ['artisan' mailbox:batch:process --max-batches=15] 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:45:01 Running ['artisan' conference:monitor:count] ... 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \nngrok | t=2026-05-18T06:45:10+0000 lvl=info msg=\"join connections\" obj=join id=09cbfa895989 l=172.18.0.5:3080 r=54.174.62.141:27787\ndocker_lamp_1 | 2026-05-18 06:45:09 Running ['artisan' crm:sync-objects] 127.0.0.1 - 18/May/2026:06:45:10 +0000 \"POST /index.php\" 204 /home/jiminny/public/index.php 646.584 6144 www\ndocker_lamp_1 | 2026-05-18 06:45:12 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | Syncing objects for Salesforce Team (6473c918-d8db-4ded-a52b-4febfd7b7c02) since 2026-03-19 20:14:10 (delay: 0s)\ndocker_lamp_1 | Team Edge Communications (c3a725ef-fc5e-4c7b-9231-6379b2834101) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Burlington Textiles Corp of America (72c0ccae-28a5-44bd-a0b4-958e73135463) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Uber (1c523aed-80e3-4c44-b215-7f0b027a03a2) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Vonage (c6030540-121e-4d6b-9261-8d82105817bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Nexmo (eaba09e1-4973-4077-b041-ad389248318c) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team SF (018e2d7c-ed01-4af2-be33-5c28f454a185) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team NewAccount (27325244-25d7-4431-aac4-9ddb2bde6b45) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for Pipedrive, Inc. (51467630-d89d-480b-be20-933e64a042f7) since 2026-05-15 13:44:19 (delay: 2s)\ndocker_lamp_1 | Syncing objects for Copper (396ed57c-e3c4-49be-8290-37c32955f7c7) since 2026-05-15 18:14:17 (delay: 4s)\ndocker_lamp_1 | Syncing objects for Pipedrive External Test (fda3cbdf-1117-4ba5-86f8-775f548b3a28) since 2026-05-15 13:44:23 (delay: 6s)\ndocker_lamp_1 | Syncing objects for Close (3ff5a02a-86fb-4357-b1d6-a04e26c38602) since 2026-05-15 18:14:21 (delay: 8s)\ndocker_lamp_1 | Team DeewanyAccount (cfaf90cb-ecf0-432c-a655-a22d9985e4c8) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for Bullhorn (1640a0ac-19da-4c3b-90f7-87525f07a6d2) since 2026-02-19 13:28:05 (delay: 10s)\ndocker_lamp_1 | Team Horen test (93d8f8f2-dd61-4137-97de-a02a9d3751bb) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Ahmed Hamadi (191379e4-5e90-4419-8ffd-4804a5abb565) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Ahmed Testing (3b2e1fad-bc5f-4322-84d2-a7440f78c5d7) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Ahmed jiminny (1dbd47b8-bbf8-4bbb-8e28-67b9c91f566e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Testers Inc (ec0767d5-1248-4447-b316-94dd9a30d52b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Copper Team (817c8ce1-8e22-4ac8-8fca-8df1131963ab) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team TheBestPlace Ever (dbb998f9-70eb-4f11-a9f2-d9f6157f4035) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Horen's apartments (e10bb4ea-6c89-4fe3-be3b-0a278aa81180) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team New Org Test (2cb527b6-73a4-46be-b7b2-b0097b494cc5) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Pipedrive test org (18ea22be-6e0b-461c-a4db-536c022aac73) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team BigChairs Inc. (16dcfaf9-44b4-4cc2-9ead-f98dd0cad4dd) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for GL 500 (0c33bf2d-1c77-4200-8ed6-6147ad444c30) since 2026-02-19 13:26:04 (delay: 12s)\ndocker_lamp_1 | Team Loren X (243d7d4b-1849-46c2-9dfb-4462f52020ef) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Laravel Company 2024 (e466d657-c26d-4281-9ed5-73890fe711f6) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Barbara Fuchs (bea0fcf3-f8f9-471d-92c4-d1b7d1a2e228) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test salesforce auto sync (2c2e652e-1cbb-4620-852d-e73bef0ab4a9) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Bullhorn (83c14120-cdb1-42e9-b0ac-16ef11320a8f) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Globo Tech (fb8d5211-3c4d-4804-9223-b091670ffd79) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Laravel 11 Company 2024 (780c6836-764b-4e47-9a05-cfefbab6e590) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Nikon7 (e9bff902-edc3-4b0b-89b1-2a9aa43d940a) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for Dev Zoho CRM client (1ece66c8-feb1-4df1-b321-21607daf4623) since 2026-05-15 18:14:27 (delay: 14s)\ndocker_lamp_1 | ........... 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Delete\\DeleteContactJob ....... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Delete\\DeleteContactJob . 185.83ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\nngrok | t=2026-05-18T06:45:13+0000 lvl=info msg=\"join connections\" obj=join id=97a3e43cd14a l=172.18.0.5:3080 r=54.174.62.141:62747\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\SyncObjects ............. 100.50ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Delete\\VerifyActivityCrmTaskJob RUNNING\nngrok | t=2026-05-18T06:45:13+0000 lvl=info msg=\"join connections\" obj=join id=dd34011e0f3d l=172.18.0.5:3080 r=54.174.62.146:8208\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Jobs\\Crm\\Delete\\VerifyActivityCrmTaskJob 273.69ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | 127.0.0.1 - 18/May/2026:06:45:13 +0000 \"POST /index.php\" 204 /home/jiminny/public/index.php 400.026 6144 www\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 23.15ms DONE\ndocker_lamp_1 | 127.0.0.1 - 18/May/2026:06:45:13 +0000 \"POST /index.php\" 204 /home/jiminny/public/index.php 197.456 32768 www\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 4.10ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 6.20ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 4.95ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 4.13ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 551.13ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 195.34ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 153.79ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 369.02ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 140.71ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch .. 7.48ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch . 10.82ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch .. 8.23ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch . 22.23ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch . 57.73ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\SyncObjects .............. 92.23ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:18 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:18 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:20 Jiminny\\Jobs\\Crm\\SyncObjects ................... 2s DONE\ndocker_lamp_1 | 2026-05-18 06:45:20 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:21 Jiminny\\Jobs\\Crm\\SyncObjects ............. 393.12ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:21 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:23 Jiminny\\Jobs\\Crm\\SyncObjects ................... 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:23 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:23 Jiminny\\Jobs\\Crm\\SyncObjects ............. 151.03ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:24 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:24 Jiminny\\Jobs\\Crm\\SyncObjects ............. 139.21ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:25 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... 9s DONE\ndocker_lamp_1 | 2026-05-18 06:45:25 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:26 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:28 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... 2s DONE\ndocker_lamp_1 | 2026-05-18 06:45:28 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:28 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 147.21ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:31 Jiminny\\Jobs\\Crm\\SyncObjects ................... 5s DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:46:06 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:11 Running ['artisan' dialers:monitor-activities] 12s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:24 Running ['artisan' jiminny:monitor-social-accounts] 16s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:41 Running ['artisan' mailbox:skip-lists:refresh] . 8s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:49 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:53 Running ['artisan' conference:monitor:count] .. 10s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:47:13,407Z\", \"level\": \"WARN\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][438] overhead, spent [628ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\ndocker_lamp_1 | 2026-05-18 06:47:03 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-15 18:11:10 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | .. 17s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:47:21 Running ['artisan' activity:notify-not-logged] 2026-05-18 06:47:22 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:22 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 140.74ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:22 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:25 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ 3s DONE\ndocker_lamp_1 | 2026-05-18 06:47:25 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 289.88ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 128.92ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\Hubspot\\ImportAccountBatch .... RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:27 Jiminny\\Jobs\\Crm\\Hubspot\\ImportAccountBatch .... 1s DONE\ndocker_lamp_1 | 2026-05-18 06:47:27 Jiminny\\Jobs\\Crm\\Hubspot\\ImportContactBatch .... RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:29 Jiminny\\Jobs\\Crm\\Hubspot\\ImportContactBatch .... 2s DONE\ndocker_lamp_1 | 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:47:36 Running ['artisan' activity:status-count] []..... 12s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:47:48 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.\ndocker_lamp_1 | ............... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 170.82ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 266.09ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:48:09 Running ['artisan' meeting-bot:schedule-bot] ... 9s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:48:19 Running ['artisan' dialers:monitor-activities] 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:48:34 Running ['artisan' jiminny:monitor-social-accounts] 15s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:48:49 Running ['artisan' mailbox:skip-lists:refresh] 20s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:49:10 Running ['artisan' mailbox:batch:process --max-batches=15] 10s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:49:21 Running ['artisan' conference:monitor:count] .. 15s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 45.88ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams: \ndocker_lamp_1 | ....... 22s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:autolog-delayed > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:29,648Z\", \"level\": \"INFO\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][632] overhead, spent [409ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:33,468Z\", \"level\": \"INFO\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][young][635][17] duration [857ms], collections [1]/[1.5s], total [857ms]/[2.9s], memory [295.3mb]->[223.6mb]/[700mb], all_pools {[young] [79mb]->[1mb]/[0b]}{[old] [213.8mb]->[215.8mb]/[700mb]}{[survivor] [2.5mb]->[6.8mb]/[0b]}\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:33,480Z\", \"level\": \"WARN\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][635] overhead, spent [857ms] collecting in the last [1.5s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:44,501Z\", \"level\": \"WARN\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][644] overhead, spent [557ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:51:13,924Z\", \"level\": \"INFO\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][663] overhead, spent [268ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:52:05 Running ['artisan' meeting-bot:schedule-bot] .. 40s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:52:46 Running ['artisan' dialers:monitor-activities] 19s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:05 Running ['artisan' jiminny:monitor-social-accounts] 21s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:27 Running ['artisan' mailbox:skip-lists:refresh] 16s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:43 Running ['artisan' mailbox:batch:process --max-batches=15] 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:58 Running ['artisan' conference:monitor:count] .. 27s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:54:25 Running ['artisan' mailbox:batch:create] ...... 31s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:54:56 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00'] 2026-05-18 06:54:56 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-18 06:54:57 Jiminny\\Jobs\\Mailbox\\CreateBatches ....... 692.78ms DONE\ndocker_lamp_1 | 33s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:56:15 Running ['artisan' meeting-bot:schedule-bot] .. 20s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:56:37 Running ['artisan' dialers:monitor-activities] 32s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:57:09 Running ['artisan' jiminny:monitor-social-accounts] 34s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:57:44 Running ['artisan' mailbox:skip-lists:refresh] 54s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:58:39 Running ['artisan' mailbox:batch:process --max-batches=15] 46s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:59:25 Running ['artisan' conference:monitor:count] .. 23s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:59:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 06:47:22 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | 2026-05-18 07:00:02 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | .. 12s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:00:02 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ 2s DONE\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 194.29ms DONE\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 121.55ms DONE\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:00:05 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 318.98ms DONE\ndocker_lamp_1 | 24s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:00:27 Running ['artisan' activity:status-count] []..... 22s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:00:50 Running ['artisan' mailbox:sync] Queueing 1 inbox(es) for sync.\ndocker_lamp_1 | .............. 19s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 07:01:10 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 07:01:11 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 324.59ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:02:27 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:02:45 Running ['artisan' dialers:monitor-activities] 26s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:03:12 Running ['artisan' jiminny:monitor-social-accounts] 22s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:03:34 Running ['artisan' mailbox:skip-lists:refresh] 31s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:04:06 Running ['artisan' mailbox:batch:process --max-batches=15] 19s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:04:26 Running ['artisan' conference:monitor:count] .. 29s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:04:55 Running ['artisan' mailbox:batch:create] ...... 20s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:05:16 Running ['artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00'] 2026-05-18 07:05:17 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-18 07:05:17 Jiminny\\Jobs\\Mailbox\\CreateBatches ....... 512.67ms DONE\ndocker_lamp_1 | 18s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:06:16 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:22 Running ['artisan' dialers:monitor-activities] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:27 Running ['artisan' jiminny:monitor-social-accounts] 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:32 Running ['artisan' mailbox:skip-lists:refresh] . 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:39 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:43 Running ['artisan' conference:monitor:count] ... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 07:00:02 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | ... 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:55 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:06:56 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 735.72ms DONE\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 100.30ms DONE\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 69.88ms DONE\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 64.30ms DONE\ndocker_lamp_1 | . 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:07:02 Running ['artisan' activity:status-count] []...... 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:07:08 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.\ndocker_lamp_1 | ............... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 07:07:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 07:07:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 182.34ms DONE\ndocker_lamp_1 | 2026-05-18 07:07:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 07:07:17 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 366.64ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:08:06 Running ['artisan' meeting-bot:schedule-bot] ... 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:11 Running ['artisan' dialers:monitor-activities] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:15 Running ['artisan' jiminny:monitor-social-accounts] 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:23 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:28 Running ['artisan' mailbox:batch:process --max-batches=15] 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:33 Running ['artisan' conference:monitor:count] ... 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:38 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 2.92ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:09:06 Running ['artisan' meeting-bot:schedule-bot] ... 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:13 Running ['artisan' dialers:monitor-activities] . 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:20 Running ['artisan' jiminny:monitor-social-accounts] 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:24 Running ['artisan' mailbox:skip-lists:refresh] . 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:32 Running ['artisan' mailbox:batch:process --max-batches=15] 18s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:50 Running ['artisan' activity:aircall:check-and-renew] \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:aircall:check-and-renew > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:10:05 Running ['artisan' track:retry-failed-downloads] \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' track:retry-failed-downloads > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:11:07,782 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:11:09,274 INFO spawned: 'artisan-schedule_00' with pid 17764\ndocker_lamp_1 | 2026-05-18 07:11:10,285 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:12:06,357 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:12:07,367 INFO spawned: 'artisan-schedule_00' with pid 17927\ndocker_lamp_1 | 2026-05-18 07:12:08,372 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:13:06,637 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:13:07,667 INFO spawned: 'artisan-schedule_00' with pid 18092\ndocker_lamp_1 | 2026-05-18 07:13:08,674 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:14:05,420 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:14:06,470 INFO spawned: 'artisan-schedule_00' with pid 18248\ndocker_lamp_1 | 2026-05-18 07:14:07,481 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:15:02,865 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18414\ndocker_lamp_1 | 2026-05-18 07:15:04,898 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00' with pid 18601\ndocker_lamp_1 | 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\n\n\nv View in Docker Desktop o View Config w Enable Watch","depth":4,"on_screen":true,"value":"docker_lamp_1 | 2026-05-18 06:43:37 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-18 06:43:38 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. 1s DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:44:17 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:35 Running ['artisan' dialers:monitor-activities] . 8s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:44 Running ['artisan' jiminny:monitor-social-accounts] 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:49 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:44:53 Running ['artisan' mailbox:batch:process --max-batches=15] 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:45:01 Running ['artisan' conference:monitor:count] ... 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \nngrok | t=2026-05-18T06:45:10+0000 lvl=info msg=\"join connections\" obj=join id=09cbfa895989 l=172.18.0.5:3080 r=54.174.62.141:27787\ndocker_lamp_1 | 2026-05-18 06:45:09 Running ['artisan' crm:sync-objects] 127.0.0.1 - 18/May/2026:06:45:10 +0000 \"POST /index.php\" 204 /home/jiminny/public/index.php 646.584 6144 www\ndocker_lamp_1 | 2026-05-18 06:45:12 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | Syncing objects for Salesforce Team (6473c918-d8db-4ded-a52b-4febfd7b7c02) since 2026-03-19 20:14:10 (delay: 0s)\ndocker_lamp_1 | Team Edge Communications (c3a725ef-fc5e-4c7b-9231-6379b2834101) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Burlington Textiles Corp of America (72c0ccae-28a5-44bd-a0b4-958e73135463) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Uber (1c523aed-80e3-4c44-b215-7f0b027a03a2) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Vonage (c6030540-121e-4d6b-9261-8d82105817bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Nexmo (eaba09e1-4973-4077-b041-ad389248318c) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team SF (018e2d7c-ed01-4af2-be33-5c28f454a185) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team NewAccount (27325244-25d7-4431-aac4-9ddb2bde6b45) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for Pipedrive, Inc. (51467630-d89d-480b-be20-933e64a042f7) since 2026-05-15 13:44:19 (delay: 2s)\ndocker_lamp_1 | Syncing objects for Copper (396ed57c-e3c4-49be-8290-37c32955f7c7) since 2026-05-15 18:14:17 (delay: 4s)\ndocker_lamp_1 | Syncing objects for Pipedrive External Test (fda3cbdf-1117-4ba5-86f8-775f548b3a28) since 2026-05-15 13:44:23 (delay: 6s)\ndocker_lamp_1 | Syncing objects for Close (3ff5a02a-86fb-4357-b1d6-a04e26c38602) since 2026-05-15 18:14:21 (delay: 8s)\ndocker_lamp_1 | Team DeewanyAccount (cfaf90cb-ecf0-432c-a655-a22d9985e4c8) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for Bullhorn (1640a0ac-19da-4c3b-90f7-87525f07a6d2) since 2026-02-19 13:28:05 (delay: 10s)\ndocker_lamp_1 | Team Horen test (93d8f8f2-dd61-4137-97de-a02a9d3751bb) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Ahmed Hamadi (191379e4-5e90-4419-8ffd-4804a5abb565) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Ahmed Testing (3b2e1fad-bc5f-4322-84d2-a7440f78c5d7) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Ahmed jiminny (1dbd47b8-bbf8-4bbb-8e28-67b9c91f566e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Testers Inc (ec0767d5-1248-4447-b316-94dd9a30d52b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Copper Team (817c8ce1-8e22-4ac8-8fca-8df1131963ab) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team TheBestPlace Ever (dbb998f9-70eb-4f11-a9f2-d9f6157f4035) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Horen's apartments (e10bb4ea-6c89-4fe3-be3b-0a278aa81180) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team New Org Test (2cb527b6-73a4-46be-b7b2-b0097b494cc5) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Pipedrive test org (18ea22be-6e0b-461c-a4db-536c022aac73) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team BigChairs Inc. (16dcfaf9-44b4-4cc2-9ead-f98dd0cad4dd) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for GL 500 (0c33bf2d-1c77-4200-8ed6-6147ad444c30) since 2026-02-19 13:26:04 (delay: 12s)\ndocker_lamp_1 | Team Loren X (243d7d4b-1849-46c2-9dfb-4462f52020ef) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Laravel Company 2024 (e466d657-c26d-4281-9ed5-73890fe711f6) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Barbara Fuchs (bea0fcf3-f8f9-471d-92c4-d1b7d1a2e228) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test salesforce auto sync (2c2e652e-1cbb-4620-852d-e73bef0ab4a9) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Bullhorn (83c14120-cdb1-42e9-b0ac-16ef11320a8f) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Globo Tech (fb8d5211-3c4d-4804-9223-b091670ffd79) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Laravel 11 Company 2024 (780c6836-764b-4e47-9a05-cfefbab6e590) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Nikon7 (e9bff902-edc3-4b0b-89b1-2a9aa43d940a) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Syncing objects for Dev Zoho CRM client (1ece66c8-feb1-4df1-b321-21607daf4623) since 2026-05-15 18:14:27 (delay: 14s)\ndocker_lamp_1 | ........... 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Delete\\DeleteContactJob ....... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Delete\\DeleteContactJob . 185.83ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\nngrok | t=2026-05-18T06:45:13+0000 lvl=info msg=\"join connections\" obj=join id=97a3e43cd14a l=172.18.0.5:3080 r=54.174.62.141:62747\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\SyncObjects ............. 100.50ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:13 Jiminny\\Jobs\\Crm\\Delete\\VerifyActivityCrmTaskJob RUNNING\nngrok | t=2026-05-18T06:45:13+0000 lvl=info msg=\"join connections\" obj=join id=dd34011e0f3d l=172.18.0.5:3080 r=54.174.62.146:8208\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Jobs\\Crm\\Delete\\VerifyActivityCrmTaskJob 273.69ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | 127.0.0.1 - 18/May/2026:06:45:13 +0000 \"POST /index.php\" 204 /home/jiminny/public/index.php 400.026 6144 www\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 23.15ms DONE\ndocker_lamp_1 | 127.0.0.1 - 18/May/2026:06:45:13 +0000 \"POST /index.php\" 204 /home/jiminny/public/index.php 197.456 32768 www\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 4.10ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 6.20ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 4.95ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Listeners\\Crm\\RematchActivityOnCrmObjectDetach 4.13ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:14 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 551.13ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 195.34ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 153.79ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:15 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 369.02ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 140.71ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch .. 7.48ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch . 10.82ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch .. 8.23ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch . 22.23ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch ...... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\CheckAndRetryRemoteMatch . 57.73ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\SyncObjects .............. 92.23ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:16 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:18 Jiminny\\Jobs\\Crm\\Hubspot\\ProcessWebhookEventsJob 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:18 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:20 Jiminny\\Jobs\\Crm\\SyncObjects ................... 2s DONE\ndocker_lamp_1 | 2026-05-18 06:45:20 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:21 Jiminny\\Jobs\\Crm\\SyncObjects ............. 393.12ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:21 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:23 Jiminny\\Jobs\\Crm\\SyncObjects ................... 1s DONE\ndocker_lamp_1 | 2026-05-18 06:45:23 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:23 Jiminny\\Jobs\\Crm\\SyncObjects ............. 151.03ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:24 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:24 Jiminny\\Jobs\\Crm\\SyncObjects ............. 139.21ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:25 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... 9s DONE\ndocker_lamp_1 | 2026-05-18 06:45:25 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:26 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:28 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... 2s DONE\ndocker_lamp_1 | 2026-05-18 06:45:28 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .......... RUNNING\ndocker_lamp_1 | 2026-05-18 06:45:28 Jiminny\\Jobs\\Crm\\MatchActivityCrmData .... 147.21ms DONE\ndocker_lamp_1 | 2026-05-18 06:45:31 Jiminny\\Jobs\\Crm\\SyncObjects ................... 5s DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:46:06 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:11 Running ['artisan' dialers:monitor-activities] 12s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:24 Running ['artisan' jiminny:monitor-social-accounts] 16s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:41 Running ['artisan' mailbox:skip-lists:refresh] . 8s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:49 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:46:53 Running ['artisan' conference:monitor:count] .. 10s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:47:13,407Z\", \"level\": \"WARN\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][438] overhead, spent [628ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\ndocker_lamp_1 | 2026-05-18 06:47:03 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-15 18:11:10 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | .. 17s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:47:21 Running ['artisan' activity:notify-not-logged] 2026-05-18 06:47:22 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:22 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 140.74ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:22 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:25 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ 3s DONE\ndocker_lamp_1 | 2026-05-18 06:47:25 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 289.88ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 128.92ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:26 Jiminny\\Jobs\\Crm\\Hubspot\\ImportAccountBatch .... RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:27 Jiminny\\Jobs\\Crm\\Hubspot\\ImportAccountBatch .... 1s DONE\ndocker_lamp_1 | 2026-05-18 06:47:27 Jiminny\\Jobs\\Crm\\Hubspot\\ImportContactBatch .... RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:29 Jiminny\\Jobs\\Crm\\Hubspot\\ImportContactBatch .... 2s DONE\ndocker_lamp_1 | 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:47:36 Running ['artisan' activity:status-count] []..... 12s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:47:48 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.\ndocker_lamp_1 | ............... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 170.82ms DONE\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 06:47:56 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 266.09ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:48:09 Running ['artisan' meeting-bot:schedule-bot] ... 9s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:48:19 Running ['artisan' dialers:monitor-activities] 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:48:34 Running ['artisan' jiminny:monitor-social-accounts] 15s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:48:49 Running ['artisan' mailbox:skip-lists:refresh] 20s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:49:10 Running ['artisan' mailbox:batch:process --max-batches=15] 10s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:49:21 Running ['artisan' conference:monitor:count] .. 15s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 45.88ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams: \ndocker_lamp_1 | ....... 22s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:autolog-delayed > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:29,648Z\", \"level\": \"INFO\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][632] overhead, spent [409ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:33,468Z\", \"level\": \"INFO\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][young][635][17] duration [857ms], collections [1]/[1.5s], total [857ms]/[2.9s], memory [295.3mb]->[223.6mb]/[700mb], all_pools {[young] [79mb]->[1mb]/[0b]}{[old] [213.8mb]->[215.8mb]/[700mb]}{[survivor] [2.5mb]->[6.8mb]/[0b]}\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:33,480Z\", \"level\": \"WARN\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][635] overhead, spent [857ms] collecting in the last [1.5s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:50:44,501Z\", \"level\": \"WARN\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][644] overhead, spent [557ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-05-18T06:51:13,924Z\", \"level\": \"INFO\", \"component\": \"o.e.m.j.JvmGcMonitorService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[gc][663] overhead, spent [268ms] collecting in the last [1s]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:52:05 Running ['artisan' meeting-bot:schedule-bot] .. 40s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:52:46 Running ['artisan' dialers:monitor-activities] 19s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:05 Running ['artisan' jiminny:monitor-social-accounts] 21s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:27 Running ['artisan' mailbox:skip-lists:refresh] 16s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:43 Running ['artisan' mailbox:batch:process --max-batches=15] 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:53:58 Running ['artisan' conference:monitor:count] .. 27s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:54:25 Running ['artisan' mailbox:batch:create] ...... 31s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:54:56 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00'] 2026-05-18 06:54:56 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-18 06:54:57 Jiminny\\Jobs\\Mailbox\\CreateBatches ....... 692.78ms DONE\ndocker_lamp_1 | 33s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 06:56:15 Running ['artisan' meeting-bot:schedule-bot] .. 20s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:56:37 Running ['artisan' dialers:monitor-activities] 32s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:57:09 Running ['artisan' jiminny:monitor-social-accounts] 34s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:57:44 Running ['artisan' mailbox:skip-lists:refresh] 54s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:58:39 Running ['artisan' mailbox:batch:process --max-batches=15] 46s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:59:25 Running ['artisan' conference:monitor:count] .. 23s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 06:59:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 06:47:22 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | 2026-05-18 07:00:02 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | .. 12s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:00:02 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ 2s DONE\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 194.29ms DONE\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 121.55ms DONE\ndocker_lamp_1 | 2026-05-18 07:00:04 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:00:05 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 318.98ms DONE\ndocker_lamp_1 | 24s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:00:27 Running ['artisan' activity:status-count] []..... 22s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:00:50 Running ['artisan' mailbox:sync] Queueing 1 inbox(es) for sync.\ndocker_lamp_1 | .............. 19s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 07:01:10 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 07:01:11 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 324.59ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:02:27 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:02:45 Running ['artisan' dialers:monitor-activities] 26s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:03:12 Running ['artisan' jiminny:monitor-social-accounts] 22s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:03:34 Running ['artisan' mailbox:skip-lists:refresh] 31s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:04:06 Running ['artisan' mailbox:batch:process --max-batches=15] 19s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:04:26 Running ['artisan' conference:monitor:count] .. 29s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:04:55 Running ['artisan' mailbox:batch:create] ...... 20s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:05:16 Running ['artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00'] 2026-05-18 07:05:17 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-18 07:05:17 Jiminny\\Jobs\\Mailbox\\CreateBatches ....... 512.67ms DONE\ndocker_lamp_1 | 18s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:06:16 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:22 Running ['artisan' dialers:monitor-activities] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:27 Running ['artisan' jiminny:monitor-social-accounts] 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:32 Running ['artisan' mailbox:skip-lists:refresh] . 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:39 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:43 Running ['artisan' conference:monitor:count] ... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 07:00:02 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | ... 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:06:55 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:06:56 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 735.72ms DONE\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 100.30ms DONE\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 69.88ms DONE\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-18 07:06:57 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 64.30ms DONE\ndocker_lamp_1 | . 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:07:02 Running ['artisan' activity:status-count] []...... 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:07:08 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.\ndocker_lamp_1 | ............... 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-18 07:07:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 07:07:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 182.34ms DONE\ndocker_lamp_1 | 2026-05-18 07:07:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-18 07:07:17 Jiminny\\Jobs\\Mailbox\\SyncInbox ........... 366.64ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:08:06 Running ['artisan' meeting-bot:schedule-bot] ... 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:11 Running ['artisan' dialers:monitor-activities] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:15 Running ['artisan' jiminny:monitor-social-accounts] 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:23 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:28 Running ['artisan' mailbox:batch:process --max-batches=15] 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:33 Running ['artisan' conference:monitor:count] ... 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:08:38 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 2.92ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:09:06 Running ['artisan' meeting-bot:schedule-bot] ... 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:13 Running ['artisan' dialers:monitor-activities] . 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:20 Running ['artisan' jiminny:monitor-social-accounts] 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:24 Running ['artisan' mailbox:skip-lists:refresh] . 7s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:32 Running ['artisan' mailbox:batch:process --max-batches=15] 18s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:09:50 Running ['artisan' activity:aircall:check-and-renew] \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 14s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:aircall:check-and-renew > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-18 07:10:05 Running ['artisan' track:retry-failed-downloads] \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' track:retry-failed-downloads > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:11:07,782 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:11:09,274 INFO spawned: 'artisan-schedule_00' with pid 17764\ndocker_lamp_1 | 2026-05-18 07:11:10,285 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:12:06,357 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:12:07,367 INFO spawned: 'artisan-schedule_00' with pid 17927\ndocker_lamp_1 | 2026-05-18 07:12:08,372 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:13:06,637 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:13:07,667 INFO spawned: 'artisan-schedule_00' with pid 18092\ndocker_lamp_1 | 2026-05-18 07:13:08,674 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:14:05,420 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:14:06,470 INFO spawned: 'artisan-schedule_00' with pid 18248\ndocker_lamp_1 | 2026-05-18 07:14:07,481 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:15:02,865 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18414\ndocker_lamp_1 | 2026-05-18 07:15:04,898 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\ndocker_lamp_1 | \ndocker_lamp_1 | ParseError \ndocker_lamp_1 | \ndocker_lamp_1 | syntax error, unexpected variable \"$router\"\ndocker_lamp_1 | \ndocker_lamp_1 | at routes/api.php:731\ndocker_lamp_1 | 727▕ });\ndocker_lamp_1 | 728▕ });organiza\ndocker_lamp_1 | 729▕ \ndocker_lamp_1 | 730▕ // Integrations\ndocker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\ndocker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])\ndocker_lamp_1 | 733▕ ->name('api.integrations.internal');\ndocker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\ndocker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');\ndocker_lamp_1 | \ndocker_lamp_1 | +2 vendor frames \ndocker_lamp_1 | \ndocker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315\ndocker_lamp_1 | Illuminate\\Routing\\Router::group([\"api/v1\"], Object(Closure))\ndocker_lamp_1 | \ndocker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53\ndocker_lamp_1 | Jiminny\\Providers\\RouteServiceProvider::mapApiRoutes(Object(Illuminate\\Routing\\Router))\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; not expected)\ndocker_lamp_1 | 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00' with pid 18601\ndocker_lamp_1 | 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)\n\n\nv View in Docker Desktop o View Config w Enable Watch","is_focused":true},{"role":"AXButton","text":"Menu","depth":3,"bounds":{"left":0.50299203,"top":1.0,"width":0.004986702,"height":-0.06424582},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥1 DOCKER (docker-compose)","depth":3,"bounds":{"left":0.27925533,"top":1.0,"width":0.22207446,"height":-0.06464481},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Sat May 16 18:04:33 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod\n(lukas@jiminny-prod-bastion) Verification code: \nWelcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Mon May 18 07:10:15 UTC 2026\n\n System load: 0.08 Processes: 131\n Usage of /: 58.5% of 7.57GB Users logged in: 3\n Memory usage: 35% IPv4 address for eth0: 10.30.45.167\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n48 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu May 14 07:41:36 2026 from 212.5.153.87\nlukas@jiminny-prod-bastion:~$","depth":5,"bounds":{"left":0.5103058,"top":0.59217876,"width":0.2400266,"height":0.40782124},"on_screen":true,"lines":[{"char_start":0,"char_count":43,"bounds":{"left":0.5119681,"top":0.59217876,"width":0.1143617,"height":0.014365523}},{"char_start":43,"char_count":1,"bounds":{"left":0.5119681,"top":0.6065443,"width":0.0026595744,"height":0.014365523}},{"char_start":44,"char_count":75,"bounds":{"left":0.5119681,"top":0.6209098,"width":0.19946809,"height":0.014365523}},{"char_start":119,"char_count":1,"bounds":{"left":0.5119681,"top":0.63527536,"width":0.0026595744,"height":0.014365523}},{"char_start":120,"char_count":75,"bounds":{"left":0.5119681,"top":0.64964086,"width":0.19946809,"height":0.014365523}},{"char_start":195,"char_count":50,"bounds":{"left":0.5119681,"top":0.6640064,"width":0.13297872,"height":0.014365523}},{"char_start":245,"char_count":49,"bounds":{"left":0.5119681,"top":0.6783719,"width":0.13031915,"height":0.014365523}},{"char_start":294,"char_count":64,"bounds":{"left":0.5119681,"top":0.6927374,"width":0.17021276,"height":0.014365523}},{"char_start":358,"char_count":1,"bounds":{"left":0.5119681,"top":0.70710295,"width":0.0026595744,"height":0.014365523}},{"char_start":359,"char_count":43,"bounds":{"left":0.5119681,"top":0.72146845,"width":0.1143617,"height":0.014365523}},{"char_start":402,"char_count":51,"bounds":{"left":0.5119681,"top":0.735834,"width":0.1356383,"height":0.014365523}},{"char_start":453,"char_count":42,"bounds":{"left":0.5119681,"top":0.7501995,"width":0.11170213,"height":0.014365523}},{"char_start":495,"char_count":1,"bounds":{"left":0.5119681,"top":0.76456505,"width":0.0026595744,"height":0.014365523}},{"char_start":496,"char_count":55,"bounds":{"left":0.5119681,"top":0.77893054,"width":0.1462766,"height":0.014365523}},{"char_start":551,"char_count":1,"bounds":{"left":0.5119681,"top":0.7932961,"width":0.0026595744,"height":0.014365523}},{"char_start":552,"char_count":61,"bounds":{"left":0.5119681,"top":0.8076616,"width":0.16223404,"height":0.014365523}},{"char_start":613,"char_count":59,"bounds":{"left":0.5119681,"top":0.82202715,"width":0.15691489,"height":0.014365523}}],"value":"Last login: Sat May 16 18:04:33 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod\n(lukas@jiminny-prod-bastion) Verification code: \nWelcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Mon May 18 07:10:15 UTC 2026\n\n System load: 0.08 Processes: 131\n Usage of /: 58.5% of 7.57GB Users logged in: 3\n Memory usage: 35% IPv4 address for eth0: 10.30.45.167\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n48 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu May 14 07:41:36 2026 from 212.5.153.87\nlukas@jiminny-prod-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.74335104,"top":1.0,"width":0.004986702,"height":-0.06424582},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥2 PROD (ssh)","depth":4,"bounds":{"left":0.5192819,"top":1.0,"width":0.22240691,"height":-0.06464481},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Sat May 16 18:04:33 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"on_screen":true,"value":"Last login: Sat May 16 18:04:33 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥3 EU (-zsh)","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Sat May 16 18:04:33 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ stg\n(lukas@jiminny-stage-bastion) Verification code: \nConnection closed by 52.15.189.246 port 22\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ stg\n(lukas@jiminny-stage-bastion) Verification code: \nWelcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1052-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Mon May 18 06:46:53 UTC 2026\n\n System load: 0.0 Processes: 119\n Usage of /: 57.3% of 7.57GB Users logged in: 1\n Memory usage: 29% IPv4 address for ens5: 10.30.46.154\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n92 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\n\n*** System restart required ***\nLast login: Fri May 15 13:31:17 2026 from 212.5.153.87\nlukas@jiminny-stage-bastion:~$","depth":5,"bounds":{"left":0.5103058,"top":0.82202715,"width":0.2400266,"height":0.17797285},"on_screen":true,"value":"Last login: Sat May 16 18:04:33 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ stg\n(lukas@jiminny-stage-bastion) Verification code: \nConnection closed by 52.15.189.246 port 22\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ stg\n(lukas@jiminny-stage-bastion) Verification code: \nWelcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1052-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Mon May 18 06:46:53 UTC 2026\n\n System load: 0.0 Processes: 119\n Usage of /: 57.3% of 7.57GB Users logged in: 1\n Memory usage: 29% IPv4 address for ens5: 10.30.46.154\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n92 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\n\n*** System restart required ***\nLast login: Fri May 15 13:31:17 2026 from 212.5.153.87\nlukas@jiminny-stage-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥4 STAGE (ssh)","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon May 18 09:17:28 on ttys003\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"on_screen":true,"value":"Last login: Mon May 18 09:17:28 on ttys003\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥5 QA (-zsh)","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon May 18 09:17:28 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"on_screen":true,"value":"Last login: Mon May 18 09:17:28 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥6 FE (-zsh)","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Mon May 18 09:17:28 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"on_screen":true,"value":"Last login: Mon May 18 09:17:28 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥7 EXT (-zsh)","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.11801862,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.3882979,"top":1.0,"width":0.11801862,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.39029256,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.5063165,"top":1.0,"width":0.11801862,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.50831115,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.6243351,"top":1.0,"width":0.11801862,"height":-0.042298436},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.6263298,"top":1.0,"width":0.005319149,"height":-0.04549086},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7287234,"top":1.0,"width":0.01861702,"height":-0.023144484},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DOCKER (docker-compose)","depth":1,"bounds":{"left":0.47972074,"top":1.0,"width":0.060837764,"height":-0.02394259},"on_screen":true,"role_description":"text"}]...
|
3128998236328465234
|
347664749489868784
|
visual_change
|
accessibility
|
NULL
|
docker_lamp_1 | 2026-05-18 06:43:37 Jiminny\Job docker_lamp_1 | 2026-05-18 06:43:37 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:43:38 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] 1s DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:44:17 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:35 Running ['artisan' dialers:monitor-activities] . 8s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:44 Running ['artisan' jiminny:monitor-social-accounts] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:49 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:44:53 Running ['artisan' mailbox:batch:process --max-batches=15] 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:45:01 Running ['artisan' conference:monitor:count] ... 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
ngrok | t=2026-05-18T06:45:10+0000 lvl=info msg="join connections" obj=join id=09cbfa895989 l=[IP_ADDRESS]:3080 r=[IP_ADDRESS]:27787
docker_lamp_1 | 2026-05-18 06:45:09 Running ['artisan' crm:sync-objects] [IP_ADDRESS] - 18/May/2026:06:45:10 +0000 "POST /index.php" 204 /home/jiminny/public/index.php [PHONE] www
docker_lamp_1 | 2026-05-18 06:45:12 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | Syncing objects for Salesforce Team (6473c918-d8db-4ded-a52b-4febfd7b7c02) since 2026-03-19 20:14:10 (delay: 0s)
docker_lamp_1 | Team Edge Communications (c3a725ef-fc5e-4c7b-9231-6379b2834101) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Burlington Textiles Corp of America (72c0ccae-28a5-44bd-a0b4-958e73135463) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Uber (1c523aed-80e3-4c44-b215-7f0b027a03a2) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Vonage (c6030540-121e-4d6b-9261-8d82105817bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Nexmo (eaba09e1-4973-4077-b041-ad389248318c) is not yet assigned an owner. skipping...
docker_lamp_1 | Team SF (018e2d7c-ed01-4af2-be33-5c28f454a185) is not yet assigned an owner. skipping...
docker_lamp_1 | Team NewAccount (27325244-25d7-4431-aac4-9ddb2bde6b45) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for Pipedrive, Inc. (51467630-d89d-480b-be20-933e64a042f7) since 2026-05-15 13:44:19 (delay: 2s)
docker_lamp_1 | Syncing objects for Copper (396ed57c-e3c4-49be-8290-37c32955f7c7) since 2026-05-15 18:14:17 (delay: 4s)
docker_lamp_1 | Syncing objects for Pipedrive External Test (fda3cbdf-1117-4ba5-86f8-775f548b3a28) since 2026-05-15 13:44:23 (delay: 6s)
docker_lamp_1 | Syncing objects for Close (3ff5a02a-86fb-4357-b1d6-a04e26c38602) since 2026-05-15 18:14:21 (delay: 8s)
docker_lamp_1 | Team DeewanyAccount (cfaf90cb-ecf0-432c-a655-a22d9985e4c8) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for Bullhorn (1640a0ac-19da-4c3b-90f7-87525f07a6d2) since 2026-02-19 13:28:05 (delay: 10s)
docker_lamp_1 | Team Horen test (93d8f8f2-dd61-4137-97de-a02a9d3751bb) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Ahmed Hamadi (191379e4-5e90-4419-8ffd-4804a5abb565) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Ahmed Testing (3b2e1fad-bc5f-4322-84d2-a7440f78c5d7) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Ahmed jiminny (1dbd47b8-bbf8-4bbb-8e28-67b9c91f566e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Testers Inc (ec0767d5-1248-4447-b316-94dd9a30d52b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Copper Team (817c8ce1-8e22-4ac8-8fca-8df1131963ab) is not yet assigned an owner. skipping...
docker_lamp_1 | Team TheBestPlace Ever (dbb998f9-70eb-4f11-a9f2-d9f6157f4035) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Horen's apartments (e10bb4ea-6c89-4fe3-be3b-0a278aa81180) is not yet assigned an owner. skipping...
docker_lamp_1 | Team New Org Test (2cb527b6-73a4-46be-b7b2-b0097b494cc5) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Pipedrive test org (18ea22be-6e0b-461c-a4db-536c022aac73) is not yet assigned an owner. skipping...
docker_lamp_1 | Team BigChairs Inc. (16dcfaf9-44b4-4cc2-9ead-f98dd0cad4dd) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for GL 500 (0c33bf2d-1c77-4200-8ed6-6147ad444c30) since 2026-02-19 13:26:04 (delay: 12s)
docker_lamp_1 | Team Loren X (243d7d4b-1849-46c2-9dfb-4462f52020ef) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Laravel Company 2024 (e466d657-c26d-4281-9ed5-73890fe711f6) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Barbara Fuchs (bea0fcf3-f8f9-471d-92c4-d1b7d1a2e228) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test salesforce auto sync (2c2e652e-1cbb-4620-852d-e73bef0ab4a9) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Bullhorn (83c14120-cdb1-42e9-b0ac-16ef11320a8f) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Globo Tech (fb8d5211-3c4d-4804-9223-b091670ffd79) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Laravel 11 Company 2024 (780c6836-764b-4e47-9a05-cfefbab6e590) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Nikon7 (e9bff902-edc3-4b0b-89b1-2a9aa43d940a) is not yet assigned an owner. skipping...
docker_lamp_1 | Syncing objects for Dev Zoho CRM client (1ece66c8-feb1-4df1-b321-21607daf4623) since 2026-05-15 18:14:27 (delay: 14s)
docker_lamp_1 | [PASSWORD_DOTS] 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Delete\DeleteContactJob ....... RUNNING
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Delete\DeleteContactJob . 185.83ms DONE
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
ngrok | t=2026-05-18T06:45:13+0000 lvl=info msg="join connections" obj=join id=97a3e43cd14a l=[IP_ADDRESS]:3080 r=[IP_ADDRESS]:62747
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 100.50ms DONE
docker_lamp_1 | 2026-05-18 06:45:13 Jiminny\Jobs\Crm\Delete\VerifyActivityCrmTaskJob RUNNING
ngrok | t=2026-05-18T06:45:13+0000 lvl=info msg="join connections" obj=join id=dd34011e0f3d l=[IP_ADDRESS]:3080 r=[IP_ADDRESS]:8208
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Jobs\Crm\Delete\VerifyActivityCrmTaskJob 273.69ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | [IP_ADDRESS] - 18/May/2026:06:45:13 +0000 "POST /index.php" 204 /home/jiminny/public/index.php [PHONE] www
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 23.15ms DONE
docker_lamp_1 | [IP_ADDRESS] - 18/May/2026:06:45:13 +0000 "POST /index.php" 204 /home/jiminny/public/index.php 197.456 32768 www
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 4.10ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 6.20ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 4.95ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach RUNNING
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Listeners\Crm\RematchActivityOnCrmObjectDetach 4.13ms DONE
docker_lamp_1 | 2026-05-18 06:45:14 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData .... 551.13ms DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData .... 195.34ms DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData .... 153.79ms DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:15 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData .... 369.02ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData .... 140.71ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch .. 7.48ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch . 10.82ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch .. 8.23ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch . 22.23ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch ...... RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\CheckAndRetryRemoteMatch . 57.73ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 92.23ms DONE
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob RUNNING
docker_lamp_1 | 2026-05-18 06:45:16 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:18 Jiminny\Jobs\Crm\Hubspot\ProcessWebhookEventsJob 1s DONE
docker_lamp_1 | 2026-05-18 06:45:18 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:20 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 2s DONE
docker_lamp_1 | 2026-05-18 06:45:20 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:21 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 393.12ms DONE
docker_lamp_1 | 2026-05-18 06:45:21 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:23 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | 2026-05-18 06:45:23 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:23 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 151.03ms DONE
docker_lamp_1 | 2026-05-18 06:45:24 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:24 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 139.21ms DONE
docker_lamp_1 | 2026-05-18 06:45:25 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] 9s DONE
docker_lamp_1 | 2026-05-18 06:45:25 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:26 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:28 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] 2s DONE
docker_lamp_1 | 2026-05-18 06:45:28 Jiminny\Jobs\Crm\MatchActivityCrmData [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:45:28 Jiminny\Jobs\Crm\MatchActivityCrmData .... 147.21ms DONE
docker_lamp_1 | 2026-05-18 06:45:31 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 5s DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:46:06 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:11 Running ['artisan' dialers:monitor-activities] 12s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:24 Running ['artisan' jiminny:monitor-social-accounts] 16s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:41 Running ['artisan' mailbox:skip-lists:refresh] . 8s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:49 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:46:53 Running ['artisan' conference:monitor:count] .. 10s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:47:13,407Z", "level": "WARN", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][438] overhead, spent [628ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
docker_lamp_1 | 2026-05-18 06:47:03 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-15 18:11:10 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | .. 17s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:47:21 Running ['artisan' activity:notify-not-logged] 2026-05-18 06:47:22 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:22 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 140.74ms DONE
docker_lamp_1 | 2026-05-18 06:47:22 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:25 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 3s DONE
docker_lamp_1 | 2026-05-18 06:47:25 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 289.88ms DONE
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 128.92ms DONE
docker_lamp_1 | 2026-05-18 06:47:26 Jiminny\Jobs\Crm\Hubspot\ImportAccountBatch .... RUNNING
docker_lamp_1 | 2026-05-18 06:47:27 Jiminny\Jobs\Crm\Hubspot\ImportAccountBatch .... 1s DONE
docker_lamp_1 | 2026-05-18 06:47:27 Jiminny\Jobs\Crm\Hubspot\ImportContactBatch .... RUNNING
docker_lamp_1 | 2026-05-18 06:47:29 Jiminny\Jobs\Crm\Hubspot\ImportContactBatch .... 2s DONE
docker_lamp_1 | 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:47:36 Running ['artisan' activity:status-count] []..... 12s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:47:48 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 170.82ms DONE
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:47:56 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 266.09ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:48:09 Running ['artisan' meeting-bot:schedule-bot] ... 9s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:48:19 Running ['artisan' dialers:monitor-activities] 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:48:34 Running ['artisan' jiminny:monitor-social-accounts] 15s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:48:49 Running ['artisan' mailbox:skip-lists:refresh] 20s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:49:10 Running ['artisan' mailbox:batch:process --max-batches=15] 10s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:49:21 Running ['artisan' conference:monitor:count] .. 15s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 45.88ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-18 06:49:37 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams:
docker_lamp_1 | ....... 22s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:autolog-delayed > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:29,648Z", "level": "INFO", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][632] overhead, spent [409ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:33,468Z", "level": "INFO", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][young][635][17] duration [857ms], collections [1]/[1.5s], total [857ms]/[2.9s], memory [295.3mb]->[223.6mb]/[700mb], all_pools {[young] [79mb]->[1mb]/[0b]}{[old] [213.8mb]->[215.8mb]/[700mb]}{[survivor] [2.5mb]->[6.8mb]/[0b]}", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:33,480Z", "level": "WARN", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][635] overhead, spent [857ms] collecting in the last [1.5s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:50:44,501Z", "level": "WARN", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][644] overhead, spent [557ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-05-18T06:51:13,924Z", "level": "INFO", "component": "o.e.m.j.JvmGcMonitorService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "[gc][663] overhead, spent [268ms] collecting in the last [1s]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:52:05 Running ['artisan' meeting-bot:schedule-bot] .. 40s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:52:46 Running ['artisan' dialers:monitor-activities] 19s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:05 Running ['artisan' jiminny:monitor-social-accounts] 21s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:27 Running ['artisan' mailbox:skip-lists:refresh] 16s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:43 Running ['artisan' mailbox:batch:process --max-batches=15] 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:53:58 Running ['artisan' conference:monitor:count] .. 27s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:54:25 Running ['artisan' mailbox:batch:create] ...... 31s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:54:56 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00'] 2026-05-18 06:54:56 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 06:54:57 Jiminny\Jobs\Mailbox\CreateBatches ....... 692.78ms DONE
docker_lamp_1 | 33s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-18 06:36:00' --to='2026-05-18 06:52:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 06:56:15 Running ['artisan' meeting-bot:schedule-bot] .. 20s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:56:37 Running ['artisan' dialers:monitor-activities] 32s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:57:09 Running ['artisan' jiminny:monitor-social-accounts] 34s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:57:44 Running ['artisan' mailbox:skip-lists:refresh] 54s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:58:39 Running ['artisan' mailbox:batch:process --max-batches=15] 46s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:59:25 Running ['artisan' conference:monitor:count] .. 23s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 06:59:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 06:47:22 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | 2026-05-18 07:00:02 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | .. 12s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:00:02 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 2s DONE
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 194.29ms DONE
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 121.55ms DONE
docker_lamp_1 | 2026-05-18 07:00:04 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:00:05 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 318.98ms DONE
docker_lamp_1 | 24s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:00:27 Running ['artisan' activity:status-count] []..... 22s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:00:50 Running ['artisan' mailbox:sync] Queueing 1 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 19s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 07:01:10 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:01:11 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 324.59ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:02:27 Running ['artisan' meeting-bot:schedule-bot] .. 17s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:02:45 Running ['artisan' dialers:monitor-activities] 26s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:03:12 Running ['artisan' jiminny:monitor-social-accounts] 22s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:03:34 Running ['artisan' mailbox:skip-lists:refresh] 31s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:04:06 Running ['artisan' mailbox:batch:process --max-batches=15] 19s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:04:26 Running ['artisan' conference:monitor:count] .. 29s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:04:55 Running ['artisan' mailbox:batch:create] ...... 20s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:05:16 Running ['artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00'] 2026-05-18 07:05:17 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:05:17 Jiminny\Jobs\Mailbox\CreateBatches ....... 512.67ms DONE
docker_lamp_1 | 18s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'avaya' --from='2026-05-18 01:02:00' --to='2026-05-18 07:02:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:06:16 Running ['artisan' meeting-bot:schedule-bot] ... 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:22 Running ['artisan' dialers:monitor-activities] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:27 Running ['artisan' jiminny:monitor-social-accounts] 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:32 Running ['artisan' mailbox:skip-lists:refresh] . 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:39 Running ['artisan' mailbox:batch:process --max-batches=15] 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:43 Running ['artisan' conference:monitor:count] ... 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:49 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-18 07:00:02 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | ... 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:06:55 Running ['artisan' activity:notify-not-logged] 2026-05-18 07:06:56 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 735.72ms DONE
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 100.30ms DONE
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 69.88ms DONE
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:06:57 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 64.30ms DONE
docker_lamp_1 | . 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:07:02 Running ['artisan' activity:status-count] []...... 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:07:08 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-18 07:07:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:07:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 182.34ms DONE
docker_lamp_1 | 2026-05-18 07:07:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-18 07:07:17 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 366.64ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:08:06 Running ['artisan' meeting-bot:schedule-bot] ... 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:11 Running ['artisan' dialers:monitor-activities] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:15 Running ['artisan' jiminny:monitor-social-accounts] 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:23 Running ['artisan' mailbox:skip-lists:refresh] . 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:28 Running ['artisan' mailbox:batch:process --max-batches=15] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:33 Running ['artisan' conference:monitor:count] ... 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:08:38 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 2.92ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:09:06 Running ['artisan' meeting-bot:schedule-bot] ... 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:13 Running ['artisan' dialers:monitor-activities] . 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:20 Running ['artisan' jiminny:monitor-social-accounts] 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:24 Running ['artisan' mailbox:skip-lists:refresh] . 7s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:32 Running ['artisan' mailbox:batch:process --max-batches=15] 18s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:09:50 Running ['artisan' activity:aircall:check-and-renew]
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 14s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:aircall:check-and-renew > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-18 07:10:05 Running ['artisan' track:retry-failed-downloads]
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' track:retry-failed-downloads > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:11:07,782 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:11:09,274 INFO spawned: 'artisan-schedule_00' with pid 17764
docker_lamp_1 | 2026-05-18 07:11:10,285 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:12:06,357 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:12:07,367 INFO spawned: 'artisan-schedule_00' with pid 17927
docker_lamp_1 | 2026-05-18 07:12:08,372 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:13:06,637 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:13:07,667 INFO spawned: 'artisan-schedule_00' with pid 18092
docker_lamp_1 | 2026-05-18 07:13:08,674 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
docker_lamp_1 | 735▕ ->name('api.integrations.toggle_status');
docker_lamp_1 |
docker_lamp_1 | +2 vendor frames
docker_lamp_1 |
docker_lamp_1 | 3 app/Providers/RouteServiceProvider.php:315
docker_lamp_1 | Illuminate\Routing\Router::group(["api/v1"], Object(Closure))
docker_lamp_1 |
docker_lamp_1 | 4 app/Providers/RouteServiceProvider.php:53
docker_lamp_1 | Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))
docker_lamp_1 |
docker_lamp_1 | 2026-05-18 07:14:05,420 WARN exited: artisan-schedule_00 (exit status 1; not expected)
docker_lamp_1 | 2026-05-18 07:14:06,470 INFO spawned: 'artisan-schedule_00' with pid 18248
docker_lamp_1 | 2026-05-18 07:14:07,481 INFO success: artisan-schedule_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
docker_lamp_1 |
docker_lamp_1 | ParseError
docker_lamp_1 |
docker_lamp_1 | syntax error, unexpected variable "$router"
docker_lamp_1 |
docker_lamp_1 | at routes/api.php:731
docker_lamp_1 | 727▕ });
docker_lamp_1 | 728▕ });organiza
docker_lamp_1 | 729▕
docker_lamp_1 | 730▕ // Integrations
docker_lamp_1 | ➜ 731▕ $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
docker_lamp_1 | 732▕ $router->post('/integrations', [IntegrationController::class, 'internal'])
docker_lamp_1 | 733▕ ->name('api.integrations.internal');
docker_lamp_1 | 734▕ $router->put('/integrations', [IntegrationController::class, 'toggleSta...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50095
|
1777
|
7
|
2026-05-18T07:16:30.434105+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088590434_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp••DOCKER81DEV (-zsh)DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_12026-05-1807:15:02,865 WARNexited: artisan-schedule_00 (exit status 11 2026-05-1807:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18414docker_lamp_112026-05-1807:15:04,898 INFO success: artisan-schedule_00 entered RUNNINGstate, process hasstayedup for >than 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_lamp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController:iclass,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_lamp_1docker_1amp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router::group(["api/v1"], Object((losure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing \Router))docker_lamp_1docker_lamp_11 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_lamp_11 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00'with pid 18601docker_lamp_11 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNINGstate, process hasstayed up for › than 1 seconds (startsecs)& Preparation for Refi... in 4h 44 m100% C8• Mon 18 May 10:16:30DOCKER (docker-compose)O ₴2APP (-zsh)screenpipe"*3PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|FRONTENDEXTENSIONView in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
2633478930759242372
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp••DOCKER81DEV (-zsh)DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_12026-05-1807:15:02,865 WARNexited: artisan-schedule_00 (exit status 11 2026-05-1807:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18414docker_lamp_112026-05-1807:15:04,898 INFO success: artisan-schedule_00 entered RUNNINGstate, process hasstayedup for >than 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_lamp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController:iclass,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_lamp_1docker_1amp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router::group(["api/v1"], Object((losure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing \Router))docker_lamp_1docker_lamp_11 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_lamp_11 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00'with pid 18601docker_lamp_11 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNINGstate, process hasstayed up for › than 1 seconds (startsecs)& Preparation for Refi... in 4h 44 m100% C8• Mon 18 May 10:16:30DOCKER (docker-compose)O ₴2APP (-zsh)screenpipe"*3PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|FRONTENDEXTENSIONView in Docker Desktop@ View ConfigEnable Watch...
|
50093
|
NULL
|
NULL
|
NULL
|
|
50096
|
1777
|
8
|
2026-05-18T07:16:32.462295+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088592462_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDEV (-zsh)DOCKER11DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_1812026-05-1807:15:02,865 WARNexited: artisan-schedule_00 (exit status 11 2026-05-1807:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_1NGstate, process has07:15:04,898 INFO success: artisan-schedule_00 entered RUNNIthan 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_1amp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_lamp_1docker_1amp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router: :group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_lamp_1docker_lamp_11 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_lamp_11 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00'with pid 18docker_lamp_11 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayed up for › than 1 seconds (startsecs)Preparation for Refi…. in 4h 44 m100% <78• Mon 18 May 10:16:32DOCKER (docker-compose)O ₴2T81APP (-zsh)*3screenpipe"Y2PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|View in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
-1662128032333453623
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDEV (-zsh)DOCKER11DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_1812026-05-1807:15:02,865 WARNexited: artisan-schedule_00 (exit status 11 2026-05-1807:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_1NGstate, process has07:15:04,898 INFO success: artisan-schedule_00 entered RUNNIthan 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_1amp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_lamp_1docker_1amp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router: :group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_lamp_1docker_lamp_11 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_lamp_11 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00'with pid 18docker_lamp_11 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayed up for › than 1 seconds (startsecs)Preparation for Refi…. in 4h 44 m100% <78• Mon 18 May 10:16:32DOCKER (docker-compose)O ₴2T81APP (-zsh)*3screenpipe"Y2PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|View in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50097
|
1777
|
9
|
2026-05-18T07:16:35.407740+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088595407_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDEV (-zsh)DOCKER11DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_1812026-05-1807:15:02,865 WARNexited: artisan-schedule_00 (exit status 11 2026-05-1807:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_1NGstate, process has07:15:04,898 INFO success: artisan-schedule_00 entered RUNNIthan 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_1amp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_lamp_1docker_1amp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router: :group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_lamp_1docker_lamp_11 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_lamp_11 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00'with pid 18docker_lamp_11 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayed up for › than 1 seconds (startsecs)Preparation for Refi…. in 4h 44 m100% (78• Mon 18 May 10:16:35DOCKER (docker-compose)O ₴2T81APP (-zsh)*3screenpipe"Y2PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|View in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
-9050032169994107127
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDEV (-zsh)DOCKER11DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_1812026-05-1807:15:02,865 WARNexited: artisan-schedule_00 (exit status 11 2026-05-1807:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_1NGstate, process has07:15:04,898 INFO success: artisan-schedule_00 entered RUNNIthan 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_1amp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_lamp_1docker_1amp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router: :group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_lamp_1docker_lamp_11 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_lamp_11 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00'with pid 18docker_lamp_11 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayed up for › than 1 seconds (startsecs)Preparation for Refi…. in 4h 44 m100% (78• Mon 18 May 10:16:35DOCKER (docker-compose)O ₴2T81APP (-zsh)*3screenpipe"Y2PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|View in Docker Desktop@ View ConfigEnable Watch...
|
50096
|
NULL
|
NULL
|
NULL
|
|
50098
|
1778
|
6
|
2026-05-18T07:16:35.410652+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088595410_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DMSActivityMoreSlackcalVIewMistonWindowHelp@ Descr DMSActivityMoreSlackcalVIewMistonWindowHelp@ Describe what you are looking forJiminny...v23 # alerts8 23C Unreads@ Threads6 HuddlesDrafts & sent8) Directories• MessagesMore01Ab External connectionst Starred8 jiminny-x-integrati...8 platform-inner-team# Channels# ai-chapter# alerts# backend# bugsi confusion-clinic# curiosity_lab# engineering# general# jiminny-bg" natform-nickets# product_launchesa random# releases# sofia-officeAdd canvasWednesdav Anril 15th vAutomation for Jira APP 2:11 PMSRD-6824 Unable to play activity/Playback error has been escalated withCritical priority to * @here EAutomation for Jira APP 2:24 PMSRD-6824 Unable to play activity/Playback error has been assigned withCritical priority to llian Kyuchukov @hereMondav. May 4th.vAutomation for Jira APP 2:22 PMSRD-6832 Unable to export links on bothUs ana tu aue to error nas been assignedwith Critical priority to llian Kyuchukov@here ETodayNewAutomation forJira APP 9:57 AMSkD-6858Iranscriononl A usertranscription was incorrecty matched hasbeen escalated with Critical priority to **@hereMessage #alerts+ Aa €E BacklogI Active sprints00О008Epic vTypeorama promots isAJ Report7 eeee —is delered out Is250000 =May1[PASSWORD_DOTS]= (a? ooed —IN DEV 3MCP > Enable u:JIMINNY MCP COIIn DevI JY-20833MCP > Enable u:and their detailsJIMINNY MCP COIn Dev[ JY-20835Allow owner's rosettina uo a triaEMPROVEMENT OFIn Dev# JY-20613Q Search& JY-12253 / [I JY-20613Allow owner's role to be selected when setting up a trialDescriptionStoyan is seeing more cases where the Owner doesn't want to connect their calendar and email to Jiminny.This is because they don't want to be a recorder. Currently when a trial is created we give the Owner aRecorder role by default. In most cases he really needs to be a recorder.• allow Implementations to select the role of the owner when setting up a trialoput the field bellow the Owner email fieldo the choices should only be - Recorder, Recorder & Voice, Analyst• single select• this option shouldn't appear when editing an organisation• when the owner signs in, they should have the selected role + Admin permissionsSubtasksAdd subtaskLinked work itemsAdd linked work itemActivityAllComments History Work logAdd a comment...Suggest a reply... Status update…..ThankS….Pro tip: press (M) to commentN0 x0ny 2028 41 15:57• The new field will be at the place of Import Opportunities Sync Period• Import Opportunities Sync Period goes on 3rd row, 1st column+ CreateIn Dev v* Improve StoryDetailsAssigneeReporterDeveloomentIComponentsSub-ProductLabelsStory pointestimateStory PointsOrganisatioPriorityFix versionsSprintDaysNeed QA@ Lukas Kovalik@ Galya DimitrovaQ Open with VS Code33 Create branch& Create commitPlatformAdd optionsNoneNone2NoneParent= MediumNonePlatform Sprint 4 Q21.5Yes→ JY-12253 Improvement of ourCanny LinksOpen Canny Links> More fields Original estimate, Time trackingj Preparation for Refi... in 4h 44m100% 28• Mon 18 May 10:16:355 Ask Rovowork itemsE Docs@ Shortcutsil Slack integration§ Reporting CenterComplete sprintGroup: QueriesPO ACCEPTANCEDEPLOY 7AJ Panorama tor Call Scorina in ODAUTOMATED AL SCORINGDeoloved… JY-2036105 • •e.=[Deadline 25 May] Migrate depricatedGemini S.l rlash Lie Preview modelMAINTENANCEDeployed…JY-208801Al•00=Setup test coverage for Prophet in SonarMAINTENANCEDeplovedv JY-19951[Deadline 17 Junel Miarate depricatedGemini modelsMATNTENANCEDeployedE JY-202720 •.=₽Sidekick SMS issueDeployed8 JY-2089172 •0=@Update activity stage on opportunityuodateDeployed** JY-20903UndateActivitvElasticSearchDocumentCcmmand...
|
NULL
|
-2411719146572903987
|
NULL
|
click
|
ocr
|
NULL
|
DMSActivityMoreSlackcalVIewMistonWindowHelp@ Descr DMSActivityMoreSlackcalVIewMistonWindowHelp@ Describe what you are looking forJiminny...v23 # alerts8 23C Unreads@ Threads6 HuddlesDrafts & sent8) Directories• MessagesMore01Ab External connectionst Starred8 jiminny-x-integrati...8 platform-inner-team# Channels# ai-chapter# alerts# backend# bugsi confusion-clinic# curiosity_lab# engineering# general# jiminny-bg" natform-nickets# product_launchesa random# releases# sofia-officeAdd canvasWednesdav Anril 15th vAutomation for Jira APP 2:11 PMSRD-6824 Unable to play activity/Playback error has been escalated withCritical priority to * @here EAutomation for Jira APP 2:24 PMSRD-6824 Unable to play activity/Playback error has been assigned withCritical priority to llian Kyuchukov @hereMondav. May 4th.vAutomation for Jira APP 2:22 PMSRD-6832 Unable to export links on bothUs ana tu aue to error nas been assignedwith Critical priority to llian Kyuchukov@here ETodayNewAutomation forJira APP 9:57 AMSkD-6858Iranscriononl A usertranscription was incorrecty matched hasbeen escalated with Critical priority to **@hereMessage #alerts+ Aa €E BacklogI Active sprints00О008Epic vTypeorama promots isAJ Report7 eeee —is delered out Is250000 =May1[PASSWORD_DOTS]= (a? ooed —IN DEV 3MCP > Enable u:JIMINNY MCP COIIn DevI JY-20833MCP > Enable u:and their detailsJIMINNY MCP COIn Dev[ JY-20835Allow owner's rosettina uo a triaEMPROVEMENT OFIn Dev# JY-20613Q Search& JY-12253 / [I JY-20613Allow owner's role to be selected when setting up a trialDescriptionStoyan is seeing more cases where the Owner doesn't want to connect their calendar and email to Jiminny.This is because they don't want to be a recorder. Currently when a trial is created we give the Owner aRecorder role by default. In most cases he really needs to be a recorder.• allow Implementations to select the role of the owner when setting up a trialoput the field bellow the Owner email fieldo the choices should only be - Recorder, Recorder & Voice, Analyst• single select• this option shouldn't appear when editing an organisation• when the owner signs in, they should have the selected role + Admin permissionsSubtasksAdd subtaskLinked work itemsAdd linked work itemActivityAllComments History Work logAdd a comment...Suggest a reply... Status update…..ThankS….Pro tip: press (M) to commentN0 x0ny 2028 41 15:57• The new field will be at the place of Import Opportunities Sync Period• Import Opportunities Sync Period goes on 3rd row, 1st column+ CreateIn Dev v* Improve StoryDetailsAssigneeReporterDeveloomentIComponentsSub-ProductLabelsStory pointestimateStory PointsOrganisatioPriorityFix versionsSprintDaysNeed QA@ Lukas Kovalik@ Galya DimitrovaQ Open with VS Code33 Create branch& Create commitPlatformAdd optionsNoneNone2NoneParent= MediumNonePlatform Sprint 4 Q21.5Yes→ JY-12253 Improvement of ourCanny LinksOpen Canny Links> More fields Original estimate, Time trackingj Preparation for Refi... in 4h 44m100% 28• Mon 18 May 10:16:355 Ask Rovowork itemsE Docs@ Shortcutsil Slack integration§ Reporting CenterComplete sprintGroup: QueriesPO ACCEPTANCEDEPLOY 7AJ Panorama tor Call Scorina in ODAUTOMATED AL SCORINGDeoloved… JY-2036105 • •e.=[Deadline 25 May] Migrate depricatedGemini S.l rlash Lie Preview modelMAINTENANCEDeployed…JY-208801Al•00=Setup test coverage for Prophet in SonarMAINTENANCEDeplovedv JY-19951[Deadline 17 Junel Miarate depricatedGemini modelsMATNTENANCEDeployedE JY-202720 •.=₽Sidekick SMS issueDeployed8 JY-2089172 •0=@Update activity stage on opportunityuodateDeployed** JY-20903UndateActivitvElasticSearchDocumentCcmmand...
|
50094
|
NULL
|
NULL
|
NULL
|
|
50099
|
1777
|
10
|
2026-05-18T07:16:37.680755+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088597680_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDEV (-zsh)DOCKER11DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_1812026-05-1807:15:02,865 WARNexited: artisan-schedule_00 (exit status 11 2026-05-1807:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_1NGstate, process has07:15:04,898 INFO success: artisan-schedule_00 entered RUNNIthan 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_1amp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_lamp_1docker_1amp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router: :group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_lamp_1docker_lamp_11 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_lamp_11 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00'with pid 18docker_lamp_11 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayed up for › than 1 seconds (startsecs)Preparation for Refi…. in 4h 44 m100% (78• Mon 18 May 10:16:37DOCKER (docker-compose)O ₴2T81APP (-zsh)*3screenpipe"Y2PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|View in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
2410759622637208683
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDEV (-zsh)DOCKER11DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_1812026-05-1807:15:02,865 WARNexited: artisan-schedule_00 (exit status 11 2026-05-1807:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_1NGstate, process has07:15:04,898 INFO success: artisan-schedule_00 entered RUNNIthan 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_1amp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_lamp_1docker_1amp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router: :group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_lamp_1docker_lamp_11 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_lamp_11 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00'with pid 18docker_lamp_11 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayed up for › than 1 seconds (startsecs)Preparation for Refi…. in 4h 44 m100% (78• Mon 18 May 10:16:37DOCKER (docker-compose)O ₴2T81APP (-zsh)*3screenpipe"Y2PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|View in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50100
|
1778
|
7
|
2026-05-18T07:16:38.220577+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088598220_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DMSActivityFllesLaterMoreSlackcalVIewMistonWindowH DMSActivityFllesLaterMoreSlackcalVIewMistonWindowHelp@ Describe what you are looking forJiminny…..23 # alerts8 23# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...^ Direct messagesPP. Nikolay YankovD. Galya DimitrovaG. Vasil VasilevR. Aneliya Angelova8. Stoyan Tomov. Stefka StoyanovaSà Todor Stamatov&. Mario GeorgievC. Nikolay Ivanov&o James Graham2. Stoyan Tanev. Steliyan Georgiev&. Petko KashinskiLukas Kovalik y...• MessagesAdd canvasMoreWednesdav Anril 15th vAutomation for Jira APP 2:11 PMSRD-6824 Unable to play activity/Playback error has been escalated withCritical priority to * @here EAutomation for Jira APP 2:24 PMSRD-6824 Unable to play activity/Playback error has been assigned withCritical priority to llian Kyuchukov @hereMonday. May 4th.vAutomation for Jira APP 2:22 PMSRD-6832 Unable to export links on bothUs ana tu aue to error nas been assignedwith Critical priority to llian Kyuchukov@here EToday#:AppsS Jira Cloud® ToastAutomation torJira APP 9:57 AMSkD-6858Iranscriononl A usertranscription was incorrecty matched hasbeen escalated with Critical priority to **@here EMessage #alerts+ Aa €Q Search& JY-12253 / [I JY-20613E BacklogI Active sprintsAllow owner's role to be selected when setting up a trial00008Epic vTypenorama promots isAJ Report3000.=€is delered out Is250000 =May1[PASSWORD_DOTS]= (asuagestions? ooed —IN DEV 3MCP > Enable u:and their detailsJIMINNY MCP COIIn DevI JY-20833MCP > Enable u:and their detailsJIMINNY MCP COIn Dev[ JY-20835DescriptionStoyan is seeing more cases where the Owner doesn't want to connect their calendar and email to Jiminny.This is because they don't want to be a recorder. Currently when a trial is created we give the Owner aRecorder role by default. In most cases he really needs to be a recorder.• allow Implementations to select the role of the owner when setting up a trialoput the field bellow the Owner email fieldo the choices should only be - Recorder, Recorder & Voice, Analyst• single select• this option shouldn't appear when editing an organisation• when the owner signs in, they should have the selected role + Admin permissionsAllow owner's rosettina uo a triaEMPROVEMENT OFIn Dev# JY-20613SubtasksAdd subtaskLinked work itemsAdd linked work itemActivityAll Comments History Work logAdd a comment...Suggest a reply... Status update...ThankS….Pro tip: press (M) to commentN0 x0ny 2028 41 15:57• The new field will be at the place of Import Opportunities Sync Period• Import Opportunities Sync Period goes on 3rd row, 1st column+ CreateIn Dev v* Improve StoryDetailsAssigneeReporterDeveloomentIComponentsSub-ProductLabelsStory pointestimateStory PointsOrganisatioPriorityFix versionsSprintDaysNeed QA@ Lukas Kovalik@ Galya DimitrovaQ Open with VS Code33 Create branch& Create commitPlatformAdd optionsNoneNone2NoneParent= MediumNonePlatform Sprint 4 Q21.5Yes→ JY-12253 Improvement of ourCanny LinksOpen Canny Links> More fields Original estimate, Time trackingj Preparation for Refi... in 4h 44m100% 28• Mon 18 May 10:16:375 Ask Rovowork itemsE Docs@ Shortcutsil Slack integration§ Reporting CenterComplete sprintGroup: QueriesPO ACCEPTANCEDEPLOY 7AJ Panorama tor Call Scorina in ODAUTOMATED AL SCORINGDeoloved… JY-2036105 • •00=[Deadline 25 May] Migrate depricatedGemini S.l rlash Lie Preview modelMAINTENANCEDeployed…JY-208801Al•00=Setup test coverage for Prophet in SonarMAINTENANCEDeplovedv JY-19951[Deadline 17 Junel Miarate depricatedGemini modelsMATNTENANCEDeployedE JY-202720 •.=₽Sidekick SMS issueDeployed8 JY-2089172 •0=@Update activity stage on opportunityuodateDeployed** JY-20903UndateActivitvElasticSearchDocumentCcmmand...
|
NULL
|
-7851945722508238221
|
NULL
|
click
|
ocr
|
NULL
|
DMSActivityFllesLaterMoreSlackcalVIewMistonWindowH DMSActivityFllesLaterMoreSlackcalVIewMistonWindowHelp@ Describe what you are looking forJiminny…..23 # alerts8 23# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...^ Direct messagesPP. Nikolay YankovD. Galya DimitrovaG. Vasil VasilevR. Aneliya Angelova8. Stoyan Tomov. Stefka StoyanovaSà Todor Stamatov&. Mario GeorgievC. Nikolay Ivanov&o James Graham2. Stoyan Tanev. Steliyan Georgiev&. Petko KashinskiLukas Kovalik y...• MessagesAdd canvasMoreWednesdav Anril 15th vAutomation for Jira APP 2:11 PMSRD-6824 Unable to play activity/Playback error has been escalated withCritical priority to * @here EAutomation for Jira APP 2:24 PMSRD-6824 Unable to play activity/Playback error has been assigned withCritical priority to llian Kyuchukov @hereMonday. May 4th.vAutomation for Jira APP 2:22 PMSRD-6832 Unable to export links on bothUs ana tu aue to error nas been assignedwith Critical priority to llian Kyuchukov@here EToday#:AppsS Jira Cloud® ToastAutomation torJira APP 9:57 AMSkD-6858Iranscriononl A usertranscription was incorrecty matched hasbeen escalated with Critical priority to **@here EMessage #alerts+ Aa €Q Search& JY-12253 / [I JY-20613E BacklogI Active sprintsAllow owner's role to be selected when setting up a trial00008Epic vTypenorama promots isAJ Report3000.=€is delered out Is250000 =May1[PASSWORD_DOTS]= (asuagestions? ooed —IN DEV 3MCP > Enable u:and their detailsJIMINNY MCP COIIn DevI JY-20833MCP > Enable u:and their detailsJIMINNY MCP COIn Dev[ JY-20835DescriptionStoyan is seeing more cases where the Owner doesn't want to connect their calendar and email to Jiminny.This is because they don't want to be a recorder. Currently when a trial is created we give the Owner aRecorder role by default. In most cases he really needs to be a recorder.• allow Implementations to select the role of the owner when setting up a trialoput the field bellow the Owner email fieldo the choices should only be - Recorder, Recorder & Voice, Analyst• single select• this option shouldn't appear when editing an organisation• when the owner signs in, they should have the selected role + Admin permissionsAllow owner's rosettina uo a triaEMPROVEMENT OFIn Dev# JY-20613SubtasksAdd subtaskLinked work itemsAdd linked work itemActivityAll Comments History Work logAdd a comment...Suggest a reply... Status update...ThankS….Pro tip: press (M) to commentN0 x0ny 2028 41 15:57• The new field will be at the place of Import Opportunities Sync Period• Import Opportunities Sync Period goes on 3rd row, 1st column+ CreateIn Dev v* Improve StoryDetailsAssigneeReporterDeveloomentIComponentsSub-ProductLabelsStory pointestimateStory PointsOrganisatioPriorityFix versionsSprintDaysNeed QA@ Lukas Kovalik@ Galya DimitrovaQ Open with VS Code33 Create branch& Create commitPlatformAdd optionsNoneNone2NoneParent= MediumNonePlatform Sprint 4 Q21.5Yes→ JY-12253 Improvement of ourCanny LinksOpen Canny Links> More fields Original estimate, Time trackingj Preparation for Refi... in 4h 44m100% 28• Mon 18 May 10:16:375 Ask Rovowork itemsE Docs@ Shortcutsil Slack integration§ Reporting CenterComplete sprintGroup: QueriesPO ACCEPTANCEDEPLOY 7AJ Panorama tor Call Scorina in ODAUTOMATED AL SCORINGDeoloved… JY-2036105 • •00=[Deadline 25 May] Migrate depricatedGemini S.l rlash Lie Preview modelMAINTENANCEDeployed…JY-208801Al•00=Setup test coverage for Prophet in SonarMAINTENANCEDeplovedv JY-19951[Deadline 17 Junel Miarate depricatedGemini modelsMATNTENANCEDeployedE JY-202720 •.=₽Sidekick SMS issueDeployed8 JY-2089172 •0=@Update activity stage on opportunityuodateDeployed** JY-20903UndateActivitvElasticSearchDocumentCcmmand...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50101
|
1777
|
11
|
2026-05-18T07:16:39.820926+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088599820_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScripts|ProfilesWindowHe iTerm2ShellEditViewSessionScripts|ProfilesWindowHelpDOCKERT1DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_12026-05-1881DEV (-zsh)2026-05-1807:15:02,865 WARNexited: artisan-schedule_00 (exit status 107:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_12026-05-1807:15:04,898 INFO success: artisan-schedule_00 entered RUNNINGstate, process hasstayedupfor>than 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1docker_lamp_1syntaxerror,unexpected variable "Srouter"docker_lamp_1docker_1amp_1docker_lamp_1at routes/api.php:7317273);7--docker_1amp_1docker_1amp_1docker_lamp_14Enum::MANAGE_INTEGRAdocker_lamp_1$I:class,'internal'])docker_lamp_1docker_lamp_1class,toggleStatusiTermdocker_lamp_1кОоРсоууLслсисиоdocker_lamp_1docker_lamp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router: :group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing \Router))docker_lamp_1docker_lamp_12026-05-18 07:16:15,033 WARN exited: artisan-schedule_00status 1; notexpected)docker_lamp_107:16:16,095 INFO spawned: 'artisan-schedule_00'pid 18docker_lamp_1| 2026-05-1807:16:17,141 INFO success: artisan-schedule_00entered RUNNIstate, process hasup for › than 1 seconds (startsecs)View in Docker Desktop@ View ConfigEnable Watch•Preparation for Refi... in 4h 44 m100% <78• Mon 18 May 10:16:39DOCKER (docker-compose)O ₴2T81APP (-zsh)*3screenpipe"O ₴4XIRunPROD (ssh)'do-release-upgrade'to upgrade to it.PROD.*** System restart required ***Last login: Thu May 14 07:41:362026 from212.5.153.87lukas@jiminny-prod-bastion:~$ 0X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|PSSTAGEPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX T6FE (-zsh)Last login: Mon May 18 09:17:28on ttys004Poetry could not find a pyproject.tomlfile in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IX W7 ExT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|FRONTENDEXTENSION...
|
NULL
|
1164554175317610889
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScripts|ProfilesWindowHe iTerm2ShellEditViewSessionScripts|ProfilesWindowHelpDOCKERT1DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_12026-05-1881DEV (-zsh)2026-05-1807:15:02,865 WARNexited: artisan-schedule_00 (exit status 107:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_12026-05-1807:15:04,898 INFO success: artisan-schedule_00 entered RUNNINGstate, process hasstayedupfor>than 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1docker_lamp_1syntaxerror,unexpected variable "Srouter"docker_lamp_1docker_1amp_1docker_lamp_1at routes/api.php:7317273);7--docker_1amp_1docker_1amp_1docker_lamp_14Enum::MANAGE_INTEGRAdocker_lamp_1$I:class,'internal'])docker_lamp_1docker_lamp_1class,toggleStatusiTermdocker_lamp_1кОоРсоууLслсисиоdocker_lamp_1docker_lamp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router: :group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing \Router))docker_lamp_1docker_lamp_12026-05-18 07:16:15,033 WARN exited: artisan-schedule_00status 1; notexpected)docker_lamp_107:16:16,095 INFO spawned: 'artisan-schedule_00'pid 18docker_lamp_1| 2026-05-1807:16:17,141 INFO success: artisan-schedule_00entered RUNNIstate, process hasup for › than 1 seconds (startsecs)View in Docker Desktop@ View ConfigEnable Watch•Preparation for Refi... in 4h 44 m100% <78• Mon 18 May 10:16:39DOCKER (docker-compose)O ₴2T81APP (-zsh)*3screenpipe"O ₴4XIRunPROD (ssh)'do-release-upgrade'to upgrade to it.PROD.*** System restart required ***Last login: Thu May 14 07:41:362026 from212.5.153.87lukas@jiminny-prod-bastion:~$ 0X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|PSSTAGEPoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX T6FE (-zsh)Last login: Mon May 18 09:17:28on ttys004Poetry could not find a pyproject.tomlfile in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IX W7 ExT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|FRONTENDEXTENSION...
|
50099
|
NULL
|
NULL
|
NULL
|
|
50102
|
1777
|
12
|
2026-05-18T07:16:42.865728+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088602865_m1.jpg...
|
PhpStorm
|
faVsco.js – PIPEDRIVE_V2_MIGRATION_PLAN.md
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDEV (-zsh)DOCKER11DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_1812026-05-1807:15:02,865 WARNexited: artisan-schedule_00 (exit status 11 2026-05-1807:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_1NGstate, process has07:15:04,898 INFO success: artisan-schedule_00 entered RUNNIthan 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_1amp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_lamp_1docker_1amp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router: :group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing \Router))docker_lamp_1docker_lamp_11 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_lamp_11 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00'with pid 18docker_lamp_11 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayed up for › than 1 seconds (startsecs)Preparation for Refi…. in 4h 44 m100%8• Mon 18 May 10:16:42DOCKER (docker-compose)O ₴2T*1APP (-zsh)screenpipe"*3PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|View in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
-4900509759277629598
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDEV (-zsh)DOCKER11DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_1812026-05-1807:15:02,865 WARNexited: artisan-schedule_00 (exit status 11 2026-05-1807:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_1NGstate, process has07:15:04,898 INFO success: artisan-schedule_00 entered RUNNIthan 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_1amp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_lamp_1docker_1amp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router: :group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing \Router))docker_lamp_1docker_lamp_11 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_lamp_11 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00'with pid 18docker_lamp_11 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayed up for › than 1 seconds (startsecs)Preparation for Refi…. in 4h 44 m100%8• Mon 18 May 10:16:42DOCKER (docker-compose)O ₴2T*1APP (-zsh)screenpipe"*3PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|View in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50103
|
1778
|
8
|
2026-05-18T07:16:43.858070+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088603858_m2.jpg...
|
PhpStorm
|
faVsco.js – PIPEDRIVE_V2_MIGRATION_PLAN.md
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhostormINavicarecodeFV faVsco.js?° pipedrive-sdk- PhostormINavicarecodeFV faVsco.js?° pipedrive-sdk-pocProletey© WhichWorkerlsWorkingOnWhichJob.php(C) ConvertLeadActivities.ongPurgelookupcache.onp© SyncToPlanhat.php> D Scheduling› D Contractsc createrlaybookcreatedevent.ong• _ Domainv ODTO0 Activitypnp api.onoc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.pho— customerApiC) PlanhatactivityListener.php(C) AutomatedReportsRepository.ohp_ ExternalServicelntegrations©AutomatedReportsCommand.ohpC) RequestGenerateReport.Job.ohv) ImportcalliInvitationC) UserinvitationdTo.ohpRolesaSCIM117 Scorecard(C)AutomatedReportResult.ohvC. AutomatedReport.oho© CreateTeamRequest.php© UserinvitationDTO.php xclass UserInvitationntoroleras: intunbool.user?: UsenA2Y4 AServiceM UsersT UserEmail.php• M Smails* Sattributes→ M Snumeprivate function __construct(array $attributes)D EventsM ActivitiosSthis->email = mb strtolowerSattributesi'ematl'):>@ ActivityProviderSthis->secondarvemail = Sthis->normalizeNullableSattributes/.secondarvEmaTM AiAutomation$this->groupld = $attributes['groupid'];D AudioTm Rote>D Coaching$this->teamid = (int) $attributes['teamId'];$this->crmRequired = (bool) $attributes['crmRequired']:$this->roleIds = $attributes('rolelds']:_conterences,m connectionsSthis-sichwnen = Cattnihutechtichwnent1•$this->currentUser = Sattributes['user'] ?? null;v ermc) Activitycancelled.phpc)ActivitycancelledAsNoshow.phpC) ActivityLeadConverted.phppublic static function for0wner(CreateTeamRequest|EditTeamRequest Srequest. TeC) ActivityLinkedToerm.phpc) Activitvloaged.onoSroleIds = Role::whereInd coC)ActivitvScheduled.ohvUser::ROLE ADMINC) AutoLoaActivitv.ohrC) EmailWithCRMObiectsProcessed.onoUser::ROLE RECURDER1)->pluck( colu'id')->toArrayO:C) FollowuoScheduled.onoC) LeadConverted.oho** ovar User Scurrentlser */C) Stacechanded.nhnScurrentUser = Sreauest->usero:> M Dialers> M Mescadesreturn new selfalTm Particinants'email' => Sreauest->aet0wnerEma1lolM ProviderM Seccions• MSmsliteamtdt= Steam->aettdiolm Coftnhandm Vidon'crmRequired' => true,'poleTdst => SroleTdsl(e) ActivituCrontod nhn'user' => $currentUser,(c) ActivitvCrmProvidedUodated.ono• Preparation тor Kell.. In 4h 44 m100% Lz• Mon 18 May 10:16:43AskJiminnyReportActivityServiceTest v• Debugging Pipedriv+0 ..the idea is to replace v1 for v2. This is why there is task to replace SDK in the fuirst place. Review in the code all the endpoints used and find its equicvalent in new SDK using v2.Thoughts0 /5 tasks done1 Find all current Pipedrive APl endpoints used in codebaseO Identify community SDK methods being usecMap community SDK methods to ofticial SDK v2 equivalents• Test v2 SDK method mappingsDocument miaration olaninougnts>searched pipedrive in app/services/crm/Pipedrive/.php)Searched Client» in ann/Services/Crm/Dinedrive2 / 5 tasks done@ Identify community SDK methods beina uced® Map community SDK methods to official SDK v2 equivalents© PIPEDRIVE V2_MIGRATION_PLAN.mdnew 1266 tokens3 files +207 -3\lAsk anvthina (&4L)Accept File & X Reject File 4 *€+ 3 o1 3 files →led (17 minutes adol=custom.log4 SF [jiminny@localhost]& console (STAGINGIA HS_local [jiminny@localhost]* console (PRODIfii users (PROD]C) Kernel.phpconsole EU#rapeurive suk moracion rlan.Jniuu suk to UtriclaL suk vaReneCt## Current Implementation (Communztu SUK - devzop1pedrzve)### Client.php Methodsgetinstanceo->dealsO->t1nd(51d) - Get sinqle deal- Get sinqle actvitvaetinstanceo->activtles@->uodatelstd.soavload)l- Uodate activitvgetinstance()->activities(->add($payLoad) - Create activityaetAoicLiento->oetDealsUodatedSince(SuodatedSince)- Get deals uodated since v2getApiclient(->searchltems(Sparams)' - Search items (v1 API via PipedriveApiclien### Service.ono Methodsaetiinstance0-sactivitvsields0-sal1/0- Get activity fieldsgetinstanceO->organizationFields->allOaetInstance@->nenconFields0->a110- Get organization fields- Get person fields'getInstance)->dealFields->allOiGet deal fields• Get pipelinesgetInstance->organizations->allOl- Get organizationsgecinscanceu->organzzac1ons->rindls10) - rind single organzzaulongetInstance() ->persons()->all0l-ber personscecinscance->oersons-rlnds10)-rind sinole person### PipedrzveAp1cllent.onp Methods"itemSearch')' - Search items (v1)'deals')' - Get deals (v2)## Official SDK v2 APT Classes AvailableBased on vendor directory inspection:• ActivitvFieldsAoiDealFieldsAoiDeal ProductsanTtemSearchAnilOraanizationFieldsAnsinnaanizationcAnsiPonconCioldeAnslpinolinocinsProduc+SioldcAnsPnoductcAn;* Reiect allAccent alliW Windsurf Teamc1-1.UTE.8io 4 spaces...
|
NULL
|
4386855705421427872
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhostormINavicarecodeFV faVsco.js?° pipedrive-sdk- PhostormINavicarecodeFV faVsco.js?° pipedrive-sdk-pocProletey© WhichWorkerlsWorkingOnWhichJob.php(C) ConvertLeadActivities.ongPurgelookupcache.onp© SyncToPlanhat.php> D Scheduling› D Contractsc createrlaybookcreatedevent.ong• _ Domainv ODTO0 Activitypnp api.onoc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.pho— customerApiC) PlanhatactivityListener.php(C) AutomatedReportsRepository.ohp_ ExternalServicelntegrations©AutomatedReportsCommand.ohpC) RequestGenerateReport.Job.ohv) ImportcalliInvitationC) UserinvitationdTo.ohpRolesaSCIM117 Scorecard(C)AutomatedReportResult.ohvC. AutomatedReport.oho© CreateTeamRequest.php© UserinvitationDTO.php xclass UserInvitationntoroleras: intunbool.user?: UsenA2Y4 AServiceM UsersT UserEmail.php• M Smails* Sattributes→ M Snumeprivate function __construct(array $attributes)D EventsM ActivitiosSthis->email = mb strtolowerSattributesi'ematl'):>@ ActivityProviderSthis->secondarvemail = Sthis->normalizeNullableSattributes/.secondarvEmaTM AiAutomation$this->groupld = $attributes['groupid'];D AudioTm Rote>D Coaching$this->teamid = (int) $attributes['teamId'];$this->crmRequired = (bool) $attributes['crmRequired']:$this->roleIds = $attributes('rolelds']:_conterences,m connectionsSthis-sichwnen = Cattnihutechtichwnent1•$this->currentUser = Sattributes['user'] ?? null;v ermc) Activitycancelled.phpc)ActivitycancelledAsNoshow.phpC) ActivityLeadConverted.phppublic static function for0wner(CreateTeamRequest|EditTeamRequest Srequest. TeC) ActivityLinkedToerm.phpc) Activitvloaged.onoSroleIds = Role::whereInd coC)ActivitvScheduled.ohvUser::ROLE ADMINC) AutoLoaActivitv.ohrC) EmailWithCRMObiectsProcessed.onoUser::ROLE RECURDER1)->pluck( colu'id')->toArrayO:C) FollowuoScheduled.onoC) LeadConverted.oho** ovar User Scurrentlser */C) Stacechanded.nhnScurrentUser = Sreauest->usero:> M Dialers> M Mescadesreturn new selfalTm Particinants'email' => Sreauest->aet0wnerEma1lolM ProviderM Seccions• MSmsliteamtdt= Steam->aettdiolm Coftnhandm Vidon'crmRequired' => true,'poleTdst => SroleTdsl(e) ActivituCrontod nhn'user' => $currentUser,(c) ActivitvCrmProvidedUodated.ono• Preparation тor Kell.. In 4h 44 m100% Lz• Mon 18 May 10:16:43AskJiminnyReportActivityServiceTest v• Debugging Pipedriv+0 ..the idea is to replace v1 for v2. This is why there is task to replace SDK in the fuirst place. Review in the code all the endpoints used and find its equicvalent in new SDK using v2.Thoughts0 /5 tasks done1 Find all current Pipedrive APl endpoints used in codebaseO Identify community SDK methods being usecMap community SDK methods to ofticial SDK v2 equivalents• Test v2 SDK method mappingsDocument miaration olaninougnts>searched pipedrive in app/services/crm/Pipedrive/.php)Searched Client» in ann/Services/Crm/Dinedrive2 / 5 tasks done@ Identify community SDK methods beina uced® Map community SDK methods to official SDK v2 equivalents© PIPEDRIVE V2_MIGRATION_PLAN.mdnew 1266 tokens3 files +207 -3\lAsk anvthina (&4L)Accept File & X Reject File 4 *€+ 3 o1 3 files →led (17 minutes adol=custom.log4 SF [jiminny@localhost]& console (STAGINGIA HS_local [jiminny@localhost]* console (PRODIfii users (PROD]C) Kernel.phpconsole EU#rapeurive suk moracion rlan.Jniuu suk to UtriclaL suk vaReneCt## Current Implementation (Communztu SUK - devzop1pedrzve)### Client.php Methodsgetinstanceo->dealsO->t1nd(51d) - Get sinqle deal- Get sinqle actvitvaetinstanceo->activtles@->uodatelstd.soavload)l- Uodate activitvgetinstance()->activities(->add($payLoad) - Create activityaetAoicLiento->oetDealsUodatedSince(SuodatedSince)- Get deals uodated since v2getApiclient(->searchltems(Sparams)' - Search items (v1 API via PipedriveApiclien### Service.ono Methodsaetiinstance0-sactivitvsields0-sal1/0- Get activity fieldsgetinstanceO->organizationFields->allOaetInstance@->nenconFields0->a110- Get organization fields- Get person fields'getInstance)->dealFields->allOiGet deal fields• Get pipelinesgetInstance->organizations->allOl- Get organizationsgecinscanceu->organzzac1ons->rindls10) - rind single organzzaulongetInstance() ->persons()->all0l-ber personscecinscance->oersons-rlnds10)-rind sinole person### PipedrzveAp1cllent.onp Methods"itemSearch')' - Search items (v1)'deals')' - Get deals (v2)## Official SDK v2 APT Classes AvailableBased on vendor directory inspection:• ActivitvFieldsAoiDealFieldsAoiDeal ProductsanTtemSearchAnilOraanizationFieldsAnsinnaanizationcAnsiPonconCioldeAnslpinolinocinsProduc+SioldcAnsPnoductcAn;* Reiect allAccent alliW Windsurf Teamc1-1.UTE.8io 4 spaces...
|
50100
|
NULL
|
NULL
|
NULL
|
|
50104
|
1778
|
9
|
2026-05-18T07:16:53.744290+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088613744_m2.jpg...
|
PhpStorm
|
faVsco.js – TestPipedriveOfficialSdkCommand.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhostormVIewINavicarecodeFV faVsco.js?° pipedrive- PhostormVIewINavicarecodeFV faVsco.js?° pipedrive-sdk-poc vProleteyC ActivityController.ongc HelpersIest.onpconvertLeadActivitles.ongPurgelookupcache.onp© SyncToPlanhat.phpQ InitialFrontendStateTest.phpT. MockUnusedDependenciestralt.onp> D unit2022createPlaybookcreatedevent.ongTAoiGuardLogin.pnp© TestCase.php>@ vendor.editorconficE.envE.env.circleci=.env.circleci-nightlyE.env.localE.env.migratepnp api.onoTeamController.phgc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.phoC) PlanhatactivityListener.php(C)AskAnythinaPromptService.php(C) AutomatedReportsRepository.ohpphp api_y2.ohdC) RequestGenerateReport.Job.ohv(C)AutomatedReportResult.ohv(C) AutomatedRenort.ohoCreateTeamRequest.php© UserinvitationDTO.php x= .env.nikilocal=.env.otherclass UserInvitationntoroleras: intlunA2Y4Abool.= env.oroductionuser?: Usen=.env.production-eu* Sattributes= env.qal=.env.qa= env.root=.env.staging= atattributes•.gitignore= .oho-cs-fixer cacheprivate function __construct(array $attributes)Sthis->email = mb strtolowerSattributesi'email'1):Sthis->secondarvemail = Sthis->normalizeNullableSattributes/.secondarvEma$this->groupld = $attributes['groupid'];php.php-cs-fixer.dist.phpCthis-steamid = Gint) Sattnihutecfitpamtd!l•php.phpstorm.meta.phpE.phpunit.result.cacheE.prettierignore=.windsurfrules$this->crmRequired = (bool) $attributes['crmRequired']:$this->roleIds = $attributes('rolelds']:Sthis-sichwnen = Sattnihutecftichwnentl•2210$this->currentUser = Sattributes['user'] ?? null;cho ide helper.phppnp_lae_nelper_models.ongoho articanNACLALInE md24 6t26 6tpublic static function for0wner(CreateTeamRequest|EditTeamRequest Srequest. Te@ composer.json# composer.lockSroleIds = Role::whereIn( coldependencv-checker.son& dev.isonE ids.txtEinfection.ison.distUser::ROLE ADMINUser::ROLE RECURDER1)->pluck( col'id')->toArrayO:M+INSTALL.md** ovar User Scurrentlser */M.INTERNAL WEBHOOK SETUP.md= ¡iminny storaaeScurrentUser = Sreauest->usero:72 (61M4licenses.mdreturn new selfalM Makefile'email' => Sreauest->aet0wnerEma1lolnackade-lock.isonE phpstan.neon.dist=ohostan-baseline.neon= Steam->aettdiol<> nhounit ymilML PIPSDRIVS V MIGRATION PIAN mo'crmRequired' => true,'poleTdst => SroleTdsl"2 raw sal auerv sall'user' => $currentUser,MLPEADME mdsôl conar-nroient pronerties59Vite:Canit.analvze//lvite confialic. codina.ascistance willlianore.module resolution.milesfin.this.file Grror detailc.Vite.nackadelis remniredlfor.analvais.and.chouldlhe.linstalled.//7.minutes.aao=custom.log=laravel.logA SF [jiminny@localhost]& console [STAGING]A HS_local [jiminny@localhost]# console [PKob)fii users (PROD]© TestPipedriveOfficialSdkCommand.php xconsole lEUInamespace Jiminny Console Commands Crm.use Carbon \Carbon;use Exception;use Illuminate\Console\Command;use Jiminny\Component\Encryption\EncryptedTokenManager:use Jiminny Models\SocialAccount;use Jiminny Modets reamlucoLiminnv Modole Iicen'Accept Renectns\v1\Api \ActivityFieldsApi;veduraeluskos,use rlpearive verszons ve Apl rersonrlelasapl.use Pipearive versions v1 Ap1 PersonsAp1use Pipedrive\versions\v2\Api \ActivitiesApi;use Plpedrive verszons ve Ap1 AculvityrleLasaoluse rlpearive verszons Ve Ap1 LeaurieLasAoluse Pipedrive versions vz Ap1 DealsAp1:use Pipedrive versions vz Ap1 Personr1eldsAp1*use Pipedrive versions vz Ap1 PersonsAp1*use Pipedrive versions\v2\Confiquration:class TestPipedrive0fficialSdkCommand extends Commandprotected Ssionature = "Timinnv:test-pipedrive-official-sok teamid-'^protected Sdescrintion = 'Test official Pioedrive SDK (oinedrive/oinedrive) with exis6 usagesnrivate arnav Sresults = M:nrivate EncrvntedTokenManagen StokenManagen,public function __construct(EncryptedTokenManager $tokenManager)parent:: constructO:Sthis->tokenManager = $tokenManager:public function handled: intf...}1usageprivatê fuhctsgl° runTuY Accept Fle 3-l L aX RgjectFle ga + 3 of 3 files →• Preparation тor Kell.. In 4h 44 m100% L2• Mon 18 May 10:16:53+0 ..• Debugging Pipedrivthe idea is to replace v1 for v2. This is why there is task to replace SDK in the fuirst place. Review in the code all the endpoints used and find its equicvalent in new SDK using v2.Tnoughts0/5 tasks done1 Find all current Pipedrive APl endpoints used in codebaseIdentify community SDK methods being usedMap community SDK methods to official SDK v2 equivalentsTest v2 SDK method mappingsDocument miaration olanThoughts ›Searched Deviol Pioedrive in aposearched pipedrive in app/services/crm/Pipedrive/.php)Searched Client» in ann/Services/Crm/DinedrivePead Client nhn and Service nhn SThouaht for 1s2 / 5 tasks done@ Identify community SDK methods beina ucedMap community SDK methods to official SDK v2 equivalents© PIPEDRIVE V2_MIGRATION_PLAN.mdSurfing• TestPipedriveOfficialSdkCommand.phpnew 1266 tokens+10 -6Ask anvthina (&4L÷ « Code* Reiect allAccent alliW Windsurf Teams14-1 /25 charc 1 line hroak) UTF.8io 4 spaces...
|
NULL
|
1729563208152257405
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhostormVIewINavicarecodeFV faVsco.js?° pipedrive- PhostormVIewINavicarecodeFV faVsco.js?° pipedrive-sdk-poc vProleteyC ActivityController.ongc HelpersIest.onpconvertLeadActivitles.ongPurgelookupcache.onp© SyncToPlanhat.phpQ InitialFrontendStateTest.phpT. MockUnusedDependenciestralt.onp> D unit2022createPlaybookcreatedevent.ongTAoiGuardLogin.pnp© TestCase.php>@ vendor.editorconficE.envE.env.circleci=.env.circleci-nightlyE.env.localE.env.migratepnp api.onoTeamController.phgc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.phoC) PlanhatactivityListener.php(C)AskAnythinaPromptService.php(C) AutomatedReportsRepository.ohpphp api_y2.ohdC) RequestGenerateReport.Job.ohv(C)AutomatedReportResult.ohv(C) AutomatedRenort.ohoCreateTeamRequest.php© UserinvitationDTO.php x= .env.nikilocal=.env.otherclass UserInvitationntoroleras: intlunA2Y4Abool.= env.oroductionuser?: Usen=.env.production-eu* Sattributes= env.qal=.env.qa= env.root=.env.staging= atattributes•.gitignore= .oho-cs-fixer cacheprivate function __construct(array $attributes)Sthis->email = mb strtolowerSattributesi'email'1):Sthis->secondarvemail = Sthis->normalizeNullableSattributes/.secondarvEma$this->groupld = $attributes['groupid'];php.php-cs-fixer.dist.phpCthis-steamid = Gint) Sattnihutecfitpamtd!l•php.phpstorm.meta.phpE.phpunit.result.cacheE.prettierignore=.windsurfrules$this->crmRequired = (bool) $attributes['crmRequired']:$this->roleIds = $attributes('rolelds']:Sthis-sichwnen = Sattnihutecftichwnentl•2210$this->currentUser = Sattributes['user'] ?? null;cho ide helper.phppnp_lae_nelper_models.ongoho articanNACLALInE md24 6t26 6tpublic static function for0wner(CreateTeamRequest|EditTeamRequest Srequest. Te@ composer.json# composer.lockSroleIds = Role::whereIn( coldependencv-checker.son& dev.isonE ids.txtEinfection.ison.distUser::ROLE ADMINUser::ROLE RECURDER1)->pluck( col'id')->toArrayO:M+INSTALL.md** ovar User Scurrentlser */M.INTERNAL WEBHOOK SETUP.md= ¡iminny storaaeScurrentUser = Sreauest->usero:72 (61M4licenses.mdreturn new selfalM Makefile'email' => Sreauest->aet0wnerEma1lolnackade-lock.isonE phpstan.neon.dist=ohostan-baseline.neon= Steam->aettdiol<> nhounit ymilML PIPSDRIVS V MIGRATION PIAN mo'crmRequired' => true,'poleTdst => SroleTdsl"2 raw sal auerv sall'user' => $currentUser,MLPEADME mdsôl conar-nroient pronerties59Vite:Canit.analvze//lvite confialic. codina.ascistance willlianore.module resolution.milesfin.this.file Grror detailc.Vite.nackadelis remniredlfor.analvais.and.chouldlhe.linstalled.//7.minutes.aao=custom.log=laravel.logA SF [jiminny@localhost]& console [STAGING]A HS_local [jiminny@localhost]# console [PKob)fii users (PROD]© TestPipedriveOfficialSdkCommand.php xconsole lEUInamespace Jiminny Console Commands Crm.use Carbon \Carbon;use Exception;use Illuminate\Console\Command;use Jiminny\Component\Encryption\EncryptedTokenManager:use Jiminny Models\SocialAccount;use Jiminny Modets reamlucoLiminnv Modole Iicen'Accept Renectns\v1\Api \ActivityFieldsApi;veduraeluskos,use rlpearive verszons ve Apl rersonrlelasapl.use Pipearive versions v1 Ap1 PersonsAp1use Pipedrive\versions\v2\Api \ActivitiesApi;use Plpedrive verszons ve Ap1 AculvityrleLasaoluse rlpearive verszons Ve Ap1 LeaurieLasAoluse Pipedrive versions vz Ap1 DealsAp1:use Pipedrive versions vz Ap1 Personr1eldsAp1*use Pipedrive versions vz Ap1 PersonsAp1*use Pipedrive versions\v2\Confiquration:class TestPipedrive0fficialSdkCommand extends Commandprotected Ssionature = "Timinnv:test-pipedrive-official-sok teamid-'^protected Sdescrintion = 'Test official Pioedrive SDK (oinedrive/oinedrive) with exis6 usagesnrivate arnav Sresults = M:nrivate EncrvntedTokenManagen StokenManagen,public function __construct(EncryptedTokenManager $tokenManager)parent:: constructO:Sthis->tokenManager = $tokenManager:public function handled: intf...}1usageprivatê fuhctsgl° runTuY Accept Fle 3-l L aX RgjectFle ga + 3 of 3 files →• Preparation тor Kell.. In 4h 44 m100% L2• Mon 18 May 10:16:53+0 ..• Debugging Pipedrivthe idea is to replace v1 for v2. This is why there is task to replace SDK in the fuirst place. Review in the code all the endpoints used and find its equicvalent in new SDK using v2.Tnoughts0/5 tasks done1 Find all current Pipedrive APl endpoints used in codebaseIdentify community SDK methods being usedMap community SDK methods to official SDK v2 equivalentsTest v2 SDK method mappingsDocument miaration olanThoughts ›Searched Deviol Pioedrive in aposearched pipedrive in app/services/crm/Pipedrive/.php)Searched Client» in ann/Services/Crm/DinedrivePead Client nhn and Service nhn SThouaht for 1s2 / 5 tasks done@ Identify community SDK methods beina ucedMap community SDK methods to official SDK v2 equivalents© PIPEDRIVE V2_MIGRATION_PLAN.mdSurfing• TestPipedriveOfficialSdkCommand.phpnew 1266 tokens+10 -6Ask anvthina (&4L÷ « Code* Reiect allAccent alliW Windsurf Teams14-1 /25 charc 1 line hroak) UTF.8io 4 spaces...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50105
|
1778
|
10
|
2026-05-18T07:16:56.779409+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088616779_m2.jpg...
|
PhpStorm
|
faVsco.js – TestPipedriveOfficialSdkCommand.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.05618351,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.3380984,"top":0.29848364,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.3480718,"top":0.29848364,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.35771278,"top":0.29688746,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.3650266,"top":0.29688746,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
7835781732802146014
|
-8744863431803032638
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
PhostormINavicarecodeFV faVsco.js?° pipedrive-sdk-poc vroledey© SyncProfileMetadata.php©syncleammeradata.ong1estPlpeariveomricialsakcommand.orUpoateopponunityspecrications.ono>@ Dealinsights• … DevC DialersD DTOSC7 Elasticsearch• EnqagementStatsGeckoExportW LivestreamMallboxesa MidratePlavbacktihemesM Plavbooks• PlaylistsM Postmarkm PronhetAv M Renorto© AutomatedReportsCommand.phpC) AutomatedRenortsRetentionPolicvCor@ AutomatedReportsSendCommana.on(C) CroateMockAck.liminnvRenortResult@© DeleteReportCommand.php© GenerateMarketingReport.php© Team.php© Usage.php>07 Slack_ Teams>C Tracksa Transcription> D Twilio_ Users→ VocaoulanvZoomC) Command.oho(C) CreateDatabaseUsers.ohoC)DatabaseTiableCount.ohoC)[EMAIL]?Leftoverscommand.ohn@ DevPostmanCommand.ohnC) DiarizeViaAiParticinantldentificationComi(C) EncrvntTokensCommand.nhn(C EnaaaementStatsReaenerateCommand.n( FeatureFlaasHelner nhr© FixCrossTenantlssues.php© FlushRolesPermissionsCache.php© GeneratelnternalWebhookToken.php© GroupSetDefaultLanguageCommand.phcheloerlruncarecoachinelaoles.ong" Preparation tor Kell... In 4h 44 m100% L2• Mon 18 May 10:16:56AskJiminnyReportActivityServiceTest v+0 ..C ActivityController.ong=custom.loglaravel.log4 SF [jiminny@localhost]& console (STAGINGICascadeCConvertLeadActivities.ong© SyncToPlanhat.phpA HS_local [jiminny@localhost]# console [PKob)fii users (PROD]© TestPipedriveOfficialSdkCommand.php xO Migrating to Pipedriconsole lEUthe idea is to replace v1 for v2. This is why there is task to replace SDK in the fuirst place. Review in the code all the endpoints used and find its equicvalent in new SDK using v2.createPlaybookcreatedevent.ongInamespace Jiminny Console Commands Crm.pnp api.onoc) IntearationApp/Service.php(C) CreateCommentedEvent.php©) CreateSmsSentEvent.pho(C) AutomatedReportsRepository.ohpuse Carbon \Carbon;use Exception;use Illuminate\Console\Command;1 Find all current Pipedrive APl endpoints used in codebaseC) RequestGenerateReport.Job.ohvuse Jiminny\Component\Encryption\EncryptedTokenManager:use Jiminny Models\SocialAccount;(C)AutomatedReportResult.ohvuse Jiminny Modets ream© CreateTeamRequest.php© UserinvitationDTO.php xlucoLiminnv Modole Iicen'class UserInvitationntoAZY4AYroleras: intlunbool.user?: UsenAccept Renectis\v1\Api\ActivityFieldsApi;veduraeluskos,use rlpearive verszons ve Apl rersonrlelasaolPead Client nhn and Service nhn S* Sattributesuse Pipearive versions v1 Ap1 PersonsAp1use Pipedrive\versions\v2\Api \ActivitiesApi;private function __construct(array $attributes)use Plpedrive verszons ve Ap1 AculvicyrleLasaoi,Sthis->email = mb strtolowerSattributesi'ematl'):use rlpearive verszons Ve Ap1 LeaurieLasAoluse Pipedrive versions vz Ap1 DealsAp1:Sthis->secondarvemail = Sthis->normalizeNullableSattributes/.secondarvEmause Pipedrive versions\v2\Api\ PersonFieldsApi:$this->groupld = $attributes['groupid'];• Identify community SDK methods being used€ Map community SDK methods to official SDK v2 equivalentsuse Pipedrive versions vz Ap1 PersonsAp1*$this->teamid = (int) $attributes['teamId'];$this->crmRequired = (bool) $attributes['crmRequired']:$this->roleIds = $attributes['roleIds']:use Pipedrive versions\v2\b] Apiclass PersonsAni: Pinedrive versions v2 Anz PersonsAn]• PIPEDRIVE V2_ MIGRATION_PLAN.md+132Sthis-sichwnen = Sattnihutecftichwnentl•2210class TestPipedrive0fficiaThoughts$this->currentUser = Sattributes['user'] ?? null;PerconcAni Clacc Doc Comment+10 -24 ctprotected Ssianature =Packade: Pioedrive versions.vLinkshttos://openaoi-aenerator.tech z26 6tpublic static function for0wner(CreateTeamRequest|EditTeamRequest Srequest. Teprotected Sdescriotionvendor/oioedrive/oioedrive/lib/versions/v2/A0i/PersonsAoi.• docker exec docker lamn 1 nhn artisan iiminnv.tect-ninedrive-official_sdk 19SroleIds = Role::whereInd coUser::ROLE ADMIN6 usagesprivate array Sresults'PersonsApi |Pipedrivelversions|v2\Api" on openapi-aenerator tec &Run *# SkipUser::ROLE RECURDER1)->pluck( col'id')->toArray :nrivate EncrvntedTokenManagen StokenManagen,** ovar User Scurrentlser */ScurrentUser = Sreauest->usero:70 CTpublic function __construct(EncryptedTokenManager $tokenManager)return new selfal'email' => Sreauest->aet0wnerEma1lolparent:: constructO:Sthis->tokenManager = $tokenManager:iteamtdt= Steam->aettdiol* Reiect allAccent allipublic function handled: intf...}'crmRequired' => true,'poleTdst => SroleTdslAsk anvthing (&4-D'user' => $currentUser,1usageprivatê fuhctsgl° runTuY Accept Fle 3-l L aX RgjectFle ga + 3 of 3 files →÷ « CodeSWF.16he inctalled (17 minutes aaolW Windsurf Teams.14-1 /25 charc 1 line hreak)UTF.8Po 4 spaces...
|
50104
|
NULL
|
NULL
|
NULL
|
|
50106
|
1777
|
13
|
2026-05-18T07:16:57.984532+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088617984_m1.jpg...
|
PhpStorm
|
faVsco.js – TestPipedriveOfficialSdkCommand.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDEV (-zsh)DOCKER11DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_1812026-05-1807:15:02,865 WARNexited: artisan-schedule_00 (exit status 11 2026-05-1807:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_1NGstate, process has07:15:04,898 INFO success: artisan-schedule_00 entered RUNNIthan 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_1amp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_lamp_1docker_1amp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router: :group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_lamp_1docker_lamp_11 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_lamp_11 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00'with pid 18docker_lamp_11 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayed up for › than 1 seconds (startsecs)Preparation for Refi…. in 4h 44 m100% (78• Mon 18 May 10:16:57DOCKER (docker-compose)O ₴2181APP (-zsh)*3screenpipe"Y2PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|View in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
6986678338296783832
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDEV (-zsh)DOCKER11DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_1812026-05-1807:15:02,865 WARNexited: artisan-schedule_00 (exit status 11 2026-05-1807:15:03,887 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_1NGstate, process has07:15:04,898 INFO success: artisan-schedule_00 entered RUNNIthan 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_1amp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_lamp_1docker_1amp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router: :group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_lamp_1docker_lamp_11 2026-05-18 07:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; notexpected)docker_lamp_11 2026-05-18 07:16:16,095 INFO spawned: 'artisan-schedule_00'with pid 18docker_lamp_11 2026-05-18 07:16:17,141 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayed up for › than 1 seconds (startsecs)Preparation for Refi…. in 4h 44 m100% (78• Mon 18 May 10:16:57DOCKER (docker-compose)O ₴2181APP (-zsh)*3screenpipe"Y2PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|View in Docker Desktop@ View ConfigEnable Watch...
|
50102
|
NULL
|
NULL
|
NULL
|
|
50107
|
1777
|
14
|
2026-05-18T07:17:06.836346+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088626836_m1.jpg...
|
PhpStorm
|
faVsco.js – TestPipedriveOfficialSdkCommand.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\DTO\Invitation;
use Jiminny\DTO\UserEmail;
use Jiminny\Http\Requests\Settings\Teams\CreateInvitationRequest;
use Jiminny\Http\Requests\Settings\Teams\CreateTeamRequest;
use Jiminny\Http\Requests\Settings\Teams\EditTeamRequest;
use Jiminny\Models\Group;
use Jiminny\Models\Invitation;
use Jiminny\Models\Role;
use Jiminny\Models\Team;
use Jiminny\Models\User;
class UserInvitationDTO
{
use UserEmail;
public string $email;
public ?string $secondaryEmail;
public ?int $groupId;
public int $teamId;
public bool $crmRequired;
public array $roleIds;
public bool $isOwner;
public ?User $currentUser = null;
/**
* @param array{
* email: string,
* secondaryEmail: string|null,
* groupId: int|null,
* teamId: int|string,
* crmRequired: bool,
* roleIds: int[],
* isOwner: bool,
* user?: User
* } $attributes
*/
private function __construct(array $attributes)
{
$this->email = mb_strtolower($attributes['email']);
$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);
$this->groupId = $attributes['groupId'];
$this->teamId = (int) $attributes['teamId'];
$this->crmRequired = (bool) $attributes['crmRequired'];
$this->roleIds = $attributes['roleIds'];
$this->isOwner = $attributes['isOwner'];
$this->currentUser = $attributes['user'] ?? null;
}
public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self
{
$roleIds = Role::whereIn('name', [
User::ROLE_ADMIN,
User::ROLE_RECORDER,
])->pluck('id')->toArray();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => $request->getOwnerEmail(),
'secondaryEmail' => null,
'groupId' => null,
'teamId' => $team->getId(),
'crmRequired' => true,
'roleIds' => $roleIds,
'user' => $currentUser,
'isOwner' => true,
]);
}
public static function fromRequest(CreateInvitationRequest $request): self
{
$data = $request->validated();
$groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;
$teamId = Team::uuid($data['team_id'])->getId();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => mb_strtolower($data['email']),
'secondaryEmail' => $data['secondary_email'] ?? null,
'groupId' => $groupId,
'teamId' => $teamId,
'crmRequired' => $data['crm_required'],
'roleIds' => $data['roles'],
'user' => $currentUser,
'isOwner' => false,
]);
}
public static function fromInvitation(Invitation $invitation, User $currentUser): self
{
$roles = $invitation->roles()->get();
$isOwner = $invitation->isOwner();
return new self([
'email' => $invitation->email,
'secondaryEmail' => $invitation->getSecondaryEmail(),
'groupId' => $invitation->group_id,
'teamId' => $invitation->team_id,
'crmRequired' => $invitation->crm_required,
'roleIds' => $roles->pluck('id')->toArray(),
'user' => $currentUser,
'isOwner' => $isOwner,
]);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
1
51
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Crm;
use Carbon\Carbon;
use Exception;
use Illuminate\Console\Command;
use Jiminny\Component\Encryption\EncryptedTokenManager;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Pipedrive\versions\v2\Api\ActivitiesApi;
use Pipedrive\versions\v2\Api\ActivityFieldsApi;
use Pipedrive\versions\v2\Api\DealFieldsApi;
use Pipedrive\versions\v2\Api\DealsApi;
use Pipedrive\versions\v2\Api\PersonFieldsApi;
use Pipedrive\versions\v2\Api\PersonsApi;
use Pipedrive\versions\v2\Configuration;
class TestPipedriveOfficialSdkCommand extends Command
{
protected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';
protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with existing OAuth tokens';
private array $results = [];
private EncryptedTokenManager $tokenManager;
public function __construct(EncryptedTokenManager $tokenManager)
{
parent::__construct();
$this->tokenManager = $tokenManager;
}
public function handle(): int
{
$teamId = (int) $this->argument('teamId');
$this->info("Starting Pipedrive Official SDK POC for Team ID: {$teamId}");
$this->newLine();
try {
$this->runTests($teamId);
} catch (Exception $e) {
$this->error("POC failed with error: {$e->getMessage()}");
$this->error($e->getTraceAsString());
return 1;
}
$this->displayResults();
return 0;
}
private function runTests(int $teamId): void
{
$team = Team::find($teamId);
if (! $team) {
throw new Exception("Team with ID {$teamId} not found");
}
$socialAccount = SocialAccount::where('provider', SocialAccount::PROVIDER_PIPEDRIVE)
->whereHas('sociable', function ($query) use ($team) {
$query->where('team_id', $team->id);
})
->orderByDesc('expires') // Get the most recently expiring token
->first();
if (! $socialAccount) {
throw new Exception("No Pipedrive social account found for team {$teamId}");
}
$this->info("Found Pipedrive account for team: {$team->name}");
$this->newLine();
// Test 1: OAuth Initialization
$this->testOAuthInitialization($socialAccount);
// Test 2: Basic CRUD Operations
$this->testBasicCrudOperations($socialAccount);
// Test 3: Field Metadata
$this->testFieldMetadata($socialAccount);
// Test 4: v2 API Support
$this->testV2ApiSupport($socialAccount);
// Test 5: Error Handling
$this->testErrorHandling($socialAccount);
}
private function testOAuthInitialization(SocialAccount $socialAccount): void
{
$this->info('Test 1: OAuth Initialization');
$startTime = microtime(true);
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
$client = new DealsApi(null, $config);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('OAuth Initialization', true, "Client initialized successfully in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('OAuth Initialization', false, $e->getMessage(), $elapsed);
}
$this->newLine();
}
private function testBasicCrudOperations(SocialAccount $socialAccount): void
{
$this->info('Test 2: Basic CRUD Operations');
try {
// Get the raw token from database
$rawDbToken = $socialAccount->getProviderUserToken();
$this->info("DB token (length: " . strlen($rawDbToken) . ")");
$this->info("DB token preview: " . substr($rawDbToken, 0, 20) . "...");
// Check token expiry
$expires = $socialAccount->expires;
$this->info("Token expires at: " . ($expires ? Carbon::createFromTimestamp($expires)->toDateTimeString() : 'null'));
$this->info("Token is expired: " . ($expires && $expires < time() ? 'YES' : 'NO'));
// Test with the DB token directly
$this->info("\n--- Testing with DB token ---");
$config = new Configuration();
$config->setAccessToken($rawDbToken);
// Test 2a: Get Deals Summary
$this->testGetDeals($config);
// Test 2b: Get Persons
$this->testGetPersons($config);
// Test 2c: Get Activities
$this->testGetActivities($config);
} catch (Exception $e) {
$this->recordResult('Basic CRUD Operations', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testCurrentSystemApproach(SocialAccount $socialAccount): void
{
$startTime = microtime(true);
try {
// Simulate how current system makes requests
$token = $socialAccount->getProviderUserToken();
$url = 'https://api.pipedrive.com/api/v2/deals';
$headers = [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json',
];
$client = new \GuzzleHttp\Client();
$response = $client->get($url, [
'headers' => $headers,
'timeout' => 30,
]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$statusCode = $response->getStatusCode();
$this->recordResult('Current System v2 API', $statusCode === 200, "Status: {$statusCode} in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Current System v2 API', false, $e->getMessage(), $elapsed);
}
}
private function testGetDeals(Configuration $config): void
{
$this->info('Test 2a: Get Deals');
$startTime = microtime(true);
try {
$apiInstance = new DealsApi(null, $config);
// Test v2 SDK methods - try different method names
try {
$result = $apiInstance->getDeals(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', true, "Retrieved deals using getDeals() in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
// Try alternative method
try {
$result = $apiInstance->getAllDeals(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', true, "Retrieved deals using getAllDeals() in {$elapsed}ms", $elapsed);
} catch (Exception $e2) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', false, "Method not found: {$e->getMessage()}", $elapsed);
}
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', false, $e->getMessage(), $elapsed);
}
}
private function testGetPersons(Configuration $config): void
{
$this->info('Test 2b: Get Persons');
$startTime = microtime(true);
try {
$apiInstance = new PersonsApi(null, $config);
// v2 SDK might have different method names
try {
$result = $apiInstance->getPersons(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', true, "Retrieved persons in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
// Try alternative method names
try {
$result = $apiInstance->getAllPersons(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', true, "Retrieved persons in {$elapsed}ms", $elapsed);
} catch (Exception $e2) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', false, "Method not found: {$e->getMessage()}", $elapsed);
}
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', false, $e->getMessage(), $elapsed);
}
}
private function testGetActivities(Configuration $config): void
{
$this->info('Test 2c: Get Activities');
$startTime = microtime(true);
try {
$apiInstance = new ActivitiesApi(null, $config);
// v2 SDK might have different method names
try {
$result = $apiInstance->getActivities(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', true, "Retrieved activities in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
// Try alternative method names
try {
$result = $apiInstance->getAllActivities(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', true, "Retrieved activities in {$elapsed}ms", $elapsed);
} catch (Exception $e2) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', false, "Method not found: {$e->getMessage()}", $elapsed);
}
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', false, $e->getMessage(), $elapsed);
}
}
private function testFieldMetadata(SocialAccount $socialAccount): void
{
$this->info('Test 3: Field Metadata');
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
// Test 3a: Get Deal Fields
$this->testGetDealFields($config);
// Test 3b: Get Person Fields
$this->testGetPersonFields($config);
// Test 3c: Get Activity Fields
$this->testGetActivityFields($config);
} catch (Exception $e) {
$this->recordResult('Field Metadata', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testGetDealFields(Configuration $config): void
{
$startTime = microtime(true);
try {
$apiInstance = new DealFieldsApi(null, $config);
$result = $apiInstance->getDealFields();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$count = $result->getData() ? count($result->getData()) : 0;
$this->recordResult('Get Deal Fields', true, "Retrieved {$count} deal fields in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deal Fields', false, $e->getMessage(), $elapsed);
}
}
private function testGetPersonFields(Configuration $config): void
{
$startTime = microtime(true);
try {
$apiInstance = new PersonFieldsApi(null, $config);
$result = $apiInstance->getPersonFields();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$count = $result->getData() ? count($result->getData()) : 0;
$this->recordResult('Get Person Fields', true, "Retrieved {$count} person fields in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Person Fields', false, $e->getMessage(), $elapsed);
}
}
private function testGetActivityFields(Configuration $config): void
{
$startTime = microtime(true);
try {
$apiInstance = new ActivityFieldsApi(null, $config);
$result = $apiInstance->getActivityFields();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$count = $result->getData() ? count($result->getData()) : 0;
$this->recordResult('Get Activity Fields', true, "Retrieved {$count} activity fields in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activity Fields', false, $e->getMessage(), $elapsed);
}
}
private function testV2ApiSupport(SocialAccount $socialAccount): void
{
$this->info('Test 4: v2 API Support (Cursor-based Pagination)');
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
$startTime = microtime(true);
// Test v2 deals endpoint with cursor pagination
// Note: The official SDK may or may not have v2 API support
// This test will determine if v2 is available
try {
$apiInstance = new DealsApi(null, $config);
$updatedSince = Carbon::now()->subDays(30)->toRfc3339String();
$result = $apiInstance->getDealsSummary();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
// Check if response has cursor information (v2 indicator)
// The response object doesn't have getAdditionalData method
// Just test if the call works - v2 API support is limited in official SDK v1
$this->recordResult('v2 API Support', false, "v1 API works but v2 cursor pagination not available in official SDK v1. Retrieved summary in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('v2 API Support', false, $e->getMessage(), $elapsed);
}
} catch (Exception $e) {
$this->recordResult('v2 API Support', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testErrorHandling(SocialAccount $socialAccount): void
{
$this->info('Test 5: Error Handling');
try {
// Test 5a: Invalid Token
$this->testInvalidToken();
// Test 5b: Non-existent Resource
$this->testNonExistentResource($socialAccount);
} catch (Exception $e) {
$this->recordResult('Error Handling', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testInvalidToken(): void
{
$this->info('Test 5a: Invalid Token');
$startTime = microtime(true);
try {
$config = new Configuration();
$config->setAccessToken('invalid_token');
$client = new DealsApi(null, $config);
$client->getDealsSummary();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Invalid Token Error', false, "Expected error but request succeeded in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Invalid Token Error', true, "Correctly threw exception: {$e->getMessage()} in {$elapsed}ms", $elapsed);
}
}
private function testNonExistentResource(SocialAccount $socialAccount): void
{
$this->info('Test 5b: Non-existent Resource');
$startTime = microtime(true);
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
$client = new DealsApi(null, $config);
// Try to get a deal with a very high ID that likely doesn't exist
// Official SDK has getDealsSummary which works without specific ID
// Instead, let's test with an invalid field ID
try {
$fieldClient = new DealFieldsApi(null, $config);
$fieldClient->getDealField(999999999); // Very high ID that likely doesn't exist
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Non-existent Resource Error', false, "Expected error but request succeeded in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Non-existent Resource Error', true, "Correctly threw exception: {$e->getMessage()} in {$elapsed}ms", $elapsed);
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Non-existent Resource Error', false, $e->getMessage(), $elapsed);
}
}
private function recordResult(string $testName, bool $success, string $message, float $elapsed): void
{
$this->results[] = [
'test' => $testName,
'success' => $success,
'message' => $message,
'elapsed' => $elapsed,
];
$status = $success ? '✅ PASS' : '❌ FAIL';
$this->line(" {$status} - {$testName}: {$message}");
}
private function displayResults(): void
{
$this->newLine();
$this->info('=== POC Test Results Summary ===');
$this->newLine();
$total = count($this->results);
$passed = count(array_filter($this->results, fn ($r) => $r['success']));
$failed = $total - $passed;
$this->line("Total Tests: {$total}");
$this->line("Passed: {$passed}");
$this->line("Failed: {$failed}");
$this->newLine();
$totalTime = array_sum(array_column($this->results, 'elapsed'));
$this->line("Total Execution Time: {$totalTime}ms");
$this->newLine();
if ($failed > 0) {
$this->warn('Failed Tests:');
foreach ($this->results as $result) {
if (! $result['success']) {
$this->line(" - {$result['test']}: {$result['message']}");
}
}
$this->newLine();
}
$this->info('=== Detailed Results ===');
foreach ($this->results as $result) {
$status = $result['success'] ? '✅' : '❌';
$this->line("{$status} {$result['test']} ({$result['elapsed']}ms): {$result['message']}");
}
$this->newLine();
$this->info('=== Recommendations ===');
if ($passed === $total) {
$this->info('✅ All tests passed! The official SDK is viable for migration.');
$this->info('Next steps: Proceed with full migration planning.');
} else {
$this->warn('⚠️ Some tests failed. Review the failures above before proceeding.');
$this->warn('Consider hybrid approach or investigate alternatives if critical operations fail.');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\DTO\\Invitation;\n\nuse Jiminny\\DTO\\UserEmail;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateInvitationRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateTeamRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\EditTeamRequest;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Invitation;\nuse Jiminny\\Models\\Role;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\n\nclass UserInvitationDTO\n{\n use UserEmail;\n\n public string $email;\n public ?string $secondaryEmail;\n public ?int $groupId;\n public int $teamId;\n public bool $crmRequired;\n public array $roleIds;\n public bool $isOwner;\n public ?User $currentUser = null;\n\n /**\n * @param array{\n * email: string,\n * secondaryEmail: string|null,\n * groupId: int|null,\n * teamId: int|string,\n * crmRequired: bool,\n * roleIds: int[],\n * isOwner: bool,\n * user?: User\n * } $attributes\n */\n private function __construct(array $attributes)\n {\n $this->email = mb_strtolower($attributes['email']);\n $this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);\n $this->groupId = $attributes['groupId'];\n $this->teamId = (int) $attributes['teamId'];\n $this->crmRequired = (bool) $attributes['crmRequired'];\n $this->roleIds = $attributes['roleIds'];\n $this->isOwner = $attributes['isOwner'];\n $this->currentUser = $attributes['user'] ?? null;\n }\n\n public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self\n {\n $roleIds = Role::whereIn('name', [\n User::ROLE_ADMIN,\n User::ROLE_RECORDER,\n ])->pluck('id')->toArray();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => $request->getOwnerEmail(),\n 'secondaryEmail' => null,\n 'groupId' => null,\n 'teamId' => $team->getId(),\n 'crmRequired' => true,\n 'roleIds' => $roleIds,\n 'user' => $currentUser,\n 'isOwner' => true,\n ]);\n }\n\n public static function fromRequest(CreateInvitationRequest $request): self\n {\n $data = $request->validated();\n\n $groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;\n $teamId = Team::uuid($data['team_id'])->getId();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => mb_strtolower($data['email']),\n 'secondaryEmail' => $data['secondary_email'] ?? null,\n 'groupId' => $groupId,\n 'teamId' => $teamId,\n 'crmRequired' => $data['crm_required'],\n 'roleIds' => $data['roles'],\n 'user' => $currentUser,\n 'isOwner' => false,\n ]);\n }\n\n public static function fromInvitation(Invitation $invitation, User $currentUser): self\n {\n $roles = $invitation->roles()->get();\n $isOwner = $invitation->isOwner();\n\n return new self([\n 'email' => $invitation->email,\n 'secondaryEmail' => $invitation->getSecondaryEmail(),\n 'groupId' => $invitation->group_id,\n 'teamId' => $invitation->team_id,\n 'crmRequired' => $invitation->crm_required,\n 'roleIds' => $roles->pluck('id')->toArray(),\n 'user' => $currentUser,\n 'isOwner' => $isOwner,\n ]);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\DTO\\Invitation;\n\nuse Jiminny\\DTO\\UserEmail;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateInvitationRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateTeamRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\EditTeamRequest;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Invitation;\nuse Jiminny\\Models\\Role;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\n\nclass UserInvitationDTO\n{\n use UserEmail;\n\n public string $email;\n public ?string $secondaryEmail;\n public ?int $groupId;\n public int $teamId;\n public bool $crmRequired;\n public array $roleIds;\n public bool $isOwner;\n public ?User $currentUser = null;\n\n /**\n * @param array{\n * email: string,\n * secondaryEmail: string|null,\n * groupId: int|null,\n * teamId: int|string,\n * crmRequired: bool,\n * roleIds: int[],\n * isOwner: bool,\n * user?: User\n * } $attributes\n */\n private function __construct(array $attributes)\n {\n $this->email = mb_strtolower($attributes['email']);\n $this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);\n $this->groupId = $attributes['groupId'];\n $this->teamId = (int) $attributes['teamId'];\n $this->crmRequired = (bool) $attributes['crmRequired'];\n $this->roleIds = $attributes['roleIds'];\n $this->isOwner = $attributes['isOwner'];\n $this->currentUser = $attributes['user'] ?? null;\n }\n\n public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self\n {\n $roleIds = Role::whereIn('name', [\n User::ROLE_ADMIN,\n User::ROLE_RECORDER,\n ])->pluck('id')->toArray();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => $request->getOwnerEmail(),\n 'secondaryEmail' => null,\n 'groupId' => null,\n 'teamId' => $team->getId(),\n 'crmRequired' => true,\n 'roleIds' => $roleIds,\n 'user' => $currentUser,\n 'isOwner' => true,\n ]);\n }\n\n public static function fromRequest(CreateInvitationRequest $request): self\n {\n $data = $request->validated();\n\n $groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;\n $teamId = Team::uuid($data['team_id'])->getId();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => mb_strtolower($data['email']),\n 'secondaryEmail' => $data['secondary_email'] ?? null,\n 'groupId' => $groupId,\n 'teamId' => $teamId,\n 'crmRequired' => $data['crm_required'],\n 'roleIds' => $data['roles'],\n 'user' => $currentUser,\n 'isOwner' => false,\n ]);\n }\n\n public static function fromInvitation(Invitation $invitation, User $currentUser): self\n {\n $roles = $invitation->roles()->get();\n $isOwner = $invitation->isOwner();\n\n return new self([\n 'email' => $invitation->email,\n 'secondaryEmail' => $invitation->getSecondaryEmail(),\n 'groupId' => $invitation->group_id,\n 'teamId' => $invitation->team_id,\n 'crmRequired' => $invitation->crm_required,\n 'roleIds' => $roles->pluck('id')->toArray(),\n 'user' => $currentUser,\n 'isOwner' => $isOwner,\n ]);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"51","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.02013889,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.014583333,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Crm;\n\nuse Carbon\\Carbon;\nuse Exception;\nuse Illuminate\\Console\\Command;\nuse Jiminny\\Component\\Encryption\\EncryptedTokenManager;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Pipedrive\\versions\\v2\\Api\\ActivitiesApi;\nuse Pipedrive\\versions\\v2\\Api\\ActivityFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonsApi;\nuse Pipedrive\\versions\\v2\\Configuration;\n\nclass TestPipedriveOfficialSdkCommand extends Command\n{\n protected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';\n\n protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with existing OAuth tokens';\n\n private array $results = [];\n\n private EncryptedTokenManager $tokenManager;\n\n public function __construct(EncryptedTokenManager $tokenManager)\n {\n parent::__construct();\n $this->tokenManager = $tokenManager;\n }\n\n public function handle(): int\n {\n $teamId = (int) $this->argument('teamId');\n\n $this->info(\"Starting Pipedrive Official SDK POC for Team ID: {$teamId}\");\n $this->newLine();\n\n try {\n $this->runTests($teamId);\n } catch (Exception $e) {\n $this->error(\"POC failed with error: {$e->getMessage()}\");\n $this->error($e->getTraceAsString());\n\n return 1;\n }\n\n $this->displayResults();\n\n return 0;\n }\n\n private function runTests(int $teamId): void\n {\n $team = Team::find($teamId);\n if (! $team) {\n throw new Exception(\"Team with ID {$teamId} not found\");\n }\n\n $socialAccount = SocialAccount::where('provider', SocialAccount::PROVIDER_PIPEDRIVE)\n ->whereHas('sociable', function ($query) use ($team) {\n $query->where('team_id', $team->id);\n })\n ->orderByDesc('expires') // Get the most recently expiring token\n ->first();\n\n if (! $socialAccount) {\n throw new Exception(\"No Pipedrive social account found for team {$teamId}\");\n }\n\n $this->info(\"Found Pipedrive account for team: {$team->name}\");\n $this->newLine();\n\n // Test 1: OAuth Initialization\n $this->testOAuthInitialization($socialAccount);\n\n // Test 2: Basic CRUD Operations\n $this->testBasicCrudOperations($socialAccount);\n\n // Test 3: Field Metadata\n $this->testFieldMetadata($socialAccount);\n\n // Test 4: v2 API Support\n $this->testV2ApiSupport($socialAccount);\n\n // Test 5: Error Handling\n $this->testErrorHandling($socialAccount);\n }\n\n private function testOAuthInitialization(SocialAccount $socialAccount): void\n {\n $this->info('Test 1: OAuth Initialization');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $client = new DealsApi(null, $config);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', true, \"Client initialized successfully in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', false, $e->getMessage(), $elapsed);\n }\n\n $this->newLine();\n }\n\n private function testBasicCrudOperations(SocialAccount $socialAccount): void\n {\n $this->info('Test 2: Basic CRUD Operations');\n\n try {\n // Get the raw token from database\n $rawDbToken = $socialAccount->getProviderUserToken();\n $this->info(\"DB token (length: \" . strlen($rawDbToken) . \")\");\n $this->info(\"DB token preview: \" . substr($rawDbToken, 0, 20) . \"...\");\n\n // Check token expiry\n $expires = $socialAccount->expires;\n $this->info(\"Token expires at: \" . ($expires ? Carbon::createFromTimestamp($expires)->toDateTimeString() : 'null'));\n $this->info(\"Token is expired: \" . ($expires && $expires < time() ? 'YES' : 'NO'));\n\n // Test with the DB token directly\n $this->info(\"\\n--- Testing with DB token ---\");\n $config = new Configuration();\n $config->setAccessToken($rawDbToken);\n\n // Test 2a: Get Deals Summary\n $this->testGetDeals($config);\n\n // Test 2b: Get Persons\n $this->testGetPersons($config);\n\n // Test 2c: Get Activities\n $this->testGetActivities($config);\n } catch (Exception $e) {\n $this->recordResult('Basic CRUD Operations', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testCurrentSystemApproach(SocialAccount $socialAccount): void\n {\n $startTime = microtime(true);\n\n try {\n // Simulate how current system makes requests\n $token = $socialAccount->getProviderUserToken();\n $url = 'https://api.pipedrive.com/api/v2/deals';\n\n $headers = [\n 'Authorization' => 'Bearer ' . $token,\n 'Accept' => 'application/json',\n ];\n\n $client = new \\GuzzleHttp\\Client();\n $response = $client->get($url, [\n 'headers' => $headers,\n 'timeout' => 30,\n ]);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $statusCode = $response->getStatusCode();\n $this->recordResult('Current System v2 API', $statusCode === 200, \"Status: {$statusCode} in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Current System v2 API', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetDeals(Configuration $config): void\n {\n $this->info('Test 2a: Get Deals');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealsApi(null, $config);\n // Test v2 SDK methods - try different method names\n try {\n $result = $apiInstance->getDeals(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', true, \"Retrieved deals using getDeals() in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method\n try {\n $result = $apiInstance->getAllDeals(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', true, \"Retrieved deals using getAllDeals() in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersons(Configuration $config): void\n {\n $this->info('Test 2b: Get Persons');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonsApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivities(Configuration $config): void\n {\n $this->info('Test 2c: Get Activities');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivitiesApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testFieldMetadata(SocialAccount $socialAccount): void\n {\n $this->info('Test 3: Field Metadata');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n // Test 3a: Get Deal Fields\n $this->testGetDealFields($config);\n\n // Test 3b: Get Person Fields\n $this->testGetPersonFields($config);\n\n // Test 3c: Get Activity Fields\n $this->testGetActivityFields($config);\n } catch (Exception $e) {\n $this->recordResult('Field Metadata', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testGetDealFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealFieldsApi(null, $config);\n $result = $apiInstance->getDealFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Deal Fields', true, \"Retrieved {$count} deal fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deal Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersonFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonFieldsApi(null, $config);\n $result = $apiInstance->getPersonFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Person Fields', true, \"Retrieved {$count} person fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Person Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivityFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivityFieldsApi(null, $config);\n $result = $apiInstance->getActivityFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Activity Fields', true, \"Retrieved {$count} activity fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activity Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testV2ApiSupport(SocialAccount $socialAccount): void\n {\n $this->info('Test 4: v2 API Support (Cursor-based Pagination)');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $startTime = microtime(true);\n\n // Test v2 deals endpoint with cursor pagination\n // Note: The official SDK may or may not have v2 API support\n // This test will determine if v2 is available\n try {\n $apiInstance = new DealsApi(null, $config);\n $updatedSince = Carbon::now()->subDays(30)->toRfc3339String();\n $result = $apiInstance->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n\n // Check if response has cursor information (v2 indicator)\n // The response object doesn't have getAdditionalData method\n // Just test if the call works - v2 API support is limited in official SDK v1\n $this->recordResult('v2 API Support', false, \"v1 API works but v2 cursor pagination not available in official SDK v1. Retrieved summary in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('v2 API Support', false, $e->getMessage(), $elapsed);\n }\n } catch (Exception $e) {\n $this->recordResult('v2 API Support', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testErrorHandling(SocialAccount $socialAccount): void\n {\n $this->info('Test 5: Error Handling');\n\n try {\n // Test 5a: Invalid Token\n $this->testInvalidToken();\n\n // Test 5b: Non-existent Resource\n $this->testNonExistentResource($socialAccount);\n } catch (Exception $e) {\n $this->recordResult('Error Handling', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testInvalidToken(): void\n {\n $this->info('Test 5a: Invalid Token');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken('invalid_token');\n $client = new DealsApi(null, $config);\n\n $client->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n }\n\n private function testNonExistentResource(SocialAccount $socialAccount): void\n {\n $this->info('Test 5b: Non-existent Resource');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n $client = new DealsApi(null, $config);\n\n // Try to get a deal with a very high ID that likely doesn't exist\n // Official SDK has getDealsSummary which works without specific ID\n // Instead, let's test with an invalid field ID\n try {\n $fieldClient = new DealFieldsApi(null, $config);\n $fieldClient->getDealField(999999999); // Very high ID that likely doesn't exist\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function recordResult(string $testName, bool $success, string $message, float $elapsed): void\n {\n $this->results[] = [\n 'test' => $testName,\n 'success' => $success,\n 'message' => $message,\n 'elapsed' => $elapsed,\n ];\n\n $status = $success ? '✅ PASS' : '❌ FAIL';\n $this->line(\" {$status} - {$testName}: {$message}\");\n }\n\n private function displayResults(): void\n {\n $this->newLine();\n $this->info('=== POC Test Results Summary ===');\n $this->newLine();\n\n $total = count($this->results);\n $passed = count(array_filter($this->results, fn ($r) => $r['success']));\n $failed = $total - $passed;\n\n $this->line(\"Total Tests: {$total}\");\n $this->line(\"Passed: {$passed}\");\n $this->line(\"Failed: {$failed}\");\n $this->newLine();\n\n $totalTime = array_sum(array_column($this->results, 'elapsed'));\n $this->line(\"Total Execution Time: {$totalTime}ms\");\n $this->newLine();\n\n if ($failed > 0) {\n $this->warn('Failed Tests:');\n foreach ($this->results as $result) {\n if (! $result['success']) {\n $this->line(\" - {$result['test']}: {$result['message']}\");\n }\n }\n $this->newLine();\n }\n\n $this->info('=== Detailed Results ===');\n foreach ($this->results as $result) {\n $status = $result['success'] ? '✅' : '❌';\n $this->line(\"{$status} {$result['test']} ({$result['elapsed']}ms): {$result['message']}\");\n }\n\n $this->newLine();\n $this->info('=== Recommendations ===');\n\n if ($passed === $total) {\n $this->info('✅ All tests passed! The official SDK is viable for migration.');\n $this->info('Next steps: Proceed with full migration planning.');\n } else {\n $this->warn('⚠️ Some tests failed. Review the failures above before proceeding.');\n $this->warn('Consider hybrid approach or investigate alternatives if critical operations fail.');\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Crm;\n\nuse Carbon\\Carbon;\nuse Exception;\nuse Illuminate\\Console\\Command;\nuse Jiminny\\Component\\Encryption\\EncryptedTokenManager;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Pipedrive\\versions\\v2\\Api\\ActivitiesApi;\nuse Pipedrive\\versions\\v2\\Api\\ActivityFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonsApi;\nuse Pipedrive\\versions\\v2\\Configuration;\n\nclass TestPipedriveOfficialSdkCommand extends Command\n{\n protected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';\n\n protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with existing OAuth tokens';\n\n private array $results = [];\n\n private EncryptedTokenManager $tokenManager;\n\n public function __construct(EncryptedTokenManager $tokenManager)\n {\n parent::__construct();\n $this->tokenManager = $tokenManager;\n }\n\n public function handle(): int\n {\n $teamId = (int) $this->argument('teamId');\n\n $this->info(\"Starting Pipedrive Official SDK POC for Team ID: {$teamId}\");\n $this->newLine();\n\n try {\n $this->runTests($teamId);\n } catch (Exception $e) {\n $this->error(\"POC failed with error: {$e->getMessage()}\");\n $this->error($e->getTraceAsString());\n\n return 1;\n }\n\n $this->displayResults();\n\n return 0;\n }\n\n private function runTests(int $teamId): void\n {\n $team = Team::find($teamId);\n if (! $team) {\n throw new Exception(\"Team with ID {$teamId} not found\");\n }\n\n $socialAccount = SocialAccount::where('provider', SocialAccount::PROVIDER_PIPEDRIVE)\n ->whereHas('sociable', function ($query) use ($team) {\n $query->where('team_id', $team->id);\n })\n ->orderByDesc('expires') // Get the most recently expiring token\n ->first();\n\n if (! $socialAccount) {\n throw new Exception(\"No Pipedrive social account found for team {$teamId}\");\n }\n\n $this->info(\"Found Pipedrive account for team: {$team->name}\");\n $this->newLine();\n\n // Test 1: OAuth Initialization\n $this->testOAuthInitialization($socialAccount);\n\n // Test 2: Basic CRUD Operations\n $this->testBasicCrudOperations($socialAccount);\n\n // Test 3: Field Metadata\n $this->testFieldMetadata($socialAccount);\n\n // Test 4: v2 API Support\n $this->testV2ApiSupport($socialAccount);\n\n // Test 5: Error Handling\n $this->testErrorHandling($socialAccount);\n }\n\n private function testOAuthInitialization(SocialAccount $socialAccount): void\n {\n $this->info('Test 1: OAuth Initialization');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $client = new DealsApi(null, $config);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', true, \"Client initialized successfully in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', false, $e->getMessage(), $elapsed);\n }\n\n $this->newLine();\n }\n\n private function testBasicCrudOperations(SocialAccount $socialAccount): void\n {\n $this->info('Test 2: Basic CRUD Operations');\n\n try {\n // Get the raw token from database\n $rawDbToken = $socialAccount->getProviderUserToken();\n $this->info(\"DB token (length: \" . strlen($rawDbToken) . \")\");\n $this->info(\"DB token preview: \" . substr($rawDbToken, 0, 20) . \"...\");\n\n // Check token expiry\n $expires = $socialAccount->expires;\n $this->info(\"Token expires at: \" . ($expires ? Carbon::createFromTimestamp($expires)->toDateTimeString() : 'null'));\n $this->info(\"Token is expired: \" . ($expires && $expires < time() ? 'YES' : 'NO'));\n\n // Test with the DB token directly\n $this->info(\"\\n--- Testing with DB token ---\");\n $config = new Configuration();\n $config->setAccessToken($rawDbToken);\n\n // Test 2a: Get Deals Summary\n $this->testGetDeals($config);\n\n // Test 2b: Get Persons\n $this->testGetPersons($config);\n\n // Test 2c: Get Activities\n $this->testGetActivities($config);\n } catch (Exception $e) {\n $this->recordResult('Basic CRUD Operations', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testCurrentSystemApproach(SocialAccount $socialAccount): void\n {\n $startTime = microtime(true);\n\n try {\n // Simulate how current system makes requests\n $token = $socialAccount->getProviderUserToken();\n $url = 'https://api.pipedrive.com/api/v2/deals';\n\n $headers = [\n 'Authorization' => 'Bearer ' . $token,\n 'Accept' => 'application/json',\n ];\n\n $client = new \\GuzzleHttp\\Client();\n $response = $client->get($url, [\n 'headers' => $headers,\n 'timeout' => 30,\n ]);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $statusCode = $response->getStatusCode();\n $this->recordResult('Current System v2 API', $statusCode === 200, \"Status: {$statusCode} in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Current System v2 API', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetDeals(Configuration $config): void\n {\n $this->info('Test 2a: Get Deals');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealsApi(null, $config);\n // Test v2 SDK methods - try different method names\n try {\n $result = $apiInstance->getDeals(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', true, \"Retrieved deals using getDeals() in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method\n try {\n $result = $apiInstance->getAllDeals(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', true, \"Retrieved deals using getAllDeals() in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersons(Configuration $config): void\n {\n $this->info('Test 2b: Get Persons');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonsApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivities(Configuration $config): void\n {\n $this->info('Test 2c: Get Activities');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivitiesApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testFieldMetadata(SocialAccount $socialAccount): void\n {\n $this->info('Test 3: Field Metadata');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n // Test 3a: Get Deal Fields\n $this->testGetDealFields($config);\n\n // Test 3b: Get Person Fields\n $this->testGetPersonFields($config);\n\n // Test 3c: Get Activity Fields\n $this->testGetActivityFields($config);\n } catch (Exception $e) {\n $this->recordResult('Field Metadata', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testGetDealFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealFieldsApi(null, $config);\n $result = $apiInstance->getDealFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Deal Fields', true, \"Retrieved {$count} deal fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deal Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersonFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonFieldsApi(null, $config);\n $result = $apiInstance->getPersonFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Person Fields', true, \"Retrieved {$count} person fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Person Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivityFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivityFieldsApi(null, $config);\n $result = $apiInstance->getActivityFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Activity Fields', true, \"Retrieved {$count} activity fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activity Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testV2ApiSupport(SocialAccount $socialAccount): void\n {\n $this->info('Test 4: v2 API Support (Cursor-based Pagination)');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $startTime = microtime(true);\n\n // Test v2 deals endpoint with cursor pagination\n // Note: The official SDK may or may not have v2 API support\n // This test will determine if v2 is available\n try {\n $apiInstance = new DealsApi(null, $config);\n $updatedSince = Carbon::now()->subDays(30)->toRfc3339String();\n $result = $apiInstance->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n\n // Check if response has cursor information (v2 indicator)\n // The response object doesn't have getAdditionalData method\n // Just test if the call works - v2 API support is limited in official SDK v1\n $this->recordResult('v2 API Support', false, \"v1 API works but v2 cursor pagination not available in official SDK v1. Retrieved summary in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('v2 API Support', false, $e->getMessage(), $elapsed);\n }\n } catch (Exception $e) {\n $this->recordResult('v2 API Support', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testErrorHandling(SocialAccount $socialAccount): void\n {\n $this->info('Test 5: Error Handling');\n\n try {\n // Test 5a: Invalid Token\n $this->testInvalidToken();\n\n // Test 5b: Non-existent Resource\n $this->testNonExistentResource($socialAccount);\n } catch (Exception $e) {\n $this->recordResult('Error Handling', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testInvalidToken(): void\n {\n $this->info('Test 5a: Invalid Token');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken('invalid_token');\n $client = new DealsApi(null, $config);\n\n $client->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n }\n\n private function testNonExistentResource(SocialAccount $socialAccount): void\n {\n $this->info('Test 5b: Non-existent Resource');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n $client = new DealsApi(null, $config);\n\n // Try to get a deal with a very high ID that likely doesn't exist\n // Official SDK has getDealsSummary which works without specific ID\n // Instead, let's test with an invalid field ID\n try {\n $fieldClient = new DealFieldsApi(null, $config);\n $fieldClient->getDealField(999999999); // Very high ID that likely doesn't exist\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function recordResult(string $testName, bool $success, string $message, float $elapsed): void\n {\n $this->results[] = [\n 'test' => $testName,\n 'success' => $success,\n 'message' => $message,\n 'elapsed' => $elapsed,\n ];\n\n $status = $success ? '✅ PASS' : '❌ FAIL';\n $this->line(\" {$status} - {$testName}: {$message}\");\n }\n\n private function displayResults(): void\n {\n $this->newLine();\n $this->info('=== POC Test Results Summary ===');\n $this->newLine();\n\n $total = count($this->results);\n $passed = count(array_filter($this->results, fn ($r) => $r['success']));\n $failed = $total - $passed;\n\n $this->line(\"Total Tests: {$total}\");\n $this->line(\"Passed: {$passed}\");\n $this->line(\"Failed: {$failed}\");\n $this->newLine();\n\n $totalTime = array_sum(array_column($this->results, 'elapsed'));\n $this->line(\"Total Execution Time: {$totalTime}ms\");\n $this->newLine();\n\n if ($failed > 0) {\n $this->warn('Failed Tests:');\n foreach ($this->results as $result) {\n if (! $result['success']) {\n $this->line(\" - {$result['test']}: {$result['message']}\");\n }\n }\n $this->newLine();\n }\n\n $this->info('=== Detailed Results ===');\n foreach ($this->results as $result) {\n $status = $result['success'] ? '✅' : '❌';\n $this->line(\"{$status} {$result['test']} ({$result['elapsed']}ms): {$result['message']}\");\n }\n\n $this->newLine();\n $this->info('=== Recommendations ===');\n\n if ($passed === $total) {\n $this->info('✅ All tests passed! The official SDK is viable for migration.');\n $this->info('Next steps: Proceed with full migration planning.');\n } else {\n $this->warn('⚠️ Some tests failed. Review the failures above before proceeding.');\n $this->warn('Consider hybrid approach or investigate alternatives if critical operations fail.');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3881313802655721313
|
16616200620884628
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\DTO\Invitation;
use Jiminny\DTO\UserEmail;
use Jiminny\Http\Requests\Settings\Teams\CreateInvitationRequest;
use Jiminny\Http\Requests\Settings\Teams\CreateTeamRequest;
use Jiminny\Http\Requests\Settings\Teams\EditTeamRequest;
use Jiminny\Models\Group;
use Jiminny\Models\Invitation;
use Jiminny\Models\Role;
use Jiminny\Models\Team;
use Jiminny\Models\User;
class UserInvitationDTO
{
use UserEmail;
public string $email;
public ?string $secondaryEmail;
public ?int $groupId;
public int $teamId;
public bool $crmRequired;
public array $roleIds;
public bool $isOwner;
public ?User $currentUser = null;
/**
* @param array{
* email: string,
* secondaryEmail: string|null,
* groupId: int|null,
* teamId: int|string,
* crmRequired: bool,
* roleIds: int[],
* isOwner: bool,
* user?: User
* } $attributes
*/
private function __construct(array $attributes)
{
$this->email = mb_strtolower($attributes['email']);
$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);
$this->groupId = $attributes['groupId'];
$this->teamId = (int) $attributes['teamId'];
$this->crmRequired = (bool) $attributes['crmRequired'];
$this->roleIds = $attributes['roleIds'];
$this->isOwner = $attributes['isOwner'];
$this->currentUser = $attributes['user'] ?? null;
}
public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self
{
$roleIds = Role::whereIn('name', [
User::ROLE_ADMIN,
User::ROLE_RECORDER,
])->pluck('id')->toArray();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => $request->getOwnerEmail(),
'secondaryEmail' => null,
'groupId' => null,
'teamId' => $team->getId(),
'crmRequired' => true,
'roleIds' => $roleIds,
'user' => $currentUser,
'isOwner' => true,
]);
}
public static function fromRequest(CreateInvitationRequest $request): self
{
$data = $request->validated();
$groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;
$teamId = Team::uuid($data['team_id'])->getId();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => mb_strtolower($data['email']),
'secondaryEmail' => $data['secondary_email'] ?? null,
'groupId' => $groupId,
'teamId' => $teamId,
'crmRequired' => $data['crm_required'],
'roleIds' => $data['roles'],
'user' => $currentUser,
'isOwner' => false,
]);
}
public static function fromInvitation(Invitation $invitation, User $currentUser): self
{
$roles = $invitation->roles()->get();
$isOwner = $invitation->isOwner();
return new self([
'email' => $invitation->email,
'secondaryEmail' => $invitation->getSecondaryEmail(),
'groupId' => $invitation->group_id,
'teamId' => $invitation->team_id,
'crmRequired' => $invitation->crm_required,
'roleIds' => $roles->pluck('id')->toArray(),
'user' => $currentUser,
'isOwner' => $isOwner,
]);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
1
51
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Crm;
use Carbon\Carbon;
use Exception;
use Illuminate\Console\Command;
use Jiminny\Component\Encryption\EncryptedTokenManager;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Pipedrive\versions\v2\Api\ActivitiesApi;
use Pipedrive\versions\v2\Api\ActivityFieldsApi;
use Pipedrive\versions\v2\Api\DealFieldsApi;
use Pipedrive\versions\v2\Api\DealsApi;
use Pipedrive\versions\v2\Api\PersonFieldsApi;
use Pipedrive\versions\v2\Api\PersonsApi;
use Pipedrive\versions\v2\Configuration;
class TestPipedriveOfficialSdkCommand extends Command
{
protected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';
protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with existing OAuth tokens';
private array $results = [];
private EncryptedTokenManager $tokenManager;
public function __construct(EncryptedTokenManager $tokenManager)
{
parent::__construct();
$this->tokenManager = $tokenManager;
}
public function handle(): int
{
$teamId = (int) $this->argument('teamId');
$this->info("Starting Pipedrive Official SDK POC for Team ID: {$teamId}");
$this->newLine();
try {
$this->runTests($teamId);
} catch (Exception $e) {
$this->error("POC failed with error: {$e->getMessage()}");
$this->error($e->getTraceAsString());
return 1;
}
$this->displayResults();
return 0;
}
private function runTests(int $teamId): void
{
$team = Team::find($teamId);
if (! $team) {
throw new Exception("Team with ID {$teamId} not found");
}
$socialAccount = SocialAccount::where('provider', SocialAccount::PROVIDER_PIPEDRIVE)
->whereHas('sociable', function ($query) use ($team) {
$query->where('team_id', $team->id);
})
->orderByDesc('expires') // Get the most recently expiring token
->first();
if (! $socialAccount) {
throw new Exception("No Pipedrive social account found for team {$teamId}");
}
$this->info("Found Pipedrive account for team: {$team->name}");
$this->newLine();
// Test 1: OAuth Initialization
$this->testOAuthInitialization($socialAccount);
// Test 2: Basic CRUD Operations
$this->testBasicCrudOperations($socialAccount);
// Test 3: Field Metadata
$this->testFieldMetadata($socialAccount);
// Test 4: v2 API Support
$this->testV2ApiSupport($socialAccount);
// Test 5: Error Handling
$this->testErrorHandling($socialAccount);
}
private function testOAuthInitialization(SocialAccount $socialAccount): void
{
$this->info('Test 1: OAuth Initialization');
$startTime = microtime(true);
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
$client = new DealsApi(null, $config);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('OAuth Initialization', true, "Client initialized successfully in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('OAuth Initialization', false, $e->getMessage(), $elapsed);
}
$this->newLine();
}
private function testBasicCrudOperations(SocialAccount $socialAccount): void
{
$this->info('Test 2: Basic CRUD Operations');
try {
// Get the raw token from database
$rawDbToken = $socialAccount->getProviderUserToken();
$this->info("DB token (length: " . strlen($rawDbToken) . ")");
$this->info("DB token preview: " . substr($rawDbToken, 0, 20) . "...");
// Check token expiry
$expires = $socialAccount->expires;
$this->info("Token expires at: " . ($expires ? Carbon::createFromTimestamp($expires)->toDateTimeString() : 'null'));
$this->info("Token is expired: " . ($expires && $expires < time() ? 'YES' : 'NO'));
// Test with the DB token directly
$this->info("\n--- Testing with DB token ---");
$config = new Configuration();
$config->setAccessToken($rawDbToken);
// Test 2a: Get Deals Summary
$this->testGetDeals($config);
// Test 2b: Get Persons
$this->testGetPersons($config);
// Test 2c: Get Activities
$this->testGetActivities($config);
} catch (Exception $e) {
$this->recordResult('Basic CRUD Operations', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testCurrentSystemApproach(SocialAccount $socialAccount): void
{
$startTime = microtime(true);
try {
// Simulate how current system makes requests
$token = $socialAccount->getProviderUserToken();
$url = 'https://api.pipedrive.com/api/v2/deals';
$headers = [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json',
];
$client = new \GuzzleHttp\Client();
$response = $client->get($url, [
'headers' => $headers,
'timeout' => 30,
]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$statusCode = $response->getStatusCode();
$this->recordResult('Current System v2 API', $statusCode === 200, "Status: {$statusCode} in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Current System v2 API', false, $e->getMessage(), $elapsed);
}
}
private function testGetDeals(Configuration $config): void
{
$this->info('Test 2a: Get Deals');
$startTime = microtime(true);
try {
$apiInstance = new DealsApi(null, $config);
// Test v2 SDK methods - try different method names
try {
$result = $apiInstance->getDeals(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', true, "Retrieved deals using getDeals() in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
// Try alternative method
try {
$result = $apiInstance->getAllDeals(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', true, "Retrieved deals using getAllDeals() in {$elapsed}ms", $elapsed);
} catch (Exception $e2) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', false, "Method not found: {$e->getMessage()}", $elapsed);
}
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', false, $e->getMessage(), $elapsed);
}
}
private function testGetPersons(Configuration $config): void
{
$this->info('Test 2b: Get Persons');
$startTime = microtime(true);
try {
$apiInstance = new PersonsApi(null, $config);
// v2 SDK might have different method names
try {
$result = $apiInstance->getPersons(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', true, "Retrieved persons in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
// Try alternative method names
try {
$result = $apiInstance->getAllPersons(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', true, "Retrieved persons in {$elapsed}ms", $elapsed);
} catch (Exception $e2) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', false, "Method not found: {$e->getMessage()}", $elapsed);
}
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', false, $e->getMessage(), $elapsed);
}
}
private function testGetActivities(Configuration $config): void
{
$this->info('Test 2c: Get Activities');
$startTime = microtime(true);
try {
$apiInstance = new ActivitiesApi(null, $config);
// v2 SDK might have different method names
try {
$result = $apiInstance->getActivities(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', true, "Retrieved activities in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
// Try alternative method names
try {
$result = $apiInstance->getAllActivities(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', true, "Retrieved activities in {$elapsed}ms", $elapsed);
} catch (Exception $e2) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', false, "Method not found: {$e->getMessage()}", $elapsed);
}
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', false, $e->getMessage(), $elapsed);
}
}
private function testFieldMetadata(SocialAccount $socialAccount): void
{
$this->info('Test 3: Field Metadata');
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
// Test 3a: Get Deal Fields
$this->testGetDealFields($config);
// Test 3b: Get Person Fields
$this->testGetPersonFields($config);
// Test 3c: Get Activity Fields
$this->testGetActivityFields($config);
} catch (Exception $e) {
$this->recordResult('Field Metadata', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testGetDealFields(Configuration $config): void
{
$startTime = microtime(true);
try {
$apiInstance = new DealFieldsApi(null, $config);
$result = $apiInstance->getDealFields();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$count = $result->getData() ? count($result->getData()) : 0;
$this->recordResult('Get Deal Fields', true, "Retrieved {$count} deal fields in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deal Fields', false, $e->getMessage(), $elapsed);
}
}
private function testGetPersonFields(Configuration $config): void
{
$startTime = microtime(true);
try {
$apiInstance = new PersonFieldsApi(null, $config);
$result = $apiInstance->getPersonFields();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$count = $result->getData() ? count($result->getData()) : 0;
$this->recordResult('Get Person Fields', true, "Retrieved {$count} person fields in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Person Fields', false, $e->getMessage(), $elapsed);
}
}
private function testGetActivityFields(Configuration $config): void
{
$startTime = microtime(true);
try {
$apiInstance = new ActivityFieldsApi(null, $config);
$result = $apiInstance->getActivityFields();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$count = $result->getData() ? count($result->getData()) : 0;
$this->recordResult('Get Activity Fields', true, "Retrieved {$count} activity fields in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activity Fields', false, $e->getMessage(), $elapsed);
}
}
private function testV2ApiSupport(SocialAccount $socialAccount): void
{
$this->info('Test 4: v2 API Support (Cursor-based Pagination)');
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
$startTime = microtime(true);
// Test v2 deals endpoint with cursor pagination
// Note: The official SDK may or may not have v2 API support
// This test will determine if v2 is available
try {
$apiInstance = new DealsApi(null, $config);
$updatedSince = Carbon::now()->subDays(30)->toRfc3339String();
$result = $apiInstance->getDealsSummary();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
// Check if response has cursor information (v2 indicator)
// The response object doesn't have getAdditionalData method
// Just test if the call works - v2 API support is limited in official SDK v1
$this->recordResult('v2 API Support', false, "v1 API works but v2 cursor pagination not available in official SDK v1. Retrieved summary in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('v2 API Support', false, $e->getMessage(), $elapsed);
}
} catch (Exception $e) {
$this->recordResult('v2 API Support', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testErrorHandling(SocialAccount $socialAccount): void
{
$this->info('Test 5: Error Handling');
try {
// Test 5a: Invalid Token
$this->testInvalidToken();
// Test 5b: Non-existent Resource
$this->testNonExistentResource($socialAccount);
} catch (Exception $e) {
$this->recordResult('Error Handling', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testInvalidToken(): void
{
$this->info('Test 5a: Invalid Token');
$startTime = microtime(true);
try {
$config = new Configuration();
$config->setAccessToken('invalid_token');
$client = new DealsApi(null, $config);
$client->getDealsSummary();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Invalid Token Error', false, "Expected error but request succeeded in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Invalid Token Error', true, "Correctly threw exception: {$e->getMessage()} in {$elapsed}ms", $elapsed);
}
}
private function testNonExistentResource(SocialAccount $socialAccount): void
{
$this->info('Test 5b: Non-existent Resource');
$startTime = microtime(true);
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
$client = new DealsApi(null, $config);
// Try to get a deal with a very high ID that likely doesn't exist
// Official SDK has getDealsSummary which works without specific ID
// Instead, let's test with an invalid field ID
try {
$fieldClient = new DealFieldsApi(null, $config);
$fieldClient->getDealField(999999999); // Very high ID that likely doesn't exist
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Non-existent Resource Error', false, "Expected error but request succeeded in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Non-existent Resource Error', true, "Correctly threw exception: {$e->getMessage()} in {$elapsed}ms", $elapsed);
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Non-existent Resource Error', false, $e->getMessage(), $elapsed);
}
}
private function recordResult(string $testName, bool $success, string $message, float $elapsed): void
{
$this->results[] = [
'test' => $testName,
'success' => $success,
'message' => $message,
'elapsed' => $elapsed,
];
$status = $success ? '✅ PASS' : '❌ FAIL';
$this->line(" {$status} - {$testName}: {$message}");
}
private function displayResults(): void
{
$this->newLine();
$this->info('=== POC Test Results Summary ===');
$this->newLine();
$total = count($this->results);
$passed = count(array_filter($this->results, fn ($r) => $r['success']));
$failed = $total - $passed;
$this->line("Total Tests: {$total}");
$this->line("Passed: {$passed}");
$this->line("Failed: {$failed}");
$this->newLine();
$totalTime = array_sum(array_column($this->results, 'elapsed'));
$this->line("Total Execution Time: {$totalTime}ms");
$this->newLine();
if ($failed > 0) {
$this->warn('Failed Tests:');
foreach ($this->results as $result) {
if (! $result['success']) {
$this->line(" - {$result['test']}: {$result['message']}");
}
}
$this->newLine();
}
$this->info('=== Detailed Results ===');
foreach ($this->results as $result) {
$status = $result['success'] ? '✅' : '❌';
$this->line("{$status} {$result['test']} ({$result['elapsed']}ms): {$result['message']}");
}
$this->newLine();
$this->info('=== Recommendations ===');
if ($passed === $total) {
$this->info('✅ All tests passed! The official SDK is viable for migration.');
$this->info('Next steps: Proceed with full migration planning.');
} else {
$this->warn('⚠️ Some tests failed. Review the failures above before proceeding.');
$this->warn('Consider hybrid approach or investigate alternatives if critical operations fail.');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50108
|
1778
|
11
|
2026-05-18T07:17:06.849342+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088626849_m2.jpg...
|
PhpStorm
|
faVsco.js – TestPipedriveOfficialSdkCommand.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\DTO\Invitation;
use Jiminny\DTO\UserEmail;
use Jiminny\Http\Requests\Settings\Teams\CreateInvitationRequest;
use Jiminny\Http\Requests\Settings\Teams\CreateTeamRequest;
use Jiminny\Http\Requests\Settings\Teams\EditTeamRequest;
use Jiminny\Models\Group;
use Jiminny\Models\Invitation;
use Jiminny\Models\Role;
use Jiminny\Models\Team;
use Jiminny\Models\User;
class UserInvitationDTO
{
use UserEmail;
public string $email;
public ?string $secondaryEmail;
public ?int $groupId;
public int $teamId;
public bool $crmRequired;
public array $roleIds;
public bool $isOwner;
public ?User $currentUser = null;
/**
* @param array{
* email: string,
* secondaryEmail: string|null,
* groupId: int|null,
* teamId: int|string,
* crmRequired: bool,
* roleIds: int[],
* isOwner: bool,
* user?: User
* } $attributes
*/
private function __construct(array $attributes)
{
$this->email = mb_strtolower($attributes['email']);
$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);
$this->groupId = $attributes['groupId'];
$this->teamId = (int) $attributes['teamId'];
$this->crmRequired = (bool) $attributes['crmRequired'];
$this->roleIds = $attributes['roleIds'];
$this->isOwner = $attributes['isOwner'];
$this->currentUser = $attributes['user'] ?? null;
}
public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self
{
$roleIds = Role::whereIn('name', [
User::ROLE_ADMIN,
User::ROLE_RECORDER,
])->pluck('id')->toArray();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => $request->getOwnerEmail(),
'secondaryEmail' => null,
'groupId' => null,
'teamId' => $team->getId(),
'crmRequired' => true,
'roleIds' => $roleIds,
'user' => $currentUser,
'isOwner' => true,
]);
}
public static function fromRequest(CreateInvitationRequest $request): self
{
$data = $request->validated();
$groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;
$teamId = Team::uuid($data['team_id'])->getId();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => mb_strtolower($data['email']),
'secondaryEmail' => $data['secondary_email'] ?? null,
'groupId' => $groupId,
'teamId' => $teamId,
'crmRequired' => $data['crm_required'],
'roleIds' => $data['roles'],
'user' => $currentUser,
'isOwner' => false,
]);
}
public static function fromInvitation(Invitation $invitation, User $currentUser): self
{
$roles = $invitation->roles()->get();
$isOwner = $invitation->isOwner();
return new self([
'email' => $invitation->email,
'secondaryEmail' => $invitation->getSecondaryEmail(),
'groupId' => $invitation->group_id,
'teamId' => $invitation->team_id,
'crmRequired' => $invitation->crm_required,
'roleIds' => $roles->pluck('id')->toArray(),
'user' => $currentUser,
'isOwner' => $isOwner,
]);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
1
51
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Crm;
use Carbon\Carbon;
use Exception;
use Illuminate\Console\Command;
use Jiminny\Component\Encryption\EncryptedTokenManager;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Pipedrive\versions\v2\Api\ActivitiesApi;
use Pipedrive\versions\v2\Api\ActivityFieldsApi;
use Pipedrive\versions\v2\Api\DealFieldsApi;
use Pipedrive\versions\v2\Api\DealsApi;
use Pipedrive\versions\v2\Api\PersonFieldsApi;
use Pipedrive\versions\v2\Api\PersonsApi;
use Pipedrive\versions\v2\Configuration;
class TestPipedriveOfficialSdkCommand extends Command
{
protected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';
protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with existing OAuth tokens';
private array $results = [];
private EncryptedTokenManager $tokenManager;
public function __construct(EncryptedTokenManager $tokenManager)
{
parent::__construct();
$this->tokenManager = $tokenManager;
}
public function handle(): int
{
$teamId = (int) $this->argument('teamId');
$this->info("Starting Pipedrive Official SDK POC for Team ID: {$teamId}");
$this->newLine();
try {
$this->runTests($teamId);
} catch (Exception $e) {
$this->error("POC failed with error: {$e->getMessage()}");
$this->error($e->getTraceAsString());
return 1;
}
$this->displayResults();
return 0;
}
private function runTests(int $teamId): void
{
$team = Team::find($teamId);
if (! $team) {
throw new Exception("Team with ID {$teamId} not found");
}
$socialAccount = SocialAccount::where('provider', SocialAccount::PROVIDER_PIPEDRIVE)
->whereHas('sociable', function ($query) use ($team) {
$query->where('team_id', $team->id);
})
->orderByDesc('expires') // Get the most recently expiring token
->first();
if (! $socialAccount) {
throw new Exception("No Pipedrive social account found for team {$teamId}");
}
$this->info("Found Pipedrive account for team: {$team->name}");
$this->newLine();
// Test 1: OAuth Initialization
$this->testOAuthInitialization($socialAccount);
// Test 2: Basic CRUD Operations
$this->testBasicCrudOperations($socialAccount);
// Test 3: Field Metadata
$this->testFieldMetadata($socialAccount);
// Test 4: v2 API Support
$this->testV2ApiSupport($socialAccount);
// Test 5: Error Handling
$this->testErrorHandling($socialAccount);
}
private function testOAuthInitialization(SocialAccount $socialAccount): void
{
$this->info('Test 1: OAuth Initialization');
$startTime = microtime(true);
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
$client = new DealsApi(null, $config);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('OAuth Initialization', true, "Client initialized successfully in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('OAuth Initialization', false, $e->getMessage(), $elapsed);
}
$this->newLine();
}
private function testBasicCrudOperations(SocialAccount $socialAccount): void
{
$this->info('Test 2: Basic CRUD Operations');
try {
// Get the raw token from database
$rawDbToken = $socialAccount->getProviderUserToken();
$this->info("DB token (length: " . strlen($rawDbToken) . ")");
$this->info("DB token preview: " . substr($rawDbToken, 0, 20) . "...");
// Check token expiry
$expires = $socialAccount->expires;
$this->info("Token expires at: " . ($expires ? Carbon::createFromTimestamp($expires)->toDateTimeString() : 'null'));
$this->info("Token is expired: " . ($expires && $expires < time() ? 'YES' : 'NO'));
// Test with the DB token directly
$this->info("\n--- Testing with DB token ---");
$config = new Configuration();
$config->setAccessToken($rawDbToken);
// Test 2a: Get Deals Summary
$this->testGetDeals($config);
// Test 2b: Get Persons
$this->testGetPersons($config);
// Test 2c: Get Activities
$this->testGetActivities($config);
} catch (Exception $e) {
$this->recordResult('Basic CRUD Operations', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testCurrentSystemApproach(SocialAccount $socialAccount): void
{
$startTime = microtime(true);
try {
// Simulate how current system makes requests
$token = $socialAccount->getProviderUserToken();
$url = 'https://api.pipedrive.com/api/v2/deals';
$headers = [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json',
];
$client = new \GuzzleHttp\Client();
$response = $client->get($url, [
'headers' => $headers,
'timeout' => 30,
]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$statusCode = $response->getStatusCode();
$this->recordResult('Current System v2 API', $statusCode === 200, "Status: {$statusCode} in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Current System v2 API', false, $e->getMessage(), $elapsed);
}
}
private function testGetDeals(Configuration $config): void
{
$this->info('Test 2a: Get Deals');
$startTime = microtime(true);
try {
$apiInstance = new DealsApi(null, $config);
// Test v2 SDK methods - try different method names
try {
$result = $apiInstance->getDeals(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', true, "Retrieved deals using getDeals() in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
// Try alternative method
try {
$result = $apiInstance->getAllDeals(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', true, "Retrieved deals using getAllDeals() in {$elapsed}ms", $elapsed);
} catch (Exception $e2) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', false, "Method not found: {$e->getMessage()}", $elapsed);
}
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', false, $e->getMessage(), $elapsed);
}
}
private function testGetPersons(Configuration $config): void
{
$this->info('Test 2b: Get Persons');
$startTime = microtime(true);
try {
$apiInstance = new PersonsApi(null, $config);
// v2 SDK might have different method names
try {
$result = $apiInstance->getPersons(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', true, "Retrieved persons in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
// Try alternative method names
try {
$result = $apiInstance->getAllPersons(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', true, "Retrieved persons in {$elapsed}ms", $elapsed);
} catch (Exception $e2) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', false, "Method not found: {$e->getMessage()}", $elapsed);
}
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', false, $e->getMessage(), $elapsed);
}
}
private function testGetActivities(Configuration $config): void
{
$this->info('Test 2c: Get Activities');
$startTime = microtime(true);
try {
$apiInstance = new ActivitiesApi(null, $config);
// v2 SDK might have different method names
try {
$result = $apiInstance->getActivities(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', true, "Retrieved activities in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
// Try alternative method names
try {
$result = $apiInstance->getAllActivities(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', true, "Retrieved activities in {$elapsed}ms", $elapsed);
} catch (Exception $e2) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', false, "Method not found: {$e->getMessage()}", $elapsed);
}
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', false, $e->getMessage(), $elapsed);
}
}
private function testFieldMetadata(SocialAccount $socialAccount): void
{
$this->info('Test 3: Field Metadata');
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
// Test 3a: Get Deal Fields
$this->testGetDealFields($config);
// Test 3b: Get Person Fields
$this->testGetPersonFields($config);
// Test 3c: Get Activity Fields
$this->testGetActivityFields($config);
} catch (Exception $e) {
$this->recordResult('Field Metadata', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testGetDealFields(Configuration $config): void
{
$startTime = microtime(true);
try {
$apiInstance = new DealFieldsApi(null, $config);
$result = $apiInstance->getDealFields();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$count = $result->getData() ? count($result->getData()) : 0;
$this->recordResult('Get Deal Fields', true, "Retrieved {$count} deal fields in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deal Fields', false, $e->getMessage(), $elapsed);
}
}
private function testGetPersonFields(Configuration $config): void
{
$startTime = microtime(true);
try {
$apiInstance = new PersonFieldsApi(null, $config);
$result = $apiInstance->getPersonFields();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$count = $result->getData() ? count($result->getData()) : 0;
$this->recordResult('Get Person Fields', true, "Retrieved {$count} person fields in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Person Fields', false, $e->getMessage(), $elapsed);
}
}
private function testGetActivityFields(Configuration $config): void
{
$startTime = microtime(true);
try {
$apiInstance = new ActivityFieldsApi(null, $config);
$result = $apiInstance->getActivityFields();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$count = $result->getData() ? count($result->getData()) : 0;
$this->recordResult('Get Activity Fields', true, "Retrieved {$count} activity fields in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activity Fields', false, $e->getMessage(), $elapsed);
}
}
private function testV2ApiSupport(SocialAccount $socialAccount): void
{
$this->info('Test 4: v2 API Support (Cursor-based Pagination)');
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
$startTime = microtime(true);
// Test v2 deals endpoint with cursor pagination
// Note: The official SDK may or may not have v2 API support
// This test will determine if v2 is available
try {
$apiInstance = new DealsApi(null, $config);
$updatedSince = Carbon::now()->subDays(30)->toRfc3339String();
$result = $apiInstance->getDealsSummary();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
// Check if response has cursor information (v2 indicator)
// The response object doesn't have getAdditionalData method
// Just test if the call works - v2 API support is limited in official SDK v1
$this->recordResult('v2 API Support', false, "v1 API works but v2 cursor pagination not available in official SDK v1. Retrieved summary in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('v2 API Support', false, $e->getMessage(), $elapsed);
}
} catch (Exception $e) {
$this->recordResult('v2 API Support', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testErrorHandling(SocialAccount $socialAccount): void
{
$this->info('Test 5: Error Handling');
try {
// Test 5a: Invalid Token
$this->testInvalidToken();
// Test 5b: Non-existent Resource
$this->testNonExistentResource($socialAccount);
} catch (Exception $e) {
$this->recordResult('Error Handling', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testInvalidToken(): void
{
$this->info('Test 5a: Invalid Token');
$startTime = microtime(true);
try {
$config = new Configuration();
$config->setAccessToken('invalid_token');
$client = new DealsApi(null, $config);
$client->getDealsSummary();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Invalid Token Error', false, "Expected error but request succeeded in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Invalid Token Error', true, "Correctly threw exception: {$e->getMessage()} in {$elapsed}ms", $elapsed);
}
}
private function testNonExistentResource(SocialAccount $socialAccount): void
{
$this->info('Test 5b: Non-existent Resource');
$startTime = microtime(true);
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
$client = new DealsApi(null, $config);
// Try to get a deal with a very high ID that likely doesn't exist
// Official SDK has getDealsSummary which works without specific ID
// Instead, let's test with an invalid field ID
try {
$fieldClient = new DealFieldsApi(null, $config);
$fieldClient->getDealField(999999999); // Very high ID that likely doesn't exist
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Non-existent Resource Error', false, "Expected error but request succeeded in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Non-existent Resource Error', true, "Correctly threw exception: {$e->getMessage()} in {$elapsed}ms", $elapsed);
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Non-existent Resource Error', false, $e->getMessage(), $elapsed);
}
}
private function recordResult(string $testName, bool $success, string $message, float $elapsed): void
{
$this->results[] = [
'test' => $testName,
'success' => $success,
'message' => $message,
'elapsed' => $elapsed,
];
$status = $success ? '✅ PASS' : '❌ FAIL';
$this->line(" {$status} - {$testName}: {$message}");
}
private function displayResults(): void
{
$this->newLine();
$this->info('=== POC Test Results Summary ===');
$this->newLine();
$total = count($this->results);
$passed = count(array_filter($this->results, fn ($r) => $r['success']));
$failed = $total - $passed;
$this->line("Total Tests: {$total}");
$this->line("Passed: {$passed}");
$this->line("Failed: {$failed}");
$this->newLine();
$totalTime = array_sum(array_column($this->results, 'elapsed'));
$this->line("Total Execution Time: {$totalTime}ms");
$this->newLine();
if ($failed > 0) {
$this->warn('Failed Tests:');
foreach ($this->results as $result) {
if (! $result['success']) {
$this->line(" - {$result['test']}: {$result['message']}");
}
}
$this->newLine();
}
$this->info('=== Detailed Results ===');
foreach ($this->results as $result) {
$status = $result['success'] ? '✅' : '❌';
$this->line("{$status} {$result['test']} ({$result['elapsed']}ms): {$result['message']}");
}
$this->newLine();
$this->info('=== Recommendations ===');
if ($passed === $total) {
$this->info('✅ All tests passed! The official SDK is viable for migration.');
$this->info('Next steps: Proceed with full migration planning.');
} else {
$this->warn('⚠️ Some tests failed. Review the failures above before proceeding.');
$this->warn('Consider hybrid approach or investigate alternatives if critical operations fail.');
}
}
}...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.05618351,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.3380984,"top":0.29848364,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.3480718,"top":0.29848364,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.35771278,"top":0.29688746,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.3650266,"top":0.29688746,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\DTO\\Invitation;\n\nuse Jiminny\\DTO\\UserEmail;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateInvitationRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateTeamRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\EditTeamRequest;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Invitation;\nuse Jiminny\\Models\\Role;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\n\nclass UserInvitationDTO\n{\n use UserEmail;\n\n public string $email;\n public ?string $secondaryEmail;\n public ?int $groupId;\n public int $teamId;\n public bool $crmRequired;\n public array $roleIds;\n public bool $isOwner;\n public ?User $currentUser = null;\n\n /**\n * @param array{\n * email: string,\n * secondaryEmail: string|null,\n * groupId: int|null,\n * teamId: int|string,\n * crmRequired: bool,\n * roleIds: int[],\n * isOwner: bool,\n * user?: User\n * } $attributes\n */\n private function __construct(array $attributes)\n {\n $this->email = mb_strtolower($attributes['email']);\n $this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);\n $this->groupId = $attributes['groupId'];\n $this->teamId = (int) $attributes['teamId'];\n $this->crmRequired = (bool) $attributes['crmRequired'];\n $this->roleIds = $attributes['roleIds'];\n $this->isOwner = $attributes['isOwner'];\n $this->currentUser = $attributes['user'] ?? null;\n }\n\n public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self\n {\n $roleIds = Role::whereIn('name', [\n User::ROLE_ADMIN,\n User::ROLE_RECORDER,\n ])->pluck('id')->toArray();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => $request->getOwnerEmail(),\n 'secondaryEmail' => null,\n 'groupId' => null,\n 'teamId' => $team->getId(),\n 'crmRequired' => true,\n 'roleIds' => $roleIds,\n 'user' => $currentUser,\n 'isOwner' => true,\n ]);\n }\n\n public static function fromRequest(CreateInvitationRequest $request): self\n {\n $data = $request->validated();\n\n $groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;\n $teamId = Team::uuid($data['team_id'])->getId();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => mb_strtolower($data['email']),\n 'secondaryEmail' => $data['secondary_email'] ?? null,\n 'groupId' => $groupId,\n 'teamId' => $teamId,\n 'crmRequired' => $data['crm_required'],\n 'roleIds' => $data['roles'],\n 'user' => $currentUser,\n 'isOwner' => false,\n ]);\n }\n\n public static function fromInvitation(Invitation $invitation, User $currentUser): self\n {\n $roles = $invitation->roles()->get();\n $isOwner = $invitation->isOwner();\n\n return new self([\n 'email' => $invitation->email,\n 'secondaryEmail' => $invitation->getSecondaryEmail(),\n 'groupId' => $invitation->group_id,\n 'teamId' => $invitation->team_id,\n 'crmRequired' => $invitation->crm_required,\n 'roleIds' => $roles->pluck('id')->toArray(),\n 'user' => $currentUser,\n 'isOwner' => $isOwner,\n ]);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\DTO\\Invitation;\n\nuse Jiminny\\DTO\\UserEmail;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateInvitationRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\CreateTeamRequest;\nuse Jiminny\\Http\\Requests\\Settings\\Teams\\EditTeamRequest;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Invitation;\nuse Jiminny\\Models\\Role;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\n\nclass UserInvitationDTO\n{\n use UserEmail;\n\n public string $email;\n public ?string $secondaryEmail;\n public ?int $groupId;\n public int $teamId;\n public bool $crmRequired;\n public array $roleIds;\n public bool $isOwner;\n public ?User $currentUser = null;\n\n /**\n * @param array{\n * email: string,\n * secondaryEmail: string|null,\n * groupId: int|null,\n * teamId: int|string,\n * crmRequired: bool,\n * roleIds: int[],\n * isOwner: bool,\n * user?: User\n * } $attributes\n */\n private function __construct(array $attributes)\n {\n $this->email = mb_strtolower($attributes['email']);\n $this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);\n $this->groupId = $attributes['groupId'];\n $this->teamId = (int) $attributes['teamId'];\n $this->crmRequired = (bool) $attributes['crmRequired'];\n $this->roleIds = $attributes['roleIds'];\n $this->isOwner = $attributes['isOwner'];\n $this->currentUser = $attributes['user'] ?? null;\n }\n\n public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self\n {\n $roleIds = Role::whereIn('name', [\n User::ROLE_ADMIN,\n User::ROLE_RECORDER,\n ])->pluck('id')->toArray();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => $request->getOwnerEmail(),\n 'secondaryEmail' => null,\n 'groupId' => null,\n 'teamId' => $team->getId(),\n 'crmRequired' => true,\n 'roleIds' => $roleIds,\n 'user' => $currentUser,\n 'isOwner' => true,\n ]);\n }\n\n public static function fromRequest(CreateInvitationRequest $request): self\n {\n $data = $request->validated();\n\n $groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;\n $teamId = Team::uuid($data['team_id'])->getId();\n\n /** @var User $currentUser */\n $currentUser = $request->user();\n\n return new self([\n 'email' => mb_strtolower($data['email']),\n 'secondaryEmail' => $data['secondary_email'] ?? null,\n 'groupId' => $groupId,\n 'teamId' => $teamId,\n 'crmRequired' => $data['crm_required'],\n 'roleIds' => $data['roles'],\n 'user' => $currentUser,\n 'isOwner' => false,\n ]);\n }\n\n public static function fromInvitation(Invitation $invitation, User $currentUser): self\n {\n $roles = $invitation->roles()->get();\n $isOwner = $invitation->isOwner();\n\n return new self([\n 'email' => $invitation->email,\n 'secondaryEmail' => $invitation->getSecondaryEmail(),\n 'groupId' => $invitation->group_id,\n 'teamId' => $invitation->team_id,\n 'crmRequired' => $invitation->crm_required,\n 'roleIds' => $roles->pluck('id')->toArray(),\n 'user' => $currentUser,\n 'isOwner' => $isOwner,\n ]);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"51","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.009640957,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.006981383,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Crm;\n\nuse Carbon\\Carbon;\nuse Exception;\nuse Illuminate\\Console\\Command;\nuse Jiminny\\Component\\Encryption\\EncryptedTokenManager;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Pipedrive\\versions\\v2\\Api\\ActivitiesApi;\nuse Pipedrive\\versions\\v2\\Api\\ActivityFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonsApi;\nuse Pipedrive\\versions\\v2\\Configuration;\n\nclass TestPipedriveOfficialSdkCommand extends Command\n{\n protected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';\n\n protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with existing OAuth tokens';\n\n private array $results = [];\n\n private EncryptedTokenManager $tokenManager;\n\n public function __construct(EncryptedTokenManager $tokenManager)\n {\n parent::__construct();\n $this->tokenManager = $tokenManager;\n }\n\n public function handle(): int\n {\n $teamId = (int) $this->argument('teamId');\n\n $this->info(\"Starting Pipedrive Official SDK POC for Team ID: {$teamId}\");\n $this->newLine();\n\n try {\n $this->runTests($teamId);\n } catch (Exception $e) {\n $this->error(\"POC failed with error: {$e->getMessage()}\");\n $this->error($e->getTraceAsString());\n\n return 1;\n }\n\n $this->displayResults();\n\n return 0;\n }\n\n private function runTests(int $teamId): void\n {\n $team = Team::find($teamId);\n if (! $team) {\n throw new Exception(\"Team with ID {$teamId} not found\");\n }\n\n $socialAccount = SocialAccount::where('provider', SocialAccount::PROVIDER_PIPEDRIVE)\n ->whereHas('sociable', function ($query) use ($team) {\n $query->where('team_id', $team->id);\n })\n ->orderByDesc('expires') // Get the most recently expiring token\n ->first();\n\n if (! $socialAccount) {\n throw new Exception(\"No Pipedrive social account found for team {$teamId}\");\n }\n\n $this->info(\"Found Pipedrive account for team: {$team->name}\");\n $this->newLine();\n\n // Test 1: OAuth Initialization\n $this->testOAuthInitialization($socialAccount);\n\n // Test 2: Basic CRUD Operations\n $this->testBasicCrudOperations($socialAccount);\n\n // Test 3: Field Metadata\n $this->testFieldMetadata($socialAccount);\n\n // Test 4: v2 API Support\n $this->testV2ApiSupport($socialAccount);\n\n // Test 5: Error Handling\n $this->testErrorHandling($socialAccount);\n }\n\n private function testOAuthInitialization(SocialAccount $socialAccount): void\n {\n $this->info('Test 1: OAuth Initialization');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $client = new DealsApi(null, $config);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', true, \"Client initialized successfully in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', false, $e->getMessage(), $elapsed);\n }\n\n $this->newLine();\n }\n\n private function testBasicCrudOperations(SocialAccount $socialAccount): void\n {\n $this->info('Test 2: Basic CRUD Operations');\n\n try {\n // Get the raw token from database\n $rawDbToken = $socialAccount->getProviderUserToken();\n $this->info(\"DB token (length: \" . strlen($rawDbToken) . \")\");\n $this->info(\"DB token preview: \" . substr($rawDbToken, 0, 20) . \"...\");\n\n // Check token expiry\n $expires = $socialAccount->expires;\n $this->info(\"Token expires at: \" . ($expires ? Carbon::createFromTimestamp($expires)->toDateTimeString() : 'null'));\n $this->info(\"Token is expired: \" . ($expires && $expires < time() ? 'YES' : 'NO'));\n\n // Test with the DB token directly\n $this->info(\"\\n--- Testing with DB token ---\");\n $config = new Configuration();\n $config->setAccessToken($rawDbToken);\n\n // Test 2a: Get Deals Summary\n $this->testGetDeals($config);\n\n // Test 2b: Get Persons\n $this->testGetPersons($config);\n\n // Test 2c: Get Activities\n $this->testGetActivities($config);\n } catch (Exception $e) {\n $this->recordResult('Basic CRUD Operations', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testCurrentSystemApproach(SocialAccount $socialAccount): void\n {\n $startTime = microtime(true);\n\n try {\n // Simulate how current system makes requests\n $token = $socialAccount->getProviderUserToken();\n $url = 'https://api.pipedrive.com/api/v2/deals';\n\n $headers = [\n 'Authorization' => 'Bearer ' . $token,\n 'Accept' => 'application/json',\n ];\n\n $client = new \\GuzzleHttp\\Client();\n $response = $client->get($url, [\n 'headers' => $headers,\n 'timeout' => 30,\n ]);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $statusCode = $response->getStatusCode();\n $this->recordResult('Current System v2 API', $statusCode === 200, \"Status: {$statusCode} in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Current System v2 API', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetDeals(Configuration $config): void\n {\n $this->info('Test 2a: Get Deals');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealsApi(null, $config);\n // Test v2 SDK methods - try different method names\n try {\n $result = $apiInstance->getDeals(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', true, \"Retrieved deals using getDeals() in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method\n try {\n $result = $apiInstance->getAllDeals(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', true, \"Retrieved deals using getAllDeals() in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersons(Configuration $config): void\n {\n $this->info('Test 2b: Get Persons');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonsApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivities(Configuration $config): void\n {\n $this->info('Test 2c: Get Activities');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivitiesApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testFieldMetadata(SocialAccount $socialAccount): void\n {\n $this->info('Test 3: Field Metadata');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n // Test 3a: Get Deal Fields\n $this->testGetDealFields($config);\n\n // Test 3b: Get Person Fields\n $this->testGetPersonFields($config);\n\n // Test 3c: Get Activity Fields\n $this->testGetActivityFields($config);\n } catch (Exception $e) {\n $this->recordResult('Field Metadata', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testGetDealFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealFieldsApi(null, $config);\n $result = $apiInstance->getDealFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Deal Fields', true, \"Retrieved {$count} deal fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deal Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersonFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonFieldsApi(null, $config);\n $result = $apiInstance->getPersonFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Person Fields', true, \"Retrieved {$count} person fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Person Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivityFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivityFieldsApi(null, $config);\n $result = $apiInstance->getActivityFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Activity Fields', true, \"Retrieved {$count} activity fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activity Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testV2ApiSupport(SocialAccount $socialAccount): void\n {\n $this->info('Test 4: v2 API Support (Cursor-based Pagination)');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $startTime = microtime(true);\n\n // Test v2 deals endpoint with cursor pagination\n // Note: The official SDK may or may not have v2 API support\n // This test will determine if v2 is available\n try {\n $apiInstance = new DealsApi(null, $config);\n $updatedSince = Carbon::now()->subDays(30)->toRfc3339String();\n $result = $apiInstance->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n\n // Check if response has cursor information (v2 indicator)\n // The response object doesn't have getAdditionalData method\n // Just test if the call works - v2 API support is limited in official SDK v1\n $this->recordResult('v2 API Support', false, \"v1 API works but v2 cursor pagination not available in official SDK v1. Retrieved summary in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('v2 API Support', false, $e->getMessage(), $elapsed);\n }\n } catch (Exception $e) {\n $this->recordResult('v2 API Support', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testErrorHandling(SocialAccount $socialAccount): void\n {\n $this->info('Test 5: Error Handling');\n\n try {\n // Test 5a: Invalid Token\n $this->testInvalidToken();\n\n // Test 5b: Non-existent Resource\n $this->testNonExistentResource($socialAccount);\n } catch (Exception $e) {\n $this->recordResult('Error Handling', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testInvalidToken(): void\n {\n $this->info('Test 5a: Invalid Token');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken('invalid_token');\n $client = new DealsApi(null, $config);\n\n $client->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n }\n\n private function testNonExistentResource(SocialAccount $socialAccount): void\n {\n $this->info('Test 5b: Non-existent Resource');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n $client = new DealsApi(null, $config);\n\n // Try to get a deal with a very high ID that likely doesn't exist\n // Official SDK has getDealsSummary which works without specific ID\n // Instead, let's test with an invalid field ID\n try {\n $fieldClient = new DealFieldsApi(null, $config);\n $fieldClient->getDealField(999999999); // Very high ID that likely doesn't exist\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function recordResult(string $testName, bool $success, string $message, float $elapsed): void\n {\n $this->results[] = [\n 'test' => $testName,\n 'success' => $success,\n 'message' => $message,\n 'elapsed' => $elapsed,\n ];\n\n $status = $success ? '✅ PASS' : '❌ FAIL';\n $this->line(\" {$status} - {$testName}: {$message}\");\n }\n\n private function displayResults(): void\n {\n $this->newLine();\n $this->info('=== POC Test Results Summary ===');\n $this->newLine();\n\n $total = count($this->results);\n $passed = count(array_filter($this->results, fn ($r) => $r['success']));\n $failed = $total - $passed;\n\n $this->line(\"Total Tests: {$total}\");\n $this->line(\"Passed: {$passed}\");\n $this->line(\"Failed: {$failed}\");\n $this->newLine();\n\n $totalTime = array_sum(array_column($this->results, 'elapsed'));\n $this->line(\"Total Execution Time: {$totalTime}ms\");\n $this->newLine();\n\n if ($failed > 0) {\n $this->warn('Failed Tests:');\n foreach ($this->results as $result) {\n if (! $result['success']) {\n $this->line(\" - {$result['test']}: {$result['message']}\");\n }\n }\n $this->newLine();\n }\n\n $this->info('=== Detailed Results ===');\n foreach ($this->results as $result) {\n $status = $result['success'] ? '✅' : '❌';\n $this->line(\"{$status} {$result['test']} ({$result['elapsed']}ms): {$result['message']}\");\n }\n\n $this->newLine();\n $this->info('=== Recommendations ===');\n\n if ($passed === $total) {\n $this->info('✅ All tests passed! The official SDK is viable for migration.');\n $this->info('Next steps: Proceed with full migration planning.');\n } else {\n $this->warn('⚠️ Some tests failed. Review the failures above before proceeding.');\n $this->warn('Consider hybrid approach or investigate alternatives if critical operations fail.');\n }\n }\n}","depth":4,"bounds":{"left":0.39394948,"top":0.06384677,"width":0.35605052,"height":0.93615323},"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Crm;\n\nuse Carbon\\Carbon;\nuse Exception;\nuse Illuminate\\Console\\Command;\nuse Jiminny\\Component\\Encryption\\EncryptedTokenManager;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Pipedrive\\versions\\v2\\Api\\ActivitiesApi;\nuse Pipedrive\\versions\\v2\\Api\\ActivityFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonsApi;\nuse Pipedrive\\versions\\v2\\Configuration;\n\nclass TestPipedriveOfficialSdkCommand extends Command\n{\n protected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';\n\n protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with existing OAuth tokens';\n\n private array $results = [];\n\n private EncryptedTokenManager $tokenManager;\n\n public function __construct(EncryptedTokenManager $tokenManager)\n {\n parent::__construct();\n $this->tokenManager = $tokenManager;\n }\n\n public function handle(): int\n {\n $teamId = (int) $this->argument('teamId');\n\n $this->info(\"Starting Pipedrive Official SDK POC for Team ID: {$teamId}\");\n $this->newLine();\n\n try {\n $this->runTests($teamId);\n } catch (Exception $e) {\n $this->error(\"POC failed with error: {$e->getMessage()}\");\n $this->error($e->getTraceAsString());\n\n return 1;\n }\n\n $this->displayResults();\n\n return 0;\n }\n\n private function runTests(int $teamId): void\n {\n $team = Team::find($teamId);\n if (! $team) {\n throw new Exception(\"Team with ID {$teamId} not found\");\n }\n\n $socialAccount = SocialAccount::where('provider', SocialAccount::PROVIDER_PIPEDRIVE)\n ->whereHas('sociable', function ($query) use ($team) {\n $query->where('team_id', $team->id);\n })\n ->orderByDesc('expires') // Get the most recently expiring token\n ->first();\n\n if (! $socialAccount) {\n throw new Exception(\"No Pipedrive social account found for team {$teamId}\");\n }\n\n $this->info(\"Found Pipedrive account for team: {$team->name}\");\n $this->newLine();\n\n // Test 1: OAuth Initialization\n $this->testOAuthInitialization($socialAccount);\n\n // Test 2: Basic CRUD Operations\n $this->testBasicCrudOperations($socialAccount);\n\n // Test 3: Field Metadata\n $this->testFieldMetadata($socialAccount);\n\n // Test 4: v2 API Support\n $this->testV2ApiSupport($socialAccount);\n\n // Test 5: Error Handling\n $this->testErrorHandling($socialAccount);\n }\n\n private function testOAuthInitialization(SocialAccount $socialAccount): void\n {\n $this->info('Test 1: OAuth Initialization');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $client = new DealsApi(null, $config);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', true, \"Client initialized successfully in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', false, $e->getMessage(), $elapsed);\n }\n\n $this->newLine();\n }\n\n private function testBasicCrudOperations(SocialAccount $socialAccount): void\n {\n $this->info('Test 2: Basic CRUD Operations');\n\n try {\n // Get the raw token from database\n $rawDbToken = $socialAccount->getProviderUserToken();\n $this->info(\"DB token (length: \" . strlen($rawDbToken) . \")\");\n $this->info(\"DB token preview: \" . substr($rawDbToken, 0, 20) . \"...\");\n\n // Check token expiry\n $expires = $socialAccount->expires;\n $this->info(\"Token expires at: \" . ($expires ? Carbon::createFromTimestamp($expires)->toDateTimeString() : 'null'));\n $this->info(\"Token is expired: \" . ($expires && $expires < time() ? 'YES' : 'NO'));\n\n // Test with the DB token directly\n $this->info(\"\\n--- Testing with DB token ---\");\n $config = new Configuration();\n $config->setAccessToken($rawDbToken);\n\n // Test 2a: Get Deals Summary\n $this->testGetDeals($config);\n\n // Test 2b: Get Persons\n $this->testGetPersons($config);\n\n // Test 2c: Get Activities\n $this->testGetActivities($config);\n } catch (Exception $e) {\n $this->recordResult('Basic CRUD Operations', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testCurrentSystemApproach(SocialAccount $socialAccount): void\n {\n $startTime = microtime(true);\n\n try {\n // Simulate how current system makes requests\n $token = $socialAccount->getProviderUserToken();\n $url = 'https://api.pipedrive.com/api/v2/deals';\n\n $headers = [\n 'Authorization' => 'Bearer ' . $token,\n 'Accept' => 'application/json',\n ];\n\n $client = new \\GuzzleHttp\\Client();\n $response = $client->get($url, [\n 'headers' => $headers,\n 'timeout' => 30,\n ]);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $statusCode = $response->getStatusCode();\n $this->recordResult('Current System v2 API', $statusCode === 200, \"Status: {$statusCode} in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Current System v2 API', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetDeals(Configuration $config): void\n {\n $this->info('Test 2a: Get Deals');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealsApi(null, $config);\n // Test v2 SDK methods - try different method names\n try {\n $result = $apiInstance->getDeals(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', true, \"Retrieved deals using getDeals() in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method\n try {\n $result = $apiInstance->getAllDeals(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', true, \"Retrieved deals using getAllDeals() in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersons(Configuration $config): void\n {\n $this->info('Test 2b: Get Persons');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonsApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivities(Configuration $config): void\n {\n $this->info('Test 2c: Get Activities');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivitiesApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testFieldMetadata(SocialAccount $socialAccount): void\n {\n $this->info('Test 3: Field Metadata');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n // Test 3a: Get Deal Fields\n $this->testGetDealFields($config);\n\n // Test 3b: Get Person Fields\n $this->testGetPersonFields($config);\n\n // Test 3c: Get Activity Fields\n $this->testGetActivityFields($config);\n } catch (Exception $e) {\n $this->recordResult('Field Metadata', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testGetDealFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealFieldsApi(null, $config);\n $result = $apiInstance->getDealFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Deal Fields', true, \"Retrieved {$count} deal fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deal Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersonFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonFieldsApi(null, $config);\n $result = $apiInstance->getPersonFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Person Fields', true, \"Retrieved {$count} person fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Person Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivityFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivityFieldsApi(null, $config);\n $result = $apiInstance->getActivityFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Activity Fields', true, \"Retrieved {$count} activity fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activity Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testV2ApiSupport(SocialAccount $socialAccount): void\n {\n $this->info('Test 4: v2 API Support (Cursor-based Pagination)');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $startTime = microtime(true);\n\n // Test v2 deals endpoint with cursor pagination\n // Note: The official SDK may or may not have v2 API support\n // This test will determine if v2 is available\n try {\n $apiInstance = new DealsApi(null, $config);\n $updatedSince = Carbon::now()->subDays(30)->toRfc3339String();\n $result = $apiInstance->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n\n // Check if response has cursor information (v2 indicator)\n // The response object doesn't have getAdditionalData method\n // Just test if the call works - v2 API support is limited in official SDK v1\n $this->recordResult('v2 API Support', false, \"v1 API works but v2 cursor pagination not available in official SDK v1. Retrieved summary in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('v2 API Support', false, $e->getMessage(), $elapsed);\n }\n } catch (Exception $e) {\n $this->recordResult('v2 API Support', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testErrorHandling(SocialAccount $socialAccount): void\n {\n $this->info('Test 5: Error Handling');\n\n try {\n // Test 5a: Invalid Token\n $this->testInvalidToken();\n\n // Test 5b: Non-existent Resource\n $this->testNonExistentResource($socialAccount);\n } catch (Exception $e) {\n $this->recordResult('Error Handling', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testInvalidToken(): void\n {\n $this->info('Test 5a: Invalid Token');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken('invalid_token');\n $client = new DealsApi(null, $config);\n\n $client->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n }\n\n private function testNonExistentResource(SocialAccount $socialAccount): void\n {\n $this->info('Test 5b: Non-existent Resource');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n $client = new DealsApi(null, $config);\n\n // Try to get a deal with a very high ID that likely doesn't exist\n // Official SDK has getDealsSummary which works without specific ID\n // Instead, let's test with an invalid field ID\n try {\n $fieldClient = new DealFieldsApi(null, $config);\n $fieldClient->getDealField(999999999); // Very high ID that likely doesn't exist\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function recordResult(string $testName, bool $success, string $message, float $elapsed): void\n {\n $this->results[] = [\n 'test' => $testName,\n 'success' => $success,\n 'message' => $message,\n 'elapsed' => $elapsed,\n ];\n\n $status = $success ? '✅ PASS' : '❌ FAIL';\n $this->line(\" {$status} - {$testName}: {$message}\");\n }\n\n private function displayResults(): void\n {\n $this->newLine();\n $this->info('=== POC Test Results Summary ===');\n $this->newLine();\n\n $total = count($this->results);\n $passed = count(array_filter($this->results, fn ($r) => $r['success']));\n $failed = $total - $passed;\n\n $this->line(\"Total Tests: {$total}\");\n $this->line(\"Passed: {$passed}\");\n $this->line(\"Failed: {$failed}\");\n $this->newLine();\n\n $totalTime = array_sum(array_column($this->results, 'elapsed'));\n $this->line(\"Total Execution Time: {$totalTime}ms\");\n $this->newLine();\n\n if ($failed > 0) {\n $this->warn('Failed Tests:');\n foreach ($this->results as $result) {\n if (! $result['success']) {\n $this->line(\" - {$result['test']}: {$result['message']}\");\n }\n }\n $this->newLine();\n }\n\n $this->info('=== Detailed Results ===');\n foreach ($this->results as $result) {\n $status = $result['success'] ? '✅' : '❌';\n $this->line(\"{$status} {$result['test']} ({$result['elapsed']}ms): {$result['message']}\");\n }\n\n $this->newLine();\n $this->info('=== Recommendations ===');\n\n if ($passed === $total) {\n $this->info('✅ All tests passed! The official SDK is viable for migration.');\n $this->info('Next steps: Proceed with full migration planning.');\n } else {\n $this->warn('⚠️ Some tests failed. Review the failures above before proceeding.');\n $this->warn('Consider hybrid approach or investigate alternatives if critical operations fail.');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
697184204146389368
|
16616750376700564
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
4
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\DTO\Invitation;
use Jiminny\DTO\UserEmail;
use Jiminny\Http\Requests\Settings\Teams\CreateInvitationRequest;
use Jiminny\Http\Requests\Settings\Teams\CreateTeamRequest;
use Jiminny\Http\Requests\Settings\Teams\EditTeamRequest;
use Jiminny\Models\Group;
use Jiminny\Models\Invitation;
use Jiminny\Models\Role;
use Jiminny\Models\Team;
use Jiminny\Models\User;
class UserInvitationDTO
{
use UserEmail;
public string $email;
public ?string $secondaryEmail;
public ?int $groupId;
public int $teamId;
public bool $crmRequired;
public array $roleIds;
public bool $isOwner;
public ?User $currentUser = null;
/**
* @param array{
* email: string,
* secondaryEmail: string|null,
* groupId: int|null,
* teamId: int|string,
* crmRequired: bool,
* roleIds: int[],
* isOwner: bool,
* user?: User
* } $attributes
*/
private function __construct(array $attributes)
{
$this->email = mb_strtolower($attributes['email']);
$this->secondaryEmail = $this->normalizeNullable($attributes['secondaryEmail']);
$this->groupId = $attributes['groupId'];
$this->teamId = (int) $attributes['teamId'];
$this->crmRequired = (bool) $attributes['crmRequired'];
$this->roleIds = $attributes['roleIds'];
$this->isOwner = $attributes['isOwner'];
$this->currentUser = $attributes['user'] ?? null;
}
public static function forOwner(CreateTeamRequest|EditTeamRequest $request, Team $team): self
{
$roleIds = Role::whereIn('name', [
User::ROLE_ADMIN,
User::ROLE_RECORDER,
])->pluck('id')->toArray();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => $request->getOwnerEmail(),
'secondaryEmail' => null,
'groupId' => null,
'teamId' => $team->getId(),
'crmRequired' => true,
'roleIds' => $roleIds,
'user' => $currentUser,
'isOwner' => true,
]);
}
public static function fromRequest(CreateInvitationRequest $request): self
{
$data = $request->validated();
$groupId = isset($data['group_id']) ? Group::uuid($request->input('group_id'))->getId() : null;
$teamId = Team::uuid($data['team_id'])->getId();
/** @var User $currentUser */
$currentUser = $request->user();
return new self([
'email' => mb_strtolower($data['email']),
'secondaryEmail' => $data['secondary_email'] ?? null,
'groupId' => $groupId,
'teamId' => $teamId,
'crmRequired' => $data['crm_required'],
'roleIds' => $data['roles'],
'user' => $currentUser,
'isOwner' => false,
]);
}
public static function fromInvitation(Invitation $invitation, User $currentUser): self
{
$roles = $invitation->roles()->get();
$isOwner = $invitation->isOwner();
return new self([
'email' => $invitation->email,
'secondaryEmail' => $invitation->getSecondaryEmail(),
'groupId' => $invitation->group_id,
'teamId' => $invitation->team_id,
'crmRequired' => $invitation->crm_required,
'roleIds' => $roles->pluck('id')->toArray(),
'user' => $currentUser,
'isOwner' => $isOwner,
]);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
1
51
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Crm;
use Carbon\Carbon;
use Exception;
use Illuminate\Console\Command;
use Jiminny\Component\Encryption\EncryptedTokenManager;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Pipedrive\versions\v2\Api\ActivitiesApi;
use Pipedrive\versions\v2\Api\ActivityFieldsApi;
use Pipedrive\versions\v2\Api\DealFieldsApi;
use Pipedrive\versions\v2\Api\DealsApi;
use Pipedrive\versions\v2\Api\PersonFieldsApi;
use Pipedrive\versions\v2\Api\PersonsApi;
use Pipedrive\versions\v2\Configuration;
class TestPipedriveOfficialSdkCommand extends Command
{
protected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';
protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with existing OAuth tokens';
private array $results = [];
private EncryptedTokenManager $tokenManager;
public function __construct(EncryptedTokenManager $tokenManager)
{
parent::__construct();
$this->tokenManager = $tokenManager;
}
public function handle(): int
{
$teamId = (int) $this->argument('teamId');
$this->info("Starting Pipedrive Official SDK POC for Team ID: {$teamId}");
$this->newLine();
try {
$this->runTests($teamId);
} catch (Exception $e) {
$this->error("POC failed with error: {$e->getMessage()}");
$this->error($e->getTraceAsString());
return 1;
}
$this->displayResults();
return 0;
}
private function runTests(int $teamId): void
{
$team = Team::find($teamId);
if (! $team) {
throw new Exception("Team with ID {$teamId} not found");
}
$socialAccount = SocialAccount::where('provider', SocialAccount::PROVIDER_PIPEDRIVE)
->whereHas('sociable', function ($query) use ($team) {
$query->where('team_id', $team->id);
})
->orderByDesc('expires') // Get the most recently expiring token
->first();
if (! $socialAccount) {
throw new Exception("No Pipedrive social account found for team {$teamId}");
}
$this->info("Found Pipedrive account for team: {$team->name}");
$this->newLine();
// Test 1: OAuth Initialization
$this->testOAuthInitialization($socialAccount);
// Test 2: Basic CRUD Operations
$this->testBasicCrudOperations($socialAccount);
// Test 3: Field Metadata
$this->testFieldMetadata($socialAccount);
// Test 4: v2 API Support
$this->testV2ApiSupport($socialAccount);
// Test 5: Error Handling
$this->testErrorHandling($socialAccount);
}
private function testOAuthInitialization(SocialAccount $socialAccount): void
{
$this->info('Test 1: OAuth Initialization');
$startTime = microtime(true);
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
$client = new DealsApi(null, $config);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('OAuth Initialization', true, "Client initialized successfully in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('OAuth Initialization', false, $e->getMessage(), $elapsed);
}
$this->newLine();
}
private function testBasicCrudOperations(SocialAccount $socialAccount): void
{
$this->info('Test 2: Basic CRUD Operations');
try {
// Get the raw token from database
$rawDbToken = $socialAccount->getProviderUserToken();
$this->info("DB token (length: " . strlen($rawDbToken) . ")");
$this->info("DB token preview: " . substr($rawDbToken, 0, 20) . "...");
// Check token expiry
$expires = $socialAccount->expires;
$this->info("Token expires at: " . ($expires ? Carbon::createFromTimestamp($expires)->toDateTimeString() : 'null'));
$this->info("Token is expired: " . ($expires && $expires < time() ? 'YES' : 'NO'));
// Test with the DB token directly
$this->info("\n--- Testing with DB token ---");
$config = new Configuration();
$config->setAccessToken($rawDbToken);
// Test 2a: Get Deals Summary
$this->testGetDeals($config);
// Test 2b: Get Persons
$this->testGetPersons($config);
// Test 2c: Get Activities
$this->testGetActivities($config);
} catch (Exception $e) {
$this->recordResult('Basic CRUD Operations', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testCurrentSystemApproach(SocialAccount $socialAccount): void
{
$startTime = microtime(true);
try {
// Simulate how current system makes requests
$token = $socialAccount->getProviderUserToken();
$url = 'https://api.pipedrive.com/api/v2/deals';
$headers = [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json',
];
$client = new \GuzzleHttp\Client();
$response = $client->get($url, [
'headers' => $headers,
'timeout' => 30,
]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$statusCode = $response->getStatusCode();
$this->recordResult('Current System v2 API', $statusCode === 200, "Status: {$statusCode} in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Current System v2 API', false, $e->getMessage(), $elapsed);
}
}
private function testGetDeals(Configuration $config): void
{
$this->info('Test 2a: Get Deals');
$startTime = microtime(true);
try {
$apiInstance = new DealsApi(null, $config);
// Test v2 SDK methods - try different method names
try {
$result = $apiInstance->getDeals(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', true, "Retrieved deals using getDeals() in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
// Try alternative method
try {
$result = $apiInstance->getAllDeals(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', true, "Retrieved deals using getAllDeals() in {$elapsed}ms", $elapsed);
} catch (Exception $e2) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', false, "Method not found: {$e->getMessage()}", $elapsed);
}
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deals', false, $e->getMessage(), $elapsed);
}
}
private function testGetPersons(Configuration $config): void
{
$this->info('Test 2b: Get Persons');
$startTime = microtime(true);
try {
$apiInstance = new PersonsApi(null, $config);
// v2 SDK might have different method names
try {
$result = $apiInstance->getPersons(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', true, "Retrieved persons in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
// Try alternative method names
try {
$result = $apiInstance->getAllPersons(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', true, "Retrieved persons in {$elapsed}ms", $elapsed);
} catch (Exception $e2) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', false, "Method not found: {$e->getMessage()}", $elapsed);
}
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Persons', false, $e->getMessage(), $elapsed);
}
}
private function testGetActivities(Configuration $config): void
{
$this->info('Test 2c: Get Activities');
$startTime = microtime(true);
try {
$apiInstance = new ActivitiesApi(null, $config);
// v2 SDK might have different method names
try {
$result = $apiInstance->getActivities(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', true, "Retrieved activities in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
// Try alternative method names
try {
$result = $apiInstance->getAllActivities(['limit' => 10]);
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', true, "Retrieved activities in {$elapsed}ms", $elapsed);
} catch (Exception $e2) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', false, "Method not found: {$e->getMessage()}", $elapsed);
}
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activities', false, $e->getMessage(), $elapsed);
}
}
private function testFieldMetadata(SocialAccount $socialAccount): void
{
$this->info('Test 3: Field Metadata');
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
// Test 3a: Get Deal Fields
$this->testGetDealFields($config);
// Test 3b: Get Person Fields
$this->testGetPersonFields($config);
// Test 3c: Get Activity Fields
$this->testGetActivityFields($config);
} catch (Exception $e) {
$this->recordResult('Field Metadata', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testGetDealFields(Configuration $config): void
{
$startTime = microtime(true);
try {
$apiInstance = new DealFieldsApi(null, $config);
$result = $apiInstance->getDealFields();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$count = $result->getData() ? count($result->getData()) : 0;
$this->recordResult('Get Deal Fields', true, "Retrieved {$count} deal fields in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Deal Fields', false, $e->getMessage(), $elapsed);
}
}
private function testGetPersonFields(Configuration $config): void
{
$startTime = microtime(true);
try {
$apiInstance = new PersonFieldsApi(null, $config);
$result = $apiInstance->getPersonFields();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$count = $result->getData() ? count($result->getData()) : 0;
$this->recordResult('Get Person Fields', true, "Retrieved {$count} person fields in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Person Fields', false, $e->getMessage(), $elapsed);
}
}
private function testGetActivityFields(Configuration $config): void
{
$startTime = microtime(true);
try {
$apiInstance = new ActivityFieldsApi(null, $config);
$result = $apiInstance->getActivityFields();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$count = $result->getData() ? count($result->getData()) : 0;
$this->recordResult('Get Activity Fields', true, "Retrieved {$count} activity fields in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Get Activity Fields', false, $e->getMessage(), $elapsed);
}
}
private function testV2ApiSupport(SocialAccount $socialAccount): void
{
$this->info('Test 4: v2 API Support (Cursor-based Pagination)');
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
$startTime = microtime(true);
// Test v2 deals endpoint with cursor pagination
// Note: The official SDK may or may not have v2 API support
// This test will determine if v2 is available
try {
$apiInstance = new DealsApi(null, $config);
$updatedSince = Carbon::now()->subDays(30)->toRfc3339String();
$result = $apiInstance->getDealsSummary();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
// Check if response has cursor information (v2 indicator)
// The response object doesn't have getAdditionalData method
// Just test if the call works - v2 API support is limited in official SDK v1
$this->recordResult('v2 API Support', false, "v1 API works but v2 cursor pagination not available in official SDK v1. Retrieved summary in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('v2 API Support', false, $e->getMessage(), $elapsed);
}
} catch (Exception $e) {
$this->recordResult('v2 API Support', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testErrorHandling(SocialAccount $socialAccount): void
{
$this->info('Test 5: Error Handling');
try {
// Test 5a: Invalid Token
$this->testInvalidToken();
// Test 5b: Non-existent Resource
$this->testNonExistentResource($socialAccount);
} catch (Exception $e) {
$this->recordResult('Error Handling', false, $e->getMessage(), 0);
}
$this->newLine();
}
private function testInvalidToken(): void
{
$this->info('Test 5a: Invalid Token');
$startTime = microtime(true);
try {
$config = new Configuration();
$config->setAccessToken('invalid_token');
$client = new DealsApi(null, $config);
$client->getDealsSummary();
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Invalid Token Error', false, "Expected error but request succeeded in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Invalid Token Error', true, "Correctly threw exception: {$e->getMessage()} in {$elapsed}ms", $elapsed);
}
}
private function testNonExistentResource(SocialAccount $socialAccount): void
{
$this->info('Test 5b: Non-existent Resource');
$startTime = microtime(true);
try {
$config = new Configuration();
$config->setAccessToken($socialAccount->provider_user_token);
$client = new DealsApi(null, $config);
// Try to get a deal with a very high ID that likely doesn't exist
// Official SDK has getDealsSummary which works without specific ID
// Instead, let's test with an invalid field ID
try {
$fieldClient = new DealFieldsApi(null, $config);
$fieldClient->getDealField(999999999); // Very high ID that likely doesn't exist
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Non-existent Resource Error', false, "Expected error but request succeeded in {$elapsed}ms", $elapsed);
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Non-existent Resource Error', true, "Correctly threw exception: {$e->getMessage()} in {$elapsed}ms", $elapsed);
}
} catch (Exception $e) {
$elapsed = round((microtime(true) - $startTime) * 1000, 2);
$this->recordResult('Non-existent Resource Error', false, $e->getMessage(), $elapsed);
}
}
private function recordResult(string $testName, bool $success, string $message, float $elapsed): void
{
$this->results[] = [
'test' => $testName,
'success' => $success,
'message' => $message,
'elapsed' => $elapsed,
];
$status = $success ? '✅ PASS' : '❌ FAIL';
$this->line(" {$status} - {$testName}: {$message}");
}
private function displayResults(): void
{
$this->newLine();
$this->info('=== POC Test Results Summary ===');
$this->newLine();
$total = count($this->results);
$passed = count(array_filter($this->results, fn ($r) => $r['success']));
$failed = $total - $passed;
$this->line("Total Tests: {$total}");
$this->line("Passed: {$passed}");
$this->line("Failed: {$failed}");
$this->newLine();
$totalTime = array_sum(array_column($this->results, 'elapsed'));
$this->line("Total Execution Time: {$totalTime}ms");
$this->newLine();
if ($failed > 0) {
$this->warn('Failed Tests:');
foreach ($this->results as $result) {
if (! $result['success']) {
$this->line(" - {$result['test']}: {$result['message']}");
}
}
$this->newLine();
}
$this->info('=== Detailed Results ===');
foreach ($this->results as $result) {
$status = $result['success'] ? '✅' : '❌';
$this->line("{$status} {$result['test']} ({$result['elapsed']}ms): {$result['message']}");
}
$this->newLine();
$this->info('=== Recommendations ===');
if ($passed === $total) {
$this->info('✅ All tests passed! The official SDK is viable for migration.');
$this->info('Next steps: Proceed with full migration planning.');
} else {
$this->warn('⚠️ Some tests failed. Review the failures above before proceeding.');
$this->warn('Consider hybrid approach or investigate alternatives if critical operations fail.');
}
}
}...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50109
|
1778
|
12
|
2026-05-18T07:17:08.919839+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088628919_m2.jpg...
|
PhpStorm
|
faVsco.js – TestPipedriveOfficialSdkCommand.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.05618351,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5144026249968099006
|
1739586043254377858
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
PhostormINavicarecodeFV faVsco.js?° pipedrive-sdk-poc vroledey© SyncProfileMetadata.php©syncleammeradata.ong1estPlpeariveomricialsakcommand.orUpoateopponunityspecrications.ono>@ Dealinsights• … DevC DialersD DTOSC7 Elasticsearch• EnqagementStatsGeckoExportW LivestreamMallboxesa MidratePlavbacktihemesM Plavbooks• PlaylistsM Postmarkm PronhetAv M Renorto© AutomatedReportsCommand.phpC) AutomatedRenortsRetentionPolicvCor@ AutomatedReportsSendCommana.on(C) CroateMockAck.liminnvRenortResult@© DeleteReportCommand.php© GenerateMarketingReport.php© Team.php© Usage.php>07 Slack_ Teams>C Tracksa Transcription> D Twiliow Users_ VocaoularvZoomC) Command.oho(C) CreateDatabaseUsers.ohoC)DatabaseTiableCount.ohoC)[EMAIL]?Leftoverscommand.ohn@ DevPostmanCommand.ohnC) DiarizeViaAiParticinantldentificationComi(C) EncrvntTokensCommand.nhn(C EnaadementStatsRedenerateCommand.r( FeatureFlaasHelner nhr© FixCrossTenantlssues.php© FlushRolesPermissionsCache.php© GeneratelnternalWebhookToken.php© GroupSetDefaultLanguageCommand.phgheloerlruncarecoachinelaoles.ongC ActivityController.ong=custom.loglaravel.log4 SF [jiminny@localhost]& console [STAGING]CConvertLeadActivities.ong© SyncToPlanhat.phpA HS_local [jiminny@localhost]# console [PKob)fii users (PROD]© TestPipedriveOfficialSdkCommand.php xconsole lEUcreatePlaybookcreatedevent.ongInamespace Jiminny Console Commands Crm.pnp api.onoc) IntearationApp/Service.php(C) CreateCommentedEvent.php©) CreateSmsSentEvent.phouse Carbon \Carbon;use Exception;(C) AutomatedReportsRepository.ohpuse Illuminate\Console\Command;C) RequestGenerateReport.Job.ohvuse Jiminny\Component\Encryption\EncryptedTokenManager:use Jiminny Models\SocialAccount;(C)AutomatedReportResult.ohvuse Jiminny Modets ream© CreateTeamRequest.php© UserinvitationDTO.php xlucoLiminnv Modole Iicen'class UserInvitationntoAZY4AVroleras: intlunAccept RenectLLyrdecusapbool.veduraeluskos,user?: Usenuse rlpearive verszons ve Apl rersonrlelasapl.* Sattributesuse Pipearive versions v1 Ap1 PersonsAp1use Pipedrive\versions\v2\Api \ActivitiesApi;private function __construct(array $attributes)use Plpedrive verszons ve Ap1 AculvityrleLasaolSthis->email = mb strtolowerSattributesi'email'1):use rlpearive verszons Ve Ap1 LeaurieLasAoluse Pipedrive versions vz Ap1 DealsAp1:Sthis->secondarvemail = Sthis->normalizeNullableSattributes/.secondarvEmause Pipedrive versions vz Ap1 Personr1eldsAp1*$this->groupld = $attributes['groupid'];use Pipedrive versions vz Ap1 PersonsAp1*$this->teamid = (int) $attributes['teamId'];$this->crmRequired = (bool) $attributes['crmRequired']:$this->roleIds = $attributes['roleIds']:use Pipedrive versions\v2\Confiquration:Sthis-sichwnen = Sattnihutecftichwnentl•220class TestPipedrive0fficialSdkCommand extends Command$this->currentUser = Sattributes['user'] ?? null;24 ctprotected Ssionature = "Timinnv:test-pipedrive-official-sok teamid-'^26 6tpublic static function for0wner(CreateTeamRequest|EditTeamRequest Srequest. Teprotected Sdescrition = 'Test official Pioedrive SDK (oinedrive/pinedrive) with exisSroleIds = Role::whereInd co6 usagesnrivate arnav Sresults = M:User::ROLE ADMINUser::ROLE RECURDER1)->pluck( col'id')->toArrayO :nrivate EncrvntedTokenManagen StokenManagen,** ovar User Scurrentlser */ScurrentUser = Sreauest->usero:72 (61public function __construct(EncryptedTokenManager $tokenManager)return new selfalparent:: constructO:'email' => Sreauest->aet0wnerEma1lolSthis->tokenManager = $tokenManager:iteamtdt= Steam->aettdiolpublic function handled: intf...}'crmRequired' => true,'poleTdst => SroleTdsl'user' => $currentUser,591usageprivatê fuhctsgl° runtuY Accept Fle 3-l L aX RgjectFle ga + 3 of 3 files →• Preparation tor Kell... In 4h 43 m100% Lz• Mon 18 May 10:17:08AskJiminnyReportActivityServiceTest vCascadeO Migrating to Pipedri+0 ..the idea is to replace v1 for v2. This is why there is task to replace SDK in the fuirst place. Review in the code all the endpoints used and find its equicvalent in new SDK using v2.Thoughts0/5 tasks done1 Find all current Pipedrive APl endpoints used in codebaseO Identify community SDK methods being usecMap community SDK methods to official SDK v2 equivalentsTest v2 SDK method mappingsDocument miaration olanThoughts ›Searched Deviol|Pipedrive in appsearched pipedrive in app/services/crm/Pipedrive/.php)Searched Client» in ann/Services/Crm/DinedrivePead Client nhn and Service nhn SThought for 1s2 / 5 tasks done@ Identify community SDK methods beina ucedMap community SDK methods to official SDK v2 equivalentsInought for 1s• PIPEDRIVE V2 MIGRATION PLAN.mdThoughts• TestPipedriveOfficialSdkCommand.phpnew +132+10 -6• docker exec docker lamn 1 nhn artisan iiminnv.tect-ninedrive-official_sdk 19Ask anvthina (&4-L• < CodeSWF.16he inctalled (17 minutes aaol* Reiect allAccent alliW Windsurf Teams14-1 /25 charc 1 line hreak)UTF.8Po 4 spaces...
|
50108
|
NULL
|
NULL
|
NULL
|
|
50110
|
1777
|
15
|
2026-05-18T07:17:10.482169+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088630482_m1.jpg...
|
PhpStorm
|
faVsco.js – TestPipedriveOfficialSdkCommand.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• Preparation for Refi... in 4h 43 m100% <78• Mon 18 May 10:17:10DOCKER (docker-compose)O ₴2181DOCKER81DEV (-zsh)DOCKER (docker-compose)docker_lamp_1Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_lamp_1docker_1amp_11 2026-05-1807:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; not expected)docker_lamp_11 2026-05-1807:16:16,095 INFO spawned: 'artisan-schedule_00' with pid 18601docker_lamp_12026-05-1807:16:17,141INFOsuccess:artisan-schedule_00 entered RUNNINGstate,process hasstayedupfor › than 1seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntaxerror, unexpected variable "Srouter"docker_1amp_1docker_lamp_1docker_lamp_1at routes/api.php:731727docker_1amp_17283);});organizadocker_lamp_1729docker_lamp_1730// Integrationsdocker_lamp_1→ 731Srouter->group(['middleware' = 'permission:"PermissionEnum: :MANAGE_INTEGRATIONS->value],docker_lamp_1static function (Router Srouter):void732Srouter-›post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734class,'toggleStatus'])->name('api.integrations.internal');Srouter->put('/integrations',, [IntegrationController::dockerLamp_735|->name('api.integrations.toggle_status');docker_lamp_1docker_Lamp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router::group(["api/v1"], Object(Closure))docker_1amp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_1amp_1docker_lamp_12026-05-18 07:17:08,269 WARN exited: artisan-schedule_00 (exit status 1; not expected)docker_lamp_11 2026-05-18 07:17:09,317 INFO spawned: 'artisan-schedule_00' with pid 18754APP (-zsh)*3screenpipe"PROD (ssh)Run'do-release-upgrade' to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ I17 EXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|View in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
-1809142813215006378
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• Preparation for Refi... in 4h 43 m100% <78• Mon 18 May 10:17:10DOCKER (docker-compose)O ₴2181DOCKER81DEV (-zsh)DOCKER (docker-compose)docker_lamp_1Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_lamp_1docker_1amp_11 2026-05-1807:16:15,033 WARN exited: artisan-schedule_00 (exit status 1; not expected)docker_lamp_11 2026-05-1807:16:16,095 INFO spawned: 'artisan-schedule_00' with pid 18601docker_lamp_12026-05-1807:16:17,141INFOsuccess:artisan-schedule_00 entered RUNNINGstate,process hasstayedupfor › than 1seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntaxerror, unexpected variable "Srouter"docker_1amp_1docker_lamp_1docker_lamp_1at routes/api.php:731727docker_1amp_17283);});organizadocker_lamp_1729docker_lamp_1730// Integrationsdocker_lamp_1→ 731Srouter->group(['middleware' = 'permission:"PermissionEnum: :MANAGE_INTEGRATIONS->value],docker_lamp_1static function (Router Srouter):void732Srouter-›post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734class,'toggleStatus'])->name('api.integrations.internal');Srouter->put('/integrations',, [IntegrationController::dockerLamp_735|->name('api.integrations.toggle_status');docker_lamp_1docker_Lamp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router::group(["api/v1"], Object(Closure))docker_1amp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_1amp_1docker_lamp_12026-05-18 07:17:08,269 WARN exited: artisan-schedule_00 (exit status 1; not expected)docker_lamp_11 2026-05-18 07:17:09,317 INFO spawned: 'artisan-schedule_00' with pid 18754APP (-zsh)*3screenpipe"PROD (ssh)Run'do-release-upgrade' to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ I17 EXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|View in Docker Desktop@ View ConfigEnable Watch...
|
50107
|
NULL
|
NULL
|
NULL
|
|
50111
|
1777
|
16
|
2026-05-18T07:17:25.602416+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088645602_m1.jpg...
|
PhpStorm
|
faVsco.js – TestPipedriveOfficialSdkCommand.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDOCKER11DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_181DEV (-zsh)-2026-05-1807:16:15,033 WARN exited: artisan-schedule_00 (exit status 11 2026-05-1807:16:16,095 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_11 2026-05-1807:16:17,141 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayedup for › than 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_1amp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_1amp_1docker_lamp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router::group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_lamp_1docker_lamp_1| 2026-05-18 07:17:08,269 WARN exited: artisan-schedule_00 (exit status 1; not expected)docker_lamp_11 2026-05-18 07:17:09,317 INFO spawned: 'artisan-schedule_00'with pid 18754docker_lamp_11 2026-05-18 07:17:10,344 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayed up for › than 1 seconds (startsecs)• Preparation for Refi... in 4h 43 m100% (78• Mon 18 May 10:17:25DOCKER (docker-compose)O ₴2APP (-zsh)*3screenpipe"Y2PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|FRONTENDEXTENSIONView in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
1420709759780424674
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDOCKER11DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_181DEV (-zsh)-2026-05-1807:16:15,033 WARN exited: artisan-schedule_00 (exit status 11 2026-05-1807:16:16,095 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_11 2026-05-1807:16:17,141 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayedup for › than 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_1amp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_1amp_1docker_lamp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router::group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_lamp_1docker_lamp_1| 2026-05-18 07:17:08,269 WARN exited: artisan-schedule_00 (exit status 1; not expected)docker_lamp_11 2026-05-18 07:17:09,317 INFO spawned: 'artisan-schedule_00'with pid 18754docker_lamp_11 2026-05-18 07:17:10,344 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayed up for › than 1 seconds (startsecs)• Preparation for Refi... in 4h 43 m100% (78• Mon 18 May 10:17:25DOCKER (docker-compose)O ₴2APP (-zsh)*3screenpipe"Y2PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|FRONTENDEXTENSIONView in Docker Desktop@ View ConfigEnable Watch...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50112
|
1778
|
13
|
2026-05-18T07:17:33.132442+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088653132_m2.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormVIewINavicarecodeLaravelKeractorFV faVsco. PhpStormVIewINavicarecodeLaravelKeractorFV faVsco.js?° pipedrive-sdk-pocProiect© SyncProfileMetadata.php(C) ConvertLeadActivities.ong•PurgeLookupcacne.ong© SyncToPlanhat.php©syncleammeradata.ong© TestPipedriveOfficialSdkCommand.ph© UpdateOpportunitySpecifications.php>@ Dealinsights>@Dev> 0 DialersO DTOsC ElasticsearchcreatePlaybookcreatedevent.ong©) salestorce/service.phppnp api.ono xTeamController.phgc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.phoC) PlanhatactivityListener.php(C)AskAnythinaPromptService.php(C) AutomatedReportsRepository.ohp(C)AutomatedReportsCommand.ohv© RequestGenerateReportJob.php› EnqagementStatsш GeckoExport(C)AutomatedReportResult.ohvVEditTeamModal vueW Livestream") CreateTeamRequest.php(C) UserinvitationDTo.onpMallboxesa MidrateQ- organizaXP Cc W .*PlavbacktihemesM PlavbooksSrouter->group(L'middleware'=> L'auth:api']], static function (Router Srouter):LNotiticationControuler::class,• PlaylistsM Postmark/Live feedM PronhetASrouter->qet( uri: '/Live-feed'. [LiveFeedController::class, 'liveFeedItems']):v Reports© AutomatedReportsCommand.phpC) AutomatedRenortsRetentionPolicvCor/ LanquagesSrouter->qet( uri: '/lanquages'. [LanguageController::class, 'list']): /api/v1/lar© AutomatedReportsSendCommand.ph© CreateMockAskJiminnyReportResultC© DeleteReportCommand.php© GenerateMarketingReport.php© Team.php© Usage.php>07 SlackC Teams>C TracksC Transcription>C TwilioC Users> M Vocabularv> MZoomII The whole settings section will be moved out in a separate fileSrouter->group(['prefix' => '/settings']. static function (Router Srouter): vSrouter->group(['prefix' => '/tions'], static functiol Accentrrenguter)336Srouter->aroundf'nrefix' =>ations'l. static function Router So22 0->middlewaredf'can:kjlosk.User: : classld"/' OraanizationController:class. "store!])24 6tzations stanpl).26 6t$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']] 2ª});orgarC) Command.oho© CreateDatabaseUsers.ohp// IntegrationsC)DatabaseTiableCount.oho@ DeleteOldAiCrmNotesCommand.ohp$router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE INTEGR 30C)DeleteS?Leftoverscommand.ohn@ DevPostmanCommand.ohnSrouter->get( uri:"/integrations'. [IntegrationController::class. 'all'l)->middleware( middleware: 'permission:'>name nameap1.inteqrations.1ndex'):POn SSLOnENUA: READ LINTERA 1ON70 CTC) DiarizeViaAiParticinantldentificationComr@ EncrvntTokensCommand.nhn(C EnaadementStatsRedenerateCommand.r( FeatureFlaasHelner nhr// Slack APT for getting slack channels listTontnol1enes Motieioe© FixCrossTenant|ssues.php© FlushRolesPermissionsCache.php© GeneratelnternalWebhookToken.php0 Croun SotDofoultl anaunad Commend nhrTeam actions. XXX: These aul need movind out to their own controllers.Srouter→group(['pnefixi = iostatic function Router Sroute© HelperTruncateCoachingTables.php// Internal Kiosk. This whole section will be moved out to a separate fileing assistance will ignore module resolution rules in this file. Error details: Vite package is required for analysis and should be installed. (17 minutes ago)• Preparation tor Kell... In 4h 43 m100% 5• Mon 18 May 10:17:32AskJiminnyReportActivityServiceTest v+0 ..=custom.log4 SF [jiminny@localhost]& console [STAGING]A HS_local [jiminny@localhost]# console [PKob)fii users (PROD]© TestPipedriveOfficialSdkCommand.php xconsole lEUInamespace Jiminny Console Commands Crm.use Carbon \Carbon;use Exception;use Illuminate\Console\Command;use Jiminny \Component\Encryption\EncryptedTokenManager:use Jiminny Models\SocialAccount;use Jiminny Modets reamuse Jiminny Models\UserAccept RenectActivityFieldsApi;veduraeluskos,use rlpearive verszons ve Apl rersonrlelasapl.use Pipearive versions v1 Ap1 PersonsAp1use Pipedrive versions v2 Ani ActivitiecAni.use Plpedrive verszons ve Ap1 AculvityrleLasaoluse Pipedrive versions\v2\Api DealFieldsApi:use Pipedrive versions vz Ap1 DealsAp1:use Pipedrive versions(v2 Api PersonFieldsApi:use Pipedrive versions vz Ap1 PersonsAp1*use Pipedrive versions vz Contiquration:classestripedrzvelrriciasokcommand extends commandiorotected Ssianature = "iiminnv:test-oipedrive-official-sdk teamid-':protected Sdescrintion = Test official Pipedrive SDK (oinedrive/pinedrive) with exis6 usagesprivate array Sresults = [J;nrivate EncrvntedTokenManagen StokenManagen,no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent:: constructO:public function handled: intf...}private function runTests(int SteamId): void{...}Cascade• Migrating to Pipedriyloenty community son metnoas being usea© Map community SDK methods to official SDK v2 equivalents.Test vz SDK method mappingsDocument migration planThouahtsSearched Devio Pipedrive in appSearched pipedrive in app (**/Services/Crm/Pipedrive/*.php)lnoughtsRead Client.php and Service.php ›Read PipedriveApiClient.php2/ 5 tasks done• Identify community SDK methods being usec(3) Mao community SDK methods to ofticial SDK v2 equivalentsThought for 1s0PIPEDRIVE_V2_MIGRATION_PLAN.moThoughts >• TestPipedriveOfficialSdkCommand.phpThoughtsCommand docker•docker exec docker lamo 1 oho artisan iiminnv.test-oinedrive-official-sdk 19parcofrrorsuntax error. unexpected variable "Srouter"a*Troutes/ap.- php:731→roroan1zThouahtsRead api.php #L325-334api.php3 files +211-28Ask anvthina (&4-L)SWF.16new +122+10 -6+1 -11* Reiect allAccent alliCotchina l aravol routo fillacWN Windsurf Toams 220-1UTF.8io 4 spaces...
|
NULL
|
-5926183971093550312
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormVIewINavicarecodeLaravelKeractorFV faVsco. PhpStormVIewINavicarecodeLaravelKeractorFV faVsco.js?° pipedrive-sdk-pocProiect© SyncProfileMetadata.php(C) ConvertLeadActivities.ong•PurgeLookupcacne.ong© SyncToPlanhat.php©syncleammeradata.ong© TestPipedriveOfficialSdkCommand.ph© UpdateOpportunitySpecifications.php>@ Dealinsights>@Dev> 0 DialersO DTOsC ElasticsearchcreatePlaybookcreatedevent.ong©) salestorce/service.phppnp api.ono xTeamController.phgc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.phoC) PlanhatactivityListener.php(C)AskAnythinaPromptService.php(C) AutomatedReportsRepository.ohp(C)AutomatedReportsCommand.ohv© RequestGenerateReportJob.php› EnqagementStatsш GeckoExport(C)AutomatedReportResult.ohvVEditTeamModal vueW Livestream") CreateTeamRequest.php(C) UserinvitationDTo.onpMallboxesa MidrateQ- organizaXP Cc W .*PlavbacktihemesM PlavbooksSrouter->group(L'middleware'=> L'auth:api']], static function (Router Srouter):LNotiticationControuler::class,• PlaylistsM Postmark/Live feedM PronhetASrouter->qet( uri: '/Live-feed'. [LiveFeedController::class, 'liveFeedItems']):v Reports© AutomatedReportsCommand.phpC) AutomatedRenortsRetentionPolicvCor/ LanquagesSrouter->qet( uri: '/lanquages'. [LanguageController::class, 'list']): /api/v1/lar© AutomatedReportsSendCommand.ph© CreateMockAskJiminnyReportResultC© DeleteReportCommand.php© GenerateMarketingReport.php© Team.php© Usage.php>07 SlackC Teams>C TracksC Transcription>C TwilioC Users> M Vocabularv> MZoomII The whole settings section will be moved out in a separate fileSrouter->group(['prefix' => '/settings']. static function (Router Srouter): vSrouter->group(['prefix' => '/tions'], static functiol Accentrrenguter)336Srouter->aroundf'nrefix' =>ations'l. static function Router So22 0->middlewaredf'can:kjlosk.User: : classld"/' OraanizationController:class. "store!])24 6tzations stanpl).26 6t$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']] 2ª});orgarC) Command.oho© CreateDatabaseUsers.ohp// IntegrationsC)DatabaseTiableCount.oho@ DeleteOldAiCrmNotesCommand.ohp$router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE INTEGR 30C)DeleteS?Leftoverscommand.ohn@ DevPostmanCommand.ohnSrouter->get( uri:"/integrations'. [IntegrationController::class. 'all'l)->middleware( middleware: 'permission:'>name nameap1.inteqrations.1ndex'):POn SSLOnENUA: READ LINTERA 1ON70 CTC) DiarizeViaAiParticinantldentificationComr@ EncrvntTokensCommand.nhn(C EnaadementStatsRedenerateCommand.r( FeatureFlaasHelner nhr// Slack APT for getting slack channels listTontnol1enes Motieioe© FixCrossTenant|ssues.php© FlushRolesPermissionsCache.php© GeneratelnternalWebhookToken.php0 Croun SotDofoultl anaunad Commend nhrTeam actions. XXX: These aul need movind out to their own controllers.Srouter→group(['pnefixi = iostatic function Router Sroute© HelperTruncateCoachingTables.php// Internal Kiosk. This whole section will be moved out to a separate fileing assistance will ignore module resolution rules in this file. Error details: Vite package is required for analysis and should be installed. (17 minutes ago)• Preparation tor Kell... In 4h 43 m100% 5• Mon 18 May 10:17:32AskJiminnyReportActivityServiceTest v+0 ..=custom.log4 SF [jiminny@localhost]& console [STAGING]A HS_local [jiminny@localhost]# console [PKob)fii users (PROD]© TestPipedriveOfficialSdkCommand.php xconsole lEUInamespace Jiminny Console Commands Crm.use Carbon \Carbon;use Exception;use Illuminate\Console\Command;use Jiminny \Component\Encryption\EncryptedTokenManager:use Jiminny Models\SocialAccount;use Jiminny Modets reamuse Jiminny Models\UserAccept RenectActivityFieldsApi;veduraeluskos,use rlpearive verszons ve Apl rersonrlelasapl.use Pipearive versions v1 Ap1 PersonsAp1use Pipedrive versions v2 Ani ActivitiecAni.use Plpedrive verszons ve Ap1 AculvityrleLasaoluse Pipedrive versions\v2\Api DealFieldsApi:use Pipedrive versions vz Ap1 DealsAp1:use Pipedrive versions(v2 Api PersonFieldsApi:use Pipedrive versions vz Ap1 PersonsAp1*use Pipedrive versions vz Contiquration:classestripedrzvelrriciasokcommand extends commandiorotected Ssianature = "iiminnv:test-oipedrive-official-sdk teamid-':protected Sdescrintion = Test official Pipedrive SDK (oinedrive/pinedrive) with exis6 usagesprivate array Sresults = [J;nrivate EncrvntedTokenManagen StokenManagen,no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent:: constructO:public function handled: intf...}private function runTests(int SteamId): void{...}Cascade• Migrating to Pipedriyloenty community son metnoas being usea© Map community SDK methods to official SDK v2 equivalents.Test vz SDK method mappingsDocument migration planThouahtsSearched Devio Pipedrive in appSearched pipedrive in app (**/Services/Crm/Pipedrive/*.php)lnoughtsRead Client.php and Service.php ›Read PipedriveApiClient.php2/ 5 tasks done• Identify community SDK methods being usec(3) Mao community SDK methods to ofticial SDK v2 equivalentsThought for 1s0PIPEDRIVE_V2_MIGRATION_PLAN.moThoughts >• TestPipedriveOfficialSdkCommand.phpThoughtsCommand docker•docker exec docker lamo 1 oho artisan iiminnv.test-oinedrive-official-sdk 19parcofrrorsuntax error. unexpected variable "Srouter"a*Troutes/ap.- php:731→roroan1zThouahtsRead api.php #L325-334api.php3 files +211-28Ask anvthina (&4-L)SWF.16new +122+10 -6+1 -11* Reiect allAccent alliCotchina l aravol routo fillacWN Windsurf Toams 220-1UTF.8io 4 spaces...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50113
|
1778
|
14
|
2026-05-18T07:17:36.135682+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088656135_m2.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.05618351,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3036442092684777152
|
-5740307667640416884
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
P Project: faVsco.js, menu
pipedrive-sdk-poc, menu
PhostormVIewINavicarecodeLaravelKeractorFV faVsco.js?° pipedrive-sdk-pocProiectC ActivityController.ongEditTeamModal vueCConvertLeadActivities.ongPurgeLookupcacne.gnp© SyncToPlanhat.phpus features.jsFeaturesGroup.vueFeaturesList.vuec createrlaybookcreatedevent.ong©) salestorce/service.php> • OrganizationSearch> D SetupDemo> O shared> O UsersSearchy Kiosk.vue• - orgsettings• _ shared• • UsersettingsVseuuinas,vue> sharedSoftohoneCoach> SvalconsdirectivesheloersM oluainsM routerIM storeD utilsus main.jsIs types.d.tsis types.jsD vitehrowcerclistre= env default@.[EMAIL]© eslint.config.cis( indovy htmllisconfig.ison• package.isonM+ README.mdStats htmilusvite.confia.svarn.lockE varn-error.lod> Mlana> node_modules library rooM ohostan> M oublic>M resourcesv Mroutodohp aninhnpho ani v2 nhopho console nhnpnp api.ono xTeamController.phgc) IntearationApp/Service.php(C) CreateCommentedEvent.phpC) CreateSmsSentEvent.phoC) PlanhatactivityListener.php(C)AskAnythinaPromptService.php(C) AutomatedReportsRepository.ohpC) RequestGenerateReport.Job.ohd(C)AutomatedReportResult.ohv(C) AutomatedRenort.ohoVEditTeamModal vueCreateTeamRequest.phpC) UserinvitationDTO.ongorganizaSrouter->aroup di 'middLeware'=> L'auth:api']], static function (Router Srouter):Lnoulticacronconcrocler..crass321/Live feedSrouter->qet( uri: '/Live-feed'. [LiveFeedController::class"liveFeedttems'y"/ LanquagesSrouter->qet( uri: '/lanquages'. [LanguageController::class, 'list']): /api/v1/larI/ The whole settings section will be moved out in a separate fileSrouter->group(['prefix' => "/settings']. static function (Router Srouter): vSrouter->group(['prefix' => '/tions'], static functiol Accentrrenguter)336Srouter->aroundf'nrefix' =>ations'l. static function Router Sr2210->middlewaredf'can:kjlosk."User: : classi))"/' OraanizationController:class. "store'])l24 ctzations stanpl).26 6t$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']] 2ª});orga// Integrations$router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE INTEGR 30Srouter->get( uri:"/integrations'. [IntegrationController::class. 'all'l)->niddileware ( middlevare: " pernission:" PermissionEnun:: READ_INTEGRATIONS70 CT>name nameap1.inteqrations.1ndex'):// Slack APT for getting slack channels listSrouter->get ur:Tontnol1enes MotieioeTeam actions. XXX: These aul need movind out to their own controllers.Srouter→group(['prefixi =static function Router Sroute// Internal Kiosk. This whole section will be moved out to a separate fileVite: Can't analyze // vite.config.js: coding assistance will ignore module resolution rules in this file. Error details: Vite package is required for analysis and should be installed. (17 minutes ago)• Preparation tor Kell... In 4h 43 m100% 5• Mon 18 May 10:17:35AskJiminnyReportActivityServiceTest v+0 ..=custom.log4 SF [jiminny@localhost]& console [STAGING]A HS_local [jiminny@localhost]# console [PKob)fii users (PROD]© TestPipedriveOfficialSdkCommand.php xconsole lEUInamespace Jiminny Console Commands Crm.use Carbon \Carbon;use Exception;use Illuminate\Console\Command;use Jiminny \Component\Encryption\EncryptedTokenManager:use Jiminny Models\SocialAccount;use Jiminny Modets reamuse Jiminny Models\UserAccept RenectActivityFieldsApi;veduraeluskos,use rlpearive verszons vi Apl rersonrielasapluse Pipearive versions v1 Ap1 PersonsAp1use Pipedrive versions v2 Ani ActivitiecAni.use Plpedrive verszons ve Ap1 AculvicyrleLasaoi,use rlpearive verszons Ve Ap1 LeaurieLasapluse Pipedrive versions vz Ap1 DealsAp1:use Pipedrive versions\v2\Api\ PersonFieldsApi:use Pipedrive versions vz Ap1 PersonsAp1*use Pipedrive versions vz Contiquration:classestripedrzvelrriciasokcommand extends commandiprotected Ssionature = "Timinnv:test-pipedrive-official-sok teamid-'^protected Sdescrintion = 'Test official Pioedrive SDK (oinedrive/pinedrive) with exis6 usagesprivate array Sresults = 0J;nrivate EncrvntedTokenManagen StokenManagen:no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent:: constructO:public function handled: intf...}private function runTests(int SteamId): void{...}Cascade• Migrating to Pipedriyloenty community son metnoas being usea© Map community SDK methods to official SDK v2 equivalents.Test vz SDK method mappingsDocument migration planThouahtsSearched Devio Pipedrive in appSearched pipedrive in app (**/Services/Crm/Pipedrive/*.php)lnoughtsRead Client.php and Service.php ›Read PipedriveApiClient.php2/ 5 tasks done• Identify community SDK methods being usec(3 Mao community SDK methods to official SDK v2 equivalentsThought for 1s0PIPEDRIVE_V2_MIGRATION_PLAN.moThoughts >• TestPipedriveOfficialSdkCommand.phpThoughtsCommand docker•docker exec docker lamo 1 oho artisan iiminnv.test-oinedrive-official-sdk 19parcofrrorsuntax error. unexpected variable "Srouter"?roroanizaThouahtsRead api.php #L325-334•api.php|new +122+10 -6Ask anvthina (&4LSWF.16+1 -11* Reiect allAccent alli•.0WN Windsurf Teams220-1UTC.8Iio 4 spaces...
|
50112
|
NULL
|
NULL
|
NULL
|
|
50114
|
1778
|
15
|
2026-05-18T07:17:51.351022+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088671351_m2.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhostormProiect vVIewINavicareCodeLaravelKeractorF PhostormProiect vVIewINavicareCodeLaravelKeractorFV faVsco.js?° pipedrive-sdk-poc vC ActivityController.ongEditTeamModal vueus features.jsFeaturesGroup.vueFeaturesList.vue>• OrganizationSearch> D SetupDemo> O shared> O UsersSearchy Kiosk.vue• - orgsettings• _ shared• • UsersettingsVseuuinas,vue> sharedSoftohoneCoach> SvalconsconvertLeadActivitles.ongPurgelookupcache.onp© SyncToPlanhat.php=custom.logA SF [jiminny@localhost]& console [STAGING]A HS_local [jiminny@localhost]# console [PKob)fii users (PROD]c createrlaybookcreatedevent.ongheloersM oluainsM routerIM storeD utilsus main.jsIs types.d.tsis types.jsD vitehrowcerclistre= env [EMAIL]© eslint.config.cis( indovy htmll@ isconfia.ison• package.isonM+ README.mdctate htmlis vite.confia.isvarn.lockE varn-error.loa> MlanaMnode modules librarv rooiM ohostan> M oublic>M resourcesv Mroutodhp ani nhnpho ani v2 nhopho console nhnpnp api.ono xTeamController.phgc) IntearationApp/Service.php(C) CreateCommentedEvent.php©) CreateSmsSentEvent.phoC) PlanhatactivityListener.php(C)AskAnythinaPromptService.php(C) AutomatedReportsRepository.phpC) RequestGenerateReport.Job.ohv(C)AutomatedReportResult.ohv(C) AutomatedRenort.ohoV EditTeamModal.vueCreateTeamRequest.phpC) UserinvitationDTO.ongorganizaCcWSrouter->group(['middLeware' => l'auth:api"]), static function (Router Srouter):[NotificationController::class.// Live feedsrouter->get( un: '/Live-feed, [LivereedController::class, 'LivereedItems"J); 14LanquadesScouter->aetd uri: "/lanquades'."LanquageController::class. "List'1): laoilvi/lan// The whole settings section will be moved out in a separate fileSrouter->group(L'prefix' =>'/settings'], static function (Router Srouter): v 20Srouter->aroup(l'prefix'functio Accept rréfeotter)$router->group(['prefix' =>static function (Router $r2210User::classl)->post( uri: "/'. [OrganizationController::class, 'store'])snamo inanat1ons.store')*24 6t26 6tSrouter->group(['prefix' => '{team}', 'middleware' => ['teamMember']]}); organizaInteanationdScouten->aroun(['middlewane' = Inermission:! Permissionfnum:•MANAGE INTEGE70 CTSrouter->get( uri'/integrations',[IntegrationController::class, 'all'])_smiddl owano middleware. Inonmiccion.!• PermissionEnum: :READ_INTEGRATIONS-Snamo( nantani intoanatione indoyt).// Slack API for getting slack channels listSnouten-Saotf uri"SnotificntionDnovidon? /channeletfcontnollone) Motificatim1Tean 2etionslen controllersVite: Car't analyze //Vite. config.is: coding assistance wilignore module resolution rules in this file. Error detalls: Vite package is required for analysis and should be installed. (18 minutes ago© TestPipedriveOfficialSdkCommand.php xconsole lEUInamespace Jiminny Console Commands Crm.use Carbon \Carbon;use Exception;use Illuminate\Console\Command;use Jiminny\Component\Encryption\EncryptedTokenManager:use Jiminny Models\SocialAccount;use Jiminny Modets reamAccept RenectActivityFieldsApi;veduraeluskos,use rlpearive verszons ve Apl rersonrlelasapl.use Pipearive versions v1 Ap1 PersonsAp1uco Dinodnivo voncione va And dctivitiocini.use Plpedrive verszons ve Ap1 AculvityrleLasaoluse rlpearive verszons Ve Ap1 LeaurieLasapluse Pipedrive versions vz Ap1 DealsAp1:use Pipedrive versions vz Ap1 Personr1eldsAp1use Pipedrive versions v2 Ap1 PersonsAp1*use Pipedrive versions vz Contiquration:class estripedrzvelrricia sokcommand extends commandorotected Ssianature = 'iiminnv:test-oipedrive-official-sok teamid-'^protected Sdescrintion = Test official Pipedrive SDK (oinedrive/pinedrive) with exis6 usagesprivate array Sresults = [J;nrivate EncrvntedTokenManagen StokenManagen,no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent:: constructO:public function handled: intf...}private function runTests(int SteamId): void{...}Cascade• Migrating to Pipedriy"Preparation tor Kell.. In 4h 43 m100% L2• Mon 18 May 10:17:51+0 ..3 Map community SDK methods to ofticial SDK vz equivalentsPIPEDRIVE_V2_MIGRATION_PLAN.md• TestPipedriveOfficialSdkCommand.phpdocker exec docker lamp 1 php artisan jiminny:test-pipedrive-official-sdk 19ParseErrorsyntax error, unexpected variable "Srouter"at routes/api.php:731loorRead aoi.oho #1325-3341Thouahtel• api.phpRead api.php #L725-734• api.phpCommand docke• docker exec docker lamp 1 php artisan jiminny:test-pipedrive-official-sdk 19+10 -6Ask anvthina (&4bSWF.16Run Xw Skip* Reiect alliiAccent alliWN Windsurf Toams 220-1UTF.8io 4 spaces...
|
NULL
|
-5956402255192989231
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhostormProiect vVIewINavicareCodeLaravelKeractorF PhostormProiect vVIewINavicareCodeLaravelKeractorFV faVsco.js?° pipedrive-sdk-poc vC ActivityController.ongEditTeamModal vueus features.jsFeaturesGroup.vueFeaturesList.vue>• OrganizationSearch> D SetupDemo> O shared> O UsersSearchy Kiosk.vue• - orgsettings• _ shared• • UsersettingsVseuuinas,vue> sharedSoftohoneCoach> SvalconsconvertLeadActivitles.ongPurgelookupcache.onp© SyncToPlanhat.php=custom.logA SF [jiminny@localhost]& console [STAGING]A HS_local [jiminny@localhost]# console [PKob)fii users (PROD]c createrlaybookcreatedevent.ongheloersM oluainsM routerIM storeD utilsus main.jsIs types.d.tsis types.jsD vitehrowcerclistre= env [EMAIL]© eslint.config.cis( indovy htmll@ isconfia.ison• package.isonM+ README.mdctate htmlis vite.confia.isvarn.lockE varn-error.loa> MlanaMnode modules librarv rooiM ohostan> M oublic>M resourcesv Mroutodhp ani nhnpho ani v2 nhopho console nhnpnp api.ono xTeamController.phgc) IntearationApp/Service.php(C) CreateCommentedEvent.php©) CreateSmsSentEvent.phoC) PlanhatactivityListener.php(C)AskAnythinaPromptService.php(C) AutomatedReportsRepository.phpC) RequestGenerateReport.Job.ohv(C)AutomatedReportResult.ohv(C) AutomatedRenort.ohoV EditTeamModal.vueCreateTeamRequest.phpC) UserinvitationDTO.ongorganizaCcWSrouter->group(['middLeware' => l'auth:api"]), static function (Router Srouter):[NotificationController::class.// Live feedsrouter->get( un: '/Live-feed, [LivereedController::class, 'LivereedItems"J); 14LanquadesScouter->aetd uri: "/lanquades'."LanquageController::class. "List'1): laoilvi/lan// The whole settings section will be moved out in a separate fileSrouter->group(L'prefix' =>'/settings'], static function (Router Srouter): v 20Srouter->aroup(l'prefix'functio Accept rréfeotter)$router->group(['prefix' =>static function (Router $r2210User::classl)->post( uri: "/'. [OrganizationController::class, 'store'])snamo inanat1ons.store')*24 6t26 6tSrouter->group(['prefix' => '{team}', 'middleware' => ['teamMember']]}); organizaInteanationdScouten->aroun(['middlewane' = Inermission:! Permissionfnum:•MANAGE INTEGE70 CTSrouter->get( uri'/integrations',[IntegrationController::class, 'all'])_smiddl owano middleware. Inonmiccion.!• PermissionEnum: :READ_INTEGRATIONS-Snamo( nantani intoanatione indoyt).// Slack API for getting slack channels listSnouten-Saotf uri"SnotificntionDnovidon? /channeletfcontnollone) Motificatim1Tean 2etionslen controllersVite: Car't analyze //Vite. config.is: coding assistance wilignore module resolution rules in this file. Error detalls: Vite package is required for analysis and should be installed. (18 minutes ago© TestPipedriveOfficialSdkCommand.php xconsole lEUInamespace Jiminny Console Commands Crm.use Carbon \Carbon;use Exception;use Illuminate\Console\Command;use Jiminny\Component\Encryption\EncryptedTokenManager:use Jiminny Models\SocialAccount;use Jiminny Modets reamAccept RenectActivityFieldsApi;veduraeluskos,use rlpearive verszons ve Apl rersonrlelasapl.use Pipearive versions v1 Ap1 PersonsAp1uco Dinodnivo voncione va And dctivitiocini.use Plpedrive verszons ve Ap1 AculvityrleLasaoluse rlpearive verszons Ve Ap1 LeaurieLasapluse Pipedrive versions vz Ap1 DealsAp1:use Pipedrive versions vz Ap1 Personr1eldsAp1use Pipedrive versions v2 Ap1 PersonsAp1*use Pipedrive versions vz Contiquration:class estripedrzvelrricia sokcommand extends commandorotected Ssianature = 'iiminnv:test-oipedrive-official-sok teamid-'^protected Sdescrintion = Test official Pipedrive SDK (oinedrive/pinedrive) with exis6 usagesprivate array Sresults = [J;nrivate EncrvntedTokenManagen StokenManagen,no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent:: constructO:public function handled: intf...}private function runTests(int SteamId): void{...}Cascade• Migrating to Pipedriy"Preparation tor Kell.. In 4h 43 m100% L2• Mon 18 May 10:17:51+0 ..3 Map community SDK methods to ofticial SDK vz equivalentsPIPEDRIVE_V2_MIGRATION_PLAN.md• TestPipedriveOfficialSdkCommand.phpdocker exec docker lamp 1 php artisan jiminny:test-pipedrive-official-sdk 19ParseErrorsyntax error, unexpected variable "Srouter"at routes/api.php:731loorRead aoi.oho #1325-3341Thouahtel• api.phpRead api.php #L725-734• api.phpCommand docke• docker exec docker lamp 1 php artisan jiminny:test-pipedrive-official-sdk 19+10 -6Ask anvthina (&4bSWF.16Run Xw Skip* Reiect alliiAccent alliWN Windsurf Toams 220-1UTF.8io 4 spaces...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50115
|
1777
|
17
|
2026-05-18T07:17:57.104837+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779088677104_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3740816030388009784
|
-8636489586330588030
|
idle
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDOCKER11DOCKER (docker-compose)docker_lamp_1docker_lamp_1; notexpected)docker_1amp_181DEV (-zsh)2026-05-1807:16:15,033 WARN exited: artisan-schedule_00 (exit status 11 2026-05-1807:16:16,095 INFO spawned: 'artisan-schedule_00' with pid 18docker_lamp_11 2026-05-1807:16:17,141 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayedup for › than 1 seconds (startsecs)docker_lamp_1docker_lamp_1ParseErrordocker_lamp_1docker_lamp_1syntax error, unexpected variable "Srouter"docker_lamp_1docker_lamp_1atroutes/api.php:731docker_1amp_17273);docker_lamp_17283);organizadocker_lamp_1729docker_1amp_1730docker_lamp_1// Integrations→ 731Srouter->group(['middleware' = 'permission:". PermissionEnum: :MANAGE_INTEGRATIONS->value],static function (Router Srouter): void {docker_lamp_1732Srouter->post('/integrations', [IntegrationController::class,'internal'])docker_lamp_1733docker_lamp_1734->name('api.integrations.internal');Srouter-›put('/integrations', [IntegrationController::class,'toggleStatus'])docker_lamp_1735|->name('api.integrations.toggle_status');docker_1amp_1docker_lamp_1+2vendor framesdocker_lamp_1docker_lamp_13docker_lamp_1app/Providers/RouteServiceProvider.php:315Illuminate\Routing\Router::group(["api/v1"], Object(Closure))docker_lamp_1docker_lamp_14docker_lamp_1app/Providers/RouteServiceProvider.php:53Jiminny\Providers\RouteServiceProvider::mapApiRoutes(Object(Illuminate\Routing\Router))docker_lamp_1docker_lamp_1| 2026-05-18 07:17:08,269 WARN exited: artisan-schedule_00 (exit status 1; not expected)docker_lamp_11 2026-05-18 07:17:09,317 INFO spawned: 'artisan-schedule_00'with pid 18754docker_lamp_11 2026-05-18 07:17:10,344 INFO success: artisan-schedule_00 entered RUNNIstate, process hasstayed up for › than 1 seconds (startsecs)• Preparation for Refi... in 4h 43 m100% <78• Mon 18 May 10:17:56DOCKER (docker-compose)O ₴2APP (-zsh)*3screenpipe"Y2PROD (ssh)Run'do-release-upgrade'to upgrade to it.*** System restart required ***Last login: Thu May 14 07:41:362026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Sat May 16 18:04:33on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|T4STAGE (ssh)See [URL_WITH_CREDENTIALS] ~ $ IX 17 EXT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ [|FRONTENDEXTENSIONView in Docker Desktop@ View ConfigEnable Watch...
|
50111
|
NULL
|
NULL
|
NULL
|